22 #ifndef BAGEL_METAGAME_GTL_GTLDAT_H 23 #define BAGEL_METAGAME_GTL_GTLDAT_H 25 #include "common/stream.h" 26 #include "common/system.h" 27 #include "bagel/boflib/sound.h" 28 #include "bagel/hodjnpodj/metagame/bgen/bgen.h" 29 #include "bagel/hodjnpodj/metagame/bgen/bgenut.h" 30 #include "bagel/hodjnpodj/metagame/bgen/bsutl.h" 31 #include "bagel/hodjnpodj/metagame/gtl/gtlview.h" 32 #include "bagel/hodjnpodj/globals.h" 33 #include "bagel/hodjnpodj/metagame/gtl/resource.h" 34 #include "bagel/hodjnpodj/metagame/bgen/bgb.h" 35 #include "bagel/hodjnpodj/metagame/bgen/bbt.h" 36 #include "bagel/hodjnpodj/metagame/bgen/bfc.h" 37 #include "bagel/hodjnpodj/metagame/bgen/mgstat.h" 44 #define MAX_NODES 550 // max # nodes supported 45 #define MAX_LINKS_PER_NODE 6 // max # links for 1 node 46 #define MAX_FILENAME_LENGTH 60 // max .p filename length 47 #define MAX_TEXT_LENGTH 200 // max length of text 48 #define MAX_HANDLE_LENGTH 200 // max length of handle name 49 #define MAX_STRINGLIST 512 // max total length of all strings in line 50 #define MAX_LEXELTS 100 // max # of CLexElement objects 51 #define MAX_LABEL_LENGTH 12 // max length of node/bitmap 53 #define MAX_BITMAPS 130 56 #define NODESENSITIVITY 20 57 #define MAX_GAME_TABLE 12 63 inline long SQ(
int y) {
64 return ((
long)((
long)y * (
long)y)) ;
66 inline long SQ(
long y) {
69 inline long LSQ(CPoint p1, CPoint p2) {
70 return (SQ(p1.x - p2.x) + SQ(p1.y - p2.y)) ;
74 #define LXT_INTEGER 102 75 #define LXT_STRING 103 96 #define KT_PALETTE 208 98 #define KT_PASSTHRU 210 99 #define KT_PREVIOUS 211 100 #define KT_LINKPREV 212 101 #define KT_POSITION 213 102 #define KT_DIRECTORY 214 103 #define KT_OVERLAY 215 104 #define KT_MASKED 216 105 #define KT_METAGAME 217 106 #define KT_WEIGHT 218 107 #define KT_ACTION 219 108 #define KT_BORDER 220 109 #define KT_SECTOR 221 110 #define KT_SENSITIVITY 222 111 #define KT_FOREGROUND 223 112 #define KT_BACKGROUND 224 113 #define KT_ANIMATED 225 115 #define KT_MIDDLE 227 116 #define KT_FREQUENCY 228 121 #define OBJ_BITMAP 301 126 #define BUTTON_MINIMAP 1 127 #define BUTTON_INVENTORY 2 128 #define BUTTON_SCROLL 3 131 #define NT_GAME_MIN 100 132 #define NT_GAME_MAX 200 134 #define NT_OVERLAY 202 137 #define DUMPSTAT_PROBLEM 0x8000 138 #define DUMPSTAT_CURRENT 0x4000 139 #define DUMPSTAT_BOTH 0x2000 140 #define DUMPSTAT_EVERYTHING 0xFFFF 149 CDC *m_pDC =
nullptr;
159 int m_iStringListPos ;
160 int m_iLineNumber, m_iColumn ;
167 const char *m_xpszKeyString ;
174 char m_szLabel[MAX_LABEL_LENGTH] = {};
175 char m_szFilename[MAX_FILENAME_LENGTH] = {};
176 bool m_bPositionDetermined: 1 ;
178 bool m_bPalette : 1 ;
179 bool m_bOverlay : 1 ;
181 bool m_bMetaGame : 1 ;
182 bool m_bRelocatable : 1 ;
183 bool m_bPositionSpecified : 1 ;
184 bool m_bSpecialPaint: 1 ;
187 int m_iRelationType = 0;
192 m_bPositionDetermined =
false;
198 m_bRelocatable =
false;
199 m_bPositionSpecified =
false;
200 m_bSpecialPaint =
false;
209 char m_szLabel[MAX_LABEL_LENGTH] = { 0 };
210 int m_iLinks[MAX_LINKS_PER_NODE] = { 0 };
211 int m_iLocationCode = 0;
214 int m_iX = 0, m_iY = 0;
217 bool m_bSelected : 1;
218 bool m_bRelative : 1;
219 bool m_bRelocatable : 1;
224 byte m_iSensitivity = 0;
228 bool IfRelocatable() {
229 return (m_bRelocatable != 0) ;
239 CNode FAR *m_lpNode =
nullptr;
240 int m_iValueCode = 0;
244 int m_iAdjustedWeight = 0;
252 m_iAdjustedWeight = 0;
263 int m_iRequiredObjectsCount = 0;
264 int m_iRequiredObjectsTable[MAX_GAME_TABLE] = {};
266 int m_iMaximumDistance = 0;
267 int m_iMaxAdjustedWeight = 0;
268 int m_iTopLocCount = 0;
269 int m_iTopLocTable[MG_LOC_MAX] = {};
280 CXodj *m_xpXodjNext =
nullptr;
281 char m_szName[MAX_LABEL_LENGTH] = {};
282 bool m_bHodj =
false;
288 bool m_bComputer =
false;
289 CMap FAR *m_lpMap =
nullptr;
293 CSound *m_pThemeSound =
nullptr;
294 const char *m_pszThemeFile =
nullptr;
295 unsigned int m_nThemeStart = 0;
296 unsigned int m_nThemeEnd = 0;
298 const char *m_pszStarsFile =
nullptr;
305 int m_iWinInfoWon = 0;
306 int m_iWinInfoNeed = 0;
307 int m_iWinInfoTable[MAX_GAME_TABLE] = {};
310 int m_iSecondaryInfoWon = 0;
311 int m_iSecondaryInfoNeed = 0;
312 int m_iSecondaryInfoTable[MAX_GAME_TABLE] = {};
315 int m_iRequiredObjectsCount = {};
316 int m_iRequiredObjectsTable[MAX_GAME_TABLE] = {};
317 int m_iRequiredMoney = 0;
320 int m_iSecondaryLoc[MAX_GAME_TABLE] = {};
322 int m_iGameHistory[20] = {};
323 int m_iTargetLocation = 0;
324 bool m_bGatherInformation =
false;
338 class CGtlDoc *m_xpcGtlDoc =
nullptr;
341 bool bFirstTime =
true;
349 CMap FAR *m_lpMaps =
nullptr;
350 CNode FAR *m_lpNodes =
nullptr;
352 bool m_bGtlDll =
false;
353 char m_szBmpDirectory[MAX_FILENAME_LENGTH] = {};
354 char m_szGtlFile[MAX_FILENAME_LENGTH] = {};
355 char m_szListFile[MAX_FILENAME_LENGTH] = {};
358 bool m_bListing =
false;
360 int m_iLineNumber = 0;
361 int m_iMaps = 0, m_iNodes = 0;
363 CNode FAR *m_lpLastNode =
nullptr;
364 int m_iNumGenLabels = 0;
367 char m_szStringList[MAX_STRINGLIST] = {};
368 bool m_bSelectedLink =
false;
369 int m_iSelLinkPt1 = 0, m_iSelLinkPt2 = 0;
370 uint32 m_stAcceptClickActive = 0;
371 uint32 m_stLDownTime = 0;
372 CNode FAR *m_lpFoundNode =
nullptr;
373 CNode FAR *m_lpLastSelectedNode =
nullptr;
375 bool m_bJustPlayedMiniGame =
false;
379 bool m_bInhibitDraw =
false;
380 bool m_bDrawing =
false;
382 bool m_bPaint =
false;
383 bool m_bRelocatable =
false;
385 CRect *m_xpClipRect =
nullptr;
386 CRect *m_xpDevClipRect =
nullptr;
388 CMap FAR *m_lpFurlongMaps[25] = {};
392 int m_iSizeX = 0, m_iSizeY = 0;
395 bool m_bChangeSize =
false;
397 int m_iViewSizeX = 0, m_iViewSizeY = 0;
399 bool m_bPaintBackground =
false;
400 bool m_bShowNodes =
false;
401 bool m_bShowSensitivity =
false;
402 bool m_bStartMetaGame =
false;
403 bool _metaGame =
false;
404 bool m_bInitMetaGame =
false;
406 CXodj *m_xpXodjChain =
nullptr;
407 CXodj *m_xpCurXodj =
nullptr;
408 bool m_bSamePlace =
false;
409 bool m_bGameOver =
false;
411 CBitmap *m_pOffScreenBmp =
nullptr;
413 HBITMAP m_hOldBitmap =
nullptr;
415 int m_iMishMoshLoc = 0;
417 COLORREF m_cNodePenColor = 0, m_cNodeBrushColor = 0, m_cLinkPenColor = 0;
418 COLORREF m_cNodeSensitivityColor = 0;
419 COLORREF m_cNodePassThruColor = 0, m_cNodeHeavyColor = 0;
420 COLORREF m_cSelNodePenColor = 0, m_cSelNodeBrushColor = 0;
421 COLORREF m_cSelLinkPenColor = 0;
422 COLORREF m_cBackColor = 0;
433 int Decompile(
const char *xpszPathName) ;
435 int AsciiOutput(
int iIndent, XPSTR lpszOut) ;
437 int ListingOutput(
int iIndent, XPSTR lpszOut) ;
447 int Compile(
const char *xpszPathName);
453 int iPrevType,
int FAR& iValue) ;
457 int iPrevType,
char *lpszValue, XPINT xpiValue) ;
460 bool bNode,
int FAR& iIndex) ;
462 bool GetLabel(
char *lpszLabel,
463 bool bNode,
int FAR& iIndex) ;
467 bool AddLink(
CNode FAR * lpNode1,
CNode FAR * lpNode2) ;
469 bool AddLink(
CNode FAR * lpNode,
int iLink) ;
475 const char *FindKeyword(
int iType) ;
479 bool ErrorMsg(
CLexElement * xpLxel,
const char *szMessage) ;
489 void CreateOffScreenBmp();
490 void DeleteOffScreenBmp();
491 void PaintOffScreenBmp();
493 void ReleaseMemDC(
CMemDC *);
498 bool ClearInhibitDraw() ;
501 CDC* xpDc PDFT(
nullptr)) ;
504 bool SwitchDc(
CDC * xpDc,
bool bRelocatable) ;
506 bool DrawBitmaps(
CDC *,
bool);
509 bool DrawABitmap(
CDC *,
CBgbObject *,
bool bPaint PDFT(
false));
514 CSize FAR * lpcSize PDFT(
nullptr)) ;
516 bool SpecifyUpdate(
CGtlView * xpGtlView) ;
518 bool UpdateDialogs(
bool bRetrieve PDFT(
false)) ;
522 bool UpdateMenuDialog(
bool bRetrieve) ;
525 bool UpdateInfoDialog(
bool bRetrieve) ;
528 bool UpdateControlDialog(
bool bRetrieve) ;
531 bool UpdateNodeDialog(
bool bRetrieve) ;
534 bool UpdateFocusRect() ;
540 bool InitOverlay(
CMap FAR * lpMap) ;
542 bool NormalizeData(
CGtlView * xpGtlView) ;
548 bool AcceptClick(
CGtlView * xpGtlView,
CPoint cClickPoint,
int iClickType) ;
550 bool AcceptDeleteKey(
CGtlView * xpGtlView) ;
556 bool SelectNode(
CNode FAR * lpNode) ;
558 bool ModifySelectNode(
CNode FAR * lpNode PDFT(
nullptr),
bool bSelect PDFT(
true)) ;
560 CNode FAR *GetSelectedNode() ;
562 bool SelectLink(
CNode FAR * lpNode1 PDFT(
nullptr),
CNode FAR * lpNode2 PDFT(
nullptr)) ;
564 bool IfLinked(
CNode FAR * lpNode1,
CNode FAR * lpNode2) ;
566 bool DeleteNode(
CNode * lpNode) ;
568 bool DeleteLink(
CNode FAR * lpNode1 PDFT(
nullptr),
CNode FAR * lpNode2 PDFT(
nullptr)) ;
571 bool DeleteLinkIndex(
CNode FAR * lpNode,
int iLink) ;
573 bool CallUpdate(
CNode FAR * lpNode1 PDFT(
nullptr),
574 CNode FAR * lpNode2 PDFT(
nullptr),
bool bLinks PDFT(
false),
575 bool bWmPaint PDFT(
false)) ;
580 bool CreateNode(
CNode FAR * &lpNode,
CRPoint crPosition) ;
584 int DoSpecialTravel(
int,
bool);
588 bool CreateLink(
CNode FAR * lpNode1,
CNode FAR * lpNode2) ;
590 bool SetNodePosition(
CNode FAR * lpNode,
CRPoint crPosition) ;
597 bool SetMetaGame(
bool bOn) ;
599 bool InitMetaGame(
CGtlView * xpGtlView PDFT(
nullptr),
600 bool bInit PDFT(
true)) ;
602 bool ProcessMove(
CNode FAR * lpTargetNode PDFT(
nullptr)) ;
606 bool MoveCharToNode(
CNode FAR * lpTargetNode) ;
608 int EstimatePathDistance(
CNode FAR * lpNode1,
609 CNode FAR * lpNode2) ;
611 int *FindShortestPath(
CNode FAR * lpNode1,
612 CNode FAR * lpNode2) ;
616 bool PositionCharacters() ;
620 bool PositionACharacter(
CXodj * xpXodj,
int iShift) ;
622 CNode FAR *LocationToNode(
int iLocationCode) ;
625 int FindNodeId(
const char *pszLabel);
634 bool EndMoveProcessing() ;
638 bool SwitchPlayers() ;
640 bool InitInterface(
int iCode,
bool & bExitDll) ;
643 bool ReturnFromInterface() ;
648 bool TakeIneligibleAction(
CXodj * xpXodj,
649 int iFunctionCode,
int iLocationCode) ;
651 bool DumpGameStatus(
int iOptionFlags
652 PDFT(DUMPSTAT_EVERYTHING)) ;
655 bool ProcessGameResult(
CXodj * xpXodj,
656 int iGameCode, LPGAMESTRUCT lpGameStruct PDFT(
nullptr)) ;
660 bool GainRandomItem(
CXodj * xpXodj) ;
663 bool GainMoney(
CXodj * xpXodj,
long lCrowns) ;
666 bool GainMishMosh(
CXodj * xpXodj,
long lCrowns) ;
669 bool DivulgeInformation(
CXodj * xpXodj,
bool bSecondary) ;
674 bool DetermineEligibility(
CXodj *xpXodj,
int,
int &,
bool bExecute PDFT(
false));
680 bool DetermineGameEligibility(
CXodj *xpXodj,
int iGameCode,
bool bExecute PDFT(
false));
684 long GetGameObjectCount(
CXodj * xpXodj,
int iObjectCode) ;
688 bool DetermineInfoEligibility(
CXodj * xpXodj,
689 int iLocationCode,
bool bExecute PDFT(
false)) ;
693 bool DetermineMishMoshEligibility(
CXodj *,
int);
695 void DoTransport(
CXodj *,
int);
702 bool SelectBestMove(
CXodj * xpXodj) ;
704 bool GatherInformation(
CXodj * xpXodj) ;
707 bool DetermineWeights(
CXodj * xpXodj) ;
710 bool DetermineDistances(
CXodj * xpXodj) ;
713 bool AdjustWeightByDistance(
CXodj * xpXodj) ;
715 bool FindTopLocations(
CXodj * xpXodj) ;
717 bool DumpBestMoveData(
CXodj * xpXodj) ;
719 void CheckForTransport(
CXodj *,
int);
720 void SetFurlongs(
CXodj *);
Definition: atltypes.h:40
Definition: minwindef.h:87
Definition: atltypes.h:131
Definition: atltypes.h:79