Files
source/TileEngine/Buildings.h
T
Wanne ba6cb14f9b - Bugfix: Fixed bug, where enemies do not climb on rooftops anymore, when ASTAR is disabled
.) The bug was introduced in revision 1534 (TileEngine/Buildings.cpp)
.) Overhaul reworked the code for climbing on buildings and it seems the bug was introduced there
.) I created a new define "VANILLA_BUILDING_CLIMBING" (defined in Building.h). If defined the "old" building climbing code will be used. If not defined Overhauls code will be used (and so enemies do not climb on buildings). Overhauls code should be fixed and then used instead of the "old" vanilla building climbing code.
.) I also disabled ASTAR pathing, because it is a HUGH PERFORMANCE killer

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@3228 3b4a5df2-a311-0410-b5c6-a8a6f20db521
2009-10-05 15:28:59 +00:00

44 lines
1.6 KiB
C

#ifndef BUILDING_H
#define BUILDING_H
#include "worlddef.h"
// for what it's worth, 2 bytes, we use roof climb spots as 1-based
// so the 0th entry is always 0 and can be compared with (and not equal)
// NOWHERE or any other location
#define MAX_CLIMBSPOTS_PER_BUILDING 21
// similarly for buildings, only we really want 0 to be invalid index
#define NO_BUILDING 0
#define MAX_BUILDINGS 31
// WANNE: If this is defined, this fixes the bug, that soldiers do not
// climb on roofs anymore if ASTAR is disabled.
// The "Bug" was introduced in Revision 1534 (TileEngine\Buildings.cpp)
// Overhaul wanted to improve the climbing on buildings, but introduced this bug
// If the VANILLA_BUILDING_CLIMBING is not defined, it uses Overhaul code,
// where enemies do not climb on buildings!!
// PS: I did not looked in Overhaul's Building code was causes the problem.
// If someone has time to debug and fixes the problem, Overhaul's code should
// be used -> Disable the define!
#define VANILLA_BUILDING_CLIMBING
typedef struct BUILDING
{
INT16 sUpClimbSpots[MAX_CLIMBSPOTS_PER_BUILDING];
INT16 sDownClimbSpots[MAX_CLIMBSPOTS_PER_BUILDING];
UINT8 ubNumClimbSpots;
} BUILDING;
extern UINT8 gubBuildingInfo[ WORLD_MAX ];
BOOLEAN InBuilding( INT16 sGridNo );
BUILDING * GenerateBuilding( INT16 sDesiredSpot );
BUILDING * FindBuilding( INT16 sGridNo );
void GenerateBuildings( void );
INT16 FindClosestClimbPoint( SOLDIERTYPE *pSoldier, INT16 sStartGridNo, INT16 sDesiredGridNo, BOOLEAN fClimbUp );
BOOLEAN SameBuilding( INT16 sGridNo1, INT16 sGridNo2 );
#endif