Esempio n. 1
0
void Scene_Battle::Start() {
	if (Player::battle_test_flag) {
		Game_Temp::battle_troop_id = Player::battle_test_troop_id;
	}

	if (Game_Temp::battle_troop_id <= 0 ||
		Game_Temp::battle_troop_id > (int)Data::troops.size()) {
		char* error_msg = "Invalid Monster Party Id %d";
		if (Player::battle_test_flag) {
			Output::Error(error_msg, Game_Temp::battle_troop_id);
		}
		else {
			Output::Warning(error_msg, Game_Temp::battle_troop_id);
		}
		Game_Temp::battle_result = Game_Temp::BattleVictory;
		Scene::Pop();
		return;
	}

	Output::Debug("Starting battle %d (%s)", Game_Temp::battle_troop_id, Data::troops[Game_Temp::battle_troop_id-1].name.c_str());

	if (Player::battle_test_flag) {
		InitBattleTest();
	} else {
		Main_Data::game_enemyparty.reset(new Game_EnemyParty());
		Main_Data::game_enemyparty->Setup(Game_Temp::battle_troop_id);
	}

	Game_Battle::Init();

	cycle = 0;
	auto_battle = false;
	enemy_action = NULL;

	CreateUi();

	screen.reset(new Screen());

	Game_Temp::map_bgm = NULL; // Play map BGM on Scene_Map return
	Game_System::BgmPlay(Game_System::GetSystemBGM(Game_System::BGM_Battle));

	if (!Game_Temp::battle_background.empty())
		background.reset(new Background(Game_Temp::battle_background));
	else
		background.reset(new Background(Game_Battle::GetTerrainId()));

	SetState(State_Start);
}
Esempio n. 2
0
void Scene_Battle::Start() {
	if (Player::battle_test_flag) {
		Game_Temp::battle_troop_id = Player::battle_test_troop_id;
	}

	if (Game_Temp::battle_troop_id <= 0 ||
		Game_Temp::battle_troop_id > (int)Data::troops.size()) {
			Output::Warning("Invalid Monster Party Id %d", Game_Temp::battle_troop_id);
			Game_Temp::battle_result = Game_Temp::BattleVictory;
			Scene::Pop();
			return;
	}

	if (Player::battle_test_flag) {
		InitBattleTest();
	} else {
		Main_Data::game_enemyparty.reset(new Game_EnemyParty());
		Main_Data::game_enemyparty->Setup(Game_Temp::battle_troop_id);
	}

	Game_Battle::Init();

	cycle = 0;
	auto_battle = false;
	enemy_action = NULL;

	CreateCursors();
	CreateWindows();

	screen.reset(new Screen());

	Game_Temp::map_bgm = NULL; // Play map BGM on Scene_Map return
	Game_System::BgmPlay(Data::system.battle_music);

	Game_System::SePlay(Data::system.battle_se);

	if (!Game_Temp::battle_background.empty())
		background.reset(new Background(Game_Temp::battle_background));
	else
		background.reset(new Background(Game_Temp::battle_terrain_id));

	SetState(State_Start);
}
Esempio n. 3
0
void Scene_Battle::Start() {
	if (Player::battle_test_flag) {
		Game_Temp::battle_troop_id = Player::battle_test_troop_id;
	}

	const RPG::Troop* troop = ReaderUtil::GetElement(Data::troops, Game_Temp::battle_troop_id);

	if (!troop) {
		const char* error_msg = "Invalid Monster Party ID %d";
		if (Player::battle_test_flag) {
			Output::Error(error_msg, Game_Temp::battle_troop_id);
		}
		else {
			Output::Warning(error_msg, Game_Temp::battle_troop_id);
		}
		Game_Temp::battle_result = Game_Temp::BattleVictory;
		Scene::Pop();
		return;
	}

	// Game_Temp::battle_troop_id is valid during the whole battle
	Output::Debug("Starting battle %d (%s)", Game_Temp::battle_troop_id, troop->name.c_str());

	if (Player::battle_test_flag) {
		InitBattleTest();
	} else {
		Main_Data::game_enemyparty.reset(new Game_EnemyParty());
		Main_Data::game_enemyparty->Setup(Game_Temp::battle_troop_id);
	}

	Game_Battle::Init();

	cycle = 0;
	auto_battle = false;
	enemy_action = NULL;

	CreateUi();

	Game_System::BgmPlay(Game_System::GetSystemBGM(Game_System::BGM_Battle));

	SetState(State_Start);
}