diff options
author | Ash Wolf <ninji@wuffs.org> | 2023-06-14 00:50:34 +0100 |
---|---|---|
committer | Ash Wolf <ninji@wuffs.org> | 2023-06-14 00:50:34 +0100 |
commit | 37e364b2c6cc7487a1c888d256a73e5337bb7189 (patch) | |
tree | eaf6e857382eef16c2dd940eb4125536fbe068bd /src/T2DLL/T2EquipDef.cpp | |
download | t2win-37e364b2c6cc7487a1c888d256a73e5337bb7189.tar.gz t2win-37e364b2c6cc7487a1c888d256a73e5337bb7189.zip |
initial commit
Diffstat (limited to '')
-rw-r--r-- | src/T2DLL/T2EquipDef.cpp | 187 |
1 files changed, 187 insertions, 0 deletions
diff --git a/src/T2DLL/T2EquipDef.cpp b/src/T2DLL/T2EquipDef.cpp new file mode 100644 index 0000000..bb694d6 --- /dev/null +++ b/src/T2DLL/T2EquipDef.cpp @@ -0,0 +1,187 @@ +#include "CResFile.h" +#include "T2Archive.h" +#include "T2BitImage.h" +#include "T2Equip.h" +#include "T2EquipDef.h" +#include "T2EquipPlugin.h" +#include "T2ImageObj.h" +#include "T2InfoDialog.h" +#include "T2People.h" +#include "T2PeopleLinkIterator.h" +#include "T2TowerDoc.h" +#include "T2WorldDef.h" +#include "UT2Coordinate.h" + +T2EquipDef::T2EquipDef(DWORD type, T2PluginSpecifier& specifier, CResFile* resFile, T2WorldDef* worldDef, T2EquipPlugin* plugin) + : T2ToolDef(type, specifier, resFile, worldDef, plugin) +{ + unsigned long tmp; + + *resFile >> mCapacity; + *resFile >> mStress; + *resFile >> tmp; + + for (int j = 0; j < mValiationCount; j++) { + *resFile >> m154; + *resFile >> tmp; + *resFile >> tmp; + } + + *resFile >> mOutSpan; + *resFile >> mInSpan; + *resFile >> mNumOfInMoney; + + for (int i = 0; i < mNumOfInMoney; i++) { + if (i < 4) { + *resFile >> mInMoney[i]; + } else { + int moneyTmp; + *resFile >> moneyTmp; + } + } + + m124 = NULL; + m128 = NULL; + m130 = NULL; + m140 = 0; + + if (mNumOfInMoney > 4) + mNumOfInMoney = 4; + + try { + int outViewKind = worldDef->GetOutViewKind() + 1001; + m124 = new T2BitImage(mModuleHandle, outViewKind, 1); + mImageObj->AddObject(mModuleHandle, outViewKind, m124); + } catch (int e) { + } + + try { + m128 = new T2BitImage(mModuleHandle, 1010, 1); + mImageObj->AddObject(mModuleHandle, 1010, m128); + } catch (int e) { + } + + try { + m130 = new T2BitImage(mModuleHandle, 1100, 1); + mImageObj->AddObject(mModuleHandle, 1100, m130); + } catch (int e) { + } + + mWordDefArray = MakeWordDefArray(); +} + +/*virtual*/ T2EquipDef::~T2EquipDef() { + if (m124) + delete m124; + if (m128) + delete m128; + if (m130) + delete m130; + + if (mWordDefArray) + delete mWordDefArray; +} + +/*virtual*/ int T2EquipDef::InitObject(T2Object* object) { + object->SetUsed(true); + ((T2Equip *) object)->mEquipType = GetEquipType(); + ((T2Equip *) object)->mCapacity = mCapacity; + ((T2Equip *) object)->mAttribute = mAttribute; + ((T2Equip *) object)->SetEquipDef(this); + return true; +} + +/*virtual*/ int T2EquipDef::ClickProc(T2TowerDoc*, RECT*, unsigned int&) { + return 1; +} + +/*virtual*/ int T2EquipDef::GetDestructPartProc(int, POINT, POINT, T2Equip*) { + return -1; +} + +/*virtual*/ AREACHECKCODE T2EquipDef::AreaCheck(T2TowerDoc*, RECT&, unsigned int, int) { + return AreaCheckCode_0; +} + +/*virtual*/ PARTCODE T2EquipDef::GetPartFromPoint(T2TowerDoc* towerDoc, T2Equip* equip, POINT pt, int*) { + UT2Coordinate::QDToUnit(pt, towerDoc->mZoomLevel); + if (PtInRect(&equip->mArea, pt)) + return PartCode_2; + else + return PartCode_0; +} + +/*virtual*/ void T2EquipDef::BuildFinish(T2TowerDoc* towerDoc, T2Equip* equip) { + towerDoc->towerDoc_vf170()->CalcOptionObj(towerDoc, equip); +} + +/*virtual*/ unsigned long T2EquipDef::OptionProc(T2TowerDoc*, T2Equip*, void*) { + return 0; +} + +/*virtual*/ void T2EquipDef::DebugInfo(CWnd&, CListCtrl&, T2Equip*) { +} + +/*virtual*/ int T2EquipDef::FingerToolProc(T2TowerDoc*, T2Equip*, const POINT&, MOUSEEVENT) { + return 0; +} + +/*virtual*/ T2InfoDialog* T2EquipDef::ShowInfoDialog(T2TowerDoc* towerDoc, T2Equip* equip) { + CRect rect; + AfxGetMainWnd()->GetWindowRect(rect); + + T2DLGTEMPLATE tmpl; + tmpl.pt = rect.CenterPoint(); + tmpl.moduleHandle = mModuleHandle; + tmpl.resID = GetInfoDialogID(towerDoc, equip); + + T2InfoDialog *dialog = ConstructInfoDialog(equip); + dialog->Realize(this, &tmpl, towerDoc, mImageObj, NULL, true, NULL, 0, 1); + return dialog; +} + +/*virtual*/ int T2EquipDef::GetInfoDialogID(T2TowerDoc*, const T2Equip*) const { + return 1000; +} + +/*virtual*/ T2InfoDialog* T2EquipDef::ConstructInfoDialog(T2Equip* equip) { + return new T2InfoDialog(equip); +} + +/*virtual*/ void T2EquipDef::DrawPeople(T2TowerDoc* towerDoc, T2Equip* equip) { + //T2People *people = (T2People *) equip; + //T2PeopleLinkIterator iter(people); + //T2People *i; + //while (iter.Next(&i)) + // i->Draw(towerDoc, people); + // TODO: which subclass is this...? +} + +int T2EquipDef::GetInMoney(int i) { + int cost = 0; + if (i < mNumOfInMoney) + cost = mInMoney[i]; + return cost; +} + +/*virtual*/ void T2EquipDef::LoadExtraData(T2Archive& archive, T2TowerDoc*, T2HaveOutViewObject*) { + int len; + archive >> len; + + for (int i = 0; i < len; i++) { + unsigned char b; + archive >> b; + } +} + +/*virtual*/ void T2EquipDef::SaveExtraData(T2Archive& archive, T2HaveOutViewObject*) { + int len = 0; + archive << len; +} + +T2WordDefArray* T2EquipDef::MakeWordDefArray() { + return 0; // TODO +} + +void T2EquipDef::GetWords(T2People*, CString&) const { +} |