|
|
1.1 root 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 [email protected].
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 <malloc.h>
95: #include <errno.h>
96: #include <signal.h>
97: #include <math.h>
98: #include <unistd.h>
99: #include <sys/types.h>
100: #include <sys/time.h>
101: #include <sys/stat.h>
102: #include <sys/file.h>
103: #include <sys/ioctl.h>
104: #include <sys/resource.h>
105: #ifndef MSDOS
106: #ifndef HPUX
107: #include <alloca.h>
108: #endif
109: #include <sys/mman.h>
110: #include <netinet/in.h>
111: #include <arpa/inet.h>
112: #endif
113:
114: #ifdef sun
115: #ifdef SOLARIS2
116: #include <sys/systeminfo.h>
117: #else
118: #include <sys/vadvise.h>
119: #endif
120: #endif
121:
122: #ifdef sgi
123: #if 0
124: #include <audio.h>
125: #endif
126: #endif
127:
128: #include <sys/ipc.h>
129: #include <sys/shm.h>
130: #include <X11/Xlib.h>
131: #include <X11/Xutil.h>
132: #include <X11/Xatom.h>
133: #include <X11/extensions/XShm.h>
134:
135: //#include <xpmtk.h>
136: #include <X11/xpm.h>
137:
138: /* gcc compat workaround! */
139: #define _STDDEF_H
140:
141: #include "tclxtend.h"
142: #include "tclint.h"
143: #include "tclunix.h"
144: #include "tkconfig.h"
145: #include "tkint.h"
146:
147: #include "mac.h"
148: #include "view.h"
149: #include "macros.h"
150:
151: /* Constants */
152:
153: #define TRUE 1
154: #define FALSE 0
155:
156: #ifdef MEGA
157: #define SimWidth (120 * MEGA)
158: #define SimHeight (100 * MEGA)
159: #else
160: #define SimWidth 120
161: #define SimHeight 100
162: #endif
163:
164: #define WORLD_X SimWidth
165: #define WORLD_Y SimHeight
166: #define HWLDX (SimWidth >>1)
167: #define HWLDY (SimHeight >>1)
168: #define QWX (SimWidth >>2)
169: #define QWY (SimHeight >>2)
170: #define SmX (SimWidth >>3)
171: #define SmY ((SimHeight + 7) >>3)
172:
173: #define EDITOR_W (WORLD_X * 16)
174: #define EDITOR_H (WORLD_Y * 16)
175: #define MAP_W (WORLD_X * 3)
176: #define MAP_H (WORLD_Y * 3)
177:
178: #define NIL 0
179: #define HORIZ 1
180: #define VERT 0
181:
182: #define PROBNUM 10
183:
184: #define HISTLEN 480
185: #define MISCHISTLEN 240
186:
187: #define POWERMAPROW ((WORLD_X + 15) / 16)
188:
189: #ifdef MEGA
190: #define POWERMAPLEN ((QUAD)(2 * POWERMAPROW * WORLD_Y))
191: #define POWERWORD(x, y) ((((QUAD)(x)) >>4) + (((QUAD)(y)) * POWERMAPROW))
192: #else
193: #define POWERMAPLEN 1700 /* ??? PWRMAPSIZE */
194: #define POWERWORD(x, y) (((x) >>4) + ((y) <<3))
195: #endif
196:
197: #define SETPOWERBIT(x, y) PowerMap[POWERWORD((x), (y))] |= 1 << ((x) & 15)
198: #define PWRMAPSIZE (POWERMAPROW * WORLD_Y)
199: #define PWRSTKSIZE ((WORLD_X * WORLD_Y) / 4)
200:
201: #define ALMAP 0 /* all */
202: #define REMAP 1 /* residential */
203: #define COMAP 2 /* commercial */
204: #define INMAP 3 /* industrial */
205:
206: #define PRMAP 4 /* power */
207: #define RDMAP 5 /* road */
208:
209: #define PDMAP 6 /* population density */
210: #define RGMAP 7 /* rate of growth */
211:
212: #define TDMAP 8 /* traffic density */
213: #define PLMAP 9 /* pollution */
214: #define CRMAP 10 /* crime */
215: #define LVMAP 11 /* land value */
216:
217: #define FIMAP 12 /* fire radius */
218: #define POMAP 13 /* police radius */
219: #define DYMAP 14 /* dynamic */
220:
221: #define NMAPS 15
222:
223: /* These adjust frequency in Simulate() */
224:
225: #define VALVERATE 2
226: #define CENSUSRATE 4
227: #define TAXFREQ 48
228:
229: /* These are names of the 16 colors */
230: #define COLOR_WHITE 0
231: #define COLOR_YELLOW 1
232: #define COLOR_ORANGE 2
233: #define COLOR_RED 3
234: #define COLOR_DARKRED 4
235: #define COLOR_DARKBLUE 5
236: #define COLOR_LIGHTBLUE 6
237: #define COLOR_BROWN 7
238: #define COLOR_LIGHTGREEN 8
239: #define COLOR_DARKGREEN 9
240: #define COLOR_OLIVE 10
241: #define COLOR_LIGHTBROWN 11
242: #define COLOR_LIGHTGRAY 12
243: #define COLOR_MEDIUMGRAY 13
244: #define COLOR_DARKGRAY 14
245: #define COLOR_BLACK 15
246:
247: /* Status Bits */
248:
249: #define PWRBIT 32768 /*20 bit 15 */
250: #define CONDBIT 16384 /*10 bit 14 */
251: #define BURNBIT 8192 /*8 bit 13 */
252: #define BULLBIT 4096 /*4 bit 12 */
253: #define ANIMBIT 2048 /*2 bit 11 */
254: #define ZONEBIT 1024 /*1 bit 10 */
255: #define ALLBITS 64512 /* mask for upper 6 bits */
256: #define LOMASK 1023 /* mask for low 10 bits */
257:
258: #define BLBNBIT (BULLBIT+BURNBIT)
259: #define BLBNCNBIT (BULLBIT+BURNBIT+CONDBIT)
260: #define BNCNBIT (BURNBIT+CONDBIT)
261:
262: /* Object & Sound Numbers */
263:
264: #define TRA 1
265: #define COP 2
266: #define AIR 3
267: #define SHI 4
268: #define GOD 5
269: #define TOR 6
270: #define EXP 7
271: #define BUS 8
272:
273: /* Max # of Objects */
274:
275: #define OBJN 9
276:
277: /* Graph Histories */
278: #define RES_HIST 0
279: #define COM_HIST 1
280: #define IND_HIST 2
281: #define MONEY_HIST 3
282: #define CRIME_HIST 4
283: #define POLLUTION_HIST 5
284: #define HISTORIES 6
285: #define ALL_HISTORIES ((1 <<HISTORIES) - 1)
286:
287: /* Character Mapping */
288:
289: #define DIRT 0
290: #define RIVER 2
291: #define REDGE 3
292: #define CHANNEL 4
293: #define FIRSTRIVEDGE 5
294: #define LASTRIVEDGE 20
295: #define TREEBASE 21
296: #define LASTTREE 36
297: #define WOODS 37
298: #define UNUSED_TRASH1 38
299: #define UNUSED_TRASH2 39
300: #define WOODS2 40
301: #define WOODS3 41
302: #define WOODS4 42
303: #define WOODS5 43
304: #define RUBBLE 44
305: #define LASTRUBBLE 47
306: #define FLOOD 48
307: #define LASTFLOOD 51
308: #define RADTILE 52
309: #define UNUSED_TRASH3 53
310: #define UNUSED_TRASH4 54
311: #define UNUSED_TRASH5 55
312: #define FIRE 56
313: #define FIREBASE 56
314: #define LASTFIRE 63
315: #define ROADBASE 64
316: #define HBRIDGE 64
317: #define VBRIDGE 65
318: #define ROADS 66
319: #define INTERSECTION 76
320: #define HROADPOWER 77
321: #define VROADPOWER 78
322: #define BRWH 79
323: #define LTRFBASE 80
324: #define BRWV 95
325: #define BRWXXX1 111
326: #define BRWXXX2 127
327: #define BRWXXX3 143
328: #define HTRFBASE 144
329: #define BRWXXX4 159
330: #define BRWXXX5 175
331: #define BRWXXX6 191
332: #define LASTROAD 206
333: #define BRWXXX7 207
334: #define POWERBASE 208
335: #define HPOWER 208
336: #define VPOWER 209
337: #define LHPOWER 210
338: #define LVPOWER 211
339: #define RAILHPOWERV 221
340: #define RAILVPOWERH 222
341: #define LASTPOWER 222
342: #define UNUSED_TRASH6 223
343: #define RAILBASE 224
344: #define HRAIL 224
345: #define VRAIL 225
346: #define LHRAIL 226
347: #define LVRAIL 227
348: #define HRAILROAD 237
349: #define VRAILROAD 238
350: #define LASTRAIL 238
351: #define ROADVPOWERH 239 /* bogus? */
352: #define RESBASE 240
353: #define FREEZ 244
354: #define HOUSE 249
355: #define LHTHR 249
356: #define HHTHR 260
357: #define RZB 265
358: #define HOSPITAL 409
359: #define CHURCH 418
360: #define COMBASE 423
361: #define COMCLR 427
362: #define CZB 436
363: #define INDBASE 612
364: #define INDCLR 616
365: #define LASTIND 620
366: #define IND1 621
367: #define IZB 625
368: #define IND2 641
369: #define IND3 644
370: #define IND4 649
371: #define IND5 650
372: #define IND6 676
373: #define IND7 677
374: #define IND8 686
375: #define IND9 689
376: #define PORTBASE 693
377: #define PORT 698
378: #define LASTPORT 708
379: #define AIRPORTBASE 709
380: #define RADAR 711
381: #define AIRPORT 716
382: #define COALBASE 745
383: #define POWERPLANT 750
384: #define LASTPOWERPLANT 760
385: #define FIRESTBASE 761
386: #define FIRESTATION 765
387: #define POLICESTBASE 770
388: #define POLICESTATION 774
389: #define STADIUMBASE 779
390: #define STADIUM 784
391: #define FULLSTADIUM 800
392: #define NUCLEARBASE 811
393: #define NUCLEAR 816
394: #define LASTZONE 826
395: #define LIGHTNINGBOLT 827
396: #define HBRDG0 828
397: #define HBRDG1 829
398: #define HBRDG2 830
399: #define HBRDG3 831
400: #define RADAR0 832
401: #define RADAR1 833
402: #define RADAR2 834
403: #define RADAR3 835
404: #define RADAR4 836
405: #define RADAR5 837
406: #define RADAR6 838
407: #define RADAR7 839
408: #define FOUNTAIN 840
409: #define INDBASE2 844
410: #define TELEBASE 844
411: #define TELELAST 851
412: #define SMOKEBASE 852
413: #define TINYEXP 860
414: #define SOMETINYEXP 864
415: #define LASTTINYEXP 867
416: #define COALSMOKE1 916
417: #define COALSMOKE2 920
418: #define COALSMOKE3 924
419: #define COALSMOKE4 928
420: #define FOOTBALLGAME1 932
421: #define FOOTBALLGAME2 940
422: #define VBRDG0 948
423: #define VBRDG1 949
424: #define VBRDG2 950
425: #define VBRDG3 951
426:
427: #define TILE_COUNT 960
428:
429: /*
430: * These describe the wand values, the object dragged around on the screen.
431: */
432:
433: #define residentialState 0
434: #define commercialState 1
435: #define industrialState 2
436: #define fireState 3
437: #define queryState 4
438: #define policeState 5
439: #define wireState 6
440: #define dozeState 7
441: #define rrState 8
442: #define roadState 9
443: #define chalkState 10
444: #define eraserState 11
445: #define stadiumState 12
446: #define parkState 13
447: #define seaportState 14
448: #define powerState 15
449: #define nuclearState 16
450: #define airportState 17
451: #define networkState 18
452:
453:
454: #define firstState residentialState
455: #define lastState networkState
456:
457: #if 0
458: #define specialState 16
459: #define monsterGoalState 17
460: #define helicopterGoalState 18
461: #define blackState 19
462: #define whiteState 20
463: #define redState 21
464: #define orangeState 23
465: #define blueState 24
466: #define greenState 25
467: #define brownState 26
468: #endif
469:
470:
471: #define STATE_CMD 0
472: #define STATE_TILES 1
473: #define STATE_OVERLAYS 2
474: #define STATE_GRAPHS 3
475:
476:
477: extern short *Map[WORLD_X]; /* Main Map 120 x 100 */
478: extern Byte *PopDensity[HWLDX]; /* 2X2 Maps 60 x 50 */
479: extern Byte *TrfDensity[HWLDX];
480: extern Byte *PollutionMem[HWLDX];
481: extern Byte *LandValueMem[HWLDX];
482: extern Byte *CrimeMem[HWLDX];
483: extern Byte *tem[HWLDX];
484: extern Byte *tem2[HWLDX];
485: extern Byte *TerrainMem[QWX]; /* 4X4 Maps 30 x 25 */
486: extern Byte *Qtem[QWX];
487: extern short RateOGMem[SmX][SmY];
488: extern short FireStMap[SmX][SmY]; /* 8X8 Maps 15 x 13 */
489: extern short PoliceMap[SmX][SmY];
490: extern short PoliceMapEffect[SmX][SmY];
491: extern short ComRate[SmX][SmY];
492: extern short FireRate[SmX][SmY];
493: extern short STem[SmX][SmY];
494: extern short SpriteXOffset[OBJN];
495: extern short SpriteYOffset[OBJN];
496: extern short SMapX, SMapY;
497: extern short CChr, CChr9;
498: extern short RoadTotal, RailTotal, FirePop;
499: extern short ResPop, ComPop, IndPop, TotalPop, LastTotalPop;
500: extern short ResZPop, ComZPop, IndZPop, TotalZPop;
501: extern short HospPop, ChurchPop, StadiumPop;
502: extern short PolicePop, FireStPop;
503: extern short CoalPop, NuclearPop, PortPop, APortPop;
504: extern short NeedHosp, NeedChurch;
505: extern short CrimeAverage, PolluteAverage, LVAverage;
506: extern char *MicropolisVersion;
507: extern char *CityName;
508: extern char *CityFileName;
509: extern char *StartupName;
510: extern short StartingYear;
511: extern QUAD CityTime;
512: extern QUAD LastCityTime;
513: extern QUAD LastCityMonth;
514: extern QUAD LastCityYear;
515: extern QUAD LastFunds;
516: extern QUAD LastR, LastC, LastI;
517: extern short GameLevel;
518: extern short Cycle;
519: extern short ScenarioID;
520: extern short ShakeNow;
521: extern QUAD DonDither;
522: extern int DoOverlay;
523:
524: extern short *ResHis, ResHisMax;
525: extern short *ComHis, ComHisMax;
526: extern short *IndHis, IndHisMax;
527: extern short *MoneyHis, *CrimeHis, *PollutionHis, *MiscHis;
528: extern short *PowerMap;
529:
530: extern float roadPercent, policePercent, firePercent;
531: extern QUAD RoadSpend, PoliceSpend, FireSpend;
532: extern QUAD roadMaxValue, policeMaxValue, fireMaxValue;
533: extern QUAD TaxFund, RoadFund, PoliceFund, FireFund;
534: extern short RoadEffect, PoliceEffect, FireEffect;
535: extern short TaxFlag, CityTax;
536: extern QUAD TotalFunds;
537:
538: extern QUAD costOf[];
539:
540: extern short flagBlink;
541: extern unsigned char tileSynch;
542: extern short aniTile[];
543: extern unsigned char aniSynch[];
544: extern int TilesAnimated;
545: extern int DoAnimation;
546: extern int DoMessages;
547: extern int DoNotices;
548: extern unsigned char ColorIntensities[];
549:
550: extern short MesX, MesY;
551: extern short MesNum, MessagePort;
552: extern QUAD LastMesTime;
553:
554: extern short SimSpeed;
555: extern short SimMetaSpeed;
556: extern short NoDisasters;
557: extern short autoBulldoze;
558: extern short autoBudget;
559: extern short autoGo;
560: extern short UserSoundOn;
561:
562: extern short DisasterEvent;
563: extern short DisasterWait;
564:
565: extern short ResCap, ComCap, IndCap;
566: extern short RValve, CValve, IValve;
567: extern short PwrdZCnt;
568: extern short unPwrdZCnt;
569:
570: extern char *HomeDir, *ResourceDir, *HostName;
571:
572: extern short Graph10Max, Graph120Max;
573: extern short Res2HisMax, Com2HisMax, Ind2HisMax;
574: extern unsigned char *History10[HISTORIES], *History120[HISTORIES];
575: extern short CityScore;
576: extern short deltaCityScore;
577: extern short ScoreType;
578: extern short ScoreWait;
579: extern short CityClass;
580: extern short PolMaxX, PolMaxY;
581: extern int PowerStackNum;
582: extern short TrafficAverage;
583: extern short PosStackN;
584: extern short SMapXStack[], SMapYStack[];
585: extern short Zsource;
586: extern short HaveLastMessage;
587: extern short PdestX, PdestY;
588: extern short CdestX, CdestY;
589: extern int absDist;
590: extern short CopFltCnt;
591: extern short GodCnt;
592: extern short GdestX, GdestY;
593: extern short GorgX, GorgY;
594: extern short GodControl;
595: extern short CopControl;
596: extern short CdestX, CdestY;
597: extern short TrafMaxX, TrafMaxY;
598: extern short CrimeMaxX, CrimeMaxY;
599: extern short FloodX, FloodY;
600: extern short CrashX, CrashY;
601: extern short CCx, CCy;
602: extern QUAD CityPop, deltaCityPop;
603: extern char *cityClassStr[6];
604: extern short CityYes, CityNo;
605: extern short ProblemTable[PROBNUM];
606: extern short ProblemVotes[PROBNUM];
607: extern short ProblemOrder[4];
608: extern QUAD CityAssValue;
609:
610: extern short InitSimLoad;
611: extern short DoInitialEval;
612: extern int Startup;
613: extern int StartupGameLevel;
614: extern int PerformanceTiming;
615: extern double FlushTime;
616:
617: extern char *optarg;
618: extern int optind;
619: extern struct timeval start_time, now_time, beat_time, last_now_time;
620: extern Sim *sim;
621: extern int WireMode;
622: extern int MultiPlayerMode;
623: extern int SugarMode;
624: extern int sim_delay;
625: extern int sim_skips;
626: extern int sim_skip;
627: extern int sim_paused;
628: extern int sim_paused_speed;
629: extern int sim_tty;
630: #ifdef CAM
631: extern int sim_just_cam;
632: #endif
633: extern int heat_steps;
634: extern int heat_flow;
635: extern int heat_rule;
636: extern int UpdateDelayed;
637: extern int DynamicData[32];
638: extern int Players;
639: extern int Votes;
640: extern int BobHeight;
641: extern int OverRide;
642: extern int Expensive;
643: extern int PendingTool;
644: extern int PendingX;
645: extern int PendingY;
646: extern int TreeLevel;
647: extern int LakeLevel;
648: extern int CurveLevel;
649: extern int CreateIsland;
650: extern short specialBase;
651: extern short PunishCnt;
652: extern short Dozing;
653: extern short toolSize[];
654: extern short toolOffset[];
655: extern QUAD toolColors[];
656: extern char *Displays;
657: extern char *FirstDisplay;
658: extern char *dateStr[12];
659:
660: extern short NewMap;
661: extern short NewMapFlags[NMAPS];
662: extern short NewGraph;
663: extern short ValveFlag;
664: extern short MustUpdateFunds;
665: extern short MustUpdateOptions;
666: extern short CensusChanged;
667: extern short EvalChanged;
668: extern short MeltX, MeltY;
669: extern int NeedRest;
670: extern int ExitReturn;
671:
672: extern Tcl_Interp *tk_mainInterp;
673: extern Tk_Window MainWindow;
674: extern int FlushStyle;
675: extern int GotXError;
676:
677: extern short Rand(short range);
678: extern short RandInt(void);
679:
680: extern Sim *MakeNewSim();
681: extern SimView *MakeNewView();
682: extern SimSprite *GetSprite();
683: extern SimSprite *MakeSprite();
684: extern SimSprite *MakeNewSprite();
685:
686: extern int setSpeed(short speed);
687: extern int setSkips(int skips);
688: extern int SetGameLevel(short level);
689: extern int SetGameLevelFunds(short level);
690:
691: extern struct XDisplay *XDisplays;
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.