Skip to content

Commit

Permalink
Emulate legacy rm2k move picture behavior
Browse files Browse the repository at this point in the history
MovePicture command doesn't change position of pictures
with fixed_to_map chunk set.

Used in Destined game See: #1741
  • Loading branch information
mateofio committed Dec 3, 2019
1 parent 418613a commit bfe8687
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 6 deletions.
14 changes: 9 additions & 5 deletions src/game_picture.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ void Game_Picture::Show(const ShowParams& params) {
data.name = params.name;
data.use_transparent_color = params.use_transparent_color;
data.fixed_to_map = params.fixed_to_map;
SetNonEffectParams(params);
SetNonEffectParams(params, true);

data.effect_mode = params.effect_mode;
if (data.effect_mode == RPG::SavePicture::Effect_none) {
Expand Down Expand Up @@ -180,7 +180,9 @@ void Game_Picture::Show(const ShowParams& params) {
void Game_Picture::Move(const MoveParams& params) {
RPG::SavePicture& data = GetData();

SetNonEffectParams(params);
const bool ignore_position = Player::IsRPG2kLegacy() && data.fixed_to_map;

SetNonEffectParams(params, !ignore_position);
data.time_left = params.duration * DEFAULT_FPS / 10;

// Note that data.effect_mode doesn't necessarily reflect the
Expand Down Expand Up @@ -359,11 +361,13 @@ void Game_Picture::Update() {
}
}

void Game_Picture::SetNonEffectParams(const Params& params) {
void Game_Picture::SetNonEffectParams(const Params& params, bool set_positions) {
RPG::SavePicture& data = GetData();

data.finish_x = params.position_x;
data.finish_y = params.position_y;
if (set_positions) {
data.finish_x = params.position_x;
data.finish_y = params.position_y;
}
data.finish_magnify = params.magnify;
data.finish_top_trans = params.top_trans;
data.finish_bot_trans = params.bottom_trans;
Expand Down
2 changes: 1 addition & 1 deletion src/game_picture.h
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ class Game_Picture {
int last_spritesheet_frame = 0;
FileRequestBinding request_id;

void SetNonEffectParams(const Params& params);
void SetNonEffectParams(const Params& params, bool set_positions);
void SyncCurrentToFinish();
void RequestPictureSprite();
void OnPictureSpriteReady(FileRequestResult*);
Expand Down

0 comments on commit bfe8687

Please sign in to comment.