From: Laszlo T. <ave...@us...> - 2005-11-11 22:00:54
|
Update of /cvsroot/gemrb/gemrb/gemrb/plugins/Core In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23152/Core Modified Files: Actor.cpp Interface.cpp Interface.h Map.cpp Log Message: Added Badly wounded/hit autopause flags Index: Interface.h =================================================================== RCS file: /cvsroot/gemrb/gemrb/gemrb/plugins/Core/Interface.h,v retrieving revision 1.172 retrieving revision 1.173 diff -C2 -d -r1.172 -r1.173 *** Interface.h 11 Nov 2005 21:22:53 -0000 1.172 --- Interface.h 11 Nov 2005 22:00:44 -0000 1.173 *************** *** 462,467 **** /** saves the .are and .sto files to the destination folder */ int CompressSave(const char *folder); ! /** receives an autopause reason */ ! void Autopause(ieDword reason); private: bool LoadConfig(void); --- 462,467 ---- /** saves the .are and .sto files to the destination folder */ int CompressSave(const char *folder); ! /** receives an autopause reason, returns 1 if pause was triggered by this call, -1 if it was already triggered */ ! int Autopause(ieDword reason); private: bool LoadConfig(void); Index: Actor.cpp =================================================================== RCS file: /cvsroot/gemrb/gemrb/gemrb/plugins/Core/Actor.cpp,v retrieving revision 1.127 retrieving revision 1.128 diff -C2 -d -r1.127 -r1.128 *** Actor.cpp 6 Nov 2005 14:03:09 -0000 1.127 --- Actor.cpp 11 Nov 2005 22:00:44 -0000 1.128 *************** *** 541,544 **** --- 541,552 ---- LastHitter=hitter->GetID(); Active|=SCR_ACTIVE; + if (InParty) { + if (GetStat(IE_HITPOINTS)<GetStat(IE_MAXHITPOINTS)/10) { + core->Autopause(AP_WOUNDED); + } + if (damage>0) { + core->Autopause(AP_HIT); + } + } return damage; } Index: Map.cpp =================================================================== RCS file: /cvsroot/gemrb/gemrb/gemrb/plugins/Core/Map.cpp,v retrieving revision 1.191 retrieving revision 1.192 diff -C2 -d -r1.191 -r1.192 *** Map.cpp 11 Nov 2005 21:22:53 -0000 1.191 --- Map.cpp 11 Nov 2005 22:00:44 -0000 1.192 *************** *** 782,786 **** if (IsVisible(actor->Pos, false) && actor->Schedule(gametime) ) { if (actor->Modified[IE_EA]>=EA_EVILCUTOFF) { - printf("AUTOPAUSE b\n"); core->Autopause(AP_ENEMY); } --- 782,785 ---- *************** *** 1035,1039 **** actor->Active|=SCR_ACTIVE; if (actor->Modified[IE_EA]>=EA_EVILCUTOFF) { - printf("AUTOPAUSE a\n"); core->Autopause(AP_ENEMY); } --- 1034,1037 ---- Index: Interface.cpp =================================================================== RCS file: /cvsroot/gemrb/gemrb/gemrb/plugins/Core/Interface.cpp,v retrieving revision 1.354 retrieving revision 1.355 diff -C2 -d -r1.354 -r1.355 *** Interface.cpp 11 Nov 2005 21:22:53 -0000 1.354 --- Interface.cpp 11 Nov 2005 22:00:44 -0000 1.355 *************** *** 4003,4017 **** } ! void Interface::Autopause(ieDword flag) { ieDword autopause_flags = ~0u; //it is -1 just for testing ! vars->Lookup("Auto Pause State", autopause_flags); if (autopause_flags & flag) { ! GameControl *gc = GetGameControl(); ! if (gc) { ! DisplayConstantString(STR_AP_UNUSABLE+flag, 0xff0000); ! gc->SetDialogueFlags(DF_FREEZE_SCRIPTS, BM_OR); ! } } } --- 4003,4031 ---- } ! //returns: -3, -2 if request is illegal or in cutscene ! // -1 if pause is already active ! // 0 if pause was not allowed ! // 1 if autopause happened ! ! int Interface::Autopause(ieDword flag) { + GameControl *gc = GetGameControl(); + if (!gc) { + return -3; + } + if (InCutSceneMode()) { + return -2; + } + if (gc->GetDialogueFlags()&DF_FREEZE_SCRIPTS) { + return -1; + } ieDword autopause_flags = ~0u; //it is -1 just for testing ! vars->Lookup("AutoPauseState", autopause_flags); if (autopause_flags & flag) { ! DisplayConstantString(STR_AP_UNUSABLE+flag, 0xff0000); ! gc->SetDialogueFlags(DF_FREEZE_SCRIPTS, BM_OR); ! return 1; } + return 0; } |