HAM5.5b2 merged in!

Notes:
-There may still be bugs!! (In fact, I almost guarantee it -- there's
-Ammo box code added to HR's crate code
-Splitting a crate/box also automatically refills half empty magazines
-new pathing arrows for map screen not included
-code for scouts to know where enemies are going doesn't appear to work... but i'm not sure it was completed.
-lots of gobledy gook (chinese?) comments turned back to english
-also added Bob's popups
-other languages besides english still need to have there language.cpp files updated with array changes
-AI enhancements by Warmsteel (reloading, suppression, roaming, avoiding gas, and other fixes)

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@5181 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
MaddMugsy
2012-04-10 23:45:46 +00:00
parent ab3412e5ed
commit c845f9f117
72 changed files with 10737 additions and 2362 deletions
+235
View File
@@ -0,0 +1,235 @@
#include "popup_class.h"
#include "popup_callback.h"
#include "sgp.h"
#include "popup_definition.h"
#include "Interface Items.h"
// for getting psoldier
#include "Map Screen Interface.h"
#include "Map Screen Interface Map.h"
#include "Overhead.h"
//////////////////////////////////////
// popupDef
//////////////////////////////////////
popupDef::popupDef(){}
popupDef::~popupDef(){
for(std::vector<popupDefContent*>::iterator content=this->content.begin(); content != this->content.end(); ++content)
{
delete *content;
}
}
BOOL popupDef::applyToBox(POPUP* popup){
for(std::vector<popupDefContent*>::iterator content=this->content.begin(); content != this->content.end(); ++content)
{
if ( (*content)->addToBox( popup ) != TRUE ) return FALSE;
}
return TRUE;
}
BOOL popupDef::addOption(std::wstring* name, UINT16 callbackId, UINT16 availId){
// TODO: check for vaid callbacl/avail ID
this->content.push_back( new popupDefOption(name,callbackId,availId) );
return TRUE;
}
popupDef * popupDef::addSubPopup(std::wstring* name){
popupDefSubPopupOption * sub = new popupDefSubPopupOption(name);
this->content.push_back( sub );
return sub->getSubDef();
}
BOOL popupDef::addSubPopup(popupDefSubPopupOption* sub){
// TODO: add check for max options
this->content.push_back( sub );
return TRUE;
};
BOOL popupDef::addGenerator(UINT16 id){
// TODO: check for valid generator id
this->content.push_back( new popupDefContentGenerator(id) );
return TRUE;
}
//////////////////////////////////////
// popupDefContent
//////////////////////////////////////
popupDefContent::popupDefContent(){}
popupDefContent::~popupDefContent(){}
//////////////////////////////////////
// popupDefOption helpers
//////////////////////////////////////
static BOOL setPopupDefCallback( POPUP_OPTION * opt, UINT16 callbackId ){
// TODO
opt->setAction(NULL);
return TRUE;
}
static BOOL setPopupDefAvail( POPUP_OPTION * opt, UINT16 callbackId ){
// TODO
opt->setAvail(NULL);
return TRUE;
}
//////////////////////////////////////
// popupDefOption
//////////////////////////////////////
/* defined in header file
popupDefOption::popupDefOption(){}
popupDefOption::popupDefOption( std::wstring* name, UINT16 callbackId, UINT16 availId ){}
~popupDefOption::popupDefOption(){}
*/
BOOL popupDefOption::addToBox(POPUP * popup){
POPUP_OPTION * opt = new POPUP_OPTION();
opt->setName( this->name );
if ( !setPopupDefCallback(opt, this->callbackId)
|| !setPopupDefAvail(opt, this->availId) )
{
delete opt;
return false;
}
return popup->addOption(*opt);
}
//////////////////////////////////////
// popupDefSubPopupOption
//////////////////////////////////////
/* defined in header file
popupDefSubPopupOption::popupDefSubPopupOption(){}
popupDefSubPopupOption::popupDefSubPopupOption( std::wstring* name ){}
popupDefSubPopupOption::~popupDefSubPopupOption(){}
*/
BOOL popupDefSubPopupOption::addToBox(POPUP * popup){
POPUP_SUB_POPUP_OPTION * sub = new POPUP_SUB_POPUP_OPTION( this->name );
if( !this->content->applyToBox( sub->subPopup ) ){
delete sub;
return false;
}
return popup->addSubMenuOption(sub);
}
//////////////////////////////////////
// popupDefContentGenerator helpers
//////////////////////////////////////
/*
void addArmorToPocketPopup( SOLDIERTYPE *pSoldier, INT16 sPocket, POPUP* popup );
void addLBEToPocketPopup( SOLDIERTYPE *pSoldier, INT16 sPocket, POPUP* popup );
void addWeaponsToPocketPopup( SOLDIERTYPE *pSoldier, INT16 sPocket, POPUP* popup );
void addWeaponGroupsToPocketPopup( SOLDIERTYPE *pSoldier, INT16 sPocket, POPUP* popup );
void addGrenadesToPocketPopup( SOLDIERTYPE *pSoldier, INT16 sPocket, POPUP* popup );
void addBombsToPocketPopup( SOLDIERTYPE *pSoldier, INT16 sPocket, POPUP* popup );
void addFaceGearToPocketPopup( SOLDIERTYPE *pSoldier, INT16 sPocket, POPUP* popup );
void addAmmoToPocketPopup( SOLDIERTYPE *pSoldier, INT16 sPocket, POPUP* popup );
void addRifleGrenadesToPocketPopup( SOLDIERTYPE *pSoldier, INT16 sPocket, POPUP* popup );
void addRocketAmmoToPocketPopup( SOLDIERTYPE *pSoldier, INT16 sPocket, POPUP* popup );
void addDrugsToPocketPopup( SOLDIERTYPE *pSoldier, INT16 sPocket, POPUP* popup );
*/
static BOOL applyPopupContentGenerator( POPUP * popup, UINT16 generatorId ){
SOLDIERTYPE *pSoldier;
GetSoldier( &pSoldier, gCharactersList[ bSelectedInfoChar ].usSolID );
switch(generatorId){
case popupGenerators::dummy:
popup->addOption(new std::wstring( L"Dummy generator" ),NULL);
break;
case popupGenerators::addArmor:
addArmorToPocketPopup( pSoldier, gsPocketUnderCursor, popup );
break;
case popupGenerators::addLBE:
addLBEToPocketPopup( pSoldier, gsPocketUnderCursor, popup );
break;
case popupGenerators::addWeapons:
addWeaponsToPocketPopup( pSoldier, gsPocketUnderCursor, popup );
break;
case popupGenerators::addWeaponGroups:
addWeaponGroupsToPocketPopup( pSoldier, gsPocketUnderCursor, popup );
break;
case popupGenerators::addGrenades:
addGrenadesToPocketPopup( pSoldier, gsPocketUnderCursor, popup );
break;
case popupGenerators::addBombs:
addBombsToPocketPopup( pSoldier, gsPocketUnderCursor, popup );
break;
case popupGenerators::addFaceGear:
addFaceGearToPocketPopup( pSoldier, gsPocketUnderCursor, popup );
break;
case popupGenerators::addAmmo:
addAmmoToPocketPopup( pSoldier, gsPocketUnderCursor, popup );
break;
case popupGenerators::addRifleGrenades:
addRifleGrenadesToPocketPopup( pSoldier, gsPocketUnderCursor, popup );
break;
case popupGenerators::addRocketAmmo:
addRocketAmmoToPocketPopup( pSoldier, gsPocketUnderCursor, popup );
break;
case popupGenerators::addMisc:
addMiscToPocketPopup( pSoldier, gsPocketUnderCursor, popup );
break;
case popupGenerators::addKits:
addKitsToPocketPopup( pSoldier, gsPocketUnderCursor, popup );
break;
default:
return FALSE;
}
return TRUE;
}
//////////////////////////////////////
// popupDefContentGenerator
//////////////////////////////////////
/* defined in header file
popupDefContentGenerator::popupDefContentGenerator(){}
popupDefContentGenerator::popupDefContentGenerator( UINT16 generatorId ){}
popupDefContentGenerator::~popupDefContentGenerator(){}
*/
BOOL popupDefContentGenerator::addToBox(POPUP * popup){
return applyPopupContentGenerator( popup, this->generatorId );
}