123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549 |
- #include "CGfxEnv.h"
- #include "CFTTFileIterator.h"
- #include "CFTTFileSystem.h"
- CFTTMatrix32 CGfxEnv::ms_mMatrix;
- TAvailableModel CGfxEnv::ms_tAvailableModels[6];
- bool CGfxEnv::ms_bDirectoriesScanned;
- TModelInfoDescription *CGfxEnv::ms_pConstructionModels[6];
- //-------------------------------------------------------------------------------------------------
- // 001A9034
- CGfxEnv::CGfxEnv() {}
- //-------------------------------------------------------------------------------------------------
- // 001A9036
- CGfxEnv::~CGfxEnv() {}
- //-------------------------------------------------------------------------------------------------
- // 001A9038
- void CGfxEnv::Init(TEnvConfig const &, int, bool) {}
- //-------------------------------------------------------------------------------------------------
- // 001A90D4
- void CGfxEnv::ProcessSlicedLoad(int) {}
- //-------------------------------------------------------------------------------------------------
- // 001A9264
- void CGfxEnv::EnableSlicedLoad() {}
- //-------------------------------------------------------------------------------------------------
- // 001A9274 //^_-
- void CGfxEnv::ScanStadiumModelsDirectory() {
- LOGE("CGfxEnv::ScanStadiumModelsDirectory 001A9274");
- memset(CGfxEnv::ms_tAvailableModels, 0xFF, sizeof(CGfxEnv::ms_tAvailableModels));
- // 1a928a
- if (CGfxEnv::ms_bDirectoriesScanned)
- return;
- CFTTFileIterator* fileiter_34 = NULL;
- memset(CGfxEnv::ms_pConstructionModels, 0, sizeof(CGfxEnv::ms_pConstructionModels));
- // 1a92b8
- CFTTFileSystem* filesystem = CFTTFileSystem::FindFileSystem("PKG");
- // 1a92c6
- filesystem->OpenDir("PKG:/Data/env/stadium/", &fileiter_34);
- do { // 1a92f0
- // 1a92f6
- if (!fileiter_34->IsValid())
- break;
- // 1a9302
- if (fileiter_34->IsDirectory())
- continue;
- // 1a930c
- char* name_r6 = fileiter_34->GetName();
- // 1a9312
- strlwr(name_r6);
- // 1a931a
- if (!strstr(name_r6, ".ftm"))
- continue;
- // 1a9324
- int secttype_r7 = CGfxEnv::GetSectionTypeFromFileName(name_r6);
- // 1a932e
- if (strstr(name_r6, "corner")) {
- // 1a9334
- secttype_r7 = 0;
- }
- // 1a933c
- else if (strstr(name_r6, "end")) {
- // 1a9342
- secttype_r7 = 1;
- }
- // 1a934a
- else if (strstr(name_r6, "side")) {
- // 1a9350
- secttype_r7 = 2;
- }
- // 1a9358
- else if (strstr(name_r6, "exterior")) {
- // 1a935e
- secttype_r7 = 3;
- }
- // 1a9366
- else if (strstr(name_r6, "surround")) {
- // 1a936c
- secttype_r7 = 4;
- }
- // 1a9370
- else if (secttype_r7 == -1) {
- continue;
- }
- TAvailableModel& model = CGfxEnv::ms_tAvailableModels[secttype_r7];
- // 1a9382
- if (model.InfoCount_1400 > 127)
- continue;
- TEnvStadiumModelInfo& modelinfo = model.ModelInfo_0[model.InfoCount_1400];
- // 1a93a2
- strlcpy(modelinfo.text_0, strlwr(name_r6), 32);
- // 1a93a8
- TModelInfoDescription* desc = CGfxEnv::FindModelInfoDescription(modelinfo.text_0);
- modelinfo.desc_24 = desc;
- // 1a93ac
- if (desc) {
- // 1a93b2
- modelinfo.height_20 = desc->height_48;
- // 1a93b6 1a93c0 1a93c8 1a93cc
- if (desc && !CGfxEnv::ms_pConstructionModels[secttype_r7] && strstr(desc->text_4, "construction"))
- CGfxEnv::ms_pConstructionModels[secttype_r7] = desc;
- } else {
- // 1a93d4
- modelinfo.height_20 = -1;
- }
- CGfxEnv::ms_tAvailableModels[secttype_r7].InfoCount_1400++;
- // 1a93ee 1a93f0
- } while (!fileiter_34->Next());
- // 1a93f8
- if (fileiter_34)
- delete fileiter_34;
- // 1a9404
- filesystem = CFTTFileSystem::FindFileSystem("PKG");
- // 1a9412
- filesystem->OpenDir("PKG:/Data/env/dressing/", &fileiter_34);
- do { // 1a942e
- // 1a9434
- if (!fileiter_34->IsValid())
- break;
- // 1a943e
- if (fileiter_34->IsDirectory())
- continue;
- // 1a9448
- char* name_r6 = fileiter_34->GetName();
- // 1a944e 1a9452 1a9458
- if (!strstr(name_r6, ".ftm") && !strstr(name_r6, ".FTM"))
- continue;
- TAvailableModel& model = CGfxEnv::ms_tAvailableModels[5];
- // 1a9464
- if (model.InfoCount_1400 > 127)
- continue;
- TEnvStadiumModelInfo& modelinfo = model.ModelInfo_0[model.InfoCount_1400];
- // 1a947a 1a9484
- strlcpy(modelinfo.text_0, strlwr(name_r6), 32);
- model.InfoCount_1400++;
- // 1a9498 1a949a
- } while (!fileiter_34->Next());
- if (fileiter_34)
- delete fileiter_34;
- char text_78[64];
- // 1a961e
- for (uint i_r0 = 0; i_r0 != 6; ++i_r0) {
- // 1a94c2
- TAvailableModel& model = CGfxEnv::ms_tAvailableModels[i_r0];
- // 1a94c6
- if (i_r0 - 3 >= 3) { // 1a94cc
- // 1a94e2
- memset(&model.EntryCount_1404, 0, 0x1884);
- // 1a9600
- for (int j_fp = 0; j_fp < model.InfoCount_1400; j_fp++) {
- // 1a94f6
- TEnvStadiumModelInfo& modelinfo = model.ModelInfo_0[j_fp];
- // 1a94fe
- int len_r0 = strlen(modelinfo.text_0);
- int len_r1 = len_r0;
- // 1a951a
- while (len_r1 != 0) {
- // 1a950e
- if (modelinfo.text_0[len_r1 - 1] == '_')
- text_78[len_r1 - 1] = ' ';
- else
- text_78[len_r1 - 1] = modelinfo.text_0[len_r1 - 1];
- len_r1--;
- // 1a9518
- }
- text_78[len_r0] = '\0';
- char text_38[64];
- char char_33; // TAvailableModelEntry的特征
- int tmp_2c; // TModelItem 的特征
- char char_2b;
- // 1a9538
- sscanf((const char*)text_78, "%s %c %i %c.ftm", text_38, &char_33, &tmp_2c, &char_2b);
- int EntryIndex_r2 = -1;
- // 1a9556
- while ((++EntryIndex_r2) < model.EntryCount_1404) {
- // 1a9562
- if (char_33 == model.Entry_1408[EntryIndex_r2].field_0)
- break;
- }
- // 1a9556
- if (EntryIndex_r2 >= model.EntryCount_1404) {
- // 1a956a
- EntryIndex_r2 = model.EntryCount_1404;
- model.EntryCount_1404++;
- }
- TAvailableModelEntry& Entry_r6 = model.Entry_1408[EntryIndex_r2];
- // 1a9574
- Entry_r6.field_0 = char_33;
- int ItemIndex_r3 = -1;
- // 1a9594
- while ((++ItemIndex_r3) < Entry_r6.ItemCount_4) {
- // 1a959c
- if (tmp_2c == Entry_r6.Item_8[ItemIndex_r3].field_0) { // 1a95a0
- break;
- }
- }
- // 1a9594
- if (ItemIndex_r3 >= Entry_r6.ItemCount_4) {
- Entry_r6.ItemCount_4 = ItemIndex_r3 + 1;
- }
- TModelItem& Item = Entry_r6.Item_8[ItemIndex_r3];
- Item.field_0 = tmp_2c;
- Item.field_8[Item.count_4++] = char_2b;
- // 1a95fa
- }
- // 1a9602
- }
- // 1a9606
- // 1a961a
- }
- // 1a9684
- for (int i_r6 = 0; i_r6 != 5; i_r6++) {
- TAvailableModel* r4_pModel = &CGfxEnv::ms_tAvailableModels[i_r6];
- // 1a964a
- CGfxEnv::InsertionSortStadiumModelInfo(r4_pModel->ModelInfo_0,
- r4_pModel->InfoCount_1400);
- for (int r2_i = 0; r2_i < r4_pModel->InfoCount_1400; r2_i++) { // 001A965E
- // 001A9662
- TEnvStadiumModelInfo* r3_pModelInfo = &r4_pModel->ModelInfo_0[r2_i];
- r4_pModel->field_2C88 = r3_pModelInfo->height_20;
- // 1a966a
- if (r3_pModelInfo->height_20 != 0)
- break;
- }
- // loc_1A9670
- r4_pModel->field_2C8C = r4_pModel->ModelInfo_0[r4_pModel->InfoCount_1400 - 1].height_20;
- }
- CGfxEnv::ms_bDirectoriesScanned = true;
- }
- //-------------------------------------------------------------------------------------------------
- // 001A96C8
- void CGfxEnv::CreateStadiumDressingTextures(int) {}
- //-------------------------------------------------------------------------------------------------
- // 001A9C2C
- void CGfxEnv::StadiumAdd(TEnvConfigStadium const *, int) {}
- //-------------------------------------------------------------------------------------------------
- // 001A9D94
- void CGfxEnv::EditSeatsTexture(uint) {}
- //-------------------------------------------------------------------------------------------------
- // 001A9ED8
- void CGfxEnv::ObjectsAdd(TEnvConfig const *, int) {}
- //-------------------------------------------------------------------------------------------------
- // 001A9FA4
- void CGfxEnv::SetupCrowd(EStadiumSection, int) {}
- //-------------------------------------------------------------------------------------------------
- // 001AA084
- void CGfxEnv::GetStadiumCapacity(TEnvConfig *) {}
- //-------------------------------------------------------------------------------------------------
- // 001AA0C0
- TModelInfoDescription *CGfxEnv::FindModelInfoDescription(char *a1) {
- LOGE("FindModelInfoDescription%s",a1);
- return (TModelInfoDescription*)rand();
- }
- //-------------------------------------------------------------------------------------------------
- // 001AA0F4
- void CGfxEnv::GetSectionCapacity(EStadiumSection) {}
- //-------------------------------------------------------------------------------------------------
- // 001AA100
- CFTTMatrix32 CGfxEnv::GetSectionMatrix(EStadiumSection e, bool b) {
- CFTTMatrix32 ret;
- return ret;
- }
- //-------------------------------------------------------------------------------------------------
- // 001AA17C
- void CGfxEnv::GetStadiumModelInfo(EStadiumSection, char const *) {}
- //-------------------------------------------------------------------------------------------------
- // 001AA1F0
- void CGfxEnv::UpdateStadiumSection(TEnvConfig const *, EStadiumSection) {}
- //-------------------------------------------------------------------------------------------------
- // 001AA24C
- int CGfxEnv::ModelGet(char const *, bool, int, EStadiumSection) { return 0; }
- //-------------------------------------------------------------------------------------------------
- // 001AA3F4
- int CGfxEnv::GetAvailableIndexFromModelIndex(EStadiumSection) { return 0; }
- //-------------------------------------------------------------------------------------------------
- // 001AA458
- void CGfxEnv::CalculateSectionCapacity(EStadiumSection) {}
- //-------------------------------------------------------------------------------------------------
- // 001AA45C
- void CGfxEnv::LoadSectionTextures(TEnvModel *, int) {}
- //-------------------------------------------------------------------------------------------------
- // 001AA478
- void CGfxEnv::UpdateStadiumFloodlights() {}
- //-------------------------------------------------------------------------------------------------
- // 001AA4CC
- int CGfxEnv::GetSectionTypeFromSection(EStadiumSection) { return 0; }
- //-------------------------------------------------------------------------------------------------
- // 001AA4E4
- void CGfxEnv::GetSectionTypeInfo(EStadiumSectionType) {}
- //-------------------------------------------------------------------------------------------------
- // 001AA4F8
- void CGfxEnv::Init(char *, int, bool) {}
- //-------------------------------------------------------------------------------------------------
- // 001AA588
- void CGfxEnv::EnvConfigLoad(TEnvConfig *, CFTTXmlReaderNode) {}
- //-------------------------------------------------------------------------------------------------
- // 001AA5B4
- int CGfxEnv::GetSectionTypeFromFileName(char const *a1) {
- LOGE("GetSectionTypeFromFileName%s",a1);
- return rand(); }
- //-------------------------------------------------------------------------------------------------
- // 001AA624
- // 001AA624 //^_-
- void CGfxEnv::InsertionSortStadiumModelInfo(TEnvStadiumModelInfo *pModeInfo1,
- int InfoCnt2) {
- LOGI("CGfxEnv::InsertionSortStadiumModelInfo 001AA624 entry");
- char text_8[0x20];
- for (int r10_i = 1; r10_i < InfoCnt2; ++r10_i) {
- // loc_1AA6C0
- // loc_1AA648
- memcpy(&text_8, pModeInfo1[r10_i].text_0,sizeof(pModeInfo1[r10_i].text_0));
- int height_r8 = pModeInfo1[r10_i].height_20;
- TModelInfoDescription *desc_r5 = pModeInfo1[r10_i].desc_24;
- int j_r6 = r10_i;
- for (; j_r6 > 0 &&pModeInfo1[j_r6 - 1].desc_24->height_48 > desc_r5->height_48;j_r6--) {
- // 1aa680
- memcpy(pModeInfo1 + j_r6, pModeInfo1 + j_r6 - 1,sizeof(TEnvStadiumModelInfo));
- }
- // loc_1AA6A0
- memcpy(pModeInfo1[j_r6].text_0, text_8, 0x20);
- pModeInfo1[j_r6].height_20 = height_r8;
- pModeInfo1[j_r6].desc_24 = desc_r5;
- // 1aa6be
- }
- for (int i_r1 = 0, i_r2 = 0; i_r1 < InfoCnt2; i_r1++) {
- // 1aa6ce
- if (pModeInfo1[i_r1].desc_24->field_4C) pModeInfo1[i_r1]
- .desc_24->field_44 = (i_r2++);
- }
- LOGI("CGfxEnv::InsertionSortStadiumModelInfo 001AA624 end");
- }
- //-------------------------------------------------------------------------------------------------
- // 001AA6FC
- void CGfxEnv::GetSectionSubTypeInfo(EStadiumSectionType, char) {}
- //-------------------------------------------------------------------------------------------------
- // 001AA73C
- void CGfxEnv::GetTierSubSectionInfo(EStadiumSectionType, char, int) {}
- //-------------------------------------------------------------------------------------------------
- // 001AA76C
- void CGfxEnv::StadiumConfigLoad(TEnvConfig *, CFTTXmlReaderNode *) {}
- //-------------------------------------------------------------------------------------------------
- // 001AA970
- void CGfxEnv::ObjectsConfigLoad(TEnvConfig *, CFTTXmlReaderNode *) {}
- //-------------------------------------------------------------------------------------------------
- // 001AABA8
- bool CGfxEnv::ModelExists(char const *) { return 0; }
- //-------------------------------------------------------------------------------------------------
- // 001AABF4
- void CGfxEnv::StrToPos(char const *) {}
- //-------------------------------------------------------------------------------------------------
- // 001AACB2
- void CGfxEnv::EnvConfigSave(TEnvConfig *, CFTTXmlWriterNode) {}
- //-------------------------------------------------------------------------------------------------
- // 001AACCC
- void CGfxEnv::StadiumConfigSave(TEnvConfig *, CFTTXmlWriterNode *) {}
- //-------------------------------------------------------------------------------------------------
- // 001AAE50
- void CGfxEnv::ObjectsConfigSave(TEnvConfig *, CFTTXmlWriterNode *) {}
- //-------------------------------------------------------------------------------------------------
- // 001AAFD0
- void CGfxEnv::Process(float) {}
- //-------------------------------------------------------------------------------------------------
- // 001AB004
- void CGfxEnv::ObjectUpdate(TEnvObject *) {}
- //-------------------------------------------------------------------------------------------------
- // 001AB08C
- void CGfxEnv::ProcessSectionUpgradeAnimation() {}
- //-------------------------------------------------------------------------------------------------
- // 001AB1C4
- void CGfxEnv::RenderObjStaticShadows() {}
- //-------------------------------------------------------------------------------------------------
- // 001AB1FC
- void CGfxEnv::ObjectShadowRender(TEnvObject *, bool) {}
- //-------------------------------------------------------------------------------------------------
- // 001AB324
- void CGfxEnv::RenderObjDynamicShadows() {}
- //-------------------------------------------------------------------------------------------------
- // 001AB35C
- bool CGfxEnv::RenderObjDynamicShadowsHQ(uint, CFTTModel *&, CFTTMatrix32 &) {
- return 0;
- }
- //-------------------------------------------------------------------------------------------------
- // 001AB384
- void CGfxEnv::GetShadowInfo(TEnvObject *, CFTTModel *&, CFTTMatrix32 &) {}
- //-------------------------------------------------------------------------------------------------
- // 001AB478
- void CGfxEnv::RenderOpaque() {}
- //-------------------------------------------------------------------------------------------------
- // 001AB4CC
- void CGfxEnv::ObjectRender(TEnvObject *) {}
- //-------------------------------------------------------------------------------------------------
- // 001AB604
- bool CGfxEnv::StadiumVisibilityCheck() { return 0; }
- //-------------------------------------------------------------------------------------------------
- // 001AB640
- void CGfxEnv::StadiumElementRender(int) {}
- //-------------------------------------------------------------------------------------------------
- // 001AB884
- void CGfxEnv::RenderDecal() {}
- //-------------------------------------------------------------------------------------------------
- // 001AB8A8
- void CGfxEnv::StadiumElementRenderDecal(int) {}
- //-------------------------------------------------------------------------------------------------
- // 001AB97C
- void CGfxEnv::RenderAlpha() {}
- //-------------------------------------------------------------------------------------------------
- // 001AB9A0
- void CGfxEnv::StadiumElementRenderAlpha(int) {}
- //-------------------------------------------------------------------------------------------------
- // 001ABA08
- void CGfxEnv::SetStadiumSectionCustomColour(EStadiumSection, uint) {}
- //-------------------------------------------------------------------------------------------------
- // 001ABA2C
- void CGfxEnv::ResetSelectedStadiumElement(EStadiumSection) {}
- //-------------------------------------------------------------------------------------------------
- // 001ABA40
- void CGfxEnv::GetAnimationInfo(EStadiumSection) {}
- //-------------------------------------------------------------------------------------------------
- // 001ABA54
- void CGfxEnv::ResetUpgradeAnimationInfo() {}
- //-------------------------------------------------------------------------------------------------
- // 001ABA80
- void CGfxEnv::InitialiseSectionUpgradeAnimation(EStadiumSection,
- ESectionUpgradeAnimType,
- void (*)(EStadiumSection),
- void (*)(EStadiumSection)) {}
- //-------------------------------------------------------------------------------------------------
- // 001ABAE0
- void CGfxEnv::GetSectionModel(EStadiumSection) {}
- //-------------------------------------------------------------------------------------------------
- // 001ABB04
- void CGfxEnv::GetOrientedSectionFromSection(EStadiumSection, int) {}
- //-------------------------------------------------------------------------------------------------
- // 001ABB3C
- void CGfxEnv::Shutdown() {}
- //-------------------------------------------------------------------------------------------------
- // 001ABBF0
- void CGfxEnv::FreeStadiumDressingTextures() {}
- //-------------------------------------------------------------------------------------------------
- // 001ABC1C
- int CGfxEnv::GetNumObjects() { return 0; }
- //-------------------------------------------------------------------------------------------------
- // 001ABC2C
- void CGfxEnv::ObjectsReset() {}
- //-------------------------------------------------------------------------------------------------
- // 001ABC3C
- bool CGfxEnv::UseShadowMapOnStadium() { return 0; }
- //-------------------------------------------------------------------------------------------------
- // 001ABCB4
- CFTTMatrix32 CGfxEnv::SetupCommon(EStadiumSection) {
- CFTTMatrix32 ret;
- return ret;
- }
- //-------------------------------------------------------------------------------------------------
- // 001AC058
- void CGfxEnv::StadiumElementShadowRender(int) {}
- //-------------------------------------------------------------------------------------------------
- // 001AC260
- void CGfxEnv::GetObjectModel(int) {}
- //-------------------------------------------------------------------------------------------------
- // 001AC274
- void CGfxEnv::SetSectionConstructing(TEnvConfig &, EStadiumSection) {}
- //-------------------------------------------------------------------------------------------------
- // 001AC2A8
- void CGfxEnv::SetFrontendExterior(TEnvConfig &) {}
- //-------------------------------------------------------------------------------------------------
- // 001AC2BC
- void CGfxEnv::ObjectAdd(char *, TPoint3D, int, int, float) {}
- //-------------------------------------------------------------------------------------------------
- // 001AC318
- void CGfxEnv::ObjectUpdateLive(int, TEnvConfigObject *) {}
- //-------------------------------------------------------------------------------------------------
- // 001AC374
- void CGfxEnv::InitCameraFlashes() {}
- //-------------------------------------------------------------------------------------------------
- // 001AC378
- void CGfxEnv::SetStadiumName(wchar_t *) {}
- //-------------------------------------------------------------------------------------------------
- // 001AC484
- void CGfxEnv::CreateStadiumDressingBackground(int, int, int, int, int, uint &,
- uint &, bool, CFTTTexture *) {}
- //-------------------------------------------------------------------------------------------------
- // 001AC6F8
- void CGfxEnv::PrintStadiumDressingText(wchar_t *, int, int, uint, uint, int) {}
- //-------------------------------------------------------------------------------------------------
- // 001AC848
- void CGfxEnv::GenerateTrainingEnvConfig(TEnvConfig &, int) {}
- //-------------------------------------------------------------------------------------------------
- // 001AC94C
- void CGfxEnv::GenerateNewStadium(TEnvConfig &, int) {}
- //-------------------------------------------------------------------------------------------------
- // 001AC978 //乱写的
- CFTTAABB32 CGfxEnv::GetTotalAABB() {
- CFTTAABB32 ret;
- ret.filed_0.float_0 = rand();
- ret.filed_0.float_4 = rand() / 0xf;
- ret.filed_0.float_8 = 1;
- int rt = rand();
- if (rt > 10) ret.filed_c.float_0 = 1.0;
- for (int i = 0; i < rand(); i++) {
- printf("dasdsadas");
- }
- return ret;
- }
- //-------------------------------------------------------------------------------------------------
- // 001ACA28
- void CGfxEnv::StadiumElementShadowMapRender(int, CFTTFrustum32 const &) {}
- //-------------------------------------------------------------------------------------------------
- // 001E6944
- void CGfxEnv::SetMatrix(CFTTMatrix32) {}
- //-------------------------------------------------------------------------------------------------
|