bool MapObject::boolProperty(string key) { // If the property exists already, return it if (properties[key].hasValue()) return properties[key].getBoolValue(); // Otherwise check the game configuration for a default value else { UDMFProperty* prop = theGameConfiguration->getUDMFProperty(key, type); if (prop) return prop->getDefaultValue().getBoolValue(); else return false; } }
/* ThingPropsPanel::setupExtraFlagsTab * Creates and sets up the 'Extra Flags' tab *******************************************************************/ wxPanel* ThingPropsPanel::setupExtraFlagsTab() { // Create panel wxPanel* panel = new wxPanel(stc_tabs, -1); // Setup sizer wxBoxSizer* sizer = new wxBoxSizer(wxVERTICAL); panel->SetSizer(sizer); // Init flags wxGridBagSizer* gb_sizer_flags = new wxGridBagSizer(4, 4); sizer->Add(gb_sizer_flags, 1, wxEXPAND|wxALL, 10); int row = 0; int col = 0; // Get all extra flag names vector<string> flags; for (unsigned a = 0; a < udmf_flags_extra.size(); a++) { UDMFProperty* prop = theGameConfiguration->getUDMFProperty(udmf_flags_extra[a], MOBJ_THING); flags.push_back(prop->getName()); } // Add flag checkboxes int flag_mid = flags.size() / 3; if (flags.size() % 3 == 0) flag_mid--; for (unsigned a = 0; a < flags.size(); a++) { wxCheckBox* cb_flag = new wxCheckBox(panel, -1, flags[a], wxDefaultPosition, wxDefaultSize, wxCHK_3STATE); gb_sizer_flags->Add(cb_flag, wxGBPosition(row++, col), wxDefaultSpan, wxEXPAND); cb_flags_extra.push_back(cb_flag); if (row > flag_mid) { row = 0; col++; } } gb_sizer_flags->AddGrowableCol(0, 1); gb_sizer_flags->AddGrowableCol(1, 1); gb_sizer_flags->AddGrowableCol(2, 1); return panel; }
/* ActionSpecialPanel::setupSpecialPanel * Creates and sets up the action special panel *******************************************************************/ void ActionSpecialPanel::setupSpecialPanel() { // Create panel panel_action_special = new wxPanel(this, -1); wxBoxSizer* sizer = new wxBoxSizer(wxVERTICAL); panel_action_special->SetSizer(sizer); // Special box text_special = new NumberTextCtrl(panel_action_special); sizer->Add(text_special, 0, wxEXPAND|wxALL, 4); text_special->Bind(wxEVT_TEXT, &ActionSpecialPanel::onSpecialTextChanged, this); // Action specials tree tree_specials = new ActionSpecialTreeView(panel_action_special); sizer->Add(tree_specials, 1, wxEXPAND|wxALL, 4); if (show_trigger) { // UDMF Triggers if (theMapEditor->currentMapDesc().format == MAP_UDMF) { // Get all UDMF properties vector<udmfp_t> props = theGameConfiguration->allUDMFProperties(MOBJ_LINE); sort(props.begin(), props.end()); // Get all UDMF trigger properties vector<string> triggers; NamedFlexGridMap named_flexgrids; for (unsigned a = 0; a < props.size(); a++) { UDMFProperty* property = props[a].property; if (!property->isTrigger()) continue; string group = property->getGroup(); wxFlexGridSizer* frame_sizer = named_flexgrids[group]; if (!frame_sizer) { wxStaticBox* frame_triggers = new wxStaticBox(panel_action_special, -1, group); wxStaticBoxSizer* sizer_triggers = new wxStaticBoxSizer(frame_triggers, wxVERTICAL); sizer->Add(sizer_triggers, 0, wxEXPAND|wxTOP, 4); frame_sizer = new wxFlexGridSizer(3); frame_sizer->AddGrowableCol(0, 1); frame_sizer->AddGrowableCol(1, 1); frame_sizer->AddGrowableCol(2, 1); sizer_triggers->Add(frame_sizer, 1, wxEXPAND|wxALL, 4); named_flexgrids.find(group)->second = frame_sizer; } wxCheckBox* cb_trigger = new wxCheckBox(panel_action_special, -1, property->getName(), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE); frame_sizer->Add(cb_trigger, 0, wxEXPAND); triggers.push_back(property->getName()); triggers_udmf.push_back(property->getProperty()); cb_triggers.push_back(cb_trigger); } } // Hexen trigger else if (theMapEditor->currentMapDesc().format == MAP_HEXEN) { // Add triggers dropdown wxBoxSizer* hbox = new wxBoxSizer(wxHORIZONTAL); sizer->Add(hbox, 0, wxEXPAND|wxTOP, 4); hbox->Add(new wxStaticText(panel_action_special, -1, "Special Trigger:"), 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 4); choice_trigger = new wxChoice(panel_action_special, -1, wxDefaultPosition, wxDefaultSize, theGameConfiguration->allSpacTriggers()); hbox->Add(choice_trigger, 1, wxEXPAND); } } }