void UseEquipWidget::UpdateEquip() { DeleteAllChildren(); int numSlots = Pi::player->m_equipment.GetSlotSize(Equip::SLOT_MISSILE); if (numSlots) { float spacing = 380.0f / numSlots; for (int i = 0; i < numSlots; ++i) { const Equip::Type t = Pi::player->m_equipment.Get(Equip::SLOT_MISSILE, i); if (t == Equip::NONE) continue; Gui::ImageButton *b; switch (t) { case Equip::MISSILE_UNGUIDED: b = new Gui::ImageButton("icons/missile_unguided.png"); break; case Equip::MISSILE_GUIDED: b = new Gui::ImageButton("icons/missile_guided.png"); break; case Equip::MISSILE_SMART: b = new Gui::ImageButton("icons/missile_smart.png"); break; default: case Equip::MISSILE_NAVAL: b = new Gui::ImageButton("icons/missile_naval.png"); break; } Add(b, spacing * i, 40); b->onClick.connect(sigc::bind(sigc::mem_fun(this, &UseEquipWidget::FireMissile), i)); b->SetToolTip(Equip::types[t].name); b->SetRenderDimensions(16, 16); } } { const Equip::Type t = Pi::player->m_equipment.Get(Equip::SLOT_ECM); if (t != Equip::NONE) { Gui::ImageButton *b = 0; if (t == Equip::ECM_BASIC) b = new Gui::ImageButton("icons/ecm_basic.png"); else if (t == Equip::ECM_ADVANCED) b = new Gui::ImageButton("icons/ecm_advanced.png"); assert(b); b->onClick.connect(sigc::mem_fun(Pi::player, &Ship::UseECM)); b->SetRenderDimensions(32, 32); Add(b, 32, 0); } } }
void UseEquipWidget::UpdateEquip() { DeleteAllChildren(); lua_State *l = Lua::manager->GetLuaState(); int pristine_stack = lua_gettop(l); LuaObject<Ship>::PushToLua(Pi::player); lua_pushstring(l, "GetEquip"); lua_gettable(l, -2); lua_pushvalue(l, -2); lua_pushstring(l, "MISSILE"); lua_call(l, 2, 1); std::vector<std::string> missiles = LuaTable(l, -1).GetVector<std::string>(); lua_settop(l, pristine_stack); int numSlots = missiles.size(); if (numSlots) { float spacing = 380.0f / numSlots; for (int i = 0; i < numSlots; ++i) { const Equip::Type t = static_cast<Equip::Type>(LuaConstants::GetConstant(l, "EquipType", missiles[i].c_str())); if (t == Equip::NONE) continue; Gui::ImageButton *b; switch (t) { case Equip::MISSILE_UNGUIDED: b = new Gui::ImageButton("icons/missile_unguided.png"); break; case Equip::MISSILE_GUIDED: b = new Gui::ImageButton("icons/missile_guided.png"); break; case Equip::MISSILE_SMART: b = new Gui::ImageButton("icons/missile_smart.png"); break; default: case Equip::MISSILE_NAVAL: b = new Gui::ImageButton("icons/missile_naval.png"); break; } Add(b, spacing * i, 40); b->onClick.connect(sigc::bind(sigc::mem_fun(this, &UseEquipWidget::FireMissile), i)); b->SetToolTip(Equip::types[t].name); b->SetRenderDimensions(16, 16); } } { const Equip::Type t = Pi::player->m_equipment.Get(Equip::SLOT_ECM); if (t != Equip::NONE) { Gui::ImageButton *b = 0; if (t == Equip::ECM_BASIC) b = new Gui::ImageButton("icons/ecm_basic.png"); else if (t == Equip::ECM_ADVANCED) b = new Gui::ImageButton("icons/ecm_advanced.png"); assert(b); b->onClick.connect(sigc::mem_fun(Pi::player, &Ship::UseECM)); b->SetRenderDimensions(32, 32); Add(b, 32, 0); } } }