summaryrefslogtreecommitdiff
path: root/src/T2DLL/T2PeopleInfoDialog.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/T2PeopleInfoDialog.cpp
parent37e364b2c6cc7487a1c888d256a73e5337bb7189 (diff)
downloadt2win-c0c336500955a23e344651e5412c9d9d441ef4ee.tar.gz
t2win-c0c336500955a23e344651e5412c9d9d441ef4ee.zip
first pass of T2DLL
Diffstat (limited to '')
-rw-r--r--src/T2DLL/T2PeopleInfoDialog.cpp268
1 files changed, 263 insertions, 5 deletions
diff --git a/src/T2DLL/T2PeopleInfoDialog.cpp b/src/T2DLL/T2PeopleInfoDialog.cpp
index 1593309..c57f233 100644
--- a/src/T2DLL/T2PeopleInfoDialog.cpp
+++ b/src/T2DLL/T2PeopleInfoDialog.cpp
@@ -1,28 +1,286 @@
+#include "CTokenizer.h"
+#include "GlobalFunc.h"
+#include "T2DlgItemPPLEvalGage.h"
+#include "T2DlgItemStressGage.h"
+#include "T2FloorInfo.h"
+#include "T2Name.h"
+#include "T2NameList.h"
+#include "T2People.h"
#include "T2PeopleInfoDialog.h"
+#include "T2SilhouettePane.h"
+#include "T2TemplatePluginList.h"
+#include "T2Tenant.h"
+#include "T2TenantDef.h"
+#include "T2ToolDef.h"
+#include "T2TowerDoc.h"
+#include "T2WorldDef.h"
+#include "UT2Utils.h"
-T2PeopleInfoDialog::T2PeopleInfoDialog(T2People*) {
+T2PeopleInfoDialog::T2PeopleInfoDialog(T2People* people)
+ : T2InfoDialog(people)
+{
+ mPeople = people;
+ m104 = 0;
}
/*virtual*/ T2PeopleInfoDialog::~T2PeopleInfoDialog() {
}
/*virtual*/ void T2PeopleInfoDialog::OnT2Create() {
+ T2TowerDoc *theTowerDoc = mTowerDoc;
+ T2WorldDef *theWorldDef = GetCurrentT2TowerDoc()->towerDoc_vf170();
+
+ if (mPeople)
+ mPeopleDef = (T2PeopleDef *) mPeople->GetMatterDef();
+ else
+ return;
+
+ CString str1;
+ CString str2;
+
+ T2Name *theName = theTowerDoc->mNameDB->Search(mPeople, false);
+ unsigned int theNameID;
+ if (theName)
+ theName->GetName(m108, theNameID);
+ else
+ mPeople->GetName(m108);
+
+ T2DlgItem *item1010 = (T2DlgItem *) GetDlgItem(1010);
+ T2DlgItem *item1011 = (T2DlgItem *) GetDlgItem(1011);
+ T2DlgItem *item1012 = (T2DlgItem *) GetDlgItem(1012);
+
+ // 7090 - favourite button
+ T2DlgItem *item7090 = GetT2DlgItem(7090);
+
+ item1010->SetDescriptor(m108);
+ item1012->SetDescriptor(m108);
+
+ T2SilhouettePane *theSilhouettePane = (T2SilhouettePane *) GetDlgItem(2010);
+ theSilhouettePane->SetPeople(mPeople);
+
+ // 1020 - money
+ T2DlgItem *item1020 = (T2DlgItem *) GetDlgItem(1020);
+ str1.Format("%d", theWorldDef->ExchangeMoney(theWorldDef->GetCashAmount(mPeople->GetEconoType())));
+ item1020->SetDescriptor(str1);
+
+ // 1030 - where they're going from
+ T2DlgItem *item1030 = (T2DlgItem *) GetDlgItem(1030);
+ if (mPeople->GetWorkTenant() > 1) {
+ T2Tenant *workTenant = theTowerDoc->mFloorInfo->GetTenant(mPeople->GetWorkTenant());
+ T2Name *workTenantName = theTowerDoc->mNameDB->Search(workTenant, false);
+
+ UT2Utils::GetRoomNumberString(workTenant->GetFloorNumber(theTowerDoc->mFloorInfo), str1);
+ UT2Utils::GetRoomNumberString(workTenant->GetRoomNumber(theTowerDoc->mFloorInfo), str2);
+
+ // "階" + str + "号室\r\n"
+ str1 = str1 + "\x8A\x4B" + str2 + "\x8D\x86\x8E\xBA\r\n";
+
+ CString nameStr;
+ unsigned int theNameID;
+ if (workTenantName)
+ workTenantName->GetName(nameStr, theNameID);
+
+ if (nameStr == "") {
+ T2ToolDef *toolDef = (T2ToolDef *) workTenant->GetEquipDef();
+ if (toolDef)
+ toolDef->GetName(nameStr, 0);
+ }
+
+ str1 += nameStr;
+ item1030->SetDescriptor(str1);
+
+ T2DlgItem *item1010 = (T2DlgItem *) GetDlgItem(1010);
+ if (mPeople->IsVIP()) {
+ item1010->ShowWindow(SW_HIDE);
+ item7090->EnableWindow(false);
+ } else {
+ item1011->ShowWindow(SW_HIDE);
+ item1012->ShowWindow(SW_HIDE);
+ }
+ } else {
+ T2PeopleType *thePeopleType = mPeople->GetPeopleType();
+ if (thePeopleType) {
+ if (thePeopleType->GetDemandType() == 3) {
+ // "観光客" - tourist
+ str1 = "\x8A\xCF\x8C\xF5\x8B\x71";
+ } else {
+ // "一般客" - general customer
+ str1 = "\x88\xEA\x94\xCA\x8B\x71";
+ }
+ }
+ item1030->SetDescriptor(str1);
+ item1010->ShowWindow(SW_HIDE);
+ item7090->EnableWindow(false);
+ }
+
+ if (mPeople->IsSetDestination()) {
+ str1 = "";
+ int prevTenantType = mPeople->GetPrevTenantType();
+ if (prevTenantType == -1) {
+ // "ロビー から\n" - from the lobby
+ str1 = "\x83\x8D\x83\x72\x81\x5B \x82\xA9\x82\xE7\n";
+ } else {
+ T2TenantDef *prevTenantDef = theTowerDoc->mTenantTemplates->FindTenantDef(prevTenantType);
+ if (prevTenantDef) {
+ str1 = prevTenantDef->mStr48;
+ // " から\n" - from
+ str1 += " \x82\xA9\x82\xE7\n";
+ }
+ }
+
+ str1 += GetTenantName(theTowerDoc, mPeople->GetDestination());
+ // " へ移動中" - moving to
+ str1 += " \x82\xD6\x88\xDA\x93\xAE\x92\x86";
+ } else {
+ // "なし" - none
+ str1 = "\x82\xC8\x82\xB5";
+ }
+
+ // 1040 - where they're going to
+ T2DlgItem *item1040 = (T2DlgItem *) GetDlgItem(1040);
+ item1040->SetDescriptor(str1);
+
+ T2DlgItemStressGage *stressGage = (T2DlgItemStressGage *) GetDlgItem(110);
+ stressGage->SetPeople(mPeople);
+
+ T2DlgItemPPLEvalGage *pplEvalGage = (T2DlgItemPPLEvalGage *) GetDlgItem(126);
+ pplEvalGage->SetPeople(mPeople);
+
+ BOOL hasAnyName = false;
+ T2Name *nonFavName = mTowerDoc->mNameDB->Search(mPeople, false);
+ if (nonFavName)
+ hasAnyName = true;
+ T2Name *favName = mTowerDoc->mNameDB->Search(mPeople, true);
+ if (favName)
+ hasAnyName = true;
+
+ if (hasAnyName)
+ item7090->EnableWindow(false);
+
+ if (!mPeople->IsMaru() && !mPeople->IsReggae()) {
+ CString interview;
+ if (mPeople->GetInterviewWords(theTowerDoc, interview)) {
+ ((T2DlgItem *) GetDlgItem(1060))->SetDescriptor(interview);
+ }
+ }
}
-CString T2PeopleInfoDialog::GetTenantName(T2TowerDoc*, unsigned int) {
+CString T2PeopleInfoDialog::GetTenantName(T2TowerDoc* towerDoc, unsigned int inTenantID) {
+ CString result = "";
+
+ unsigned int tenantID = inTenantID;
+ if (tenantID == 1) {
+ // "ロビー" - lobby
+ result = "\x83\x8D\x83\x72\x81\x5B";
+ } else {
+ CString str;
+ T2Tenant *theTenant = towerDoc->mFloorInfo->GetTenant(tenantID);
+ T2Name *theName = towerDoc->mNameDB->Search(theTenant, false);
+
+ UT2Utils::GetRoomNumberString(theTenant->GetFloorNumber(towerDoc->mFloorInfo), result);
+ UT2Utils::GetRoomNumberString(theTenant->GetRoomNumber(towerDoc->mFloorInfo), str);
+
+ // "階" + str + "号室" - floor + ... + room number
+ result = result + "\x8A\x4B" + str + "\x8D\x86\x8E\xBA ";
+
+ CString nameStr;
+ unsigned int theNameID;
+ if (theName)
+ theName->GetName(nameStr, theNameID);
+
+ if (nameStr == "") {
+ T2ToolDef *toolDef = (T2ToolDef *) theTenant->GetEquipDef();
+ if (toolDef)
+ toolDef->GetName(nameStr, 0);
+ }
+
+ result += nameStr;
+ }
+
+ return result;
}
-/*virtual*/ void T2PeopleInfoDialog::CreateDlgItem(CTokenizer&, T2Dialog::T2DialogDef&) {
+/*virtual*/ void T2PeopleInfoDialog::CreateDlgItem(CTokenizer& tokenizer, T2DialogDef& def) {
+ if (!_stricmp(tokenizer.Current(), "SILH")) {
+ RECT rect;
+ int id = tokenizer.NextInteger();
+ rect.left = tokenizer.NextInteger();
+ rect.top = tokenizer.NextInteger();
+ rect.right = tokenizer.NextInteger();
+ rect.bottom = tokenizer.NextInteger();
+
+ T2SilhouettePane *silhouettePane = new T2SilhouettePane(mTowerDoc, mImageObj, mPalette);
+ silhouettePane->Create("", def.flags, rect, this, id);
+ if (mCurrentFont >= 0)
+ silhouettePane->SetFont(*mFonts[mCurrentFont]);
+ } else if (!_stricmp(tokenizer.Current(), "PPLEV")) {
+ RECT rect;
+ int id = tokenizer.NextInteger();
+ rect.left = tokenizer.NextInteger();
+ rect.top = tokenizer.NextInteger();
+ rect.right = tokenizer.NextInteger();
+ rect.bottom = tokenizer.NextInteger();
+
+ T2DlgItemPPLEvalGage *pplEvalGage = new T2DlgItemPPLEvalGage(mTowerDoc, mImageObj, mPalette);
+ pplEvalGage->Create("", def.flags, rect, this, id);
+ if (mCurrentFont >= 0)
+ pplEvalGage->SetFont(*mFonts[mCurrentFont]);
+ } else {
+ T2Dialog::CreateDlgItem(tokenizer, def);
+ }
}
/*virtual*/ void T2PeopleInfoDialog::OnT2Destroy() {
}
-/*virtual*/ int T2PeopleInfoDialog::OnT2DialogCommand(unsigned int, long) {
+/*virtual*/ BOOL T2PeopleInfoDialog::OnT2DialogCommand(UINT cmd, long data) {
+ WORD hi = HIWORD(cmd);
+ WORD lo = LOWORD(cmd);
+
+ if (lo == 1 && hi == 0) {
+ // nothing
+ } else if (lo == 2 && hi == 0) {
+ // wtf is going on here? compiler uses a different register
+ DestroyWindow();
+ } else if (lo == 7090 && hi == 0) {
+ m104 = true;
+ GetT2DlgItem(7090)->EnableWindow(false);
+
+ T2DlgItem *item = (T2DlgItem *) GetDlgItem(1010);
+ CString str;
+ item->GetDescriptor(str);
+ if (str == "")
+ item->SetDescriptor(m108);
+ }
+
+ return false;
}
-/*virtual*/ int T2PeopleInfoDialog::OnT2EraseBkgnd(CDC*) {
+/*virtual*/ BOOL T2PeopleInfoDialog::OnT2EraseBkgnd(CDC* dc) {
+ return true;
}
/*virtual*/ void T2PeopleInfoDialog::OnT2OK() {
+ CString nameStr;
+ ((T2DlgItem *) GetDlgItem(1010))->GetDescriptor(nameStr);
+
+ if (nameStr == "")
+ nameStr = m108;
+
+ if (m108 != nameStr || m104 == 1) {
+ T2Name *nonFavName = mTowerDoc->mNameDB->Search(mPeople, false);
+ if (nonFavName) {
+ nonFavName->SetName(nameStr);
+ } else {
+ T2Name *newName = new T2Name(nameStr, mPeople, false);
+ mTowerDoc->mNameDB->Add(newName);
+ mPeople->SetColor(13);
+ }
+
+ T2Name *favName = mTowerDoc->mNameDB->Search(mPeople, true);
+ if (favName) {
+ mTowerDoc->towerDoc_vf1C4(mPeople, false);
+ mTowerDoc->towerDoc_vf1B8(mPeople);
+ }
+ }
}