From 708e7922405c607f9f6986914ae6f1d53d09f36d Mon Sep 17 00:00:00 2001 From: Viet Dinh <36768030+Desdaemon@users.noreply.github.com> Date: Sun, 8 Sep 2024 18:14:15 -0400 Subject: [PATCH] Extension fields for EasyRPG, behavior changes (#43) * Fix picture batch-erase (#42) * Fix nametag sprites being erroneously reused * Extension fields for multiplayer ShowPicture --------- Co-authored-by: notdistorted <73075016+notdistorted@users.noreply.github.com> --- src/game_interpreter.cpp | 2 +- src/multiplayer/chatname.cpp | 1 + src/multiplayer/messages.h | 18 +++++++++++++++++- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/game_interpreter.cpp b/src/game_interpreter.cpp index 90ae59d00..4628e4cf5 100644 --- a/src/game_interpreter.cpp +++ b/src/game_interpreter.cpp @@ -3088,7 +3088,7 @@ bool Game_Interpreter::CommandErasePicture(lcf::rpg::EventCommand const& com) { Main_Data::game_pictures->Erase(i); - GMI().PictureErased(pic_id); + GMI().PictureErased(i); } } else { PicPointerPatch::AdjustId(pic_id); diff --git a/src/multiplayer/chatname.cpp b/src/multiplayer/chatname.cpp index acaf0bf7b..efbcc5121 100644 --- a/src/multiplayer/chatname.cpp +++ b/src/multiplayer/chatname.cpp @@ -44,6 +44,7 @@ void ChatName::Draw(Bitmap& dst) { // FIXME: Text::GetSize is broken and always returns a height of 0, use 12 for now auto rect = Text::GetSize(*Font::NameText(), nick_trim); nick_img = Bitmap::Create(rect.width, 12); + nick_img->SetId(fmt::format("nametag:{}", nickname)); Text::Draw(*nick_img, 0, 0, *Font::NameText(), *(sys_graphic ? sys_graphic : Cache::SystemOrBlack()), 0, nick_trim); diff --git a/src/multiplayer/messages.h b/src/multiplayer/messages.h index a99a8ce80..ccf13515e 100644 --- a/src/multiplayer/messages.h +++ b/src/multiplayer/messages.h @@ -236,6 +236,20 @@ namespace S2C { p.name = v.at(17); p.use_transparent_color = Decode(v.at(18)); p.fixed_to_map = Decode(v.at(19)); + if (v.size() >= 32) { + p.spritesheet_cols = Decode(v.at(20)); + p.spritesheet_rows = Decode(v.at(21)); + p.spritesheet_frame = Decode(v.at(22)); + p.spritesheet_speed = Decode(v.at(23)); + p.spritesheet_play_once = Decode(v.at(24)); + p.map_layer = Decode(v.at(25)); + p.battle_layer = Decode(v.at(26)); + p.flags = Decode(v.at(27)); + p.blend_mode = Decode(v.at(28)); + p.flip_x = Decode(v.at(29)); + p.flip_y = Decode(v.at(30)); + p.origin = Decode(v.at(31)); + } return p; } ShowPicturePacket(const PL& v) @@ -503,7 +517,9 @@ namespace C2S { std::string ToBytes() const override { std::string r {GetName()}; PicturePacket::Append(r); - AppendPartial(r, p_show.name, p_show.use_transparent_color, p_show.fixed_to_map); + AppendPartial(r, p_show.name, p_show.use_transparent_color, p_show.fixed_to_map, + p_show.spritesheet_cols, p_show.spritesheet_rows, p_show.spritesheet_frame, p_show.spritesheet_speed, p_show.spritesheet_play_once, + p_show.map_layer, p_show.battle_layer, p_show.flags, p_show.blend_mode, p_show.flip_x, p_show.flip_y, p_show.origin); return r; } protected: