Skip to content

Commit

Permalink
Add transparency sync
Browse files Browse the repository at this point in the history
  • Loading branch information
Flashfyre committed Jan 6, 2024
1 parent b19fc39 commit b9b1c95
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 0 deletions.
3 changes: 3 additions & 0 deletions src/game_character.h
Original file line number Diff line number Diff line change
Expand Up @@ -1242,6 +1242,9 @@ inline int Game_Character::GetTransparency() const {
}

inline void Game_Character::SetTransparency(int value) {
if (GetType() == Player && data()->transparency != value) {
GMI().MainPlayerChangedTransparency(Utils::Clamp(value, 0, 7));
}
data()->transparency = Utils::Clamp(value, 0, 7);
}

Expand Down
10 changes: 10 additions & 0 deletions src/multiplayer/game_multiplayer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -311,6 +311,12 @@ void Game_Multiplayer::InitConnection() {
if (players.find(p.id) == players.end()) return;
repeating_flashes.erase(p.id);
});
connection.RegisterHandler<TransparencyPacket>("tr", [this] (TransparencyPacket& p) {
if (players.find(p.id) == players.end()) return;
auto& player = players[p.id];
int transparency = Utils::Clamp(p.transparency, 0, 7);
player.ch->SetTransparency(transparency);
});
connection.RegisterHandler<HiddenPacket>("h", [this] (HiddenPacket& p) {
if (players.find(p.id) == players.end()) return;
auto& player = players[p.id];
Expand Down Expand Up @@ -586,6 +592,10 @@ void Game_Multiplayer::MainPlayerFlashed(int r, int g, int b, int p, int f) {
last_flash_frame_index = frame_index;
}

void Game_Multiplayer::MainPlayerChangedTransparency(int tranparency) {
connection.SendPacketAsync<TransparencyPacket>(transparency);
}

void Game_Multiplayer::MainPlayerChangedSpriteHidden(bool hidden) {
int hidden_bin = hidden ? 1 : 0;
connection.SendPacketAsync<HiddenPacket>(hidden_bin);
Expand Down
1 change: 1 addition & 0 deletions src/multiplayer/game_multiplayer.h
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ class Game_Multiplayer {
void MainPlayerChangedSpriteGraphic(std::string name, int index);
void MainPlayerJumped(int x, int y);
void MainPlayerFlashed(int r, int g, int b, int p, int f);
void MainPlayerChangedTransparency(int tranparency);
void MainPlayerChangedSpriteHidden(bool hidden);
void MainPlayerTeleported(int map_id, int x, int y);
void MainPlayerTriggeredEvent(int event_id, bool action);
Expand Down
17 changes: 17 additions & 0 deletions src/multiplayer/messages.h
Original file line number Diff line number Diff line change
Expand Up @@ -162,6 +162,14 @@ namespace S2C {
: PlayerPacket(v.at(0)) {}
};

class TransparencyPacket : public PlayerPacket {
public:
TransparencyPacket(const PL& v)
: PlayerPacket(v.at(0)),
transparency(Decode<int>(v.at(1))) {}
const int transparency;
};

class HiddenPacket : public PlayerPacket {
public:
HiddenPacket(const PL& v)
Expand Down Expand Up @@ -431,6 +439,15 @@ namespace C2S {
std::string ToBytes() const override { return Build(); }
};

class TransparencyPacket : public C2SPacket {
public:
TransparencyPacket(int _transparency) : C2SPacket("tr"),
transparency(_transparency) {}
std::string ToBytes() const override { return Build(transparency); }
protected:
int transparency;
};

class HiddenPacket : public C2SPacket {
public:
HiddenPacket(int _hidden_bin) : C2SPacket("h"),
Expand Down

0 comments on commit b9b1c95

Please sign in to comment.