void Scene::Collect() { ListIter<Graphic> iter = graphics; while (++iter) { Graphic* g = iter.value(); if (g->Life() == 0) { delete iter.removeItem(); } } iter.attach(sprites); while (++iter) { Graphic* g = iter.value(); if (g->Life() == 0) { delete iter.removeItem(); } } ListIter<Light> iter1 = lights; while (++iter1) { Light* l = iter1.value(); if (l->Life() == 0) { delete iter1.removeItem(); } } }
void ModConfig::DisableMod(const char* name) { if (!name || !*name) return; Text* mod_name; ListIter<Text> iter = enabled; while (++iter) { Text* t = iter.value(); if (*t == name) { mod_name = t; iter.removeItem(); break; } } if (mod_name) { disabled.append(mod_name); ListIter<ModInfo> iter = mods; while (++iter) { ModInfo* mod_info = iter.value(); if (mod_info->Name() == *mod_name) { delete iter.removeItem(); break; } } } }
void NetGameClient::ExecFrame() { if (local_player) { if (local_player->GetObjID() == 0) { SendJoinRequest(); } else if (active) { // check health of server: NetPeer* server_peer = link->FindPeer(server_id); if (server_peer && (NetLayer::GetUTC() - server_peer->LastReceiveTime() > 15)) { NetMsg net_disco(0, NET_DISCONNECT, 0, 0, 0); DoDisconnect(&net_disco); } // if server is still there, else if (server_peer) { // check if any old join announcements still need to be processed: ListIter<NetJoinAnnounce> iter = join_backlog; while (++iter) { NetJoinAnnounce* join_ann = iter.value(); if (DoJoinBacklog(join_ann)) { iter.removeItem(); delete join_ann; } } } } } NetGame::ExecFrame(); }
void ModConfig::EnableMod(const char* name) { if (!name || !*name) return; Text* mod_name; ListIter<Text> iter = disabled; while (++iter) { Text* t = iter.value(); if (*t == name) { mod_name = t; iter.removeItem(); break; } } if (mod_name) { enabled.append(mod_name); if (!IsDeployed(*mod_name)) { ModInfo* mod_info = new(__FILE__,__LINE__) ModInfo; if (mod_info->Load(*mod_name) && mod_info->Enable()) { mods.append(mod_info); } } } }
void ModConfig::FindMods() { disabled.destroy(); DataLoader* loader = DataLoader::GetLoader(); if (loader) { loader->UseFileSystem(true); loader->ListFiles("*.dat", disabled, true); loader->UseFileSystem(Starshatter::UseFileSystem()); ListIter<Text> iter = disabled; while (++iter) { Text* name = iter.value(); name->setSensitive(false); if (*name == "shatter.dat" || *name == "beta.dat" || *name == "start.dat" || *name == "irunin.dat" || *name == "vox.dat" || name->contains("uninstall") || enabled.contains(name)) delete iter.removeItem(); } } }
void ListBox::RemoveSelectedItems() { if (selcount) { ListIter<ListBoxItem> item = items; while (++item) { if (item->selected) { delete item.removeItem(); } } line_count = items.size(); selcount = 0; } }
void DetailSet::Destroy() { for (int i = 0; i < levels; i++) { ListIter<Graphic> iter = rep[i]; while (++iter) { Graphic* g = iter.removeItem(); g->Destroy(); // this will delete the object (g) } off[i].destroy(); } rate.destroy(); spin.destroy(); }
void DisplayView::ExecFrame() { double seconds = Game::GUITime(); ListIter<DisplayElement> iter = elements; while (++iter) { DisplayElement* elem = iter.value(); if (elem->fade_in > 0) elem->fade_in -= seconds; else if (elem->hold > 0) elem->hold -= seconds; else if (elem->fade_out > 0) elem->fade_out -= seconds; else delete iter.removeItem(); } }
void ModConfig::Deploy() { Save(); if (enabled.size() < 1) return; Print("\nDEPLOYING MODS\n--------------\n"); int i = 1; ListIter<Text> iter = enabled; while (++iter) { Text* name = iter.value(); if (IsDeployed(name->data())) { Print(" %d. %s is already deployed (skipping)\n", i++, name->data()); continue; } Print(" %d. %s\n", i++, name->data()); ModInfo* mod_info = new(__FILE__,__LINE__) ModInfo; if (mod_info->Load(name->data()) && mod_info->Enable()) { mods.append(mod_info); } else { Print(" Could not deploy '%s' - disabling\n", name->data()); delete mod_info; iter.removeItem(); disabled.append(name); } } Print("\n"); Game::UseLocale(0); }
void MusicDirector::ScanTracks() { DataLoader* loader = DataLoader::GetLoader(); bool old_file_system = loader->IsFileSystemEnabled(); loader->UseFileSystem(true); loader->SetDataPath("Music/"); List<Text> files; loader->ListFiles("*.ogg", files, true); if (files.size() == 0) { loader->UseFileSystem(old_file_system); no_music = true; return; } no_music = false; ListIter<Text> iter = files; while (++iter) { Text* name = iter.value(); Text* file = new(__FILE__,__LINE__) Text("Music/"); name->setSensitive(false); file->append(*name); if (name->indexOf("Menu") == 0) { menu_tracks.append(file); } else if (name->indexOf("Intro") == 0) { intro_tracks.append(file); } else if (name->indexOf("Brief") == 0) { brief_tracks.append(file); } else if (name->indexOf("Debrief") == 0) { debrief_tracks.append(file); } else if (name->indexOf("Promot") == 0) { promote_tracks.append(file); } else if (name->indexOf("Flight") == 0) { flight_tracks.append(file); } else if (name->indexOf("Combat") == 0) { combat_tracks.append(file); } else if (name->indexOf("Launch") == 0) { launch_tracks.append(file); } else if (name->indexOf("Recovery") == 0) { recovery_tracks.append(file); } else if (name->indexOf("Victory") == 0) { victory_tracks.append(file); } else if (name->indexOf("Defeat") == 0) { defeat_tracks.append(file); } else if (name->indexOf("Credit") == 0) { credit_tracks.append(file); } else { menu_tracks.append(file); } delete iter.removeItem(); } loader->UseFileSystem(old_file_system); menu_tracks.sort(); intro_tracks.sort(); brief_tracks.sort(); debrief_tracks.sort(); promote_tracks.sort(); flight_tracks.sort(); combat_tracks.sort(); launch_tracks.sort(); recovery_tracks.sort(); victory_tracks.sort(); defeat_tracks.sort(); credit_tracks.sort(); }