#ifndef T2_COMMON_H #define T2_COMMON_H #define VC_EXTRALEAN #include // a terrible, terrible kludge #ifndef DONT_INCLUDE_AFXTEMPL #include #endif #include #include #include #include #include #include #include #include #include #ifdef __clang__ #undef AFX_CLASS_EXPORT #undef AFX_API_EXPORT #undef AFX_DATA_EXPORT #define AFX_CLASS_EXPORT #define AFX_API_EXPORT #define AFX_DATA_EXPORT #endif class CEditWFocus; class CFilePlugin; class CFilePluginList; class CLink; class CObjectQueue; class CPluginInfo; class CPluginInfoArray; class CProgramPlugin; class CResFile; class CResourcePlugin; class CT2App; class CTokenizer; class CWave; class DbgIPS; class DbgStepRun; class LArray; class LArrayIterator; class LAttachable; class LAttachment; class LBroadcaster; class LListener; class MoverSearchDlg; class PeopleSearchDlg; class SoundDlg; class SpeedDlg; class T2AdvertisePlugin; class T2Archive; class T2BitImage; class T2BlackOut; class T2ColdTableDef; class T2CrossEquipArray; class T2CtrlPalette; class T2DateTime; class T2DayLightFilter; class T2DayParamDef; class T2Dialog; class T2DlgItem; class T2DlgItemAllPurpose; class T2DlgItemAnimation; class T2DlgItemHScr; class T2DlgItemVScr; class T2DrawableObject; class T2ElevatorModule; class T2Equip; class T2EquipDef; class T2EquipPlugin; class T2EquipPtrList; class T2EventDialog; class T2EventItem; class T2Fire; class T2FireAttach; class T2FireBurning; class T2FloorInfo; class T2FloorNumberTable; class T2FloorPtrList; class T2GlobalData; class T2GuestroomItem; class T2GuestroomTable; class T2HallEventItem; class T2HallEventPlugin; class T2HaveOutViewObject; class T2Helicopter; class T2ImageObj; class T2InfoDialog; class T2MainWindow; class T2Maru_Reggae; class T2Matter; class T2MatterArray; class T2MatterArrayList; class T2MatterDef; class T2Message; class T2MetroRailway; class T2Mover; class T2MoverArray; class T2MoverArrayList; class T2MoverDef; class T2MoverModule; class T2MoverModuleList; class T2MoverModuleTable; class T2MoverPlugin; class T2MoverRoutingTable; class T2MovieParamArray; class T2MoviePlugin; class T2MoviePluginList; class T2MsgWindow; class T2MWControl; class T2Name; class T2NameList; class T2Object; class T2ObjectArray; class T2ObjectArrayList; class T2OptionPlugin; class T2OptionPluginList; class T2OutDeco; class T2OutDecoration; class T2OuterObjList; class T2OutObj; class T2OutObjArray; class T2OutObjArrayList; class T2OuterObjDef; class T2OutsideInfo; class T2PaletteAnime; class T2PaletteAnimeDef; class T2People; class T2PeopleArray; class T2PeopleArrayList; class T2PeopleAnimeDef; class T2PeopleAnimeDefElem; class T2PeopleDef; class T2PeopleDemandList; class T2PeoplePtrList; class T2PeopleTimeZoneList; class T2PeopleType; class T2PeopleTypeArray; class T2PlaceParamDef; class T2PluginLoader; class T2PluginSpecifier; class T2Pool; class T2PoolDef; class T2PoolDefDemandElem; class T2PoolGradeDef; class T2PoolTimeZoneDef; class T2RegistedTenantDB; class T2Request; class T2RequestArray; class T2RequestArrayList; class T2RequestIDArray; class T2ReturnStack; class T2RouteCEArray; class T2RouteNavigator; class T2RoutingTable; class T2RoutingTableElem; class T2SantaClaus; class T2SeasonParamDef; class T2Settlement; class T2SilhouetteDef; class T2SoundObjItem; class T2SoundObjItemList; class T2SoundPlayer; class T2Sprite; class T2SpriteObj; class T2StopInfoArray; class T2SubPlugin; class T2TemplatePlugin; class T2TemplatePluginDB; class T2TemplatePluginList; class T2Tenant; class T2TenantArray; class T2TenantArrayList; class T2TenantDef; class T2TenantMemberDef; class T2TenantMemberTableDef; class T2TenantPlugin; class T2ToolCallback; class T2ToolDef; class T2ToolDefDB; class T2ToolDefList; class T2ToolIconItem; class T2ToolIconList; class T2ToolPlugin; class T2ToolWindow; class T2TowerDoc; class T2TowerEvent; class T2TowerMainView; class T2TowerMessage; class T2TowerVision; class T2TrafficInfo; class T2Transport; class T2TreasureDialog; class T2TreasurePane; class T2UnitInfo; class T2WeatherFilter; class T2WordDefArray; class T2WorldDef; class T2WorldPlugin; class T2XEvent; class TenantSearchDlg; class WalkerDlg; enum AREACHECKCODE { AreaCheckCode_0, AreaCheckCode_1, AreaCheckCode_2 }; enum CURSORTYPE { CursorType_0 }; enum MOUSEEVENT { MouseEvent_0, // mouse down MouseEvent_1, // mouse move MouseEvent_2 // mouse up }; enum OPTIONEVENTTYPE { // Dispatched on each idle. // Data: none // Return value: ignored kIdleOptionEvent, // Dispatched when the left mouse button is pressed in the tower view. // Data: CPoint* (in QD coordinates) // Return value: FALSE will cancel normal processing kLButtonDownOptionEvent, // Dispatched when the right mouse button is pressed in the tower view. // Data: CPoint* (in QD coordinates) // Return value: FALSE will cancel normal processing kRButtonDownOptionEvent, // Dispatched when the left mouse button is released in the tower view. // Data: CPoint* (in QD coordinates) // Return value: FALSE will cancel normal processing kLButtonUpOptionEvent, // Dispatched when the right mouse button is released in the tower view. // Data: CPoint* (in QD coordinates) // Return value: ignored kRButtonUpOptionEvent, // Dispatched when the mouse is moved within the tower view. // Data: POINT* (in QD coordinates) // Return value: FALSE will cancel normal processing kMouseMoveOptionEvent, // Dispatched when plugins are about to be selected. // Data: None // Return value: ignored kSelectPluginsOptionEvent, OptionEventType_7, OptionEventType_8, // Dispatched when the tower has just been drawn to the buffer. // Data: None // Return value: ignored kTowerDrawFinishedOptionEvent, // Dispatched when the tower is about to be drawn to the main view. // Data: CDC* // Return value: FALSE will cancel normal drawing kTowerPreDrawOptionEvent, // Dispatched when interview words are about to be generated for a person. // Data: OptionEvent11Data* // Return value: FALSE will cancel the normal word selection process kPreInterviewWordsOptionEvent, // Dispatched when interview words have been generated for a person. // Data: OptionEvent11Data* // Return value: ignored kPostInterviewWordsOptionEvent, // Dispatched when all the option plugins have been loaded. // Data: none // Return value: ignored kInitOptionEvent, // Dispatched right before the tower is unloaded. // Data: none // Return value: ignored kDestroyOptionEvent, }; struct OptionEvent11Data { T2People *people; CString *str; }; enum PARTCODE { PartCode_0, PartCode_1, PartCode_2, PartCode_3, PartCode_4 }; enum PROCCODE { ProcCode_0, ProcCode_1, ProcCode_2 }; enum ROOFANDFLOOR { RoofAndFloor_None = 0, RoofAndFloor_Roof = 1, RoofAndFloor_Floor = 2, RoofAndFloor_Both = 3, }; enum SIDEOBJPATTERN { SideObjPattern_0, SideObjPattern_1 }; enum VIEWMODE { kInView, // InView kOutView, // OutView kEvalView, // Eval kPriceView, // Price kMaintView, // Maint kTransView, // Trans ViewMode_6, }; enum BOOL3 { BOOL3_NEG1 = -1, BOOL3_0 = 0, BOOL3_1 = 1 }; enum EEquipPos { EEquipPos_0, EEquipPos_1, EEquipPos_2, EEquipPos_3 }; enum ERequestUpDown { ERequestUpDown_0, // up? ERequestUpDown_1 // down? }; struct BkgndInfo; struct T2RoofInfo; // not sure if this is a struct or a class struct T2TreasureStatus { int _0; char text[256]; int animID1; int animID2; }; struct Point { int v; int h; }; struct SDimension16 { short height; short width; }; struct TableCellT { UINT row; UINT col; }; enum { DrawMode0 = 0, DrawMode1, DrawMode2, DrawMode3, DrawMode4 }; #ifdef _MSC_VER #define MSVC_STDCALL __stdcall #else #define MSVC_STDCALL #endif #ifdef ATOI_KLUDGE // why is this necessary? inline int MSVC_STDCALL my_atoi(const char *s) { int v = 0; while (*s && *s >= '0' && *s <= '9') { v = (v * 10) + (*s - '0'); s++; } return v; } #define atoi my_atoi #endif #endif