Ejemplo n.º 1
0
bool Crystal_Loop::logic()
{
	tgui::TGUIWidget *w = tgui::update();

	if (w == return_button) {
		std::vector<Loop *> loops;
		loops.push_back(this);
		engine->fade_out(loops);
		engine->unblock_mini_loop();
	}
	else if (w == player_button) {
		next_player();
	}
	else {
		bool done = false;
		std::vector<Loop *> loops;
		loops.push_back(this);
		for (int x = 0; x < 3; x++) {
			for (int y = 0; y < /*3*/1; y++) {
				if (w == ability_buttons[x][y]) {
					if (Game_Specific_Globals::crystals <= 0) {
						engine->play_sample("sfx/error.ogg");
					}
					else if (!static_cast<Crystal_Button *>(w)->filled()) {
						std::vector<std::string> v;
						v.push_back(t("REALLY_SPEND_CRYSTAL"));
						if (engine->yes_no_prompt(v, &loops)) {
							engine->play_sample("sfx/spend_crystal.ogg");
							Game_Specific_Globals::crystals--;
							players[current_player]->get_battle_attributes().abilities.abilities[x]++;
							copy_abilities();
#ifdef STEAMWORKS
							achieve("crystal");
#endif
						}
					}
					done = true;
					break;
				}
			}
		}
		if (!done) {
			for (int i = 0; i < /*8*/1; i++) {
				if (w == hp_buttons[i]) {
					if (Game_Specific_Globals::crystals <= 0) {
						engine->play_sample("sfx/error.ogg");
					}
					else if (!static_cast<Crystal_Button *>(w)->filled()) {
						std::vector<std::string> v;
						v.push_back(t("REALLY_SPEND_CRYSTAL"));
						if (engine->yes_no_prompt(v, &loops)) {
							engine->play_sample("sfx/spend_crystal.ogg");
							Game_Specific_Globals::crystals--;
							players[current_player]->get_battle_attributes().abilities.hp++;
							players[current_player]->get_battle_attributes().max_hp += 10 * cfg.difficulty_mult();
							copy_abilities();
#ifdef STEAMWORKS
							achieve("crystal");
#endif
						}
					}
				}
				else if (w == mp_buttons[i]) {
					if (Game_Specific_Globals::crystals <= 0) {
						engine->play_sample("sfx/error.ogg");
					}
					else if (!static_cast<Crystal_Button *>(w)->filled()) {
						std::vector<std::string> v;
						v.push_back(t("REALLY_SPEND_CRYSTAL"));
						if (engine->yes_no_prompt(v, &loops)) {
							engine->play_sample("sfx/spend_crystal.ogg");
							Game_Specific_Globals::crystals--;
							players[current_player]->get_battle_attributes().abilities.mp++;
							players[current_player]->get_battle_attributes().max_mp += 5;
							copy_abilities();
#ifdef STEAMWORKS
							achieve("crystal");
#endif
						}
					}
				}
			}
		}
	}

#ifdef STEAMWORKS
	bool all_full = true;
	for (int i = 0; i < 3; i++) {
		if (
			players[i]->get_battle_attributes().abilities.abilities[0] != 1 ||
			players[i]->get_battle_attributes().abilities.abilities[1] != 1 ||
			players[i]->get_battle_attributes().abilities.abilities[2] != 1 ||
			players[i]->get_battle_attributes().abilities.hp != 1 ||
			players[i]->get_battle_attributes().abilities.mp != 1
		) {
			all_full = false;
			break;
		}
	}
	if (all_full) {
		achieve("crystals");
	}
#endif

	return false;
}
Ejemplo n.º 2
0
 ~Warehourse() {
     achieve();
 }