void Window_BattleCommand::SetActor(int _actor_id) { actor_id = (Player::IsRPG2k()) ? 0 : _actor_id; commands.clear(); if (actor_id == 0) { commands.push_back(!Data::terms.command_attack.empty() ? Data::terms.command_attack : "Attack"); commands.push_back(!Data::terms.command_defend.empty() ? Data::terms.command_defend : "Defend"); commands.push_back(!Data::terms.command_item.empty() ? Data::terms.command_item : "Item"); commands.push_back(!Data::terms.command_skill.empty() ? Data::terms.command_skill : "Skill"); } else { Game_Actor* actor = Game_Actors::GetActor(actor_id); const std::vector<uint32_t>& bcmds = actor->GetBattleCommands(); std::vector<uint32_t>::const_iterator it; for (it = bcmds.begin(); it != bcmds.end(); ++it) { uint32_t bcmd = *it; if (bcmd <= 0 || bcmd > Data::battlecommands.commands.size()) break; const RPG::BattleCommand& command = Data::battlecommands.commands[bcmd - 1]; commands.push_back(command.name); } } disabled.resize(commands.size()); Refresh(); }
void Scene_Battle_Rpg2k3::CreateBattleCommandWindow() { std::vector<std::string> commands; std::vector<int> disabled_items; Game_Actor* actor; if (!active_actor && Main_Data::game_party->GetBattlerCount() > 0) { actor = &(*Main_Data::game_party)[0]; } else { actor = active_actor; } if (actor) { const std::vector<uint32_t>& bcmds = actor->GetBattleCommands(); std::vector<uint32_t>::const_iterator it; int i = 0; for (it = bcmds.begin(); it != bcmds.end(); ++it) { uint32_t bcmd = *it; if (bcmd <= 0 || bcmd > Data::battlecommands.commands.size()) break; const RPG::BattleCommand& command = Data::battlecommands.commands[bcmd - 1]; commands.push_back(command.name); if (!Game_Battle::IsEscapeAllowed() && command.type == RPG::BattleCommand::Type_escape) { disabled_items.push_back(i); } ++i; } } command_window.reset(new Window_Command(commands, 76)); for (std::vector<int>::iterator it = disabled_items.begin(); it != disabled_items.end(); ++it) { command_window->DisableItem(*it); } command_window->SetHeight(80); if (Data::battlecommands.battle_type == RPG::BattleCommands::BattleType_gauge) { command_window->SetX(0); command_window->SetY(SCREEN_TARGET_HEIGHT / 2 - 80 / 2); } else { command_window->SetX(SCREEN_TARGET_WIDTH - 76); command_window->SetY(SCREEN_TARGET_HEIGHT - 80); } if (Data::battlecommands.battle_type != RPG::BattleCommands::BattleType_traditional) { int transp = Data::battlecommands.transparency == RPG::BattleCommands::Transparency_transparent ? 128 : 255; command_window->SetBackOpacity(transp); } }
int Window_BattleCommand::GetSkillSubset() { if (actor_id == 0) return RPG::Skill::Type_normal; Game_Actor* actor = Game_Actors::GetActor(actor_id); const std::vector<uint32_t>& bcmds = actor->GetBattleCommands(); int bcmd = bcmds[index]; int idx = 4; for (int i = 0; i < bcmd - 1; i++) { const RPG::BattleCommand& command = Data::battlecommands.commands[i]; if (command.type == RPG::BattleCommand::Type_subskill) idx++; } return idx; }
RPG::BattleCommand Window_BattleCommand::GetCommand() { if (actor_id > 0) { Game_Actor* actor = Game_Actors::GetActor(actor_id); return Data::battlecommands.commands[actor->GetBattleCommands()[index] - 1]; } RPG::BattleCommand command; static const int types[] = { RPG::BattleCommand::Type_attack, RPG::BattleCommand::Type_defense, RPG::BattleCommand::Type_item, RPG::BattleCommand::Type_special }; command.ID = index + 1; command.name = commands[index]; command.type = types[index]; return command; }
void Window_BattleCommand::SetActor(int _actor_id) { actor_id = (Player::IsRPG2k()) ? 0 : _actor_id; commands.clear(); if (actor_id == 0) { commands.push_back(!Data::terms.command_attack.empty() ? Data::terms.command_attack : "Attack"); commands.push_back(!Data::terms.command_defend.empty() ? Data::terms.command_defend : "Defend"); commands.push_back(!Data::terms.command_item.empty() ? Data::terms.command_item : "Item"); commands.push_back(!Data::terms.command_skill.empty() ? Data::terms.command_skill : "Skill"); } else { Game_Actor* actor = Game_Actors::GetActor(actor_id); const std::vector<const RPG::BattleCommand*> bcmds = actor->GetBattleCommands(); for (const RPG::BattleCommand* command : bcmds) { commands.push_back(command->name); } } disabled.resize(commands.size()); Refresh(); }