| 156 | } |
| 157 | |
| 158 | int ControlVariables::Event(int op, int event_id, const Game_BaseInterpreterContext& interpreter) { |
| 159 | auto character = interpreter.GetCharacter(event_id, "ControlVariables::Event"); |
| 160 | if (character) { |
| 161 | switch (op) { |
| 162 | case 0: |
| 163 | // Map ID |
| 164 | if (!Player::IsRPG2k() |
| 165 | || event_id == Game_Character::CharPlayer |
| 166 | || event_id == Game_Character::CharBoat |
| 167 | || event_id == Game_Character::CharShip |
| 168 | || event_id == Game_Character::CharAirship) { |
| 169 | return character->GetMapId(); |
| 170 | } else { |
| 171 | // This is an RPG_RT bug for 2k only. Requesting the map id of an event always returns 0. |
| 172 | return 0; |
| 173 | } |
| 174 | break; |
| 175 | case 1: |
| 176 | // X Coordinate |
| 177 | return character->GetX(); |
| 178 | break; |
| 179 | case 2: |
| 180 | // Y Coordinate |
| 181 | return character->GetY(); |
| 182 | break; |
| 183 | case 3: |
| 184 | // Orientation |
| 185 | int dir; |
| 186 | dir = character->GetFacing(); |
| 187 | return dir == 0 ? 8 : |
| 188 | dir == 1 ? 6 : |
| 189 | dir == 2 ? 2 : 4; |
| 190 | break; |
| 191 | case 4: { |
| 192 | // Screen X |
| 193 | if (Player::game_config.fake_resolution.Get()) { |
| 194 | int pan_delta = (Game_Player::GetDefaultPanX() - lcf::rpg::SavePartyLocation::kPanXDefault) / TILE_SIZE; |
| 195 | return character->GetScreenX() - pan_delta; |
| 196 | } else { |
| 197 | return character->GetScreenX(); |
| 198 | } |
| 199 | } |
| 200 | case 5: { |
| 201 | // Screen Y |
| 202 | if (Player::game_config.fake_resolution.Get()) { |
| 203 | int pan_delta = (Game_Player::GetDefaultPanY() - lcf::rpg::SavePartyLocation::kPanYDefault) / TILE_SIZE; |
| 204 | return character->GetScreenY() - pan_delta; |
| 205 | } else { |
| 206 | return character->GetScreenY(); |
| 207 | } |
| 208 | } |
| 209 | case 6: |
| 210 | // Event ID |
| 211 | return Player::IsPatchManiac() ? interpreter.GetThisEventId() : 0; |
| 212 | } |
| 213 | |
| 214 | Output::Warning("ControlVariables::Event: Unknown op {}", op); |
| 215 | } |
nothing calls this directly
no test coverage detected