Main Page   Class Hierarchy   Compound List   File List   Compound Members   File Members   Related Pages  

QuestDesigner.cpp

00001 /* QuestDesigner - Open Zelda's Project
00002    Copyright (C) 2003 Kronuz
00003    Copyright (C) 2001/2003 Open Zelda's Project
00004 */
00101 
00102 // QuestDesigner.cpp : main source file for QuestDesigner.exe
00103 //
00104 
00105 #include "stdafx.h"
00106 #include "QuestDesigner.h"
00107 
00108 CAppModule _Module;
00109 
00110 int StartCodeMax(CodeMaxLibrary *cmaxlib)
00111 {
00112     CM_LANGUAGE LangZES = { 
00113     // language style
00114     CMLS_PROCEDURAL,
00115     // Is case-sensitive?
00116     TRUE,
00117     // keywords
00118     _T("#assert\n#define\n#else\n#emit\n#endif\n#endinput\n#endscript\n#if\n#include\n#pragma\n")
00119     //_T("ctrlchar\ndynamic\nlibrary\npack\nrational\nsemicolon\ntabsize")
00120     _T("assert\nbreak\ncase\ncontinue\ndefault\ndo\nelse\nexit\nfor\ngoto\nif\nreturn\nsleep\nswitch\nwhile\n")
00121     _T("const\nenum\nforward\nnative\nnew\noperator\npublic\nstatic\nstock\n")
00122     _T("char\ndefined\nsizeof\n")
00123     _T("false\ntrue\ncellbits\ncellmax\ncellmin\ncharbits\ncharmax\ncharmin\ndebug\n_Small"),
00124     // operators
00125     _T("bool\nfixed\nfloat\n")
00126     _T("+\n-\n*\n/\n%\n++\n--\n~\n>>\n>>>\n<<\n&\n|\n^\n=\n+=\n-=\n*=\n/=\n%=\n>>=\n>>>=\n<<=\n&=\n|=\n^=\n==\n!=\n<\n<=\n>\n>=\n!\n||\n&&"),
00127     // Single line comments
00128     _T("//"),
00129     // Multi-line comment set
00130     _T("/*"),
00131     _T("*/"),
00132     // Scope words
00133     _T("{"),
00134     _T("}"),
00135     // String literal char
00136     _T("\"\n'"),
00137     // Escape Char
00138     _T('^'),
00139     // Statement Terminator Char
00140     _T(';'),
00141 // Tag element names
00142     _T("black\nblue\ncyan\ngreen\nmagenta\nred\nyellow\nwhite\nchasing\ndead\ndying\nfalling\nfalling2\nhit\njumping\nknocked\n")
00143     _T("lifting\nstanding\nswimming\nstandLift\nusing\nwalking\nwalkLift\nscared\ndoorType\nenemyType\nitemType\nnpcType\n")
00144     _T("otherType\nplayerType\nweaponType\neast\nnorth\nnortheast\nnorthwest\nsouth\nsoutheast\nsouthwest\nwest\nwaiting\n")
00145     _T("stunned\nfrozen\nburning\nsleeping\npushing\nleaping\npulling"),
00146 // Tag attribute names
00147     _T("AddAnimframe\nAKey\nCreateAnim\nCreateAnimWithID\nclamp\nCreateCounter\nCreateCounterWithID\nCheckMask\n")
00148     _T("CheckForHoleXY\n\nClearRestartTable\nCalculateAngle\nDeleteAnim\nDrawAnim\nDrawAnimNoInc\ndeleteproperty\n")
00149     _T("DeleteCounter\nDrawImage\nDownKey\n\nDrawText\ndate\nexistproperty\nEnterKey\nFinishedAnim\nfuncidx\nFirstRun\n")
00150     _T("FadeTo\n\nFinishedReading\nGetAnimImage\nGetAnimCount\nGetMaxAnim\nGetAnimWidth\nGetAnimHeight\ngetchar\n")
00151     _T("getstring\ngetvalue\n\ngetarg\ngetproperty\nGetCounterValue\nGetWidth\nGetHeight\nGetWorldX\nGetWorldY\n")
00152     _T("GetGroupMinX\nGetGroupMinY\n\nGetGroupMaxX\nGetGroupMaxY\nGetPauseLevel\nGetLowerLevelX\nGetLowerLevelY\n")
00153     _T("GetLastAnswer\nGetMinuteCount\nGetHourCount\nGetDayCount\n\nGetGlobal\nGetLocal\nheapspace\nIncrementAnim\n")
00154     _T("IncCounterTarget\nIncCounterValue\nInitialPlayerX\nInitialPlayerY\nInitTextBox\n\nLeftKey\nmin\nmax\nnumargs\n")
00155     _T("NearPoint\nprint\nprintf\nPutSprite\n\nPlaySound\nPlayMusic\nQKey\nrandom\nRightKey\nSetAnimSpeed\nSetAnimCount\n")
00156     _T("SetAnimDirection\nSetAnimLoop\n\nsetarg\nstrlen\nstrcmp\nstrcpy\nstrpack\nstrunpack\nswapchars\nsetproperty\n")
00157     _T("SetCounterMin\n\nSetCounterMax\nSetCounterValue\nSetCounterTarget\nSetCounterSpeed\nSKey\nSetQKey\nSetAKey\n")
00158     _T("SetSKey\nSetWKey\n\nSetEnterKey\nSetUpKey\nSetDownKey\nSetLeftKey\nSetRightKey\nSetWorldX\nSetWorldY\nSetPauseLevel\n")
00159     _T("SetRestartTable\n\nSetRestartPoint\nSetLowerLevel\nSetTextBoxColor\nSetMinuteCount\nSetHourCount\nSetDayCount\n")
00160     _T("SetDayLength\nSetGlobal\nSetLocal\n\nSetMusicVolume\nSetMusicFadeSpeed\ntolower\ntoupper\nToString\nToFile\nTextFile\n")
00161     _T("TestFunc\ntime\n\ntickcount\nUpKey\nUpdateWorldCo\nWKey\nWipe\nGetTimeDelta\nfloatstr\nfloatround\nDrawRectangle\n")
00162     _T("DrawLine\nSetTextSize\nEnableControls\nDrawBitmapText\n\nSetFloat\nGetFloat\nSetSpriteAlpha"),
00163 // Tag entities
00164     _T("AngleMove\nAngleCollide\nAllocateStrings\nCreateEntity\nCreateEntityWithID\nChangeDirection\nClearCollisionRect\n")
00165     _T("Collide\nCollideAll\nCollidePoint\nCheckForHole\nCallFunction\nDeleteEntity\nGetDamage\nGetRespawnValue\n")
00166     _T("GetLiftLevel\nGetX\nGetY\nGetMoveAngle\nGetDirection\nGetSpeed\nGetSpeedMod\nGetItem\nGetImage\nGetType\nGetString\n")
00167     _T("GetState\nGetInitialX\nGetInitialY\nGetEntityCount\nGetAnglePointX\nGetAnglePointY\nGetWeight\nGetBounceValue\n")
00168     _T("GetValue\nGetHealth\nGetMaxHealth\nGetCurrentEntity\nGetNextMessage\nGetGotoNextMessage\nGetNumNextMessages\n")
00169     _T("isOpen\nisTaken\nisDead\nisVisible\nisActive\nisCuttable\nisLarge\nisPickable\nisPushed\nisInteracting\nMessageMap\n")
00170     _T("NextEntity\nRespawn\nSetOpenFlag\nSetTakenFlag\nSetDeadFlag\nSetVisibleFlag\nSetActiveFlag\nSetCuttableFlag\n")
00171     _T("SetLargeFlag\nSetPickableFlag\nSetPushedFlag\nSetInteractingFlag\nSetDamage\nSetRespawnValue\nSetLiftLevel\nSetX\n")
00172     _T("SetY\nSetPosition\nSetMoveAngle\nSetDirection\nSetSpeed\nSetSpeedMod\nSetAngleFromDir\nSetDirFromAngle\n")
00173     _T("SetCollisionRect\nSetItem\nSetImage\nSetType\nSetString\nSetActiveDist\nSetState\nSetWeight\nSetBounceValue\n")
00174     _T("SetValue\nSetHealth\nSetMaxHealth\nStartEntity\nisOwned\nSetOwnedFlag\nGetParent\nGetParam\nSetActiveInGroups"),
00175     };
00176 
00177     if(!cmaxlib->Initialize()) return 0;
00178     cmaxlib->UnregisterAllLanguages();
00179     cmaxlib->RegisterLanguage(CMLANG_ZES, &LangZES );
00180 
00181     return 1;
00182 }
00183 
00184 int Run(LPTSTR /*lpstrCmdLine*/ = NULL, int nCmdShow = SW_SHOWDEFAULT)
00185 {
00186     CMainFrame wndMain;
00187     CMessageLoop theLoop;
00188     CodeMaxLibrary cmaxlib;
00189 
00190     _Module.AddMessageLoop(&theLoop);
00191 
00192     if(!StartCodeMax(&cmaxlib)) {
00193         ATLTRACE ( _T ( "CodeMax initialization failed!\n" ) );
00194         return 0; // bail...
00195     }
00196 
00197     if(wndMain.CreateEx() == NULL) {
00198         ATLTRACE(_T("Main window creation failed!\n"));
00199         return 0;
00200     }
00201 
00202 //  wndMain.ShowWindow(nCmdShow);
00203 
00204     int nRet = theLoop.Run();
00205 
00206     _Module.RemoveMessageLoop();
00207     return nRet;
00208 }
00209 
00210 int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE /*hPrevInstance*/, LPTSTR lpstrCmdLine, int nCmdShow)
00211 {
00212 /*
00213     ATOM gi_atom = 0;
00214     if(GlobalFindAtomA("QuestDesigner") > 0) {
00215         return 0;
00216     }
00217     gi_atom = GlobalAddAtomA("QuestDesigner");
00218 */
00219     HRESULT hRes;
00220     hRes = ::CoInitialize(NULL);
00221     ATLASSERT(SUCCEEDED(hRes));
00222 
00223     // this resolves ATL window thunking problem when Microsoft Layer for Unicode (MSLU) is used
00224     ::DefWindowProc(NULL, 0, 0, 0L);
00225 
00226     AtlInitCommonControls(ICC_COOL_CLASSES | ICC_BAR_CLASSES);  // add flags to support other controls
00227 
00228     hRes = _Module.Init(NULL, hInstance);
00229     ATLASSERT(SUCCEEDED(hRes));
00230 
00231     AtlAxWinInit();
00232 
00233     HMODULE hInstRich = ::LoadLibrary(CRichEditCtrl::GetLibraryName());
00234     ATLASSERT(hInstRich != NULL);
00235 
00236     int nRet = Run(lpstrCmdLine, nCmdShow);
00237 
00238     ::FreeLibrary(hInstRich);
00239 
00240     _Module.Term();
00241     ::CoUninitialize();
00242 
00243 /*
00244     if(gi_atom) GlobalDeleteAtom(gi_atom);
00245 */
00246     return nRet;
00247 }

Generated on Wed Apr 16 19:12:22 2003 for QuestDesigner by doxygen1.2.18