summaryrefslogtreecommitdiff
path: root/src/T2DLL/T2WorldDef.cpp
diff options
context:
space:
mode:
authorAsh Wolf <ninji@wuffs.org>2023-06-28 22:22:32 +0100
committerAsh Wolf <ninji@wuffs.org>2023-06-28 22:22:32 +0100
commitc0c336500955a23e344651e5412c9d9d441ef4ee (patch)
tree790769c748db307cf3314f6e896e2f61c68561a2 /src/T2DLL/T2WorldDef.cpp
parent37e364b2c6cc7487a1c888d256a73e5337bb7189 (diff)
downloadt2win-c0c336500955a23e344651e5412c9d9d441ef4ee.tar.gz
t2win-c0c336500955a23e344651e5412c9d9d441ef4ee.zip
first pass of T2DLL
Diffstat (limited to 'src/T2DLL/T2WorldDef.cpp')
-rw-r--r--src/T2DLL/T2WorldDef.cpp1539
1 files changed, 1443 insertions, 96 deletions
diff --git a/src/T2DLL/T2WorldDef.cpp b/src/T2DLL/T2WorldDef.cpp
index 9829b68..f9dbfbd 100644
--- a/src/T2DLL/T2WorldDef.cpp
+++ b/src/T2DLL/T2WorldDef.cpp
@@ -1,271 +1,1618 @@
+#include "CResFile.h"
+#include "GlobalFunc.h"
+#include "T2Archive.h"
+#include "T2BitImage.h"
+#include "T2ColdTableDef.h"
+#include "T2DateTime.h"
+#include "T2DlgItemAnimation.h"
+#include "T2FInfoAreaIterator.h"
+#include "T2FloorInfo.h"
+#include "T2ImageObj.h"
+#include "T2Message.h"
+#include "T2MWControl.h"
+#include "T2PaletteAnime.h"
+#include "T2PaletteAnimeDef.h"
+#include "T2Pool.h"
+#include "T2PoolDef.h"
+#include "T2SeasonParamDef.h"
+#include "T2Tenant.h"
+#include "T2TenantDef.h"
+#include "T2TowerDoc.h"
+#include "T2TowerEvent.h"
+#include "T2TowerMainView.h"
+#include "T2WordDefArray.h"
#include "T2WorldDef.h"
-
-T2WorldDef::T2WorldDef(unsigned long, T2PluginSpecifier&, CResFile*, T2WorldPlugin*) {
+#include "T2WorldPlugin.h"
+#include "URect.h"
+#include "UT2BkgndInfo.h"
+#include "UT2Coordinate.h"
+
+T2WorldDef::T2WorldDef(DWORD inType, T2PluginSpecifier& inSpecifier, CResFile* inResFile, T2WorldPlugin* inPlugin)
+ : T2TemplatePlugin(inType, inSpecifier, inResFile, inPlugin)
+{
+ int i;
+ int a;
+
+ m1D0 = new T2ImageObj;
+
+ *inResFile >> mWorldType;
+ *inResFile >> mHeight;
+ *inResFile >> mWidth;
+ *inResFile >> mGroundLine;
+ *inResFile >> mBuildArea;
+ *inResFile >> mInitPos;
+ *inResFile >> mTopFloorLine;
+ *inResFile >> mBottomFloorLine;
+ *inResFile >> m70;
+ *inResFile >> m74;
+ *inResFile >> mLobbyHeight;
+ *inResFile >> mOutViewKind;
+ *inResFile >> m17C;
+ *inResFile >> m228;
+ *inResFile >> mNumOfGradeDef;
+
+ for (i = 0; i < 8; i++) {
+ if (i < mNumOfGradeDef) {
+ *inResFile >> mGradeDef[i].m0;
+ *inResFile >> mGradeDef[i].m4;
+ *inResFile >> mGradeDef[i].m8;
+ *inResFile >> mGradeDef[i].mC;
+ *inResFile >> mGradeDef[i].m10;
+ *inResFile >> mGradeDef[i].m14;
+ } else {
+ mGradeDef[i].m0 = 0;
+ mGradeDef[i].m4 = 0;
+ mGradeDef[i].m8 = 0;
+ mGradeDef[i].mC = 0;
+ mGradeDef[i].m10 = 0;
+ mGradeDef[i].m14 = 0;
+ }
+ }
+
+ *inResFile >> mBGVUnit;
+ *inResFile >> mBGHUnit;
+ *inResFile >> mSkyVSize;
+ *inResFile >> mSkyHSize;
+ *inResFile >> a;
+ *inResFile >> a;
+ *inResFile >> a;
+ *inResFile >> a;
+ *inResFile >> a;
+ *inResFile >> a;
+ *inResFile >> a;
+ *inResFile >> a;
+ *inResFile >> a;
+ *inResFile >> a;
+ *inResFile >> m148[0];
+ *inResFile >> m148[1];
+ *inResFile >> m148[2];
+ *inResFile >> m148[3];
+ *inResFile >> m148[4];
+ *inResFile >> m15C;
+ *inResFile >> mDustOnThreshold;
+ *inResFile >> mToiletVar1;
+ *inResFile >> mToiletVar2;
+ *inResFile >> a;
+
+ memset(mCashAmount, 0, sizeof(mCashAmount));
+ int numOfCashAmount;
+ *inResFile >> numOfCashAmount;
+
+ for (i = 0; i < numOfCashAmount; i++) {
+ int v;
+ *inResFile >> v;
+ if (i < 8)
+ mCashAmount[i] = v;
+ }
+
+ CResFile resFile;
+ resFile.OpenResource(mModuleHandle, 128, 'WAtr');
+
+ resFile >> a;
+ resFile >> a;
+ resFile >> a;
+ resFile >> a;
+ resFile >> a;
+ resFile >> a;
+ resFile >> mInitialFunds;
+ resFile >> mMoneyNumerator;
+ resFile >> mMoneyDenominator;
+ resFile >> mMoneyUnit;
+
+ mSkyOffscreen = NULL;
+ m1A0 = NULL;
+ m1AC = NULL;
+ m1B0 = NULL;
+ for (i = 0; i < 2; i++)
+ m1A4[i] = NULL;
+ mImage = NULL;
+ m1C4 = NULL;
+ m1C8 = NULL;
+ m1CC = NULL;
+
+ mWordDefArray = new T2WordDefArray(mModuleHandle);
+ mPaletteAnimeDef = MakePaletteAnimeDef();
+ SetupOffscreen(mModuleHandle);
+ mPoolDef = MakePoolDef();
+ mSeasonParamDef = MakeSeasonParamDef();
+ mColdTableDef = MakeColdTableDef();
+
+ m190.x = 0;
+ m190.y = 0;
+ int craneObjectID = mImageObj->FindObject("OutCrane");
+ if (craneObjectID >= 0) {
+ mImageObj->GetObjectSize(craneObjectID, (SIZE *) &m190);
+ UT2Coordinate::QDToUnit(m190, 0);
+ }
+
+ _210 = 0;
+ _214 = false;
+ mIsLoaded = true;
}
T2PaletteAnimeDef* T2WorldDef::MakePaletteAnimeDef() {
+ CResFile resFile;
+ resFile.OpenResource(mModuleHandle, 1, 'PtDf');
+ T2PaletteAnimeDef *theAnimeDef = new T2PaletteAnimeDef(mModuleHandle, &resFile);
+ return theAnimeDef;
}
T2PoolDef* T2WorldDef::MakePoolDef() {
+ CResFile resFile;
+ resFile.OpenResource(mModuleHandle, 1, 'PoDf');
+ T2PoolDef *thePoolDef = new T2PoolDef(resFile, (T2WorldPlugin *) mPlugin);
+ return thePoolDef;
}
T2SeasonParamDef* T2WorldDef::MakeSeasonParamDef() {
+ CResFile resFile;
+ T2SeasonParamDef *theSeasonDef = NULL;
+
+ if (resFile.OpenResource(mModuleHandle, 1, 'SpDf')) {
+ theSeasonDef = new T2SeasonParamDef(resFile);
+ resFile.End();
+ }
+
+ return theSeasonDef;
}
T2ColdTableDef* T2WorldDef::MakeColdTableDef() {
+ CResFile resFile;
+ T2ColdTableDef *theTableDef = NULL;
+
+ if (resFile.OpenResource(mModuleHandle, 1, 'CoDf')) {
+ theTableDef = new T2ColdTableDef(resFile);
+ resFile.End();
+ }
+
+ return theTableDef;
}
/*virtual*/ T2WorldDef::~T2WorldDef() {
-}
+ DisposePalette();
+ DisposeOffscreen();
-/*virtual*/ void T2WorldDef::GetName(CString&) {
-}
+ if (mImage)
+ delete mImage;
-/*virtual*/ void T2WorldDef::DrawWorld(T2TowerDoc*) {
-}
+ delete m1D0;
+ m1D0 = NULL;
-/*virtual*/ void T2WorldDef::DrawBkgnd(unsigned int, const RECT&, T2TowerDoc*) {
-}
+ delete mPoolDef;
+ delete mWordDefArray;
-/*virtual*/ void T2WorldDef::DrawBkgnd(const RECT&, T2TowerDoc*) {
+ if (mTowerEvent)
+ delete mTowerEvent;
}
-/*virtual*/ void T2WorldDef::DrawRoofAndFloor(const RECT&, T2TowerDoc*, ROOFANDFLOOR) {
+/*virtual*/ void T2WorldDef::GetName(CString& outStr) {
+ outStr = (char) mWorldType;
}
-/*virtual*/ void T2WorldDef::DrawSideObj(T2Equip*, T2TowerDoc*, SIDEOBJPATTERN) {
-}
+/*virtual*/ void T2WorldDef::DrawWorld(T2TowerDoc* inDoc) {
+ RECT srcRect;
+ SetRect(&srcRect, 0, 0, 64, 72);
-/*virtual*/ void T2WorldDef::DrawCrane(T2TowerDoc*, const RECT&) {
-}
+ RECT destRect = srcRect;
-/*virtual*/ void T2WorldDef::CalcCranePos(T2TowerDoc*) {
+ mImage->CopyImage(*inDoc->towerDoc_vf10C(), srcRect, destRect);
}
-/*virtual*/ void T2WorldDef::ClearCranePos(T2TowerDoc*) {
-}
+/*virtual*/ void T2WorldDef::DrawBkgnd(unsigned int inImageIndex, const RECT& inDestRect, T2TowerDoc* inDoc) {
+ int width = mBGHUnit;
+ int height = mBGVUnit;
+
+ RECT srcRect;
+ SetRect(&srcRect, 0, 0, width, height);
+ OffsetRect(&srcRect, 0, inImageIndex * height);
+
+ RECT destRect = inDestRect;
+ UT2Coordinate::BkgndToQD(destRect, inDoc->towerDoc_vf108());
-/*virtual*/ void T2WorldDef::DrawBuild(T2Equip*, T2TowerDoc*) {
+ mSkyOffscreen->CopyImage(*inDoc->towerDoc_vf10C(), srcRect, destRect);
}
-void T2WorldDef::SetupOffscreen(HINSTANCE) {
+/*virtual*/ void T2WorldDef::DrawBkgnd(const RECT& inRect, T2TowerDoc* inDoc) {
+ if (m228) {
+ BkgndInfo *infoPtr = inDoc->mBkgndInfo;
+ for (int v = inRect.top; v < inRect.bottom; v++) {
+ for (int h = inRect.left; h < inRect.right; h++) {
+ unsigned int imageIndex = UT2BkgndInfo::GetBkgndInfo(infoPtr, v, h);
+
+ RECT rect;
+ SetRect(&rect, h, v, h + 1, v + 1);
+ DrawBkgnd(imageIndex, rect, inDoc);
+ }
+ }
+ } else {
+ RECT srcRect = inRect;
+ srcRect.top *= mBGVUnit;
+ srcRect.left *= mBGHUnit;
+ srcRect.bottom *= mBGVUnit;
+ srcRect.right *= mBGHUnit;
+
+ RECT destRect;
+ UT2Coordinate::BkgndToQD(inRect, destRect, inDoc->towerDoc_vf108());
+
+ mSkyOffscreen->CopyImage(*inDoc->towerDoc_vf10C(), srcRect, destRect);
+ }
+}
+
+/*virtual*/ void T2WorldDef::DrawRoofAndFloor(const RECT& inRect, T2TowerDoc* inDoc, ROOFANDFLOOR inRoofAndFloor) {
+ RECT unitRect = inRect;
+ RECT qdRect;
+ int id;
+
+ if (inRoofAndFloor & RoofAndFloor_Roof) {
+ UT2Coordinate::UnitToQDRoof(unitRect, qdRect, inDoc->mZoomLevel);
+ id = mImageObj->FindObject("Roof");
+ mImageObj->DrawObject(inDoc->towerDoc_vf10C(), id, qdRect, inDoc->towerDoc_vf108());
+ }
+
+ if (inRoofAndFloor & RoofAndFloor_Floor) {
+ UT2Coordinate::UnitToQDFloor(unitRect, qdRect, inDoc->mZoomLevel);
+ id = mImageObj->FindObject("Floor");
+ mImageObj->DrawObject(inDoc->towerDoc_vf10C(), id, qdRect, inDoc->towerDoc_vf108());
+ }
+}
+
+/*virtual*/ void T2WorldDef::DrawSideObj(T2Equip* inEquip, T2TowerDoc* inDoc, SIDEOBJPATTERN inSideObjPattern) {
+ if (inSideObjPattern == SideObjPattern_0 || inSideObjPattern == SideObjPattern_1) {
+ CString name1, name2;
+
+ if (((T2Tenant *) inEquip)->IsFloor() && inEquip->mValiation == 1)
+ name1 = "Tent";
+ else
+ name1 = "Side";
+
+ if (inSideObjPattern == SideObjPattern_0)
+ name2 = "L";
+ else
+ name2 = "R";
+
+ int numPattern = 0;
+ if (inDoc->towerDoc_vf140() == ViewMode_1) {
+ numPattern = 1;
+ if (inDoc->towerDoc_vf160()->IsSnow())
+ numPattern = 2;
+ }
+
+ int objectID = mImageObj->FindObject(name1 + name2, numPattern);
+
+ SIZE size;
+ mImageObj->GetObjectSize(objectID, &size);
+
+ size.cx = size.cx / 8;
+ size.cy = (size.cy + 35) / 36;
+
+ RECT unitRect, rect;
+ if (inSideObjPattern == SideObjPattern_0) {
+ unitRect.right = inEquip->mArea.left;
+ unitRect.left = unitRect.right - size.cx;
+ } else if (inSideObjPattern == SideObjPattern_1) {
+ unitRect.left = inEquip->mArea.right;
+ unitRect.right = unitRect.left + size.cx;
+ }
+
+ if (((T2Tenant *) inEquip)->IsFloor() && inEquip->mValiation == 1) {
+ unitRect.bottom = inEquip->mArea.bottom;
+ unitRect.top = unitRect.bottom - size.cy;
+ UT2Coordinate::UnitToQD(unitRect, rect, inDoc->mZoomLevel, true);
+ mImageObj->DrawObject(inDoc->towerDoc_vf10C(), objectID, rect, inDoc->towerDoc_vf108());
+
+ objectID = mImageObj->FindObject("Side" + name2, numPattern);
+ mImageObj->GetObjectSize(objectID, &size);
+
+ size.cx = size.cx / 8;
+ size.cy = (size.cy + 35) / 36;
+
+ if (inSideObjPattern == SideObjPattern_0) {
+ unitRect.right = inEquip->mArea.left;
+ unitRect.left = unitRect.right - size.cx;
+ } else if (inSideObjPattern == SideObjPattern_1) {
+ unitRect.left = inEquip->mArea.right;
+ unitRect.right = unitRect.left + size.cx;
+ }
+
+ unitRect.top = inEquip->mArea.top;
+ unitRect.bottom = unitRect.top + size.cy;
+
+ for (int v = inEquip->mArea.top; v < (inEquip->mArea.bottom - 1); v++) {
+ UT2Coordinate::UnitToQD(unitRect, rect, inDoc->mZoomLevel, true);
+ mImageObj->DrawObject(inDoc->towerDoc_vf10C(), objectID, rect, inDoc->towerDoc_vf108());
+
+ unitRect.top++;
+ unitRect.bottom++;
+ }
+ } else if (((T2TenantDef *) inEquip->GetEquipDef())->m198 && !((T2TenantDef *) inEquip->GetEquipDef())->m194) {
+ unitRect.bottom = inEquip->mArea.bottom;
+ unitRect.top = unitRect.bottom - size.cy;
+ UT2Coordinate::UnitToQD(unitRect, rect, inDoc->mZoomLevel, true);
+ mImageObj->DrawObject(inDoc->towerDoc_vf10C(), objectID, rect, inDoc->towerDoc_vf108());
+ } else if (!((T2TenantDef *) inEquip->GetEquipDef())->m198 && ((T2TenantDef *) inEquip->GetEquipDef())->m194) {
+ unitRect.top = inEquip->mArea.top;
+ unitRect.bottom = unitRect.top + -size.cy;
+ UT2Coordinate::UnitToQD(unitRect, rect, inDoc->mZoomLevel, true);
+ mImageObj->DrawObject(inDoc->towerDoc_vf10C(), objectID, rect, inDoc->towerDoc_vf108());
+ } else if (((T2TenantDef *) inEquip->GetEquipDef())->m198 && ((T2TenantDef *) inEquip->GetEquipDef())->m194) {
+ unitRect.top = inEquip->mArea.top;
+ unitRect.bottom = unitRect.top + size.cy;
+
+ for (int v = inEquip->mArea.top; v < inEquip->mArea.bottom; v++) {
+ UT2Coordinate::UnitToQD(unitRect, rect, inDoc->mZoomLevel, true);
+ mImageObj->DrawObject(inDoc->towerDoc_vf10C(), objectID, rect, inDoc->towerDoc_vf108());
+
+ unitRect.top++;
+ unitRect.bottom++;
+ }
+ }
+ }
+}
+
+/*virtual*/ void T2WorldDef::DrawCrane(T2TowerDoc* inDoc, const RECT& inRect) {
+ T2FloorInfo *floorInfo = inDoc->towerDoc_vf12C();
+ T2BitImage *theViewImage = inDoc->GetTowerMainView()->m60;
+ int theZoomLevel = inDoc->mZoomLevel;
+
+ RECT craneArea;
+ craneArea.top = 0;
+ craneArea.left = 0;
+ craneArea.bottom = m190.y;
+ craneArea.right = m190.x;
+
+ int id = mImageObj->FindObject("OutCrane");
+ if (id >= 0) {
+ for (int i = 0; i < inDoc->mCraneCount; i++) {
+ RECT unitRect, qdRect, intersection;
+
+ unitRect = craneArea;
+ OffsetRect(&unitRect, inDoc->mCranePosArray[i].x, inDoc->mCranePosArray[i].y);
+
+ if (IntersectRect(&intersection, &inRect, &unitRect)) {
+ UT2Coordinate::UnitToQD(unitRect, qdRect, theZoomLevel, true);
+ mImageObj->DrawObject(theViewImage, id, qdRect, theZoomLevel);
+ }
+ }
+ }
+}
+
+/*virtual*/ void T2WorldDef::CalcCranePos(T2TowerDoc* inDoc) {
+ int count = 0;
+ POINT *array = (POINT *) malloc(GetWidth() * sizeof(POINT) / m190.x);
+
+ T2FloorInfo *floorInfo = inDoc->towerDoc_vf12C();
+
+ RECT rect;
+ SetRect(&rect, 0, 0, GetWidth(), mGroundLine);
+
+ T2FInfoAreaIterator iterator(*floorInfo, rect);
+ T2Tenant *theTenant;
+
+ ClearCranePos(inDoc);
+
+ while (iterator.NextTenant(theTenant)) {
+ T2Tenant *theFloor;
+ if (theTenant->IsFloor())
+ theFloor = theTenant;
+ else
+ theFloor = floorInfo->GetTenant(theTenant->GetFloorID(theTenant->mArea.top));
+
+ BOOL valid = true;
+ if (theTenant->mArea.top < mTopFloorLine || (theTenant->mArea.right - theTenant->mArea.left) < 6)
+ valid = false;
+
+ if (valid) {
+ RECT rect2;
+ rect2.left = theFloor->mArea.left;
+ rect2.bottom = theFloor->mArea.top;
+ rect2.right = theFloor->mArea.right;
+ rect2.top = rect2.bottom - 1;
+
+ T2FInfoAreaIterator iterator2(*floorInfo, rect2);
+ T2Tenant *theTenant2;
+
+ while (iterator2.NextTenant(theTenant2)) {
+ T2Tenant *theFloor2;
+ if (theTenant2->IsFloor())
+ theFloor2 = theTenant2;
+ else
+ theFloor2 = floorInfo->GetTenant(theTenant2->GetFloorID(-1));
+
+ if ((theFloor2->mArea.right - theFloor2->mArea.left) >= 6) {
+ valid = false;
+ break;
+ }
+ }
+ }
+
+ if (valid) {
+ RECT rect2;
+ rect2.left = theFloor->mArea.left;
+ rect2.bottom = theFloor->mArea.top;
+ rect2.right = theFloor->mArea.left + 6;
+ rect2.top = rect2.bottom - 1;
+
+ T2FInfoAreaIterator iterator2(*floorInfo, rect2);
+ T2Tenant *theTenant2;
+ if (iterator2.NextTenant(theTenant2))
+ valid = false;
+ }
+
+ if (valid) {
+ if (floorInfo->GetTenantID(theFloor->mArea.top, theFloor->mArea.left - 1))
+ valid = false;
+ }
+
+ if (valid) {
+ array[count].x = theFloor->mArea.left;
+ array[count].y = theFloor->mArea.top - m190.y;
+ count++;
+ }
+ }
+
+ if (count) {
+ inDoc->mCranePosArray = (POINT *) malloc(count * sizeof(POINT));
+ inDoc->mCraneCount = count;
+ memcpy(inDoc->mCranePosArray, array, count * sizeof(POINT));
+ }
+
+ free(array);
+}
+
+/*virtual*/ void T2WorldDef::ClearCranePos(T2TowerDoc* inDoc) {
+ if (inDoc->mCranePosArray)
+ free(inDoc->mCranePosArray);
+
+ inDoc->mCranePosArray = NULL;
+ inDoc->mCraneCount = 0;
+}
+
+/*virtual*/ void T2WorldDef::DrawBuild(T2Equip* inEquip, T2TowerDoc* inDoc) {
+ RECT area;
+ inEquip->GetEquipArea(area);
+
+ int pattern;
+ if (inEquip->GetStatus() < 2)
+ pattern = 0;
+ else
+ pattern = 1;
+
+ int objIndex = mImageObj->FindObject("BuildPrc", pattern);
+
+ for (int v = area.top; v < area.bottom; v++) {
+ RECT rect = area;
+ rect.top = v;
+ rect.bottom = rect.top + 1;
+
+ UT2Coordinate::UnitToQD(rect, inDoc->mZoomLevel, true);
+ mImageObj->DrawObject(inDoc->towerDoc_vf10C(), objIndex, rect, inDoc->towerDoc_vf108());
+ }
+}
+
+void T2WorldDef::SetupOffscreen(HINSTANCE inModule) {
+ // background
+ mSkyOffscreen = new T2BitImage(inModule, 1000, true);
+
+ // emergency stairs (side of building)
+ m1A4[0] = new T2BitImage(inModule, 1002, true);
+ mImageObj->AddObject(inModule, 1002, m1A4[0]);
+
+ // side of lobby
+ m1A4[1] = new T2BitImage(inModule, 1003, true);
+ mImageObj->AddObject(inModule, 1003, m1A4[1]);
+
+ // under-construction floor
+ m1AC = new T2BitImage(inModule, 1004, true);
+ mImageObj->AddObject(inModule, 1004, m1AC);
+
+ // some person
+ m1B0 = new T2BitImage(inModule, 1005, true);
+ mImageObj->AddObject(inModule, 1005, m1B0);
+
+ // tool buttons
+ m1B4 = new T2BitImage(inModule, 2000, true);
+ m1D0->AddObject(inModule, 2000, m1B4);
+
+ // message window
+ m1B8 = new T2BitImage(inModule, 10000, true);
+ mImageObj->AddObject(inModule, 10000, m1B8);
+
+ // control window
+ m1BC = new T2BitImage(inModule, 10001, true);
+ mImageObj->AddObject(inModule, 10001, m1BC);
+
+ // dialog sprites
+ m1C0 = new T2BitImage(inModule, 10002, true);
+ mImageObj->AddObject(inModule, 10002, m1C0);
+
+ // crane
+ m1C4 = new T2BitImage(inModule, 3000, true);
+ mImageObj->AddObject(inModule, 3000, m1C4);
+
+ // icons shown over tenants
+ m1C8 = new T2BitImage(inModule, 1006, true);
+ mImageObj->AddObject(inModule, 1006, m1C8);
+
+ try {
+ // burning floor
+ m1CC = new T2BitImage(inModule, 1007, true);
+ mImageObj->AddObject(inModule, 1007, m1CC);
+ } catch (int x) {
+ }
}
void T2WorldDef::DisposeOffscreen() {
+ if (mSkyOffscreen)
+ delete mSkyOffscreen;
+
+ if (m1A0)
+ delete m1A0;
+
+ for (int i = 0; i < 2; i++) {
+ if (m1A4[i])
+ delete m1A4[i];
+ }
+
+ if (m1AC)
+ delete m1AC;
+
+ if (m1B0)
+ delete m1B0;
+
+ if (m1B4)
+ delete m1B4;
+
+ delete m1B8;
+ delete m1BC;
+ delete m1C0;
+ delete m1C4;
+ delete m1C8;
+
+ if (m1CC)
+ delete m1CC;
}
-void T2WorldDef::SetupPalette(HINSTANCE) {
+void T2WorldDef::SetupPalette(HINSTANCE inModule) {
}
void T2WorldDef::DisposePalette() {
}
-/*virtual*/ void T2WorldDef::DoAnimate(T2TowerDoc*) {
-}
+/*virtual*/ void T2WorldDef::DoAnimate(T2TowerDoc* inDoc) {
+}
+
+/*virtual*/ BOOL T2WorldDef::TenantAreaCheck(T2TowerDoc* inDoc, RECT& inRect, BOOL inShowMessage) {
+ if (inRect.bottom != mGroundLine) {
+ int v, h;
+
+ v = mGroundLine - 1;
+ for (h = inRect.left; h < inRect.right; h++) {
+ if (!inDoc->mFloorInfo->GetTenant(v, h)) {
+ if (inShowMessage) {
+ // "1Fのフロアからはみ出して設置することはできません"
+ // It cannot be installed protruding from the 1F floor.
+ (new T2Message)->ShowMessage("\x82\x50\x82\x65\x82\xCC\x83\x74\x83\x8D\x83\x41\x82\xA9\x82\xE7\x82\xCD\x82\xDD\x8F\x6F\x82\xB5\x82\xC4\x90\xDD\x92\x75\x82\xB7\x82\xE9\x82\xB1\x82\xC6\x82\xCD\x82\xC5\x82\xAB\x82\xDC\x82\xB9\x82\xF1");
+ }
+
+ return false;
+ }
+ }
+ }
+
+ return true;
+}
+
+/*virtual*/ int T2WorldDef::IdleProc(T2TowerDoc* inDoc) {
+ return mTowerEvent->Idle(inDoc);
+}
+
+/*virtual*/ void T2WorldDef::DrawCtrl(T2TowerDoc* inDoc, T2MWControl* inControl) {
+ T2Pool *thePool;
+ int population;
+
+ switch (inControl->GetDlgCtrlID()) {
+ case 1000:
+ DrawClock(inControl, *inDoc->mNow);
+ break;
+ case 1001:
+ DrawCalendar(inControl, *inDoc->mNow, inDoc);
+ break;
+ case 1002:
+ DrawFunds(inControl, inDoc->towerDoc_vf26C());
+ break;
+ case 2000:
+ DrawPauseButton(inControl);
+ break;
+ case 1004:
+ DrawMessage(inControl);
+ break;
+ case 1003:
+ thePool = inDoc->towerDoc_vf130();
+#line 755
+ _ASSERT(thePool != NULL);
+ population = thePool->GetPopulation();
+ DrawPopulation(inControl, population);
+ break;
+ case 2001:
+ DrawInViewButton(inControl);
+ break;
+ case 2006:
+ DrawOutViewButton(inControl);
+ break;
+ case 2004:
+ DrawMaintButton(inControl);
+ break;
+ case 2003:
+ DrawEvalButton(inControl);
+ break;
+ case 2002:
+ DrawPriceButton(inControl);
+ break;
+ case 2005:
+ DrawTransButton(inControl);
+ break;
+ case 2007:
+ DrawSlider(inControl);
+ break;
+ }
+}
+
+/*virtual*/ void T2WorldDef::ButtonDownOnCtrl(T2TowerDoc* inDoc, T2MWControl* inControl, CPoint inPt, CWnd* inWnd) {
+ inControl->SetCapture();
+ int pattern = inControl->GetData();
+ int newValue;
+
+ switch (inControl->GetDlgCtrlID()) {
+ case 1000:
+ case 1001:
+ case 1002:
+ case 1003:
+ if (pattern < 100)
+ inControl->SetData(pattern + 100);
+ break;
+
+ case 2000:
+ if (pattern == 0) {
+ _214 = true;
+ inControl->SetData(100);
+ ClickPauseButton(inControl, inDoc);
+ } else {
+ _214 = false;
+ }
+ break;
+
+ case 2001:
+ ClickInViewButton(inControl, inDoc);
+ goto refreshButtons;
+ case 2006:
+ ClickOutViewButton(inControl, inDoc);
+ goto refreshButtons;
+ case 2004:
+ ClickMaintButton(inControl, inDoc);
+ goto refreshButtons;
+ case 2003:
+ ClickEvalButton(inControl, inDoc);
+ goto refreshButtons;
+ case 2002:
+ ClickPriceButton(inControl, inDoc);
+ goto refreshButtons;
+ case 2005:
+ ClickTransButton(inControl, inDoc);
+ refreshButtons:
+ ((T2MWControl *) inWnd->GetDlgItem(2001))->SetData(0);
+ ((T2MWControl *) inWnd->GetDlgItem(2006))->SetData(0);
+ ((T2MWControl *) inWnd->GetDlgItem(2004))->SetData(0);
+ ((T2MWControl *) inWnd->GetDlgItem(2003))->SetData(0);
+ ((T2MWControl *) inWnd->GetDlgItem(2002))->SetData(0);
+ ((T2MWControl *) inWnd->GetDlgItem(2005))->SetData(0);
+ inControl->SetData(100);
+ break;
+
+ case 2007:
+ newValue = SliderPointToValue(inControl, inPt);
+ if (newValue != inControl->GetData()) {
+ inControl->SetData(newValue);
+ if (newValue == 0)
+ inDoc->towerDoc_vf14C(-1);
+ else
+ inDoc->towerDoc_vf14C(7 - newValue);
+ }
+ break;
+ }
+}
+
+/*virtual*/ void T2WorldDef::ButtonUpOnCtrl(T2TowerDoc* inDoc, T2MWControl* inControl, CPoint inPt, CWnd* inWnd) {
+ if (GetCapture() == inControl->m_hWnd) {
+ ReleaseCapture();
+
+ int pattern = inControl->GetData();
+
+ switch (inControl->GetDlgCtrlID()) {
+ case 1000:
+ ClickClock(inControl, inDoc);
+ break;
+ case 1001:
+ ClickCalendar(inControl, inDoc);
+ break;
+ case 1002:
+ ClickFunds(inControl, inDoc);
+ break;
+ case 1003:
+ ClickPopulation(inControl, inDoc);
+ break;
+
+ case 2000:
+ if (!_214) {
+ inControl->SetData(0);
+ ClickPauseButton(inControl, inDoc);
+ }
+ break;
+ }
+ }
+}
+
+/*virtual*/ void T2WorldDef::MouseMoveOnCtrl(T2TowerDoc* inDoc, T2MWControl* inControl, CPoint inPt, CWnd* inWnd) {
+ int newValue;
+
+ if (GetCapture() == inControl->m_hWnd) {
+ switch (inControl->GetDlgCtrlID()) {
+ case 2007:
+ newValue = SliderPointToValue(inControl, inPt);
+ if (newValue != inControl->GetData()) {
+ inControl->SetData(newValue);
+ if (newValue == 0)
+ inDoc->towerDoc_vf14C(-1);
+ else
+ inDoc->towerDoc_vf14C(7 - newValue);
+ }
+ break;
+ }
+ }
+}
+
+/*virtual*/ void T2WorldDef::ClickClock(T2MWControl* inControl, T2TowerDoc* inDoc) {
+ int value = inControl->GetData();
+ if (value >= 100)
+ value -= 100;
+ inControl->SetData(value);
+}
+
+/*virtual*/ void T2WorldDef::ClickCalendar(T2MWControl* inControl, T2TowerDoc* inDoc) {
+ int value = inControl->GetData();
+ if (value >= 100)
+ value -= 100;
+ inControl->SetData(value);
+ inDoc->CallbackCalendar();
+}
+
+/*virtual*/ void T2WorldDef::ClickFunds(T2MWControl* inControl, T2TowerDoc* inDoc) {
+ int value = inControl->GetData();
+ if (value >= 100)
+ value -= 100;
+ inControl->SetData(value);
+ inDoc->CallbackFunds();
+}
+
+/*virtual*/ void T2WorldDef::ClickPopulation(T2MWControl* inControl, T2TowerDoc* inDoc) {
+ int value = inControl->GetData();
+ if (value >= 100)
+ value -= 100;
+ inControl->SetData(value);
+ inDoc->CallbackPopulation();
+}
+
+/*virtual*/ void T2WorldDef::DrawClock(T2MWControl* inControl, T2DateTime& inDateTime) {
+#pragma var_order(angle, dc2, theImage, save2, save, x, hours, y, imageRect, rect2, objectID, minutes, bitmap, pDC)
+ int objectID = mImageObj->FindObject("Clock", 1);
+
+ RECT imageRect;
+ T2BitImage *theImage = mImageObj->GetObjectImage(objectID, imageRect);
+
+ RECT rect2 = imageRect;
+ OffsetRect(&rect2, -rect2.left, -rect2.top);
+
+ CDC *pDC = inControl->GetDC();
+ int save = pDC->SaveDC();
+ pDC->SelectPalette(GetPaletteAnimeDef()->GetTowerPalette(), false);
+ pDC->RealizePalette();
+
+ CDC dc2;
+ dc2.CreateCompatibleDC(pDC);
+ int save2 = dc2.SaveDC();
+ dc2.SelectPalette(GetPaletteAnimeDef()->GetTowerPalette(), false);
+ dc2.RealizePalette();
+
+ HBITMAP bitmap = Create256DIBitmap(dc2.m_hDC, rect2.right, rect2.bottom);
+ SelectObject(dc2.m_hDC, bitmap);
-/*virtual*/ int T2WorldDef::TenantAreaCheck(T2TowerDoc*, RECT&, int) {
-}
+ theImage->CopyImage(&dc2, imageRect, rect2);
-/*virtual*/ int T2WorldDef::IdleProc(T2TowerDoc*) {
-}
+ float hours = inDateTime.GetHour() + inDateTime.GetMinutes() / 60.0f;
+ float angle = (6.283186f * hours) / 12.0f;
-/*virtual*/ void T2WorldDef::DrawCtrl(T2TowerDoc*, T2MWControl*) {
-}
+ int x = (rect2.right / 2) + (rect2.right * 0.3 * sin(angle)) + 0.5;
+ int y = (rect2.bottom / 2) - (rect2.bottom * 0.3 * cos(angle)) + 0.5;
+ dc2.MoveTo(rect2.right / 2, rect2.bottom / 2);
+ dc2.LineTo(x, y);
-/*virtual*/ void T2WorldDef::ButtonDownOnCtrl(T2TowerDoc*, T2MWControl*, CPoint, CWnd*) {
-}
+ float minutes = inDateTime.GetMinutes();
+ angle = (6.283186f * minutes) / 60.0f;
-/*virtual*/ void T2WorldDef::ButtonUpOnCtrl(T2TowerDoc*, T2MWControl*, CPoint, CWnd*) {
-}
+ x = (rect2.right / 2) + (rect2.right * 0.4 * sin(angle)) + 0.5;
+ y = (rect2.bottom / 2) - (rect2.bottom * 0.4 * cos(angle)) + 0.5;
+ dc2.MoveTo(rect2.right / 2, rect2.bottom / 2);
+ dc2.LineTo(x, y);
-/*virtual*/ void T2WorldDef::MouseMoveOnCtrl(T2TowerDoc*, T2MWControl*, CPoint, CWnd*) {
-}
+ pDC->BitBlt(0, 0, rect2.right, rect2.bottom, &dc2, 0, 0, SRCCOPY);
-/*virtual*/ void T2WorldDef::ClickClock(T2MWControl*, T2TowerDoc*) {
-}
+ dc2.RestoreDC(save2);
+ dc2.DeleteDC();
-/*virtual*/ void T2WorldDef::ClickCalendar(T2MWControl*, T2TowerDoc*) {
-}
+ DeleteObject(bitmap);
-/*virtual*/ void T2WorldDef::ClickFunds(T2MWControl*, T2TowerDoc*) {
+ pDC->RestoreDC(save);
+ inControl->ReleaseDC(pDC);
}
-/*virtual*/ void T2WorldDef::ClickPopulation(T2MWControl*, T2TowerDoc*) {
-}
+/*virtual*/ void T2WorldDef::DrawCalendar(T2MWControl* inControl, T2DateTime& inDateTime, T2TowerDoc* inDoc) {
+#pragma var_order(year, imageRect, tempDC, theImage, save2, text, rect3, month, font, save, rect2, pattern, theBitmap, pDC)
+ int pattern = inControl->GetData();
-/*virtual*/ void T2WorldDef::DrawClock(T2MWControl*, T2DateTime&) {
-}
+ RECT imageRect;
+ T2BitImage *theImage = mImageObj->GetObjectImage(mImageObj->FindObject("Calendar", pattern), imageRect);
+
+ RECT rect2 = imageRect;
+ OffsetRect(&rect2, -rect2.left, -rect2.top);
+
+ CDC *pDC = inControl->GetDC();
+ int save = pDC->SaveDC();
+ pDC->SelectPalette(GetPaletteAnimeDef()->GetTowerPalette(), false);
+ pDC->RealizePalette();
+
+ CDC tempDC;
+ tempDC.CreateCompatibleDC(pDC);
+ int save2 = tempDC.SaveDC();
+ tempDC.SelectPalette(GetPaletteAnimeDef()->GetTowerPalette(), false);
+ tempDC.RealizePalette();
+
+ HBITMAP theBitmap = Create256DIBitmap(tempDC.m_hDC, rect2.right, rect2.bottom);
+ SelectObject(tempDC.m_hDC, theBitmap);
+
+ m1B8->CopyImage(&tempDC, imageRect, rect2);
+
+ CRect rect3 = rect2;
+ rect3.top += 2;
+ rect3.left += 2;
+ rect3.bottom -= 2;
+ rect3.right -= 2;
+
+ if (pattern == 100)
+ rect3.OffsetRect(1, 1);
-/*virtual*/ void T2WorldDef::DrawCalendar(T2MWControl*, T2DateTime&, T2TowerDoc*) {
+ CFont font;
+ font.CreateFont(-rect3.Height(), 0, 0, 0, FW_BOLD, false, false, false, SHIFTJIS_CHARSET, OUT_TT_PRECIS, CLIP_TT_ALWAYS, PROOF_QUALITY, DEFAULT_PITCH, "\x82\x6C\x82\x72 \x83\x53\x83\x56\x83\x62\x83\x4E");
+
+ tempDC.SelectObject(&font);
+ tempDC.SetBkMode(TRANSPARENT);
+
+ int year = inDateTime.GetYear();
+ int month = inDateTime.GetMonth();
+ tempDC.SetTextAlign(TA_UPDATECP);
+ tempDC.MoveTo(rect3.left, rect3.top);
+
+ char text[80];
+ wsprintf(text, "\x91\xE6%d\x8A\xFA %d\x8C\x8E ", year, month);
+ tempDC.TextOut(0, 0, text, strlen(text));
+
+ if (inDateTime.IsHoliday(inDoc)) {
+ lstrcpy(text, "\x8B\x78\x93\xFA");
+ tempDC.SetTextColor(PALETTERGB(192, 0, 0));
+ } else {
+ lstrcpy(text, "\x95\xBD\x93\xFA");
+ }
+ tempDC.TextOut(0, 0, text, strlen(text));
+
+ tempDC.SetTextColor(RGB(0, 0, 0));
+ tempDC.SetTextAlign(TA_NOUPDATECP);
+
+ pDC->BitBlt(0, 0, rect2.right, rect2.bottom, &tempDC, 0, 0, SRCCOPY);
+
+ tempDC.RestoreDC(save2);
+ tempDC.DeleteDC();
+
+ DeleteObject(theBitmap);
+ font.DeleteObject();
+
+ pDC->RestoreDC(save);
+ inControl->ReleaseDC(pDC);
}
-/*virtual*/ void T2WorldDef::DrawFunds(T2MWControl*, int) {
+/*virtual*/ void T2WorldDef::DrawFunds(T2MWControl* inControl, int inFunds) {
+#pragma var_order(imageRect, tempDC, theImage, save2, text, rect3, font, save, rect2, pattern, theBitmap, pDC)
+ int pattern = inControl->GetData();
+
+ RECT imageRect;
+ T2BitImage *theImage = mImageObj->GetObjectImage(mImageObj->FindObject("Funds", pattern), imageRect);
+
+ RECT rect2 = imageRect;
+ OffsetRect(&rect2, -rect2.left, -rect2.top);
+
+ CDC *pDC = inControl->GetDC();
+ int save = pDC->SaveDC();
+ pDC->SelectPalette(GetPaletteAnimeDef()->GetTowerPalette(), false);
+ pDC->RealizePalette();
+
+ CDC tempDC;
+ tempDC.CreateCompatibleDC(pDC);
+ int save2 = tempDC.SaveDC();
+ tempDC.SelectPalette(GetPaletteAnimeDef()->GetTowerPalette(), false);
+ tempDC.RealizePalette();
+
+ HBITMAP theBitmap = Create256DIBitmap(tempDC.m_hDC, rect2.right, rect2.bottom);
+ SelectObject(tempDC.m_hDC, theBitmap);
+
+ m1B8->CopyImage(&tempDC, imageRect, rect2);
+
+ CRect rect3 = rect2;
+ rect3.top += 2;
+ rect3.left += 11;
+ rect3.bottom -= 2;
+ rect3.right -= 23;
+
+ if (pattern == 100)
+ rect3.OffsetRect(1, 1);
+
+ CFont font;
+ font.CreateFont(-rect3.Height(), 0, 0, 0, FW_DONTCARE, false, false, false, SHIFTJIS_CHARSET, OUT_TT_PRECIS, CLIP_TT_ALWAYS, PROOF_QUALITY, DEFAULT_PITCH, "\x82\x6C\x82\x72 \x83\x53\x83\x56\x83\x62\x83\x4E");
+
+ tempDC.SelectObject(&font);
+ tempDC.SetBkMode(TRANSPARENT);
+
+ char text[80];
+ wsprintf(text, "%d", inFunds);
+ tempDC.DrawText(text, &rect3, DT_RIGHT);
+
+ pDC->BitBlt(0, 0, rect2.right, rect2.bottom, &tempDC, 0, 0, SRCCOPY);
+
+ tempDC.RestoreDC(save2);
+ tempDC.DeleteDC();
+
+ DeleteObject(theBitmap);
+ font.DeleteObject();
+
+ pDC->RestoreDC(save);
+ inControl->ReleaseDC(pDC);
}
-/*virtual*/ void T2WorldDef::DrawMessage(T2MWControl*) {
+/*virtual*/ void T2WorldDef::DrawMessage(T2MWControl* inControl) {
+#pragma var_order(imageRect, tempDC, theImage, save2, rect3, font, save, str, rect2, pattern, theBitmap, pDC)
+ int pattern = inControl->GetData();
+
+ RECT imageRect;
+ T2BitImage *theImage = mImageObj->GetObjectImage(mImageObj->FindObject("Message", pattern), imageRect);
+
+ RECT rect2 = imageRect;
+ OffsetRect(&rect2, -rect2.left, -rect2.top);
+
+ CDC *pDC = inControl->GetDC();
+ int save = pDC->SaveDC();
+ pDC->SelectPalette(GetPaletteAnimeDef()->GetTowerPalette(), false);
+ pDC->RealizePalette();
+
+ CDC tempDC;
+ tempDC.CreateCompatibleDC(pDC);
+ int save2 = tempDC.SaveDC();
+ tempDC.SelectPalette(GetPaletteAnimeDef()->GetTowerPalette(), false);
+ tempDC.RealizePalette();
+
+ HBITMAP theBitmap = Create256DIBitmap(tempDC.m_hDC, rect2.right, rect2.bottom);
+ SelectObject(tempDC.m_hDC, theBitmap);
+
+ m1B8->CopyImage(&tempDC, imageRect, rect2);
+
+ CRect rect3 = rect2;
+ rect3.top = rect3.top;
+ rect3.left = rect3.left + 4;
+ rect3.bottom = rect3.bottom;
+ rect3.right = rect3.right - 4;
+
+ CFont font;
+ font.CreateFont(-rect3.Height(), 0, 0, 0, FW_DONTCARE, false, false, false, SHIFTJIS_CHARSET, OUT_TT_PRECIS, CLIP_TT_ALWAYS, PROOF_QUALITY, DEFAULT_PITCH, "\x82\x6C\x82\x72 \x83\x53\x83\x56\x83\x62\x83\x4E");
+
+ tempDC.SelectObject(&font);
+ tempDC.SetBkMode(TRANSPARENT);
+
+ CString str;
+ inControl->GetWindowText(str);
+ tempDC.DrawText(str, &rect3, DT_SINGLELINE | DT_NOPREFIX);
+
+ pDC->BitBlt(0, 0, rect2.right, rect2.bottom, &tempDC, 0, 0, SRCCOPY);
+
+ tempDC.RestoreDC(save2);
+ tempDC.DeleteDC();
+
+ DeleteObject(theBitmap);
+ font.DeleteObject();
+
+ pDC->RestoreDC(save);
+ inControl->ReleaseDC(pDC);
}
-/*virtual*/ void T2WorldDef::DrawPauseButton(T2MWControl*) {
+/*virtual*/ void T2WorldDef::DrawPauseButton(T2MWControl* inControl) {
+ DrawSimpleMWControl(inControl, "Pause");
}
-/*virtual*/ void T2WorldDef::DrawPopulation(T2MWControl*, int) {
+/*virtual*/ void T2WorldDef::DrawPopulation(T2MWControl* inControl, int inPop) {
+#pragma var_order(imageRect, tempDC, theImage, save2, text, rect3, font, save, rect2, pattern, theBitmap, pDC)
+ int pattern = inControl->GetData();
+
+ RECT imageRect;
+ T2BitImage *theImage = mImageObj->GetObjectImage(mImageObj->FindObject("Population", pattern), imageRect);
+
+ RECT rect2 = imageRect;
+ OffsetRect(&rect2, -rect2.left, -rect2.top);
+
+ CDC *pDC = inControl->GetDC();
+ int save = pDC->SaveDC();
+ pDC->SelectPalette(GetPaletteAnimeDef()->GetTowerPalette(), false);
+ pDC->RealizePalette();
+
+ CDC tempDC;
+ tempDC.CreateCompatibleDC(pDC);
+ int save2 = tempDC.SaveDC();
+ tempDC.SelectPalette(GetPaletteAnimeDef()->GetTowerPalette(), false);
+ tempDC.RealizePalette();
+
+ HBITMAP theBitmap = Create256DIBitmap(tempDC.m_hDC, rect2.right, rect2.bottom);
+ SelectObject(tempDC.m_hDC, theBitmap);
+
+ m1B8->CopyImage(&tempDC, imageRect, rect2);
+
+ CRect rect3 = rect2;
+ rect3.top += 2;
+ rect3.left += 11;
+ rect3.bottom -= 2;
+ rect3.right -= 23;
+
+ if (pattern == 100)
+ rect3.OffsetRect(1, 1);
+
+ CFont font;
+ font.CreateFont(-rect3.Height(), 0, 0, 0, FW_DONTCARE, false, false, false, SHIFTJIS_CHARSET, OUT_TT_PRECIS, CLIP_TT_ALWAYS, PROOF_QUALITY, DEFAULT_PITCH, "\x82\x6C\x82\x72 \x83\x53\x83\x56\x83\x62\x83\x4E");
+
+ tempDC.SelectObject(&font);
+ tempDC.SetBkMode(TRANSPARENT);
+
+ char text[80];
+ wsprintf(text, "%d", inPop);
+ tempDC.DrawText(text, &rect3, DT_RIGHT);
+
+ pDC->BitBlt(0, 0, rect2.right, rect2.bottom, &tempDC, 0, 0, SRCCOPY);
+
+ tempDC.RestoreDC(save2);
+ tempDC.DeleteDC();
+
+ DeleteObject(theBitmap);
+ font.DeleteObject();
+
+ pDC->RestoreDC(save);
+ inControl->ReleaseDC(pDC);
}
-/*virtual*/ void T2WorldDef::ClickPauseButton(T2MWControl*, T2TowerDoc*) {
+/*virtual*/ void T2WorldDef::ClickPauseButton(T2MWControl* inControl, T2TowerDoc* inDoc) {
+ inDoc->CallbackPause(_214);
}
-/*virtual*/ void T2WorldDef::DrawInViewButton(T2MWControl*) {
+/*virtual*/ void T2WorldDef::DrawInViewButton(T2MWControl* inControl) {
+ DrawSimpleMWControl(inControl, "InView");
}
-/*virtual*/ void T2WorldDef::DrawOutViewButton(T2MWControl*) {
+/*virtual*/ void T2WorldDef::DrawOutViewButton(T2MWControl* inControl) {
+ DrawSimpleMWControl(inControl, "OutView");
}
-/*virtual*/ void T2WorldDef::DrawMaintButton(T2MWControl*) {
+/*virtual*/ void T2WorldDef::DrawMaintButton(T2MWControl* inControl) {
+ DrawSimpleMWControl(inControl, "Maint");
}
-/*virtual*/ void T2WorldDef::DrawEvalButton(T2MWControl*) {
+/*virtual*/ void T2WorldDef::DrawEvalButton(T2MWControl* inControl) {
+ DrawSimpleMWControl(inControl, "Eval");
}
-/*virtual*/ void T2WorldDef::DrawPriceButton(T2MWControl*) {
+/*virtual*/ void T2WorldDef::DrawPriceButton(T2MWControl* inControl) {
+ DrawSimpleMWControl(inControl, "Price");
}
-/*virtual*/ void T2WorldDef::DrawTransButton(T2MWControl*) {
+/*virtual*/ void T2WorldDef::DrawTransButton(T2MWControl* inControl) {
+ DrawSimpleMWControl(inControl, "Trans");
}
-/*virtual*/ void T2WorldDef::DrawSlider(T2MWControl*) {
+/*virtual*/ void T2WorldDef::DrawSlider(T2MWControl* inControl) {
+#pragma var_order(threadRect, theImage, x, save, theImage2, imageRect, rect4, rect2, y, objectID, value, pDC)
+ CDC *pDC = inControl->GetDC();
+ int save = pDC->SaveDC();
+ pDC->SelectPalette(GetPaletteAnimeDef()->GetTowerPalette(), false);
+ pDC->RealizePalette();
+
+ int value = inControl->GetData();
+
+ int objectID = mImageObj->FindObject("Slider");
+ CRect imageRect;
+ T2BitImage *theImage = mImageObj->GetObjectImage(objectID, imageRect);
+
+ T2BitImage *theImage2 = new T2BitImage(imageRect);
+
+ int x = imageRect.left;
+ int y = imageRect.top;
+ RECT rect2 = imageRect;
+ OffsetRect(&rect2, -rect2.left, -rect2.top);
+
+ theImage->CopyImage(*theImage2, imageRect, rect2);
+
+ objectID = mImageObj->FindObject("SliderLever");
+ theImage = mImageObj->GetObjectImage(objectID, imageRect);
+
+ CRect threadRect;
+ mImageObj->GetObjectImage(mImageObj->FindObject("SliderThread"), threadRect);
+ threadRect.OffsetRect(-x, -y);
+
+ CRect rect4;
+ rect4.left = 0;
+ rect4.top = 0;
+ rect4.right = imageRect.Width();
+ rect4.bottom = imageRect.Height();
+ rect4.OffsetRect(
+ threadRect.left + ((threadRect.Width() * value) / 6) - (imageRect.Width() / 2),
+ threadRect.top + (threadRect.Height() / 2) - (imageRect.Height() / 2) - 1
+ );
+
+ theImage->SetBackGndColor(0);
+ theImage->CopyImage(*theImage2, imageRect, rect4);
+ theImage2->CopyImage(pDC, rect2, rect2);
+
+ delete theImage2;
+
+ pDC->RestoreDC(save);
+ inControl->ReleaseDC(pDC);
}
-/*virtual*/ void T2WorldDef::ClickInViewButton(T2MWControl*, T2TowerDoc*) {
+/*virtual*/ void T2WorldDef::ClickInViewButton(T2MWControl* inControl, T2TowerDoc* inDoc) {
+ inDoc->CallbackInView();
}
-/*virtual*/ void T2WorldDef::ClickOutViewButton(T2MWControl*, T2TowerDoc*) {
+/*virtual*/ void T2WorldDef::ClickOutViewButton(T2MWControl* inControl, T2TowerDoc* inDoc) {
+ inDoc->CallbackOutView();
}
-/*virtual*/ void T2WorldDef::ClickMaintButton(T2MWControl*, T2TowerDoc*) {
+/*virtual*/ void T2WorldDef::ClickMaintButton(T2MWControl* inControl, T2TowerDoc* inDoc) {
+ inDoc->CallbackMaintView();
}
-/*virtual*/ void T2WorldDef::ClickEvalButton(T2MWControl*, T2TowerDoc*) {
+/*virtual*/ void T2WorldDef::ClickEvalButton(T2MWControl* inControl, T2TowerDoc* inDoc) {
+ inDoc->CallbackEvalView();
}
-/*virtual*/ void T2WorldDef::ClickPriceButton(T2MWControl*, T2TowerDoc*) {
+/*virtual*/ void T2WorldDef::ClickPriceButton(T2MWControl* inControl, T2TowerDoc* inDoc) {
+ inDoc->CallbackPriceView();
}
-/*virtual*/ void T2WorldDef::ClickTransButton(T2MWControl*, T2TowerDoc*) {
+/*virtual*/ void T2WorldDef::ClickTransButton(T2MWControl* inControl, T2TowerDoc* inDoc) {
+ inDoc->CallbackTransView();
}
-/*virtual*/ int T2WorldDef::SliderPointToValue(T2MWControl*, CPoint) {
+/*virtual*/ int T2WorldDef::SliderPointToValue(T2MWControl* inControl, CPoint inPt) {
+ int objectIndex;
+ CRect sliderArea, threadArea;
+
+ objectIndex = mImageObj->FindObject("Slider");
+ mImageObj->GetObjectImage(objectIndex, sliderArea);
+
+ objectIndex = mImageObj->FindObject("SliderThread");
+ mImageObj->GetObjectImage(objectIndex, threadArea);
+
+ threadArea.OffsetRect(-sliderArea.left, -sliderArea.top);
+
+ int result = ((inPt.x - threadArea.left) * 7 + threadArea.Width() / 12) / threadArea.Width();
+ if (result < 0)
+ result = 0;
+ else if (result >= 7)
+ result = 6;
+
+ return result;
}
-/*virtual*/ void T2WorldDef::DrawSimpleMWControl(T2MWControl*, const char*) {
+/*virtual*/ void T2WorldDef::DrawSimpleMWControl(T2MWControl* inControl, const char* inStr) {
+#pragma var_order(tempDC, theImage, save2, save, imageRect, rect2, objectID, theBitmap, pDC)
+ RECT imageRect;
+ int objectID = mImageObj->FindObject(inStr, inControl->GetData());
+ T2BitImage *theImage = mImageObj->GetObjectImage(objectID, imageRect);
+
+ RECT rect2 = imageRect;
+ OffsetRect(&rect2, -rect2.left, -rect2.top);
+
+ CDC *pDC = inControl->GetDC();
+ int save = pDC->SaveDC();
+ pDC->SelectPalette(GetPaletteAnimeDef()->GetTowerPalette(), false);
+ pDC->RealizePalette();
+
+ CDC tempDC;
+ tempDC.CreateCompatibleDC(pDC);
+ int save2 = tempDC.SaveDC();
+ tempDC.SelectPalette(GetPaletteAnimeDef()->GetTowerPalette(), false);
+ tempDC.RealizePalette();
+
+ HBITMAP theBitmap = Create256DIBitmap(tempDC.m_hDC, rect2.right, rect2.bottom);
+ SelectObject(tempDC.m_hDC, theBitmap);
+
+ theImage->CopyImage(&tempDC, imageRect, rect2);
+ pDC->BitBlt(0, 0, rect2.right, rect2.bottom, &tempDC, 0, 0, SRCCOPY);
+
+ tempDC.RestoreDC(save2);
+ tempDC.DeleteDC();
+
+ DeleteObject(theBitmap);
+
+ pDC->RestoreDC(save);
+ inControl->ReleaseDC(pDC);
}
-/*virtual*/ void T2WorldDef::GetToolTipText(T2TowerDoc*, T2MWControl*, NMTTDISPINFOA*) {
+/*virtual*/ void T2WorldDef::GetToolTipText(T2TowerDoc* inDoc, T2MWControl* inControl, LPNMTTDISPINFO outInfo) {
+ int id = inControl->GetDlgCtrlID();
+
+ if (id == 1000)
+ GetClockTip(inDoc, inControl, outInfo->szText);
+ else if (id == 1001)
+ GetCalendarTip(inDoc, inControl, outInfo->szText);
+ else if (id == 1002)
+ GetFundsTip(inDoc, inControl, outInfo->szText);
+ else if (id == 1003)
+ GetPopulationTip(inDoc, inControl, outInfo->szText);
+ else if (id == 2000)
+ GetPauseButtonTip(inDoc, inControl, outInfo->szText);
}
-/*virtual*/ void T2WorldDef::GetClockTip(T2TowerDoc*, T2MWControl*, char*) {
+/*virtual*/ void T2WorldDef::GetClockTip(T2TowerDoc* inDoc, T2MWControl* inControl, char* outStr) {
+ strcpy(outStr, "Clock");
}
-/*virtual*/ void T2WorldDef::GetCalendarTip(T2TowerDoc*, T2MWControl*, char*) {
+/*virtual*/ void T2WorldDef::GetCalendarTip(T2TowerDoc* inDoc, T2MWControl* inControl, char* outStr) {
+ // "カレンダー表示"
+ strcpy(outStr, "\x83\x4A\x83\x8C\x83\x93\x83\x5F\x81\x5B\x95\x5C\x8E\xA6");
}
-/*virtual*/ void T2WorldDef::GetFundsTip(T2TowerDoc*, T2MWControl*, char*) {
+/*virtual*/ void T2WorldDef::GetFundsTip(T2TowerDoc* inDoc, T2MWControl* inControl, char* outStr) {
+ // "収支情報表示"
+ strcpy(outStr, "\x8E\xFB\x8E\x78\x8F\xEE\x95\xF1\x95\x5C\x8E\xA6");
}
-/*virtual*/ void T2WorldDef::GetPopulationTip(T2TowerDoc*, T2MWControl*, char*) {
+/*virtual*/ void T2WorldDef::GetPopulationTip(T2TowerDoc* inDoc, T2MWControl* inControl, char* outStr) {
+ // "人口情報表示"
+ strcpy(outStr, "\x90\x6C\x8C\xFB\x8F\xEE\x95\xF1\x95\x5C\x8E\xA6");
}
-/*virtual*/ void T2WorldDef::GetPauseButtonTip(T2TowerDoc*, T2MWControl*, char*) {
+/*virtual*/ void T2WorldDef::GetPauseButtonTip(T2TowerDoc* inDoc, T2MWControl* inControl, char* outStr) {
+ // 実行/停止
+ strcpy(outStr, "\x8E\xC0\x8D\x73\x81\x5E\x92\xE2\x8E\x7E");
}
-unsigned int T2WorldDef::GetToiletDenomi(unsigned int) const {
+unsigned int T2WorldDef::GetToiletDenomi(unsigned int inVal) const {
+ unsigned int result = 0;
+
+ if (mToiletVar1 > 0 && inVal >= mToiletVar1)
+ result = mToiletVar2;
+
+ return result;
}
-unsigned int T2WorldDef::GetColdDenomi(unsigned int, unsigned int) const {
+unsigned int T2WorldDef::GetColdDenomi(unsigned int inVal1, unsigned int inVal2) const {
+ unsigned int result = 0;
+
+ if (mColdTableDef)
+ result = mColdTableDef->GetDenomi(inVal1, inVal2);
+
+ return result;
}
-int T2WorldDef::IsDustOn(unsigned int) const {
+BOOL T2WorldDef::IsDustOn(unsigned int inVal) const {
+ return (mDustOnThreshold > 0) && (inVal >= mDustOnThreshold);
}
T2TowerVision* T2WorldDef::GetTowerVision() {
+ return mTowerEvent ? mTowerEvent->GetTowerVision() : NULL;
}
-void T2WorldDef::SetLatestBuild(T2Equip*, int) {
+void T2WorldDef::SetLatestBuild(T2Equip* inEquip, BOOL inFlag) {
+ if (mTowerEvent) {
+ T2ToolDef *theDef = inEquip->GetToolDef();
+ mTowerEvent->SetLatestBuild(inEquip, theDef, inFlag);
+ }
}
-void T2WorldDef::SetLatestBuild(T2ToolDef*, int) {
+void T2WorldDef::SetLatestBuild(T2ToolDef* inToolDef, BOOL inFlag) {
+ mTowerEvent->SetLatestBuild(NULL, inToolDef, inFlag);
}
-void T2WorldDef::InitTowerEvent(T2TowerDoc*) {
+void T2WorldDef::InitTowerEvent(T2TowerDoc* inDoc) {
+ if (mTowerEvent)
+ mTowerEvent->InitTowerEvent(inDoc);
}
-void T2WorldDef::WriteTowerEvent(T2Archive&) {
+void T2WorldDef::WriteTowerEvent(T2Archive& inArchive) {
+ if (mTowerEvent)
+ mTowerEvent->Write(inArchive);
}
-void T2WorldDef::ReadTowerEvent(T2Archive&) {
+void T2WorldDef::ReadTowerEvent(T2Archive& inArchive) {
+ if (mTowerEvent)
+ mTowerEvent->Read(inArchive);
}
void T2WorldDef::StopEvent() {
+ if (mTowerEvent)
+ mTowerEvent->StopEvent();
}
T2TowerEvent* T2WorldDef::GetTowerEvent() {
+ return mTowerEvent;
}
T2FireBurning* T2WorldDef::GetFireBurning() {
+ return mTowerEvent ? mTowerEvent->GetFireBurning() : NULL;
}
T2MetroRailway* T2WorldDef::GetMetroRailway() {
+ return mTowerEvent ? mTowerEvent->GetMetroRailway() : NULL;
}
T2BlackOut* T2WorldDef::GetBlackOut() {
+ return mTowerEvent ? mTowerEvent->GetBlackOut() : NULL;
}
-int T2WorldDef::IsBlackOut() {
+BOOL T2WorldDef::IsBlackOut() {
+ return mTowerEvent ? mTowerEvent->IsBlackOut() : false;
}
-/*virtual*/ void T2WorldDef::DrawRubble(T2TowerDoc*, T2Tenant*) {
+/*virtual*/ void T2WorldDef::DrawRubble(T2TowerDoc* inDoc, T2Tenant* inTenant) {
+ mTowerEvent->DrawRubble(inDoc, inTenant);
}
-/*virtual*/ void T2WorldDef::DrawMark(T2BitImage*, const RECT&, int, unsigned int) {
+/*virtual*/ void T2WorldDef::DrawMark(T2BitImage* inDestImage, const RECT& inRect, int inZoomLevel, unsigned int inPattern) {
+ RECT rect;
+ rect.left = 0;
+ rect.top = 0;
+ rect.right = 3;
+ rect.bottom = 1;
+
+ UT2Coordinate::UnitToQD(rect, inZoomLevel);
+ URect::Center(inRect, rect);
+
+ int objectID = mImageObj->FindObject("Mark", inPattern);
+ mImageObj->DrawObject(inDestImage, objectID, rect, inZoomLevel);
}
-/*virtual*/ void T2WorldDef::InitializeBkgndInfo(BkgndInfo*) {
+/*virtual*/ void T2WorldDef::InitializeBkgndInfo(BkgndInfo* inBkgndInfoPtr) {
+ ((T2WorldPlugin *) mPlugin)->InitBkgndInfoProc(this, inBkgndInfoPtr);
}
-/*virtual*/ void T2WorldDef::InitializeFloorInfo(T2FloorInfo*) {
+/*virtual*/ void T2WorldDef::InitializeFloorInfo(T2FloorInfo* inFloorInfo) {
+ ((T2WorldPlugin *) mPlugin)->InitFloorInfoProc(this, *inFloorInfo);
}
-/*virtual*/ void T2WorldDef::InitializeDocument(T2TowerDoc*) {
+/*virtual*/ void T2WorldDef::InitializeDocument(T2TowerDoc* inDoc) {
+ mTowerEvent = new T2TowerEvent(this);
+ ((T2WorldPlugin *) mPlugin)->InitializeDocumentProc(inDoc);
}
-/*virtual*/ int T2WorldDef::CheckGameLevelProc(T2TowerDoc*) {
+/*virtual*/ int T2WorldDef::CheckGameLevelProc(T2TowerDoc* inDoc) {
+ int result = 0;
+
+ if (inDoc->mGameLevel <= mNumOfGradeDef) {
+ T2Pool *thePool = inDoc->towerDoc_vf130();
+ if (thePool) {
+ GradeDef theDef = mGradeDef[inDoc->mGameLevel - 1];
+ int population = thePool->GetPopulation();
+ if ((inDoc->mA0 & theDef.m0) == theDef.m0 && population >= theDef.m4)
+ result = 10005;
+ }
+ }
+
+ return result;
}
-/*virtual*/ int T2WorldDef::CheckTreasure(T2TowerDoc*, T2TreasureStatus*) {
+/*virtual*/ BOOL T2WorldDef::CheckTreasure(T2TowerDoc* inDoc, T2TreasureStatus* inTreasureStatus) {
+ return false;
}
-/*virtual*/ void T2WorldDef::GetGradeUpMessage(int, CString&) {
+/*virtual*/ void T2WorldDef::GetGradeUpMessage(int inGradeNum, CString& outStr) {
+ // "あなたのビルは%d星に認定されました"
+ // Your building has been awarded %d stars
+ outStr.Format("\x82\xA0\x82\xC8\x82\xBD\x82\xCC\x83\x72\x83\x8B\x82\xCD\x25\x64\x90\xAF\x82\xC9\x94\x46\x92\xE8\x82\xB3\x82\xEA\x82\xDC\x82\xB5\x82\xBD", inGradeNum);
}
-/*virtual*/ void T2WorldDef::CalcOptionObj(T2TowerDoc*, T2Equip*) {
+/*virtual*/ void T2WorldDef::CalcOptionObj(T2TowerDoc* inDoc, T2Equip* inEquip) {
+ T2TowerMainView *theView = inDoc->GetTowerMainView();
+ T2FloorInfo *floorInfo = inDoc->towerDoc_vf12C();
+
+ if (inEquip) {
+ RECT equipArea;
+ inEquip->GetEquipArea(equipArea);
+ if (equipArea.bottom > mTopFloorLine && !inEquip->IsMover() && ((T2Tenant *) inEquip)->IsFloor()) {
+ CString objectName;
+ if (inEquip->mValiation == 0)
+ objectName = "Side";
+ else
+ objectName = "Tent";
+ objectName += "L";
+
+ int objectIndex = mImageObj->FindObject(objectName, 0);
+ SIZE objectSize;
+ mImageObj->GetObjectSize(objectIndex, &objectSize);
+
+ equipArea.left -= objectSize.cx;
+ equipArea.right += objectSize.cx;
+ theView->tmv_vf128(equipArea, true);
+ }
+ }
}
-/*virtual*/ void T2WorldDef::DrawOptionObj(T2TowerDoc*, const RECT&) {
+/*virtual*/ void T2WorldDef::DrawOptionObj(T2TowerDoc* inDoc, const RECT& inRect) {
+#pragma var_order(name, theFloor, tentObjectSize, rect1, rect2, v, sideObjectSize, objectID, theFloorInfo)
+ RECT rect1 = inRect;
+ if (rect1.bottom > mGroundLine)
+ rect1.bottom = mGroundLine;
+
+ T2FloorInfo *theFloorInfo = inDoc->towerDoc_vf12C();
+
+ CString name = "Side";
+ int objectID = mImageObj->FindObject(name + "L");
+ SIZE sideObjectSize;
+ mImageObj->GetObjectSize(objectID, &sideObjectSize);
+
+ sideObjectSize.cx /= UT2Coordinate::UnitHSize(0);
+ sideObjectSize.cy /= UT2Coordinate::UnitVSize(0);
+
+ name = "Tent";
+ objectID = mImageObj->FindObject(name + "L");
+ SIZE tentObjectSize;
+ mImageObj->GetObjectSize(objectID, &tentObjectSize);
+
+ tentObjectSize.cx /= UT2Coordinate::UnitHSize(0);
+ tentObjectSize.cy /= UT2Coordinate::UnitVSize(0);
+
+ RECT rect2 = rect1;
+ rect2.left -= max(sideObjectSize.cx, tentObjectSize.cx);
+ rect2.right += max(sideObjectSize.cx, tentObjectSize.cx);
+
+ IntersectRect(&rect2, &rect2, &mBuildArea);
+ rect2.top = max(rect2.top, mTopFloorLine);
+
+ T2Tenant *theFloor;
+
+ for (int v = rect2.top; v < rect2.bottom; v++) {
+ for (int h = rect2.left; h < rect2.right; h++) {
+ theFloor = theFloorInfo->GetFloor(v, h);
+ if (theFloor) {
+ h = theFloor->mArea.right - 1;
+ if (theFloor->mValiation == 0) {
+ if (theFloorInfo->GetTenantID(theFloor->mArea.bottom - 1, theFloor->mArea.left - 1) == 0) {
+ name = "Side";
+ objectID = mImageObj->FindObject(name + "L", 0);
+
+ RECT rect = theFloor->mArea;
+ rect.right = rect.left;
+ rect.left = rect.right - sideObjectSize.cx;
+ UT2Coordinate::UnitToQD(rect, rect, inDoc->mZoomLevel, true);
+ mImageObj->DrawObject(inDoc->towerDoc_vf10C(), objectID, rect, inDoc->towerDoc_vf108());
+ }
+
+ if (theFloorInfo->GetTenantID(theFloor->mArea.bottom - 1, theFloor->mArea.right) == 0) {
+ name = "Side";
+ objectID = mImageObj->FindObject(name + "R", 0);
+
+ RECT rect = theFloor->mArea;
+ rect.left = rect.right;
+ rect.right = rect.left + sideObjectSize.cx;
+ UT2Coordinate::UnitToQD(rect, rect, inDoc->mZoomLevel, true);
+ mImageObj->DrawObject(inDoc->towerDoc_vf10C(), objectID, rect, inDoc->towerDoc_vf108());
+ }
+ } else {
+ if (theFloorInfo->GetTenantID(theFloor->mArea.bottom - 1, theFloor->mArea.left - 1) == 0) {
+ name = "Side";
+ objectID = mImageObj->FindObject(name + "L", 0);
+
+ RECT baseRect = theFloor->mArea;
+ baseRect.right = baseRect.left;
+ baseRect.left = baseRect.right - sideObjectSize.cx;
+ baseRect.bottom = baseRect.top + 1;
+
+ RECT workRect;
+
+ for (int i = theFloor->mArea.top; i < (theFloor->mArea.bottom - 1); i++) {
+ UT2Coordinate::UnitToQD(baseRect, workRect, inDoc->mZoomLevel, true);
+ mImageObj->DrawObject(inDoc->towerDoc_vf10C(), objectID, workRect, inDoc->towerDoc_vf108());
+ OffsetRect(&baseRect, 0, 1);
+ }
+
+ name = "Tent";
+ objectID = mImageObj->FindObject(name + "L", 0);
+
+ baseRect.left = baseRect.right - tentObjectSize.cx;
+ UT2Coordinate::UnitToQD(baseRect, workRect, inDoc->mZoomLevel, true);
+ mImageObj->DrawObject(inDoc->towerDoc_vf10C(), objectID, workRect, inDoc->towerDoc_vf108());
+ }
+
+ if (theFloorInfo->GetTenantID(theFloor->mArea.bottom - 1, theFloor->mArea.right) == 0) {
+ name = "Side";
+ objectID = mImageObj->FindObject(name + "R", 0);
+
+ RECT baseRect = theFloor->mArea;
+ baseRect.left = baseRect.right;
+ baseRect.right = baseRect.left + sideObjectSize.cx;
+ baseRect.bottom = baseRect.top + 1;
+
+ RECT workRect;
+
+ for (int i = theFloor->mArea.top; i < (theFloor->mArea.bottom - 1); i++) {
+ UT2Coordinate::UnitToQD(baseRect, workRect, inDoc->mZoomLevel, true);
+ mImageObj->DrawObject(inDoc->towerDoc_vf10C(), objectID, workRect, inDoc->towerDoc_vf108());
+ OffsetRect(&baseRect, 0, 1);
+ }
+
+ name = "Tent";
+ objectID = mImageObj->FindObject(name + "R", 0);
+
+ baseRect.right = baseRect.left + tentObjectSize.cx;
+ UT2Coordinate::UnitToQD(baseRect, workRect, inDoc->mZoomLevel, true);
+ mImageObj->DrawObject(inDoc->towerDoc_vf10C(), objectID, workRect, inDoc->towerDoc_vf108());
+ }
+ }
+ }
+ }
+ }
}
-/*virtual*/ void T2WorldDef::SetupGradeUpAnimation(T2DlgItemAnimation*, int) {
+/*virtual*/ void T2WorldDef::SetupGradeUpAnimation(T2DlgItemAnimation* inAnimation, int inGradeNum) {
+ if (inGradeNum >= 2) {
+ int grade = inGradeNum - 2;
+ inAnimation->SetAnimation(mModuleHandle, mGradeDef[grade].m8, 0);
+ inAnimation->SetAnimationParam(100, mGradeDef[grade].m14);
+ }
}
-/*virtual*/ void T2WorldDef::WriteStatisticsProc(T2TowerDoc*, T2Archive&) {
+/*virtual*/ void T2WorldDef::WriteStatisticsProc(T2TowerDoc* inDoc, T2Archive& inArchive) {
}
-/*virtual*/ void T2WorldDef::ReadStatisticsProc(T2TowerDoc*, T2Archive&) {
+/*virtual*/ void T2WorldDef::ReadStatisticsProc(T2TowerDoc* inDoc, T2Archive& inArchive) {
}
-/*virtual*/ void T2WorldDef::ViewModeChanged(T2TowerDoc*, VIEWMODE) {
+/*virtual*/ void T2WorldDef::ViewModeChanged(T2TowerDoc* inDoc, VIEWMODE) {
}
-/*virtual*/ void T2WorldDef::ReplaceSkyOffscreen(int) {
+/*virtual*/ void T2WorldDef::ReplaceSkyOffscreen(int inResID) {
+ delete mSkyOffscreen;
+ mSkyOffscreen = new T2BitImage(mModuleHandle, inResID, true);
}
-/*virtual*/ T2EventItem* T2WorldDef::MakeXEvent(T2TowerEvent*, CResFile*, unsigned long, int) {
+/*virtual*/ T2EventItem* T2WorldDef::MakeXEvent(T2TowerEvent* inTowerEvent, CResFile*, unsigned long, int) {
+ return NULL;
}