]> git.zerfleddert.de Git - micropolis/blob - src/sim/headers/sim.h
XINCLUDE: use /usr/X11R6/include everywhere
[micropolis] / src / sim / headers / sim.h
1 /* sim.h: Main include file
2 *
3 * Micropolis, Unix Version. This game was released for the Unix platform
4 * in or about 1990 and has been modified for inclusion in the One Laptop
5 * Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If
6 * you need assistance with this program, you may contact:
7 * http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.
8 *
9 * This program is free software: you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License as published by
11 * the Free Software Foundation, either version 3 of the License, or (at
12 * your option) any later version.
13 *
14 * This program is distributed in the hope that it will be useful, but
15 * WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 * General Public License for more details. You should have received a
18 * copy of the GNU General Public License along with this program. If
19 * not, see <http://www.gnu.org/licenses/>.
20 *
21 * ADDITIONAL TERMS per GNU GPL Section 7
22 *
23 * No trademark or publicity rights are granted. This license does NOT
24 * give you any right, title or interest in the trademark SimCity or any
25 * other Electronic Arts trademark. You may not distribute any
26 * modification of this program using the trademark SimCity or claim any
27 * affliation or association with Electronic Arts Inc. or its employees.
28 *
29 * Any propagation or conveyance of this program must include this
30 * copyright notice and these terms.
31 *
32 * If you convey this program (or any modifications of it) and assume
33 * contractual liability for the program to recipients of it, you agree
34 * to indemnify Electronic Arts for any liability that those contractual
35 * assumptions impose on Electronic Arts.
36 *
37 * You may not misrepresent the origins of this program; modified
38 * versions of the program must be marked as such and not identified as
39 * the original program.
40 *
41 * This disclaimer supplements the one included in the General Public
42 * License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS
43 * PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY
44 * OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF
45 * SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS
46 * DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES,
47 * INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY,
48 * FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY
49 * RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING,
50 * USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST
51 * INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL
52 * MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE
53 * UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE
54 * WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE
55 * CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR
56 * ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME
57 * JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED
58 * WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A
59 * CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY
60 * NOT APPLY TO YOU.
61 */
62
63 /* workaround sun c compiler junk */
64
65 #ifdef sun
66
67 #define _TTYCHARS_
68 #define CTRL(c) (#c[0]&037)
69
70 #ifndef SOLARIS2
71 #define __sys_ioccom_h
72 #define _IOCPARM_MASK 0xff /* parameters must be < 256 bytes */
73 #define _IOC_VOID 0x20000000 /* no parameters */
74 #define _IOC_OUT 0x40000000 /* copy out parameters */
75 #define _IOC_IN 0x80000000 /* copy in parameters */
76 #define _IOC_INOUT (_IOC_IN|_IOC_OUT)
77 #define _IO(x,y) (_IOC_VOID|(#x[0]<<8)|y)
78 #define _IOR(x,y,t) (_IOC_OUT|((sizeof(t)&_IOCPARM_MASK)<<16)|(#x[0]<<8)|y)
79 #define _IORN(x,y,t) (_IOC_OUT|(((t)&_IOCPARM_MASK)<<16)|(#x[0]<<8)|y)
80 #define _IOW(x,y,t) (_IOC_IN|((sizeof(t)&_IOCPARM_MASK)<<16)|(#x[0]<<8)|y)
81 #define _IOWN(x,y,t) (_IOC_IN|(((t)&_IOCPARM_MASK)<<16)|(#x[0]<<8)|y)
82 #define _IOWR(x,y,t) (_IOC_INOUT|((sizeof(t)&_IOCPARM_MASK)<<16)|(#x[0]<<8)|y)
83 #define _IOWRN(x,y,t) (_IOC_INOUT|(((t)&_IOCPARM_MASK)<<16)|(#x[0]<<8)|y)
84 #endif
85
86 #endif
87
88
89 #include <stdio.h>
90 #include <stdlib.h>
91 #include <assert.h>
92 #include <ctype.h>
93 #include <setjmp.h>
94 #include <errno.h>
95 #include <signal.h>
96 #include <math.h>
97 #include <unistd.h>
98 #include <sys/types.h>
99 #include <sys/time.h>
100 #include <sys/stat.h>
101 #include <sys/file.h>
102 #include <sys/ioctl.h>
103 #include <sys/resource.h>
104 #ifndef MSDOS
105 #include <sys/mman.h>
106 #include <netinet/in.h>
107 #include <arpa/inet.h>
108 #endif
109
110 #ifdef sun
111 #ifdef __SVR4
112 #include <sys/systeminfo.h>
113 #else
114 #include <sys/vadvise.h>
115 #endif
116 #endif
117
118 #ifdef sgi
119 #if 0
120 #include <audio.h>
121 #endif
122 #endif
123
124 #include <sys/ipc.h>
125 #include <sys/shm.h>
126 #include <X11/Xlib.h>
127 #include <X11/Xutil.h>
128 #include <X11/Xatom.h>
129 #include <X11/extensions/XShm.h>
130
131 //#include <xpmtk.h>
132 #include <X11/xpm.h>
133
134 /* gcc compat workaround! */
135 #define _STDDEF_H
136
137 #include "tclxtend.h"
138 #include "tclint.h"
139 #include "tclunix.h"
140 #include "tkconfig.h"
141 #include "tkint.h"
142
143 #include "mac.h"
144 #include "view.h"
145 #include "macros.h"
146
147 /* Constants */
148
149 #define TRUE 1
150 #define FALSE 0
151
152 #ifdef MEGA
153 #define SimWidth (120 * MEGA)
154 #define SimHeight (100 * MEGA)
155 #else
156 #define SimWidth 120
157 #define SimHeight 100
158 #endif
159
160 #define WORLD_X SimWidth
161 #define WORLD_Y SimHeight
162 #define HWLDX (SimWidth >>1)
163 #define HWLDY (SimHeight >>1)
164 #define QWX (SimWidth >>2)
165 #define QWY (SimHeight >>2)
166 #define SmX (SimWidth >>3)
167 #define SmY ((SimHeight + 7) >>3)
168
169 #define EDITOR_W (WORLD_X * 16)
170 #define EDITOR_H (WORLD_Y * 16)
171 #define MAP_W (WORLD_X * 3)
172 #define MAP_H (WORLD_Y * 3)
173
174 #define NIL 0
175 #define HORIZ 1
176 #define VERT 0
177
178 #define PROBNUM 10
179
180 #define HISTLEN 480
181 #define MISCHISTLEN 240
182
183 #define POWERMAPROW ((WORLD_X + 15) / 16)
184
185 #ifdef MEGA
186 #define POWERMAPLEN ((QUAD)(2 * POWERMAPROW * WORLD_Y))
187 #define POWERWORD(x, y) ((((QUAD)(x)) >>4) + (((QUAD)(y)) * POWERMAPROW))
188 #else
189 #define POWERMAPLEN 1700 /* ??? PWRMAPSIZE */
190 #define POWERWORD(x, y) (((x) >>4) + ((y) <<3))
191 #endif
192
193 #define SETPOWERBIT(x, y) PowerMap[POWERWORD((x), (y))] |= 1 << ((x) & 15)
194 #define PWRMAPSIZE (POWERMAPROW * WORLD_Y)
195 #define PWRSTKSIZE ((WORLD_X * WORLD_Y) / 4)
196
197 #define ALMAP 0 /* all */
198 #define REMAP 1 /* residential */
199 #define COMAP 2 /* commercial */
200 #define INMAP 3 /* industrial */
201
202 #define PRMAP 4 /* power */
203 #define RDMAP 5 /* road */
204
205 #define PDMAP 6 /* population density */
206 #define RGMAP 7 /* rate of growth */
207
208 #define TDMAP 8 /* traffic density */
209 #define PLMAP 9 /* pollution */
210 #define CRMAP 10 /* crime */
211 #define LVMAP 11 /* land value */
212
213 #define FIMAP 12 /* fire radius */
214 #define POMAP 13 /* police radius */
215 #define DYMAP 14 /* dynamic */
216
217 #define NMAPS 15
218
219 /* These adjust frequency in Simulate() */
220
221 #define VALVERATE 2
222 #define CENSUSRATE 4
223 #define TAXFREQ 48
224
225 /* These are names of the 16 colors */
226 #define COLOR_WHITE 0
227 #define COLOR_YELLOW 1
228 #define COLOR_ORANGE 2
229 #define COLOR_RED 3
230 #define COLOR_DARKRED 4
231 #define COLOR_DARKBLUE 5
232 #define COLOR_LIGHTBLUE 6
233 #define COLOR_BROWN 7
234 #define COLOR_LIGHTGREEN 8
235 #define COLOR_DARKGREEN 9
236 #define COLOR_OLIVE 10
237 #define COLOR_LIGHTBROWN 11
238 #define COLOR_LIGHTGRAY 12
239 #define COLOR_MEDIUMGRAY 13
240 #define COLOR_DARKGRAY 14
241 #define COLOR_BLACK 15
242
243 /* Status Bits */
244
245 #define PWRBIT 32768 /*20 bit 15 */
246 #define CONDBIT 16384 /*10 bit 14 */
247 #define BURNBIT 8192 /*8 bit 13 */
248 #define BULLBIT 4096 /*4 bit 12 */
249 #define ANIMBIT 2048 /*2 bit 11 */
250 #define ZONEBIT 1024 /*1 bit 10 */
251 #define ALLBITS 64512 /* mask for upper 6 bits */
252 #define LOMASK 1023 /* mask for low 10 bits */
253
254 #define BLBNBIT (BULLBIT+BURNBIT)
255 #define BLBNCNBIT (BULLBIT+BURNBIT+CONDBIT)
256 #define BNCNBIT (BURNBIT+CONDBIT)
257
258 /* Object & Sound Numbers */
259
260 #define TRA 1
261 #define COP 2
262 #define AIR 3
263 #define SHI 4
264 #define GOD 5
265 #define TOR 6
266 #define EXP 7
267 #define BUS 8
268
269 /* Max # of Objects */
270
271 #define OBJN 9
272
273 /* Graph Histories */
274 #define RES_HIST 0
275 #define COM_HIST 1
276 #define IND_HIST 2
277 #define MONEY_HIST 3
278 #define CRIME_HIST 4
279 #define POLLUTION_HIST 5
280 #define HISTORIES 6
281 #define ALL_HISTORIES ((1 <<HISTORIES) - 1)
282
283 /* Character Mapping */
284
285 #define DIRT 0
286 #define RIVER 2
287 #define REDGE 3
288 #define CHANNEL 4
289 #define FIRSTRIVEDGE 5
290 #define LASTRIVEDGE 20
291 #define TREEBASE 21
292 #define LASTTREE 36
293 #define WOODS 37
294 #define UNUSED_TRASH1 38
295 #define UNUSED_TRASH2 39
296 #define WOODS2 40
297 #define WOODS3 41
298 #define WOODS4 42
299 #define WOODS5 43
300 #define RUBBLE 44
301 #define LASTRUBBLE 47
302 #define FLOOD 48
303 #define LASTFLOOD 51
304 #define RADTILE 52
305 #define UNUSED_TRASH3 53
306 #define UNUSED_TRASH4 54
307 #define UNUSED_TRASH5 55
308 #define FIRE 56
309 #define FIREBASE 56
310 #define LASTFIRE 63
311 #define ROADBASE 64
312 #define HBRIDGE 64
313 #define VBRIDGE 65
314 #define ROADS 66
315 #define INTERSECTION 76
316 #define HROADPOWER 77
317 #define VROADPOWER 78
318 #define BRWH 79
319 #define LTRFBASE 80
320 #define BRWV 95
321 #define BRWXXX1 111
322 #define BRWXXX2 127
323 #define BRWXXX3 143
324 #define HTRFBASE 144
325 #define BRWXXX4 159
326 #define BRWXXX5 175
327 #define BRWXXX6 191
328 #define LASTROAD 206
329 #define BRWXXX7 207
330 #define POWERBASE 208
331 #define HPOWER 208
332 #define VPOWER 209
333 #define LHPOWER 210
334 #define LVPOWER 211
335 #define RAILHPOWERV 221
336 #define RAILVPOWERH 222
337 #define LASTPOWER 222
338 #define UNUSED_TRASH6 223
339 #define RAILBASE 224
340 #define HRAIL 224
341 #define VRAIL 225
342 #define LHRAIL 226
343 #define LVRAIL 227
344 #define HRAILROAD 237
345 #define VRAILROAD 238
346 #define LASTRAIL 238
347 #define ROADVPOWERH 239 /* bogus? */
348 #define RESBASE 240
349 #define FREEZ 244
350 #define HOUSE 249
351 #define LHTHR 249
352 #define HHTHR 260
353 #define RZB 265
354 #define HOSPITAL 409
355 #define CHURCH 418
356 #define COMBASE 423
357 #define COMCLR 427
358 #define CZB 436
359 #define INDBASE 612
360 #define INDCLR 616
361 #define LASTIND 620
362 #define IND1 621
363 #define IZB 625
364 #define IND2 641
365 #define IND3 644
366 #define IND4 649
367 #define IND5 650
368 #define IND6 676
369 #define IND7 677
370 #define IND8 686
371 #define IND9 689
372 #define PORTBASE 693
373 #define PORT 698
374 #define LASTPORT 708
375 #define AIRPORTBASE 709
376 #define RADAR 711
377 #define AIRPORT 716
378 #define COALBASE 745
379 #define POWERPLANT 750
380 #define LASTPOWERPLANT 760
381 #define FIRESTBASE 761
382 #define FIRESTATION 765
383 #define POLICESTBASE 770
384 #define POLICESTATION 774
385 #define STADIUMBASE 779
386 #define STADIUM 784
387 #define FULLSTADIUM 800
388 #define NUCLEARBASE 811
389 #define NUCLEAR 816
390 #define LASTZONE 826
391 #define LIGHTNINGBOLT 827
392 #define HBRDG0 828
393 #define HBRDG1 829
394 #define HBRDG2 830
395 #define HBRDG3 831
396 #define RADAR0 832
397 #define RADAR1 833
398 #define RADAR2 834
399 #define RADAR3 835
400 #define RADAR4 836
401 #define RADAR5 837
402 #define RADAR6 838
403 #define RADAR7 839
404 #define FOUNTAIN 840
405 #define INDBASE2 844
406 #define TELEBASE 844
407 #define TELELAST 851
408 #define SMOKEBASE 852
409 #define TINYEXP 860
410 #define SOMETINYEXP 864
411 #define LASTTINYEXP 867
412 #define COALSMOKE1 916
413 #define COALSMOKE2 920
414 #define COALSMOKE3 924
415 #define COALSMOKE4 928
416 #define FOOTBALLGAME1 932
417 #define FOOTBALLGAME2 940
418 #define VBRDG0 948
419 #define VBRDG1 949
420 #define VBRDG2 950
421 #define VBRDG3 951
422
423 #define TILE_COUNT 960
424
425 /*
426 * These describe the wand values, the object dragged around on the screen.
427 */
428
429 #define residentialState 0
430 #define commercialState 1
431 #define industrialState 2
432 #define fireState 3
433 #define queryState 4
434 #define policeState 5
435 #define wireState 6
436 #define dozeState 7
437 #define rrState 8
438 #define roadState 9
439 #define chalkState 10
440 #define eraserState 11
441 #define stadiumState 12
442 #define parkState 13
443 #define seaportState 14
444 #define powerState 15
445 #define nuclearState 16
446 #define airportState 17
447 #define networkState 18
448
449
450 #define firstState residentialState
451 #define lastState networkState
452
453 #if 0
454 #define specialState 16
455 #define monsterGoalState 17
456 #define helicopterGoalState 18
457 #define blackState 19
458 #define whiteState 20
459 #define redState 21
460 #define orangeState 23
461 #define blueState 24
462 #define greenState 25
463 #define brownState 26
464 #endif
465
466
467 #define STATE_CMD 0
468 #define STATE_TILES 1
469 #define STATE_OVERLAYS 2
470 #define STATE_GRAPHS 3
471
472
473 extern short *Map[WORLD_X]; /* Main Map 120 x 100 */
474 extern Byte *PopDensity[HWLDX]; /* 2X2 Maps 60 x 50 */
475 extern Byte *TrfDensity[HWLDX];
476 extern Byte *PollutionMem[HWLDX];
477 extern Byte *LandValueMem[HWLDX];
478 extern Byte *CrimeMem[HWLDX];
479 extern Byte *tem[HWLDX];
480 extern Byte *tem2[HWLDX];
481 extern Byte *TerrainMem[QWX]; /* 4X4 Maps 30 x 25 */
482 extern Byte *Qtem[QWX];
483 extern short RateOGMem[SmX][SmY];
484 extern short FireStMap[SmX][SmY]; /* 8X8 Maps 15 x 13 */
485 extern short PoliceMap[SmX][SmY];
486 extern short PoliceMapEffect[SmX][SmY];
487 extern short ComRate[SmX][SmY];
488 extern short FireRate[SmX][SmY];
489 extern short STem[SmX][SmY];
490 extern short SpriteXOffset[OBJN];
491 extern short SpriteYOffset[OBJN];
492 extern short SMapX, SMapY;
493 extern short CChr, CChr9;
494 extern short RoadTotal, RailTotal, FirePop;
495 extern short ResPop, ComPop, IndPop, TotalPop, LastTotalPop;
496 extern short ResZPop, ComZPop, IndZPop, TotalZPop;
497 extern short HospPop, ChurchPop, StadiumPop;
498 extern short PolicePop, FireStPop;
499 extern short CoalPop, NuclearPop, PortPop, APortPop;
500 extern short NeedHosp, NeedChurch;
501 extern short CrimeAverage, PolluteAverage, LVAverage;
502 extern char *MicropolisVersion;
503 extern char *CityName;
504 extern char *CityFileName;
505 extern char *StartupName;
506 extern short StartingYear;
507 extern QUAD CityTime;
508 extern QUAD LastCityTime;
509 extern QUAD LastCityMonth;
510 extern QUAD LastCityYear;
511 extern QUAD LastFunds;
512 extern QUAD LastR, LastC, LastI;
513 extern short GameLevel;
514 extern short Cycle;
515 extern short ScenarioID;
516 extern short ShakeNow;
517 extern QUAD DonDither;
518 extern int DoOverlay;
519
520 extern short *ResHis, ResHisMax;
521 extern short *ComHis, ComHisMax;
522 extern short *IndHis, IndHisMax;
523 extern short *MoneyHis, *CrimeHis, *PollutionHis, *MiscHis;
524 extern short *PowerMap;
525
526 extern float roadPercent, policePercent, firePercent;
527 extern QUAD RoadSpend, PoliceSpend, FireSpend;
528 extern QUAD roadMaxValue, policeMaxValue, fireMaxValue;
529 extern QUAD TaxFund, RoadFund, PoliceFund, FireFund;
530 extern short RoadEffect, PoliceEffect, FireEffect;
531 extern short TaxFlag, CityTax;
532 extern QUAD TotalFunds;
533
534 extern QUAD costOf[];
535
536 extern short flagBlink;
537 extern unsigned char tileSynch;
538 extern short aniTile[];
539 extern unsigned char aniSynch[];
540 extern int TilesAnimated;
541 extern int DoAnimation;
542 extern int DoMessages;
543 extern int DoNotices;
544 extern unsigned char ColorIntensities[];
545
546 extern short MesX, MesY;
547 extern short MesNum, MessagePort;
548 extern QUAD LastMesTime;
549
550 extern short SimSpeed;
551 extern short SimMetaSpeed;
552 extern short NoDisasters;
553 extern short autoBulldoze;
554 extern short autoBudget;
555 extern short autoGo;
556 extern short UserSoundOn;
557
558 extern short DisasterEvent;
559 extern short DisasterWait;
560
561 extern short ResCap, ComCap, IndCap;
562 extern short RValve, CValve, IValve;
563 extern short PwrdZCnt;
564 extern short unPwrdZCnt;
565
566 extern char *HomeDir, *ResourceDir, *HostName;
567
568 extern short Graph10Max, Graph120Max;
569 extern short Res2HisMax, Com2HisMax, Ind2HisMax;
570 extern unsigned char *History10[HISTORIES], *History120[HISTORIES];
571 extern short CityScore;
572 extern short deltaCityScore;
573 extern short ScoreType;
574 extern short ScoreWait;
575 extern short CityClass;
576 extern short PolMaxX, PolMaxY;
577 extern int PowerStackNum;
578 extern short TrafficAverage;
579 extern short PosStackN;
580 extern short SMapXStack[], SMapYStack[];
581 extern short Zsource;
582 extern short HaveLastMessage;
583 extern short PdestX, PdestY;
584 extern short CdestX, CdestY;
585 extern int absDist;
586 extern short CopFltCnt;
587 extern short GodCnt;
588 extern short GdestX, GdestY;
589 extern short GorgX, GorgY;
590 extern short GodControl;
591 extern short CopControl;
592 extern short CdestX, CdestY;
593 extern short TrafMaxX, TrafMaxY;
594 extern short CrimeMaxX, CrimeMaxY;
595 extern short FloodX, FloodY;
596 extern short CrashX, CrashY;
597 extern short CCx, CCy;
598 extern QUAD CityPop, deltaCityPop;
599 extern char *cityClassStr[6];
600 extern short CityYes, CityNo;
601 extern short ProblemTable[PROBNUM];
602 extern short ProblemVotes[PROBNUM];
603 extern short ProblemOrder[4];
604 extern QUAD CityAssValue;
605
606 extern short InitSimLoad;
607 extern short DoInitialEval;
608 extern int Startup;
609 extern int StartupGameLevel;
610 extern int PerformanceTiming;
611 extern double FlushTime;
612
613 extern char *optarg;
614 extern int optind;
615 extern struct timeval start_time, now_time, beat_time, last_now_time;
616 extern Sim *sim;
617 extern int WireMode;
618 extern int MultiPlayerMode;
619 extern int SugarMode;
620 extern int sim_delay;
621 extern int sim_skips;
622 extern int sim_skip;
623 extern int sim_paused;
624 extern int sim_paused_speed;
625 extern int sim_tty;
626 #ifdef CAM
627 extern int sim_just_cam;
628 #endif
629 extern int heat_steps;
630 extern int heat_flow;
631 extern int heat_rule;
632 extern int UpdateDelayed;
633 extern int DynamicData[32];
634 extern int Players;
635 extern int Votes;
636 extern int BobHeight;
637 extern int OverRide;
638 extern int Expensive;
639 extern int PendingTool;
640 extern int PendingX;
641 extern int PendingY;
642 extern int TreeLevel;
643 extern int LakeLevel;
644 extern int CurveLevel;
645 extern int CreateIsland;
646 extern short specialBase;
647 extern short PunishCnt;
648 extern short Dozing;
649 extern short toolSize[];
650 extern short toolOffset[];
651 extern QUAD toolColors[];
652 extern char *Displays;
653 extern char *FirstDisplay;
654 extern char *dateStr[12];
655
656 extern short NewMap;
657 extern short NewMapFlags[NMAPS];
658 extern short NewGraph;
659 extern short ValveFlag;
660 extern short MustUpdateFunds;
661 extern short MustUpdateOptions;
662 extern short CensusChanged;
663 extern short EvalChanged;
664 extern short MeltX, MeltY;
665 extern int NeedRest;
666 extern int ExitReturn;
667
668 extern Tcl_Interp *tk_mainInterp;
669 extern Tk_Window MainWindow;
670 extern int FlushStyle;
671 extern int GotXError;
672
673 extern short Rand(short range);
674 extern short RandInt(void);
675
676 extern Sim *MakeNewSim();
677 extern SimView *MakeNewView();
678 extern SimSprite *GetSprite();
679 extern SimSprite *MakeSprite();
680 extern SimSprite *MakeNewSprite();
681
682 extern struct XDisplay *XDisplays;
683
684 /* Functions referenced from other files */
685 /* g_ani.c */
686 void animateTiles(void);
687 /* g_bigmap.c */
688 void WireDrawBeegMapRect(SimView *view, short x, short y, short w, short h);
689 void MemDrawBeegMapRect(SimView *view, int x, int y, int w, int h);
690 /* g_map.c */
691 void setUpMapProcs(void);
692 void MemDrawMap(SimView *view);
693 /* g_setup.c */
694 void GetViewTiles(SimView *view);
695 void GetPixmaps(XDisplay *xd);
696 /* g_smmaps.c */
697 void drawAll(SimView *view);
698 void drawRes(SimView *view);
699 void drawCom(SimView *view);
700 void drawInd(SimView *view);
701 void drawLilTransMap(SimView *view);
702 void drawPower(SimView *view);
703 void drawDynamic(SimView *view);
704 /* rand.c */
705 int sim_rand(void);
706 void sim_srand(u_int seed);
707 /* sim.c */
708 void sim_exit(int val);
709 void sim_update_editors(void);
710 void sim_update(void);
711 void sim_init(void);
712 void sim_really_exit(int val);
713 void sim_loop(int doSim);
714 /* s_alloc.c */
715 void initMapArrays(void);
716 /* s_disast.c */
717 void DoDisasters(void);
718 void DoFlood(void);
719 void MakeFlood(void);
720 void MakeEarthquake(void);
721 void MakeMeltdown(void);
722 void MakeFire(void);
723 void FireBomb(void);
724 /* s_eval.c */
725 void EvalInit(void);
726 void CityEvaluation(void);
727 int GetFire(void);
728 int GetUnemployment(void);
729 int AverageTrf(void);
730 /* s_fileio.c */
731 int LoadCity(char *filename);
732 void SaveCity(void);
733 void SaveCityAs(char *filename);
734 void LoadScenario(short s);
735 /* s_gen.c */
736 void ClearMap(void);
737 void SmoothTrees(void);
738 void SmoothRiver(void);
739 void GenerateSomeCity(int r);
740 void ClearUnnatural(void);
741 void SmoothWater(void);
742 void GenerateNewCity(void);
743 /* s_init.c */
744 void ResetMapState(void);
745 void ResetEditorState(void);
746 void InitWillStuff(void);
747 /* s_msg.c */
748 void SendMessages(void);
749 void SendMesAt(short Mnum, short x, short y);
750 void ClearMes(void);
751 int SendMes(int Mnum);
752 void SendMesAt(short Mnum, short x, short y);
753 void doMessage(void);
754 /* s_power.c */
755 void PushPowerStack(void);
756 void DoPowerScan(void);
757 int MoveMapSim (short MDir);
758 /* s_scan.c */
759 void FireAnalysis(void);
760 void PopDenScan(void);
761 void CrimeScan(void);
762 void PTLScan(void);
763 /* s_sim.c */
764 void SimFrame(void);
765 void DoSimInit(void);
766 void SeedRand(int seed);
767 void DoMeltdown(int SX, int SY);
768 void FireZone(int Xloc, int Yloc, int ch);
769 int Rand16(void);
770 int Rand16Signed(void);
771 void RandomlySeedRand();
772 void RepairZone(short ZCent, short zsize);
773 void DoSPZone(short PwrOn);
774 void UpdateFundEffects(void);
775 /* s_traf.c */
776 int FindPRoad(void);
777 int MakeTraf(int Zt);
778 /* s_zone.c */
779 void DoZone(void);
780 int SetZPower(void);
781 int RZPop(int Ch9);
782 int CZPop(int Ch9);
783 int IZPop(int Ch9);
784 int DoFreePop (void);
785 /* w_budget.c */
786 void UpdateBudgetWindow(void);
787 void InitFundingLevel(void);
788 void drawCurrPercents(void);
789 void DoBudget(void);
790 void drawBudgetWindow(void);
791 void DoBudgetFromMenu(void);
792 void UpdateBudget(void);
793 /* w_con.c */
794 int ConnecTile(short x, short y, short *TileAdrPtr, short Command);
795 /* w_date.c */
796 void date_command_init(void);
797 /* w_editor.c */
798 void DoUpdateEditor(SimView *view);
799 void editor_command_init(void);
800 void DoNewEditor(SimView *view);
801 /* w_eval.c */
802 void scoreDoer(void);
803 void ChangeEval(void);
804 /* w_graph.c */
805 void graphDoer(void);
806 void initGraphs(void);
807 void ChangeCensus(void);
808 void doAllGraphs(void);
809 void DestroyGraph(SimGraph *graph);
810 void InitGraphMax(void);
811 void graph_command_init(void);
812 int ConfigureSimGraph(Tcl_Interp *interp, SimGraph *graph, int argc, char **argv, int flags);
813 /* w_keys.c */
814 void ResetLastKeys(void);
815 void doKeyUp(SimView *view, short charCode);
816 void doKeyDown(SimView *view, short charCode);
817 /* w_map.c */
818 int DoUpdateMap(SimView *view);
819 void map_command_init(void);
820 void DoNewMap(SimView *view);
821 /* w_resrc.c */
822 void GetIndString(char *str, int id, short num);
823 /* w_sim.c */
824 void sim_command_init(void);
825 /* w_sound.c */
826 void InitializeSound(void);
827 void MakeSound(char *channel, char *id);
828 void MakeSoundOn(SimView *view, char *channel, char *id);
829 void SoundOff(void);
830 void StartBulldozer(void);
831 void StopBulldozer(void);
832 void sound_command_init(void);
833 /* w_sprite.c */
834 void MoveObjects(void);
835 void MakeExplosion(int x, int y);
836 void MakeExplosionAt(int x, int y);
837 void GenerateShip(void);
838 void GeneratePlane(int x, int y);
839 void GenerateCopter(int x, int y);
840 void GenerateTrain(int x, int y);
841 void MakeMonster(void);
842 void MakeTornado(void);
843 void MakeAirCrash(void);
844 void DestroyAllSprites(void);
845 void DrawObjects(SimView *view);
846 void sprite_command_init(void);
847 /* w_stubs.c */
848 void SetFunds(int dollars);
849 void Spend(int dollars);
850 void DropFireBombs(void);
851 QUAD TickCount(void);
852 void GameStarted(void);
853 void InitGame(void);
854 void ReallyQuit(void);
855 /* w_tk.c */
856 void tk_main(void);
857 void StopEarthquake(void);
858 void CancelRedrawView(SimView *view);
859 void RedrawMaps(void);
860 void EventuallyRedrawView(SimView *view);
861 void StopToolkit(void);
862 void InvalidateEditors(void);
863 int Eval(char *buf);
864 void DoEarthQuake(void);
865 void Kick(void);
866 void InvalidateMaps(void);
867 int ConfigureTileView(Tcl_Interp *interp, SimView *view, int argc, char **argv, int flags);
868 void DidStopPan(SimView *view);
869 void RedrawEditors(void);
870 void StartMicropolisTimer(void);
871 void StopMicropolisTimer(void);
872 /* w_tool.c */
873 void ToolDrag(SimView *view, int px, int py);
874 void ToolUp(SimView *view, int x, int y);
875 void ChalkTo(SimView *view, int x, int y);
876 void ChalkStart(SimView *view, int x, int y, int color);
877 short tally(short tileValue);
878 int bulldozer_tool(SimView *view, short x, short y);
879 void setWandState(SimView *view, short state);
880 void ToolDown(SimView *view, int x, int y);
881 void DoTool(SimView *view, short tool, short x, short y);
882 /* w_update.c */
883 void DoUpdateHeads(void);
884 void UpdateFunds(void);
885 void UpdateEvaluation(void);
886 void UpdateGraphs(void);
887 void UpdateEditors(void);
888 void UpdateMaps(void);
889 void UpdateHeads(void);
890 void doTimeStuff(void);
891 /* w_util.c */
892 void DoNewGame(void);
893 void setCityName(char *name);
894 void setAnyCityName(char *name);
895 void DoSetMapState(SimView *view, short state);
896 void makeDollarDecimalStr(char *numStr, char *dollarStr);
897 int CurrentYear(void);
898 void SetYear(int year);
899 void Pause(void);
900 void Resume(void);
901 void setSpeed(short speed);
902 void setSkips(int skips);
903 void SetGameLevel(short level);
904 void SetGameLevelFunds(short level);
905 /* w_x.c */
906 void DoTimeoutListen(void);
907 void DoStopMicropolis(void);
908 void UpdateFlush(void);
909 void DoPanTo(struct SimView *view, int x, int y);
910 void DoResizeView(SimView *view, int w, int h);
911 void DestroyView(SimView *view);
912 void ViewToPixelCoords(SimView *view, int x, int y, int *outx, int *outy);
913 void FreeInk(Ink *ink);
914 void AddInk(Ink *ink, int x, int y);
915 void StartInk(Ink *ink, int x, int y);
916 void DoPanBy(struct SimView *view, int dx, int dy);
917 void ViewToTileCoords(SimView *view, int x, int y, int *outx, int *outy);
918 void EraseOverlay(void);
919 SimView *InitNewView(SimView *view, char *title, int class, int w, int h);
920 void IncRefDisplay(XDisplay *xd);
921 void DecRefDisplay(XDisplay *xd);
Impressum, Datenschutz