Ejemplo n.º 1
0
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();
		}
	}
}
Ejemplo n.º 6
0
void  ListBox::RemoveSelectedItems()
{
    if (selcount) {
        ListIter<ListBoxItem> item = items;
        while (++item) {
            if (item->selected) {
                delete item.removeItem();
            }
        }

        line_count = items.size();
        selcount = 0;
    }
}
Ejemplo n.º 7
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();
}
Ejemplo n.º 8
0
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();
}