99 #include <sys/types.h>
105 #include <emscripten.h>
106 #include <emscripten/bind.h>
270 static const int RES_VALVE_RANGE = 2000;
271 static const int COM_VALVE_RANGE = 1500;
272 static const int IND_VALVE_RANGE = 1500;
396 WOODS_LOW = TREEBASE,
401 WOODS_HIGH = UNUSED_TRASH2,
782 template <
typename T>
783 static inline T
min(
const T a,
const T b)
785 return (a < b) ? a : b;
794 template <
typename T>
795 static inline T
max(
const T a,
const T b)
797 return (a > b) ? a : b;
807 template <
typename T>
808 static inline T
clamp(
const T val,
const T lower,
const T upper)
824 template <
typename T>
842 #define LENGTH_OF(array) (sizeof(array) / sizeof((array)[0]))
847 #define NOT_REACHED() not_reached(__LINE__, __FILE__)
859 fprintf(stderr,
"Code unexpectedly executed at line %d, at file %s\n", line, fname);
1410 void animateTiles();
1412 static int getNextAnimatedTile(
int index);
1466 void initFundingLevel();
1476 void showBudgetWindowAndStartWaiting();
1478 void setCityTax(
short tax);
1647 void doProblems(
short problemTable[PROBNUM]);
1657 void getScore(
const short problemTable[PROBNUM]);
1669 bool loadFile(
const std::string &filename);
1671 bool saveFile(
const std::string &filename);
1675 void didLoadScenario(
int s,
const std::string name,
const std::string fname);
1677 bool loadCity(
const std::string &filename);
1691 void saveCityAs(
const std::string &filename);
1815 void drawMonth(
short *hist,
unsigned char *s,
float scale);
1828 %apply
short *OUTPUT {
short *minValResult };
1829 %apply
short *OUTPUT {
short *maxValResult };
1833 short *minValResult,
short *maxValResult);
1835 short getHistory(
int historyType,
int historyScale,
1838 void setHistory(
int historyType,
int historyScale,
1839 int historyIndex,
short historyValue);
1894 std::string getMicropolisVersion();
1900 void simulateRobots();
1942 void simLoop(
bool doSim);
1972 bool picture=
false,
bool important=
false);
1976 void doAutoGoto(
short x,
short y,
const std::string &message);
2065 void pollutionTerrainLandValueScan();
2073 void smoothTerrain();
2091 short pollutionRamp;
2099 float externalMarket;
2112 short cityTaxAverage;
2162 void initSimMemory();
2166 void setCommonInits();
2174 void take120Census();
2178 void mapScan(
int x1,
int x2);
2244 short turnTo(
int p,
int d);
2246 bool tryOther(
int Tpoo,
int Told,
int Tnew);
2250 short getDir(
int orgX,
int orgY,
int desX,
int desY);
2278 bool checkWet(
int x);
2332 Quad messageTimeLast;
2348 short messageNumber;
2357 emscripten::val callbackVal;
2380 return (wx >= 0 && wx < WORLD_W && wy >= 0 && wy <
WORLD_H);
2383 void spend(
int dollars);
2404 const std::string &channel,
2405 const std::string &sound,
2413 void setTile(
int x,
int y,
int tile);
2508 short toX,
short toY);
2510 void didTool(std::string name,
short x,
short y);
2553 int tileCategoryIndex,
2554 int populationDensityIndex,
2558 int growthRateIndex,
2562 void putBuilding(
int leftX,
int topY,
int sizeX,
int sizeY,
2563 MapTile baseTile,
bool aniFlag,
2573 int getDensity(
short catNo,
short mapH,
short mapV);
2575 bool tally(
short tileValue);
2579 void checkBorder(
short xMap,
short yMap,
int sizeX,
int sizeY,
2637 bool mustUpdateFunds;
2647 Quad totalFundsLast;
2656 void doUpdateHeads();
2660 void updateGraphs();
2662 void updateEvaluation();
2668 void reallyUpdateFunds();
2678 void setDemand(
float r,
float c,
float i);
2680 void updateOptions();
2694 void setSpeed(
short speed);
2696 void setPasses(
int passes);
2704 void setCityName(
const std::string &name);
2708 void setYear(
int year);
2733 %apply
float *OUTPUT {
float *resDemandResult };
2734 %apply
float *OUTPUT {
float *comDemandResult };
2735 %apply
float *OUTPUT {
float *indDemandResult };
2739 float *resDemandResult,
2740 float *comDemandResult,
2741 float *indDemandResult);
2746 std::string makeDollarDecimalStr(
const std::string &numStr);
Interface for callbacks in the Micropolis game engine.
void doScenarioScore(Scenario type)
void makeSingleLake(const Position &pos)
void toolDown(EditingTool tool, short tileX, short tileY)
short crimeMaxX
X coordinate of most criminal area. Not used.
void doCopterSprite(SimSprite *sprite)
void setGameLevelFunds(GameLevel level)
void fixZone(int x, int y, ToolEffects *effects)
SimSprite * spriteList
List of active sprites.
short getLandPollutionValue(const Position &pos)
void generateCopter(const Position &pos)
void explodeSprite(SimSprite *sprite)
void doTornadoSprite(SimSprite *sprite)
short problemVotes[PROBNUM]
void doAirplaneSprite(SimSprite *sprite)
int getCrimeRate(int x, int y)
void * getPopulationDensityMapBuffer()
bool doInitialEval
Need to perform initial city evaluation.
void doZoneStatus(short mapH, short mapV)
void didntLoadCity(const std::string &msg)
bool loadFileData(const std::string &filename)
void generateSomeCity(int seed)
void doMeltdown(const Position &pos)
void doSaveCityAs(const std::string &filename)
MapShort8 policeStationEffectMap
short getResZonePop(MapTile mapTile)
short stadiumPop
Number of stadiums.
bool driveDone(const Position &pos, ZoneType destZone)
short doFreePop(const Position &pos)
bool checkSpriteCollision(SimSprite *s1, SimSprite *s2)
short indZonePop
Number of industrial zones.
void startFireInZone(int Xloc, int Yloc, int ch)
void setTile(int x, int y, int tile)
void setPoliceCoverage(int x, int y, int coverage)
ToolResult buildBuilding(int mapH, int mapV, const BuildingProperties *bprops, ToolEffects *effects)
void didSaveCity(const std::string &filename)
void makeHospital(const Position &pos)
void resPlop(const Position &pos, int Den, int Value)
Scenario scoreType
The type of score table to use.
Position pullPowerStack()
void coalSmoke(const Position &pos)
short turnTo(int p, int d)
bool tally(short tileValue)
void setDoAnimation(bool value)
void seedRandom(int seed)
void doRadTile(const Position &pos)
void initSprite(SimSprite *sprite, int x, int y)
bool findPerimeterTelecom(const Position &pos)
void doRivers(const Position &terrainPos)
void setHistory(int historyType, int historyScale, int historyIndex, short historyValue)
void setDoNotices(bool value)
void putOnMap(MapValue mChar, short xLoc, short yLoc)
void doZone(const Position &pos)
GameLevel gameLevel
Difficulty level of the game (0..2)
ToolResult wireTool(short x, short y, ToolEffects *effects)
Scenario scenario
Scenario being played.
void buildHouse(const Position &pos, int value)
short getIndZonePop(MapTile tile)
bool tryDrive(const Position &startPos, ZoneType destZone)
void pushPos(const Position &pos)
void generateSomeRandomCity()
void setPollutionDensity(int x, int y, int density)
ToolResult putDownNetwork(short mapH, short mapV, ToolEffects *effects)
int getTrafficDensity(int x, int y)
void doResidential(const Position &pos, bool zonePower)
short poweredZoneCount
Number of powered tiles in all zone.
CityClass getCityClass(Quad cityPop)
void doSpecialZone(const Position &pos, bool PwrOn)
void setTrafficDensity(int x, int y, int density)
void makeExplosion(int x, int y)
Direction2 doSRiver(const Position &riverPos, Direction2 riverDir, Direction2 terrainDir)
int powerStackPointer
Stack counter, points to top-most item.
void destroySprite(SimSprite *sprite)
void voteProblems(const short problemTable[PROBNUM])
MapTile getTileFromMap(const Position &pos, Direction2 dir, MapTile defaultTile)
void indPlop(const Position &pos, int den, int value)
MapByte2 crimeRateMap
Crime rate map.
std::string cityFileName
Filename of the last loaded city.
void * getRateOfGrowthMapBuffer()
MapByte4 terrainDensityMap
SimSprite * freeSprites
Pool of free SimSprite objects.
short getDir(int orgX, int orgY, int desX, int desY)
short unpoweredZoneCount
Number of unpowered tiles in all zones.
ToolResult networkTool(short x, short y, ToolEffects *effects)
ToolResult railroadTool(short x, short y, ToolEffects *effects)
void * getTrafficDensityMapBuffer()
bool setZonePower(const Position &pos)
void doRoad(const Position &pos)
void comPlop(const Position &pos, int Den, int Value)
short newMapFlags[MAP_TYPE_COUNT]
short churchPop
Number of churches.
void checkBorder(short xMap, short yMap, int sizeX, int sizeY, ToolEffects *effects)
bool evalChanged
The evaluation window should be shown to the user.
Position powerStackXY[POWER_STACK_SIZE]
ToolResult queryTool(short x, short y)
ToolResult layDoze(int x, int y, ToolEffects *effects)
short cityCenterY
Y coordinate of city center.
void makeMonsterAt(int x, int y)
void getDemands(float *resDemandResult, float *comDemandResult, float *indDemandResult)
short makeTraffic(int x, int y, ZoneType dest)
short evalCom(const Position &pos, int traf)
void startFire(int x, int y)
void getScore(const short problemTable[PROBNUM])
MapShort8 fireStationEffectMap
ToolResult connectTile(short x, short y, ConnectTileCommand cmd, ToolEffects *effects)
void loadScenario(Scenario s)
void * getLandValueMapBuffer()
void * getCrimeRateMapBuffer()
short getRandom(short range)
Position curMapStackXY[MAX_TRAFFIC_DISTANCE+1]
Position stack.
short pollutionMaxY
Y coordinate of most polluted area.
void didntSaveCity(const std::string &msg)
void doIndustrial(const Position &pos, bool zonePower)
void setAutoGoto(bool value)
ToolResult putDownLand(short mapH, short mapV, ToolEffects *effects)
int getBoatDistance(const Position &pos)
void decRateOfGrowthMap()
short problemOrder[CVP_PROBLEM_COMPLAINTS]
void * getPowerGridMapBuffer()
bool enableDisasters
Enable disasters.
bool loadFile(const std::string &filename)
ToolResult layWire(int x, int y, ToolEffects *effects)
ToolResult putDownPark(short mapH, short mapV, ToolEffects *effects)
void generatePlane(const Position &pos)
int getRateOfGrowth(int x, int y)
Quad cityPopLast
Population of last city class check.
short getTrafficAverage()
void setSmoke(const Position &pos, bool zonePower)
int canDriveOn(int x, int y)
ToolResult putDownForest(short mapH, short mapV, ToolEffects *effects)
void doAutoGoto(short x, short y, const std::string &message)
bool zonePlop(const Position &pos, int base)
ToolResult layRail(int x, int y, ToolEffects *effects)
short scoreWait
Time to wait before computing the score.
short pollutionMaxX
X coordinate of most polluted area.
void * getPoliceCoverageMapBuffer()
void fireZone(const Position &pos, MapValue ch)
ToolResult parkTool(short x, short y, ToolEffects *effects)
void doShipSprite(SimSprite *sprite)
short resZonePop
Number of residential zones.
void drawStadium(const Position ¢er, MapTile z)
short evalRes(const Position &pos, int traf)
short trafMaxY
Y coordinate of a position with heavy traffic.
void pushPowerStack(const Position &pos)
int getPollutionValue(int loc)
bool indCap
Block industrial growth.
void updateUserInterface()
bool resCap
Block residential growth.
short trafMaxX
X coordinate of a position with heavy traffic.
void doProblems(short problemTable[PROBNUM])
void doExplosionSprite(SimSprite *sprite)
std::string cityName
Name of the city.
short getHistory(int historyType, int historyScale, int historyIndex)
void setFunds(int dollars)
int getProblemNumber(int i)
void didLoadCity(const std::string &filename)
void doIndIn(const Position &pos, int pop, int value)
void doIndOut(const Position &pos, int pop, int value)
void drawMonth(short *hist, unsigned char *s, float scale)
void setAutoBulldoze(bool value)
void repairZone(const Position &pos, MapTile zCent, short zSize)
short disasterWait
Count-down timer for the disaster.
void setEnableSound(bool value)
ToolResult prepareBuildingSite(int leftX, int topY, int sizeX, int sizeY, ToolEffects *effects)
void doTrainSprite(SimSprite *sprite)
SimSprite * getSprite(int type)
int getPoliceCoverage(int x, int y)
bool mustUpdateOptions
Options displayed at user need updating.
void doResOut(const Position &pos, int pop, int value)
short checkSize(short tileValue)
bool tryOther(int Tpoo, int Told, int Tnew)
void doComOut(const Position &pos, int pop, int value)
void setEnableDisasters(bool value)
int getFireCoverage(int x, int y)
void saveCityAs(const std::string &filename)
short getComZonePop(MapTile tile)
int getDistance(int x1, int y1, int x2, int y2)
short cityCenterX
X coordinate of city center.
void getHistoryRange(int historyType, int historyScale, short *minValResult, short *maxValResult)
int getLandValue(int x, int y)
unsigned short * map[WORLD_W]
void randomlySeedRandom()
void setFireCoverage(int x, int y, int coverage)
void doMakeSound(int mesgNum, int x, int y)
short makeTrafficAt(int x, int y, ZoneType dest)
Direction2 tryGo(const Position &pos, Direction2 dirLast)
bool testForConductive(const Position &pos, Direction2 testDir)
short hospitalPop
Number of hospitals.
void doResIn(const Position &pos, int pop, int value)
void generateMap(int seed)
ToolResult doTool(EditingTool tool, short tileX, short tileY)
void doBusSprite(SimSprite *sprite)
void generateTrain(int x, int y)
int mapSerial
The invalidateMaps method increases the map serial number every time the maps changes.
bool enableSound
Enable sound.
void sendMessage(short Mnum, short x=NOWHERE, short y=NOWHERE, bool picture=false, bool important=false)
void doAirport(const Position &pos)
Scenario disasterEvent
The disaster for which a count-down is running.
void doHospitalChurch(const Position &pos)
MapShort8 policeStationMap
void makeSound(const std::string &channel, const std::string &sound, int x=-1, int y=-1)
bool saveFile(const std::string &filename)
void setGameLevel(GameLevel level)
MapByte2 pollutionDensityMap
Pollution density map.
short getChar(int x, int y)
int getProblemVotes(int i)
int getDensity(short catNo, short mapH, short mapV)
void generateBus(int x, int y)
SimSprite * newSprite(const std::string &name, int type, int x, int y)
MapByte2 trafficDensityMap
Traffic density map.
ToolResult putDownWater(short mapH, short mapV, ToolEffects *effects)
int getTile(int x, int y)
short categoryLast
City class of last city class check.
void toolDrag(EditingTool tool, short fromX, short fromY, short toX, short toY)
bool comCap
Block commercial growth.
void doFire(const Position &pos)
int getPollutionDensity(int x, int y)
void * getFireCoverageMapBuffer()
CityClass cityClass
City class, affected by city population.
Direction2 doBRiver(const Position &riverPos, Direction2 riverDir, Direction2 terrainDir)
static bool testBounds(int wx, int wy)
void fixSingle(int x, int y, ToolEffects *effects)
void doMonsterSprite(SimSprite *sprite)
void plopSRiver(const Position &pos)
void setPopulationDensity(int x, int y, int density)
int getCityCenterDistance(int x, int y)
void makeExplosionAt(int x, int y)
ToolResult layRoad(int x, int y, ToolEffects *effects)
SimSprite * makeSprite(int type, int x, int y)
void doBudgetNow(bool fromMenu)
void doStartScenario(int scenario)
void didLoadScenario(int s, const std::string name, const std::string fname)
void putRubble(int x, int y, int size, ToolEffects *effects)
void addToTrafficDensityMap()
void * getPollutionDensityMapBuffer()
void treeSplash(short xloc, short yloc)
void setCleanCityName(const std::string &name)
int getPowerGrid(int x, int y)
ToolResult landTool(short x, short y, ToolEffects *effects)
short evalLot(int x, int y)
int getPopulationDensity(const Position &pos, MapTile tile)
MapByte2 populationDensityMap
Population density map.
bool loadCity(const std::string &filename)
void incRateOfGrowth(const Position &pos, int amount)
void doCommercial(const Position &pos, bool zonePower)
MapByte2 landValueMap
Land value map.
MapShort8 rateOfGrowthMap
void setRateOfGrowth(int x, int y, int rate)
void makeShipHere(int x, int y)
void setCrimeRate(int x, int y, int rate)
void putBuilding(int leftX, int topY, int sizeX, int sizeY, MapTile baseTile, bool aniFlag, ToolEffects *effects)
void smoothTreesAt(int x, int y, bool preserve)
void didTool(std::string name, short x, short y)
bool doBridge(const Position &pos, MapTile tile)
void setPowerGrid(int x, int y, int power)
short getERandom(short limit)
bool roadTest(MapValue tile)
ToolResult roadTool(short x, short y, ToolEffects *effects)
short crimeMaxY
Y coordinate of most criminal area. Not used.
bool spriteNotInBounds(SimSprite *sprite)
short comZonePop
Number of commercial zones.
void populationDensityScan()
void doComIn(const Position &pos, int pop, int value)
void doFlood(const Position &pos)
void plopBRiver(const Position &pos)
void doShowZoneStatus(int tileCategoryIndex, int populationDensityIndex, int landValueIndex, int crimeRateIndex, int pollutionIndex, int growthRateIndex, int x, int y)
void doRail(const Position &pos)
Quad totalFunds
Funds of the player.
void setDoMessages(bool value)
void destroyMapTile(int ox, int oy)
bool findPerimeterRoad(Position *pos)
void doEarthquake(int strength)
ToolResult forestTool(short x, short y, ToolEffects *effects)
ToolResult buildBuildingTool(short x, short y, const BuildingProperties *bprops, ToolEffects *effects)
void setAutoBudget(bool value)
void setLandValue(int x, int y, int value)
int x
X coordinate of the sprite in pixels?
int destX
Destination X coordinate of the sprite.
int yHot
Offset of the hot-spot relative to SimSprite::y?
int type
Type of the sprite (TRA – BUS).
int destY
Destination Y coordinate of the sprite.
SimSprite * next
Pointer to next SimSprite object in the list.
std::string name
Name of the sprite.
int y
Y coordinate of the sprite in pixels?
int frame
Frame (0 means non-active sprite)
int xHot
Offset of the hot-spot relative to SimSprite::x?
Commonly used data types in Micropolis game engine.
Defines classes for handling messages between the game engine and the GUI frontend.
Map data structures for the Micropolis game engine.
static const int CITYTIMES_PER_YEAR
static const int WORLD_H_8
@ SC_TOKYO
Tokyo (scary monster)
@ SC_NONE
No scenario (free playing)
@ SC_BOSTON
Boston (nuclear meltdown)
@ SC_COUNT
Number of scenarios.
@ SC_SAN_FRANCISCO
San francisco (earthquake)
@ SC_HAMBURG
Hamburg (fire bombs)
@ SC_DULLSVILLE
Dullsville (boredom)
@ SC_DETROIT
Detroit (crime)
static const int HISTORY_LENGTH
@ ZT_RESIDENTIAL
Residential zone.
@ ZT_COMMERCIAL
Commercial zone.
@ ZT_INDUSTRIAL
Industrial zone.
@ ZT_NUM_DESTINATIONS
Number of available zones.
static const int WORLD_W_2
static const int PASSES_PER_CITYTIME
@ CONNECT_TILE_FIX
Fix zone (connect wire, road, and rail).
@ CONNECT_TILE_ROAD
Lay road and fix zone.
@ CONNECT_TILE_WIRE
Lay wire and fix zone.
@ CONNECT_TILE_RAILROAD
Lay rail and fix zone.
@ CONNECT_TILE_BULLDOZE
Bulldoze and fix zone.
static void not_reached(int line, const char *fname)
static const int POWER_STACK_SIZE
@ MAP_TYPE_POLLUTION
Pollution.
@ MAP_TYPE_POPULATION_DENSITY
Population density.
@ MAP_TYPE_DYNAMIC
Dynamic filter.
@ MAP_TYPE_LAND_VALUE
Land value.
@ MAP_TYPE_FIRE_RADIUS
Fire station coverage radius.
@ MAP_TYPE_CRIME
Crime rate.
@ MAP_TYPE_IND
Industrial zones.
@ MAP_TYPE_COM
Commercial zones.
@ MAP_TYPE_RES
Residential zones.
@ MAP_TYPE_POWER
Power connectivity.
@ MAP_TYPE_COUNT
Number of map types.
@ MAP_TYPE_RATE_OF_GROWTH
Rate of growth.
@ MAP_TYPE_TRAFFIC_DENSITY
Traffic.
@ MAP_TYPE_POLICE_RADIUS
Police station coverage radius.
static const int CITYTIMES_PER_MONTH
@ HISTORY_TYPE_CRIME
Crime history type.
@ HISTORY_TYPE_MONEY
Money history type.
@ HISTORY_TYPE_POLLUTION
Pollution history type.
@ HISTORY_TYPE_IND
Industry history type.
@ HISTORY_TYPE_COUNT
Number of history types.
@ HISTORY_TYPE_RES
Residiential history type.
@ HISTORY_TYPE_COM
Commercial history type.
static const int HISTORY_COUNT
@ LASTPOWERPLANT
Last tile of coal power plant.
@ NUCLEARBASE
First tile nuclear power plant.
@ COALBASE
First tile of coal power plant.
@ HTRFBASE
First tile with high traffic.
@ WATER_LOW
First water tile.
@ FIRESTBASE
First tile of fire station.
@ RAILHPOWERV
Horizontal rail, vertical power.
@ HBRIDGE
Horizontal bridge.
@ WATER_HIGH
Last water tile (inclusive)
@ STADIUMBASE
First tile stadium.
@ VBRIDGE
Vertical bridge.
@ LASTZONE
Also last tile nuclear power plant.
@ STADIUM
'Center tile' stadium.
@ NUCLEAR
'Center' tile nuclear power plant.
@ PORTBASE
Top-left tile of the seaport.
@ IZB
Center tile of first non-empty industry zone.
@ PORT
Center tile of the seaport.
@ COALSMOKE3
927 last animation tile for chimney at coal power plant (2, 1).
@ POWERPLANT
'Center' tile of coal power plant.
@ INDCLR
Center tile of empty industrial zone.
@ COALSMOKE4
931 last animation tile for chimney at coal power plant (3, 1).
@ RADTILE
Radio-active contaminated tile.
@ FIRESTATION
'Center tile' of fire station.
@ LTRFBASE
First tile with low traffic.
@ INDBASE
Top-left tile of empty industrial zone.
@ IND1
Top-left tile of first non-empty industry zone.
@ COALSMOKE1
919 last animation tile for chimney at coal power plant (2, 0).
@ RAILVPOWERH
Vertical rail, horizontal power.
@ LASTIND
Last tile of empty industrial zone.
@ TILE_INVALID
Invalid tile (not used in the world map).
@ LASTPORT
Last tile of the seaport.
@ COALSMOKE2
923 last animation tile for chimney at coal power plant (3, 0).
static const int ISLAND_RADIUS
static const int BYTES_PER_TILE
static const int WORLD_H_2
@ CC_CAPITAL
Capital, > 50000 citizens.
@ CC_MEGALOPOLIS
Megalopolis, > 500000 citizens.
@ CC_METROPOLIS
Metropolis, > 100000 citizens.
@ CC_CITY
City, > 10000 citizens.
@ CC_TOWN
Town, > 2000 citizens.
@ CC_NUM_CITIES
Number of city classes.
static const int WORLD_W_8
static const int MAX_FIRE_STATION_EFFECT
@ HISTORY_SCALE_SHORT
Short scale data (10 years)
@ HISTORY_SCALE_COUNT
Number of history scales available.
@ HISTORY_SCALE_LONG
Long scale data (120 years)
static const int EDITOR_TILE_SIZE
@ LEVEL_FIRST
First game level value.
@ LEVEL_MEDIUM
Intermediate game level.
@ LEVEL_EASY
Simple game level.
@ LEVEL_HARD
Difficult game level.
@ LEVEL_LAST
Last game level value.
@ LEVEL_COUNT
Number of game levels.
@ TOOLRESULT_FAILED
Cannot build here.
@ TOOLRESULT_OK
Build succeeded.
@ TOOLRESULT_NEED_BULLDOZE
Clear the area first.
@ TOOLRESULT_NO_MONEY
User has not enough money for tool.
static T min(const T a, const T b)
@ CVP_NUMPROBLEMS
Number of problems.
@ CVP_POLLUTION
Pollution.
@ CVP_UNEMPLOYMENT
Unemployment.
@ CVP_PROBLEM_COMPLAINTS
Number of problems to complain about.
static const int MAX_ROAD_EFFECT
@ SPRITE_AIRPLANE
Airplane sprite.
@ SPRITE_TORNADO
Tornado sprite.
@ SPRITE_MONSTER
Scary monster.
@ SPRITE_TRAIN
Train sprite.
@ SPRITE_HELICOPTER
Helicopter sprite.
@ SPRITE_EXPLOSION
Explosion sprite.
@ SPRITE_COUNT
Number of sprite objects.
static const int WORLD_H_4
static const int BITS_PER_TILE
static const int MISC_HISTORY_LENGTH
static const int MAX_POLICE_STATION_EFFECT
static T clamp(const T val, const T lower, const T upper)
static T absoluteValue(const T val)
static const int WORLD_W_4
static const int MAX_TRAFFIC_DISTANCE
static T max(const T a, const T b)
Defines position handling and direction enumeration for the Micropolis game engine.
Defines string identification numbers for texts used in the Micropolis game engine.