83 #include <emscripten/bind.h>
90 using namespace emscripten;
285 EMSCRIPTEN_BINDINGS(MicropolisEngine) {
289 enum_<Direction2>(
"Direction2")
301 class_<Position>(
"Position")
303 .constructor<int, int>()
318 class_<ToolEffects>(
"ToolEffects")
331 enum_<MapTileBits>(
"MapTileBits")
340 .value(
"BLBNBIT", BLBNBIT)
341 .value(
"BLBNCNBIT", BLBNCNBIT)
342 .value(
"BNCNBIT", BNCNBIT)
345 enum_<EditingTool>(
"EditingTool")
346 .value(
"TOOL_RESIDENTIAL", TOOL_RESIDENTIAL)
347 .value(
"TOOL_COMMERCIAL", TOOL_COMMERCIAL)
348 .value(
"TOOL_INDUSTRIAL", TOOL_INDUSTRIAL)
349 .value(
"TOOL_FIRESTATION", TOOL_FIRESTATION)
350 .value(
"TOOL_POLICESTATION", TOOL_POLICESTATION)
351 .value(
"TOOL_QUERY", TOOL_QUERY)
352 .value(
"TOOL_WIRE", TOOL_WIRE)
353 .value(
"TOOL_BULLDOZER", TOOL_BULLDOZER)
354 .value(
"TOOL_RAILROAD", TOOL_RAILROAD)
355 .value(
"TOOL_ROAD", TOOL_ROAD)
356 .value(
"TOOL_STADIUM", TOOL_STADIUM)
357 .value(
"TOOL_PARK", TOOL_PARK)
358 .value(
"TOOL_SEAPORT", TOOL_SEAPORT)
359 .value(
"TOOL_COALPOWER", TOOL_COALPOWER)
360 .value(
"TOOL_NUCLEARPOWER", TOOL_NUCLEARPOWER)
361 .value(
"TOOL_AIRPORT", TOOL_AIRPORT)
362 .value(
"TOOL_NETWORK", TOOL_NETWORK)
363 .value(
"TOOL_WATER", TOOL_WATER)
364 .value(
"TOOL_LAND", TOOL_LAND)
365 .value(
"TOOL_FOREST", TOOL_FOREST)
366 .value(
"TOOL_COUNT", TOOL_COUNT)
367 .value(
"TOOL_FIRST", TOOL_FIRST)
368 .value(
"TOOL_LAST", TOOL_LAST);
372 class_<Map<Byte, 1>>(
"MapByte1")
389 class_<Map<Byte, 2>>(
"MapByte2")
406 class_<Map<Byte, 4>>(
"MapByte4")
423 class_<Map<short, 8>>(
"MapShort8")
424 .constructor<short>()
466 enum_<Stri202>(
"Stri202")
489 enum_<MessageNumber>(
"MessageNumber")
609 constant(
"RES_VALVE_RANGE", RES_VALVE_RANGE);
610 constant(
"COM_VALVE_RANGE", COM_VALVE_RANGE);
611 constant(
"IND_VALVE_RANGE", IND_VALVE_RANGE);
613 emscripten::enum_<HistoryType>(
"HistoryType")
624 emscripten::enum_<HistoryScale>(
"HistoryScale")
631 emscripten::enum_<MapType>(
"MapType")
651 emscripten::enum_<SpriteType>(
"SpriteType")
652 .value(
"SPRITE_NOTUSED", SPRITE_NOTUSED)
665 emscripten::enum_<ConnectTileCommand>(
"ConnectTileCommand")
674 emscripten::enum_<ToolResult>(
"ToolResult")
682 emscripten::enum_<Scenario>(
"Scenario")
696 emscripten::enum_<ZoneType>(
"ZoneType")
704 emscripten::enum_<CityVotingProblems>(
"CityVotingProblems")
714 .value(
"PROBNUM", PROBNUM)
718 emscripten::enum_<CityClass>(
"CityClass")
729 emscripten::enum_<GameLevel>(
"GameLevel")
738 emscripten::enum_<Tiles>(
"Tiles")
742 .value(
"RIVER", RIVER)
743 .value(
"REDGE", REDGE)
744 .value(
"CHANNEL", CHANNEL)
745 .value(
"FIRSTRIVEDGE", FIRSTRIVEDGE)
747 .value(
"LASTRIVEDGE", LASTRIVEDGE)
750 .value(
"TREEBASE", TREEBASE)
751 .value(
"WOODS_LOW", WOODS_LOW)
752 .value(
"LASTTREE", LASTTREE)
753 .value(
"WOODS", WOODS)
754 .value(
"UNUSED_TRASH1", UNUSED_TRASH1)
755 .value(
"UNUSED_TRASH2", UNUSED_TRASH2)
756 .value(
"WOODS_HIGH", WOODS_HIGH)
757 .value(
"WOODS2", WOODS2)
758 .value(
"WOODS3", WOODS3)
759 .value(
"WOODS4", WOODS4)
760 .value(
"WOODS5", WOODS5)
762 .value(
"RUBBLE", RUBBLE)
763 .value(
"LASTRUBBLE", LASTRUBBLE)
764 .value(
"FLOOD", FLOOD)
766 .value(
"LASTFLOOD", LASTFLOOD)
768 .value(
"UNUSED_TRASH3", UNUSED_TRASH3)
769 .value(
"UNUSED_TRASH4", UNUSED_TRASH4)
770 .value(
"UNUSED_TRASH5", UNUSED_TRASH5)
773 .value(
"FIREBASE", FIREBASE)
774 .value(
"LASTFIRE", LASTFIRE)
776 .value(
"ROADBASE", ROADBASE)
778 .value(
"ROADS", ROADS)
779 .value(
"ROADS2", ROADS2)
780 .value(
"ROADS3", ROADS3)
781 .value(
"ROADS4", ROADS4)
782 .value(
"ROADS5", ROADS5)
783 .value(
"ROADS6", ROADS6)
784 .value(
"ROADS7", ROADS7)
785 .value(
"ROADS8", ROADS8)
786 .value(
"ROADS9", ROADS9)
787 .value(
"ROADS10", ROADS10)
788 .value(
"INTERSECTION", INTERSECTION)
789 .value(
"HROADPOWER", HROADPOWER)
790 .value(
"VROADPOWER", VROADPOWER)
796 .value(
"BRWXXX1", BRWXXX1)
798 .value(
"BRWXXX2", BRWXXX2)
800 .value(
"BRWXXX3", BRWXXX3)
803 .value(
"BRWXXX4", BRWXXX4)
805 .value(
"BRWXXX5", BRWXXX5)
807 .value(
"BRWXXX6", BRWXXX6)
809 .value(
"LASTROAD", LASTROAD)
810 .value(
"BRWXXX7", BRWXXX7)
812 .value(
"HPOWER", HPOWER)
813 .value(
"VPOWER", VPOWER)
814 .value(
"LHPOWER", LHPOWER)
815 .value(
"LVPOWER", LVPOWER)
816 .value(
"LVPOWER2", LVPOWER2)
817 .value(
"LVPOWER3", LVPOWER3)
818 .value(
"LVPOWER4", LVPOWER4)
819 .value(
"LVPOWER5", LVPOWER5)
820 .value(
"LVPOWER6", LVPOWER6)
821 .value(
"LVPOWER7", LVPOWER7)
822 .value(
"LVPOWER8", LVPOWER8)
823 .value(
"LVPOWER9", LVPOWER9)
824 .value(
"LVPOWER10", LVPOWER10)
827 .value(
"POWERBASE", POWERBASE)
828 .value(
"LASTPOWER", LASTPOWER)
829 .value(
"UNUSED_TRASH6", UNUSED_TRASH6)
831 .value(
"HRAIL", HRAIL)
832 .value(
"VRAIL", VRAIL)
833 .value(
"LHRAIL", LHRAIL)
834 .value(
"LVRAIL", LVRAIL)
835 .value(
"LVRAIL2", LVRAIL2)
836 .value(
"LVRAIL3", LVRAIL3)
837 .value(
"LVRAIL4", LVRAIL4)
838 .value(
"LVRAIL5", LVRAIL5)
839 .value(
"LVRAIL6", LVRAIL6)
840 .value(
"LVRAIL7", LVRAIL7)
841 .value(
"LVRAIL8", LVRAIL8)
842 .value(
"LVRAIL9", LVRAIL9)
843 .value(
"LVRAIL10", LVRAIL10)
844 .value(
"HRAILROAD", HRAILROAD)
845 .value(
"VRAILROAD", VRAILROAD)
846 .value(
"RAILBASE", RAILBASE)
847 .value(
"LASTRAIL", LASTRAIL)
848 .value(
"ROADVPOWERH", ROADVPOWERH)
850 .value(
"RESBASE", RESBASE)
851 .value(
"FREEZ", FREEZ)
852 .value(
"HOUSE", HOUSE)
853 .value(
"LHTHR", LHTHR)
854 .value(
"HHTHR", HHTHR)
856 .value(
"HOSPITALBASE", HOSPITALBASE)
857 .value(
"HOSPITAL", HOSPITAL)
858 .value(
"CHURCHBASE", CHURCHBASE)
859 .value(
"CHURCH0BASE", CHURCH0BASE)
860 .value(
"CHURCH", CHURCH)
861 .value(
"CHURCH0", CHURCH0)
863 .value(
"COMBASE", COMBASE)
865 .value(
"COMCLR", COMCLR)
869 .value(
"COMLAST", COMLAST)
897 .value(
"AIRPORTBASE", AIRPORTBASE)
899 .value(
"RADAR", RADAR)
901 .value(
"AIRPORT", AIRPORT)
911 .value(
"POLICESTBASE", POLICESTBASE)
913 .value(
"POLICESTATION", POLICESTATION)
920 .value(
"FULLSTADIUM", FULLSTADIUM)
926 .value(
"LIGHTNINGBOLT", LIGHTNINGBOLT)
927 .value(
"HBRDG0", HBRDG0)
928 .value(
"HBRDG1", HBRDG1)
929 .value(
"HBRDG2", HBRDG2)
930 .value(
"HBRDG3", HBRDG3)
931 .value(
"HBRDG_END", HBRDG_END)
932 .value(
"RADAR0", RADAR0)
933 .value(
"RADAR1", RADAR1)
934 .value(
"RADAR2", RADAR2)
935 .value(
"RADAR3", RADAR3)
936 .value(
"RADAR4", RADAR4)
937 .value(
"RADAR5", RADAR5)
938 .value(
"RADAR6", RADAR6)
939 .value(
"RADAR7", RADAR7)
940 .value(
"FOUNTAIN", FOUNTAIN)
942 .value(
"INDBASE2", INDBASE2)
943 .value(
"TELEBASE", TELEBASE)
945 .value(
"TELELAST", TELELAST)
946 .value(
"SMOKEBASE", SMOKEBASE)
948 .value(
"TINYEXP", TINYEXP)
950 .value(
"SOMETINYEXP", SOMETINYEXP)
952 .value(
"LASTTINYEXP", LASTTINYEXP)
954 .value(
"TINYEXPLAST", TINYEXPLAST)
964 .value(
"FOOTBALLGAME1", FOOTBALLGAME1)
966 .value(
"FOOTBALLGAME2", FOOTBALLGAME2)
968 .value(
"VBRDG0", VBRDG0)
969 .value(
"VBRDG1", VBRDG1)
970 .value(
"VBRDG2", VBRDG2)
971 .value(
"VBRDG3", VBRDG3)
972 .value(
"NUKESWIRL1", NUKESWIRL1)
973 .value(
"NUKESWIRL2", NUKESWIRL2)
974 .value(
"NUKESWIRL3", NUKESWIRL3)
975 .value(
"NUKESWIRL4", NUKESWIRL4)
979 .value(
"CHURCH1BASE", CHURCH1BASE)
980 .value(
"CHURCH1", CHURCH1)
981 .value(
"CHURCH1BASE", CHURCH1BASE)
982 .value(
"CHURCH1", CHURCH1)
983 .value(
"CHURCH2BASE", CHURCH2BASE)
984 .value(
"CHURCH2", CHURCH2)
985 .value(
"CHURCH3BASE", CHURCH3BASE)
986 .value(
"CHURCH3", CHURCH3)
987 .value(
"CHURCH4BASE", CHURCH4BASE)
988 .value(
"CHURCH4", CHURCH4)
989 .value(
"CHURCH5BASE", CHURCH5BASE)
990 .value(
"CHURCH5", CHURCH5)
991 .value(
"CHURCH6BASE", CHURCH6BASE)
992 .value(
"CHURCH6", CHURCH6)
993 .value(
"CHURCH7BASE", CHURCH7BASE)
994 .value(
"CHURCH7", CHURCH7)
995 .value(
"CHURCH7LAST", CHURCH7LAST)
997 .value(
"TILE_COUNT", TILE_COUNT)
1001 class_<SimSprite>(
"SimSprite")
1007 .property(
"width", &SimSprite::width)
1008 .property(
"height", &SimSprite::height)
1009 .property(
"xOffset", &SimSprite::xOffset)
1010 .property(
"yOffset", &SimSprite::yOffset)
1013 .property(
"origX", &SimSprite::origX)
1014 .property(
"origY", &SimSprite::origY)
1017 .property(
"count", &SimSprite::count)
1018 .property(
"soundCount", &SimSprite::soundCount)
1019 .property(
"dir", &SimSprite::dir)
1020 .property(
"newDir", &SimSprite::newDir)
1021 .property(
"step", &SimSprite::step)
1022 .property(
"flag", &SimSprite::flag)
1023 .property(
"control", &SimSprite::control)
1024 .property(
"turn", &SimSprite::turn)
1025 .property(
"accel", &SimSprite::accel)
1026 .property(
"speed", &SimSprite::speed)
1029 class_<Micropolis>(
"Micropolis")
1035 .function(
"setSpeed", &Micropolis::setSpeed)
1037 .function(
"setCityName", &Micropolis::setCityName)
1038 .function(
"setYear", &Micropolis::setYear)
1053 .property(
"simSpeed", &Micropolis::simSpeed)
1054 .property(
"simSpeedMeta", &Micropolis::simSpeedMeta)
1103 .property(
"cashFlow", &Micropolis::cashFlow)
1140 .function(
"updateMaps", &Micropolis::updateMaps)
1141 .function(
"updateGraphs", &Micropolis::updateGraphs)
1142 .function(
"updateEvaluation", &Micropolis::updateEvaluation)
short stadiumPop
Number of stadiums.
void setTile(int x, int y, int tile)
void setDoAnimation(bool value)
void seedRandom(int seed)
GameLevel gameLevel
Difficulty level of the game (0..2)
Scenario scenario
Scenario being played.
std::string cityFileName
Filename of the last loaded city.
short churchPop
Number of churches.
short getRandom(short range)
void setAutoGoto(bool value)
bool enableDisasters
Enable disasters.
std::string cityName
Name of the city.
void setFunds(int dollars)
void setAutoBulldoze(bool value)
short disasterWait
Count-down timer for the disaster.
void setEnableSound(bool value)
void setEnableDisasters(bool value)
void randomlySeedRandom()
short hospitalPop
Number of hospitals.
void generateMap(int seed)
ToolResult doTool(EditingTool tool, short tileX, short tileY)
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)
Scenario disasterEvent
The disaster for which a count-down is running.
void makeSound(const std::string &channel, const std::string &sound, int x=-1, int y=-1)
void setGameLevel(GameLevel level)
int getTile(int x, int y)
CityClass cityClass
City class, affected by city population.
short getERandom(short limit)
Quad totalFunds
Funds of the player.
void setAutoBudget(bool value)
int posY
Vertical coordnate of the position.
int posX
Horizontal coordinate of the position.
bool move(Direction2 dir)
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.
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?
Header file for 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 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.
@ 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 const int WORLD_W_4
static const int MAX_TRAFFIC_DISTANCE
static Direction2 rotate45(Direction2 dir, int count=1)
static Direction2 rotate180(Direction2 dir)
@ DIR2_SOUTH_EAST
Direction pointing south-east.
@ DIR2_NORTH_EAST
Direction pointing north-east.
@ DIR2_WEST
Direction pointing west.
@ DIR2_INVALID
Invalid direction.
@ DIR2_SOUTH
Direction pointing south.
@ DIR2_EAST
Direction pointing east.
@ DIR2_NORTH_WEST
Direction pointing north-west.
@ DIR2_SOUTH_WEST
Direction pointing south-west.
@ DIR2_NORTH
Direction pointing north.
static Direction2 increment45(Direction2 dir, int count=1)
static Direction2 rotate90(Direction2 dir)
static Direction2 increment90(Direction2 dir)
@ STR202_POPULATIONDENSITY_LOW
Low.
@ STR202_LANDVALUE_HIGH_CLASS
High.
@ STR202_CRIME_DANGEROUS
Dangerous.
@ STR202_POPULATIONDENSITY_HIGH
High.
@ STR202_GROWRATE_STABLE
Stable.
@ STR202_LANDVALUE_LOWER_CLASS
Lower Class.
@ STR202_POPULATIONDENSITY_VERYHIGH
Very High.
@ STR202_CRIME_LIGHT
Light.
@ STR202_POLLUTION_MODERATE
Moderate.
@ STR202_LANDVALUE_SLUM
Slum.
@ STR202_POLLUTION_VERY_HEAVY
Very Heavy.
@ STR202_GROWRATE_DECLINING
Declining.
@ STR202_POLLUTION_HEAVY
Heavy.
@ STR202_LANDVALUE_MIDDLE_CLASS
Middle Class.
@ STR202_POPULATIONDENSITY_MEDIUM
Medium.
@ STR202_GROWRATE_SLOWGROWTH
Slow Growth.
@ STR202_GROWRATE_FASTGROWTH
Fast Growth.
@ STR202_CRIME_MODERATE
Moderate.
@ STR202_POLLUTION_NONE
None.
@ MESSAGE_TAX_TOO_HIGH
Citizens upset. The tax rate is too high.
@ MESSAGE_SCENARIO_WON
You won the scenario.
@ MESSAGE_SCENARIO_SAN_FRANCISCO
San Francisco scenario.
@ MESSAGE_FIRE_REPORTED
20: Fire reported !
@ MESSAGE_SHIP_CRASHED
25: Shipwreck reported !
@ MESSAGE_REACHED_MEGALOPOLIS
Population has reached 500,000.
@ MESSAGE_PLANE_CRASHED
A plane has crashed !
@ MESSAGE_SCENARIO_DETROIT
55: Detroit scenario.
@ MESSAGE_BULLDOZE_AREA_FIRST
Area must be bulldozed first.
@ MESSAGE_RIOTS_REPORTED
They're rioting in the streets !!
@ MESSAGE_SCENARIO_LOST
You lose the scenario.
@ MESSAGE_TRAIN_CRASHED
A train crashed !
@ MESSAGE_SCENARIO_RIO_DE_JANEIRO
57: Rio de Janeiro scenario.
@ MESSAGE_HIGH_UNEMPLOYMENT
Unemployment rate is high.
@ MESSAGE_NEED_MORE_RAILS
5: Inadequate rail system.
@ MESSAGE_BLACKOUTS_REPORTED
15: Blackouts reported. Check power map.
@ MESSAGE_SCENARIO_BOSTON
Boston scenario.
@ MESSAGE_ROAD_NEEDS_FUNDING
Roads deteriorating, due to lack of funds.
@ MESSAGE_LAST
Last valid message.
@ MESSAGE_NEED_MORE_INDUSTRIAL
More industrial zones needed.
@ MESSAGE_NOT_ENOUGH_POWER
40: Brownouts, build another Power Plant.
@ MESSAGE_HELICOPTER_CRASHED
A helicopter crashed !
@ MESSAGE_NUCLEAR_MELTDOWN
A Nuclear Meltdown has occurred !!!
@ MESSAGE_NEED_MORE_PARKS
Need more parks.
@ MESSAGE_MONSTER_SIGHTED
A Monster has been sighted !!
@ MESSAGE_REACHED_TOWN
35: Population has reached 2,000.
@ MESSAGE_REACHED_METROPOLIS
Population has reached 100,000.
@ MESSAGE_NEED_MORE_ROADS
More roads required.
@ MESSAGE_EXPLOSION_REPORTED
Explosion detected !
@ MESSAGE_SCENARIO_HAMBURG
Hamburg scenario.
@ MESSAGE_TORNADO_SIGHTED
Tornado reported !!
@ MESSAGE_NEED_AIRPORT
Commerce requires an Airport.
@ MESSAGE_HEAVY_TRAFFIC
Heavy Traffic reported.
@ MESSAGE_POLICE_NEEDS_FUNDING
Police departments need funding.
@ MESSAGE_NEED_POLICE_STATION
Citizens demand a Police Department.
@ MESSAGE_NO_MONEY
YOUR CITY HAS GONE BROKE!
@ MESSAGE_HIGH_CRIME
Crime very high.
@ MESSAGE_SCENARIO_BERN
Bern scenario.
@ MESSAGE_REACHED_CITY
Population has reached 10,000.
@ MESSAGE_SCENARIO_TOKYO
Tokyo scenario.
@ MESSAGE_REACHED_CAPITAL
Population has reached 50,000.
@ MESSAGE_FIREBOMBING
30: Firebombing reported !
@ MESSAGE_NEED_FIRE_STATION
Citizens demand a Fire Department.
@ MESSAGE_ABOUT_MICROPOLIS
About micropolis.
@ MESSAGE_LOADED_SAVED_CITY
Restored a Saved City.
@ MESSAGE_STARTED_NEW_CITY
45: Started a New City.
@ MESSAGE_NEED_ELECTRICITY
Build a Power Plant.
@ MESSAGE_NEED_MORE_COMMERCIAL
More commercial zones needed.
@ MESSAGE_NOT_ENOUGH_FUNDS
Insufficient funds to build that.
@ MESSAGE_SCENARIO_DULLSVILLE
50: Dullsville scenario.
@ MESSAGE_NEED_SEAPORT
Industry requires a Sea Port.
@ MESSAGE_FIRE_STATION_NEEDS_FUNDING
Fire departments need funding.
@ MESSAGE_HIGH_POLLUTION
10: Pollution very high.
@ MESSAGE_NEED_STADIUM
Residents demand a Stadium.
@ MESSAGE_TRAFFIC_JAMS
Frequent traffic jams reported.
@ MESSAGE_FLOODING_REPORTED
Flooding reported !!
@ MESSAGE_EARTHQUAKE
Major earthquake reported !!!
@ MESSAGE_NEED_MORE_RESIDENTIAL
More residential zones needed.