int FindKodTypeID(int objectNum, const char *typeName) { if ((objectNum >= 0) && (objectNum < numKodObjects)) { KodObject *pObject = &pKodObjects[objectNum]; KodType *pType = pObject->pType; for (int i=0; i < pObject->numTypes; i++, pType++) { if (0 == strcmpi(typeName, GetKodTypeDecorativeName(objectNum,i))) return pType->id; else if (0 == strcmpi(typeName, GetKodTypeName(objectNum,i))) return pType->id; } } return 0; }
////////////////////////////////////////////////////////////////////// // TThingEditDialog // ---------------- // The user changed the selected thing type in the list box, // we update the CurThing struct void TThingEditDialog::ThingSelchange () { char name[256]; // Get selected string int index = pThingList->GetSelIndex (); if (index < 0) return; pThingList->GetString(name,index); CurThing.type = FindKodObjectByName(name); ConfirmData.pTypeCheck = TRUE; // Remember in confirm data pSubType->ClearList(); pSubType->EnableWindow(FALSE); for(int t=0; t < GetNumKodTypes(CurThing.type); t++) { pSubType->EnableWindow(TRUE); index = pSubType->AddString(GetKodTypeDecorativeName(CurThing.type,t)); if (GetKodTypeID(CurThing.type,t) == CurThing.when) { pSubType->SetSelIndex(index); } } }
////////////////////////////////////////////////////////////////////// // TThingEditDialog // ---------------- // Fills the thing type list box with the thing set types. // void TThingEditDialog::SetupListBox () { int i; pThingList->ClearList(); pExitRoomID->ClearList(); pSubType->ClearList(); pSubType->EnableWindow(FALSE); switch (ThingSet) { case kodPlayerBlocking: pThingList->SetSelIndex(pThingList->AddString ("Player Boundary")); break; case kodEntrance: pThingList->SetSelIndex(pThingList->AddString ("Room Entrance")); break; case kodExit: pThingList->SetSelIndex(pThingList->AddString ("Room Exit")); for(i=0; i < GetNumKodRooms(); i++) { int index = pExitRoomID->AddString(GetKodRoomDecorativeName(i)); pExitRoomID->SetItemData(index,GetKodRoomID(i)); if (GetKodRoomID(i) == CurThing.when) { pExitRoomID->SetSelIndex(index); } } break; case kodMonsterGenerator: pThingList->SetSelIndex(pThingList->AddString ("Monster Generator")); break; case kodExtraPreObject2: case kodExtraPreObject3: case kodExtraPreObject4: break; case kodObject: for (i=kodObject; i < GetNumKodObjects(); i++) { int index = pThingList->AddString(GetKodObjectDecorativeName(i)); pThingList->SetItemData(index,i); if (CurThing.type == i) { pThingList->SetSelIndex(index); if (GetNumKodTypes(CurThing.type) > 0) pSubType->EnableWindow(TRUE); for(int t=0; t < GetNumKodTypes(CurThing.type); t++) { index = pSubType->AddString(GetKodTypeDecorativeName(CurThing.type,t)); pSubType->SetItemData(index,i); if (GetKodTypeID(CurThing.type,t) == CurThing.when) { pSubType->SetSelIndex(index); } } } } break; } pXExit->EnableWindow(kodExit == ThingSet); pYExit->EnableWindow(kodExit == ThingSet); pExitRoomID->EnableWindow(kodExit == ThingSet); pEntrancesButton->EnableWindow(kodExit == ThingSet); SetAngle(); }