Example #1
0
void Scene_Skill::Update() {
	help_window->Update();
	skillstatus_window->Update();
	skill_window->Update();

	if (Input::IsTriggered(Input::CANCEL)) {
		Game_System::SePlay(Data::system.cancel_se);
		Scene::Pop();
	} else if (Input::IsTriggered(Input::DECISION)) {
		int skill_id = skill_window->GetSkillId();

		Game_Actor* actor = Game_Party::GetActors()[actor_index];

		if (actor->IsSkillUsable(skill_id)) {
			Game_System::SePlay(Data::system.decision_se);

			if (Data::skills[skill_id - 1].type == RPG::Skill::Type_switch) {
				actor->SetSp(actor->GetSp() - actor->CalculateSkillCost(skill_id));
				Game_Switches[Data::skills[skill_id - 1].switch_id] = true;
				Scene::PopUntil(Scene::Map);
				Game_Map::SetNeedRefresh(true);
			} else if (Data::skills[skill_id - 1].type == RPG::Skill::Type_normal) {
				Scene::Push(EASYRPG_MAKE_SHARED<Scene_ActorTarget>(skill_id, actor_index, skill_window->GetIndex()));
				skill_index = skill_window->GetIndex();
			} else if (Data::skills[skill_id - 1].type == RPG::Skill::Type_teleport) {
				// ToDo: Displays the teleport target scene/window
			} else if (Data::skills[skill_id - 1].type == RPG::Skill::Type_escape) {
				// ToDo: Displays the escape target scene/window
			}
		} else {
			Game_System::SePlay(Data::system.buzzer_se);
		}
	}
}
void Scene_ActorTarget::UpdateSkill() {
	if (Input::IsTriggered(Input::DECISION)) {
		Game_Actor* actor = static_cast<Game_Actor*>(&(*Main_Data::game_party)[actor_index]);

		if (actor->GetSp() < actor->CalculateSkillCost(id)) {
			Game_System::SePlay(Game_System::GetSystemSE(Game_System::SFX_Buzzer));
			return;
		}
		if (Main_Data::game_party->UseSkill(id, actor, target_window->GetActor())) {
			Game_System::SePlay(Game_System::GetSystemSE(Game_System::SFX_UseItem));
		}
		else {
			Game_System::SePlay(Game_System::GetSystemSE(Game_System::SFX_Buzzer));
		}

		status_window->Refresh();
		target_window->Refresh();
	}
}