|
From: <be...@us...> - 2017-04-08 08:26:37
|
Revision: 1024
http://sourceforge.net/p/freesynd/code/1024
Author: benblan
Date: 2017-04-08 08:26:34 +0000 (Sat, 08 Apr 2017)
Log Message:
-----------
- Removed unused code
- Energy shield activation is now taken into account
Modified Paths:
--------------
freesynd/trunk/NEWS
freesynd/trunk/src/ia/actions.cpp
freesynd/trunk/src/menus/squadselection.cpp
freesynd/trunk/src/model/weapon.h
freesynd/trunk/src/model/weaponholder.cpp
freesynd/trunk/src/ped.cpp
freesynd/trunk/src/ped.h
freesynd/trunk/src/pedmanager.cpp
Modified: freesynd/trunk/NEWS
===================================================================
--- freesynd/trunk/NEWS 2017-04-08 06:48:06 UTC (rev 1023)
+++ freesynd/trunk/NEWS 2017-04-08 08:26:34 UTC (rev 1024)
@@ -19,6 +19,7 @@
* Trains now moves and player agents can get on/off
* Persuaded peds follow their leader in cars and trains
* When player agents shoot on a vehicle, the driver is ejected
+ * Energy Shield is now fully usable
Known issues with this release
------------------------------
Modified: freesynd/trunk/src/ia/actions.cpp
===================================================================
--- freesynd/trunk/src/ia/actions.cpp 2017-04-08 06:48:06 UTC (rev 1023)
+++ freesynd/trunk/src/ia/actions.cpp 2017-04-08 08:26:34 UTC (rev 1024)
@@ -734,6 +734,9 @@
} else if (pPed->type() == PedInstance::kPedTypePolice && pTarget_->selectedWeapon() == NULL) {
// Police man don't shoot on peds that don't have gun out
setFailed();
+ } else if (pTarget_->isEnergyShieldActivated()) {
+ // Don't shoot if target has an energy shield
+ setFailed();
} else {
WorldPoint targetLocW(pTarget_->position());
Modified: freesynd/trunk/src/menus/squadselection.cpp
===================================================================
--- freesynd/trunk/src/menus/squadselection.cpp 2017-04-08 06:48:06 UTC (rev 1023)
+++ freesynd/trunk/src/menus/squadselection.cpp 2017-04-08 08:26:34 UTC (rev 1024)
@@ -193,10 +193,11 @@
for (SquadSelection::Iterator it = begin(); it != end(); ++it)
{
PedInstance *ped = *it;
+ ped->stopUsingWeapon();
if (pLeader == ped) {
// Forces selection of the weapon for the leader
pLeader->selectWeapon(weapon_idx);
- } else if (pLeaderWeapon->getClass()->canShoot()) {
+ } else if (pLeaderWeapon->canShoot()) {
ped->selectShootingWeaponWithSameTypeFirst(pLeaderWeapon);
} else if (applySelectionToAll) {
ped->selectMedikitOrShield(pLeaderWeapon->getClass()->getType());
Modified: freesynd/trunk/src/model/weapon.h
===================================================================
--- freesynd/trunk/src/model/weapon.h 2017-04-08 06:48:06 UTC (rev 1023)
+++ freesynd/trunk/src/model/weapon.h 2017-04-08 08:26:34 UTC (rev 1024)
@@ -336,11 +336,6 @@
void reload() { ammo_remaining_ = pWeaponClass_->ammo(); }
- bool operator==(WeaponInstance wi) {
- // TODO : check if this method is necessary
- return hasSameTypeAs(wi);
- }
-
//! Plays the weapon's sound.
void playSound();
Modified: freesynd/trunk/src/model/weaponholder.cpp
===================================================================
--- freesynd/trunk/src/model/weaponholder.cpp 2017-04-08 06:48:06 UTC (rev 1023)
+++ freesynd/trunk/src/model/weaponholder.cpp 2017-04-08 08:26:34 UTC (rev 1024)
@@ -245,20 +245,18 @@
// If the selected weapon was a shooting one
// select a shooting weapon for the agent, choosing
// first a weapon of same type then any shooting weapon
- if (selected_weapon_ == kNoWeaponSelected) {
- for (uint8 i = 0; i < sz; ++i) {
- WeaponInstance *pWI = weapons_[i];
- if (pWI->canShoot() && pWI->ammoRemaining() > 0)
- {
- if (*pWI == *(criteria.criteria.wi)) {
- found_weapons.clear();
- found_weapons.push_back(std::make_pair(pWI->rank(), i));
- break;
- } else {
- // We found a loaded weapon of different type
- // save it for after
- found_weapons.push_back(std::make_pair(pWI->rank(), i));
- }
+ for (uint8 i = 0; i < sz; ++i) {
+ WeaponInstance *pWI = weapons_[i];
+ if (pWI->canShoot() && pWI->ammoRemaining() > 0)
+ {
+ if (pWI->hasSameTypeAs(*(criteria.criteria.wi))) {
+ found_weapons.clear();
+ found_weapons.push_back(std::make_pair(pWI->rank(), i));
+ break;
+ } else {
+ // We found a loaded weapon of different type
+ // save it for after
+ found_weapons.push_back(std::make_pair(pWI->rank(), i));
}
}
}
Modified: freesynd/trunk/src/ped.cpp
===================================================================
--- freesynd/trunk/src/ped.cpp 2017-04-08 06:48:06 UTC (rev 1023)
+++ freesynd/trunk/src/ped.cpp 2017-04-08 08:26:34 UTC (rev 1024)
@@ -934,11 +934,6 @@
* \param previousWeapon The previous selected weapon (can be null if no weapon was selected)
*/
void PedInstance::handleWeaponSelected(WeaponInstance * wi, WeaponInstance * previousWeapon) {
- if (wi->doesPhysicalDmg())
- desc_state_ |= pd_smArmed;
- else
- desc_state_ &= pd_smAll ^ pd_smArmed;
-
switch(wi->getClass()->getType()) {
case Weapon::EnergyShield:
addActionUseEnergyShield(wi);
@@ -978,6 +973,9 @@
* \return the instance of dropped weapon
*/
WeaponInstance * PedInstance::dropWeapon(uint8 index) {
+ if (selected_weapon_ == index) {
+ stopUsingWeapon();
+ }
WeaponInstance *pWeapon = removeWeaponAtIndex(index);
if(pWeapon) {
Modified: freesynd/trunk/src/ped.h
===================================================================
--- freesynd/trunk/src/ped.h 2017-04-08 06:48:06 UTC (rev 1023)
+++ freesynd/trunk/src/ped.h 2017-04-08 08:26:34 UTC (rev 1024)
@@ -180,24 +180,6 @@
kPedTypeCriminal = 0x10
} ;
- enum pedDescStateMasks {
- pd_smUndefined = 0x0,
- pd_smControlled = 0x0001,
- pd_smArmed = 0x0002,
- // no active action should be done, ex. persuaded ped will shoot target
- // of persuader only if persuader shoots at it
- pd_smSupporter = 0x0004,
- pd_smEnemyInSight = 0x0008,
- //! Energy shield protects the ped
- pd_smShieldProtected = 0x0010,
- // all non-player controllled peds should have this set
- pd_smAutoAction = 0x0020,
- /*! When a mission's objective is to kill a ped and this ped has
- escaped, this value is used to indicate he's escaped.*/
- pd_smEscaped = 0x0080,
- pd_smAll = 0xFFFF
- };
-
PedInstance(Ped *ped, uint16 id, int m, bool isOur);
~PedInstance();
@@ -679,6 +661,17 @@
inline int getClosestDirs(int dir, int& closest, int& closer);
protected:
+ enum pedDescStateMasks {
+ pd_smUndefined = 0x0,
+ //! Set when a ped has been persuaded
+ pd_smControlled = 0x0001,
+ //! Energy shield protects the ped
+ pd_smShieldProtected = 0x0010,
+ /*! When a mission's objective is to kill a ped and this ped has
+ escaped, this value is used to indicate he's escaped.*/
+ pd_smEscaped = 0x0080,
+ pd_smAll = 0xFFFF
+ };
Ped *ped_;
//! Type of Ped
Modified: freesynd/trunk/src/pedmanager.cpp
===================================================================
--- freesynd/trunk/src/pedmanager.cpp 2017-04-08 06:48:06 UTC (rev 1023)
+++ freesynd/trunk/src/pedmanager.cpp 2017-04-08 08:26:34 UTC (rev 1024)
@@ -250,7 +250,6 @@
pPed->setObjGroupDef(PedInstance::og_dmAgent);
pPed->addEnemyGroupDef(2);
pPed->addEnemyGroupDef(3);
- pPed->setHostileDesc(PedInstance::pd_smArmed);
pPed->setSightRange(7 * 256);
pPed->setBaseSpeed(256);
pPed->setTimeBeforeCheck(400);
@@ -315,7 +314,6 @@
LOG(Log::k_FLG_GAME, "PedManager","initPolice", ("Create police with id %d", pPed->id()))
pPed->setObjGroupID(4);
- pPed->setHostileDesc(PedInstance::pd_smArmed);
pPed->setBaseSpeed(160);
pPed->setTimeBeforeCheck(400);
pPed->setBaseModAcc(0.4);
@@ -334,7 +332,6 @@
pPed->setObjGroupID(5);
pPed->addEnemyGroupDef(6);
- pPed->setHostileDesc(PedInstance::pd_smArmed);
pPed->setBaseSpeed(128);
pPed->setTimeBeforeCheck(600);
pPed->setBaseModAcc(0.2);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|