aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.Client/ServerScoreboard.h
blob: 6de7f88d6e6c191c210c5548b006e7d5da279666 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#pragma once

#include "..\Minecraft.World\Scoreboard.h"

class MinecraftServer;
class ScoreboardSaveData;
class Score;
class Objective;
class PlayerTeam;

class ServerScoreboard : public Scoreboard
{
private:
	MinecraftServer *server;
	unordered_set<Objective *> trackedObjectives;
	ScoreboardSaveData *saveData;

public:
	ServerScoreboard(MinecraftServer *server);

	MinecraftServer *getServer();
	void onScoreChanged(Score *score);
	void onPlayerRemoved(const wstring &player);
	void setDisplayObjective(int slot, Objective *objective);
	void addPlayerToTeam(const wstring &player, PlayerTeam *team);
	void removePlayerFromTeam(const wstring &player, PlayerTeam *team);
	void onObjectiveAdded(Objective *objective);
	void onObjectiveChanged(Objective *objective);
	void onObjectiveRemoved(Objective *objective);
	void onTeamAdded(PlayerTeam *team);
	void onTeamChanged(PlayerTeam *team);
	void onTeamRemoved(PlayerTeam *team);
	void setSaveData(ScoreboardSaveData *data);

protected:
	void setDirty();

public:
	vector<shared_ptr<Packet> > *getStartTrackingPackets(Objective *objective);
	void startTrackingObjective(Objective *objective);
	vector<shared_ptr<Packet> > *getStopTrackingPackets(Objective *objective);
	void stopTrackingObjective(Objective *objective);
	int getObjectiveDisplaySlotCount(Objective *objective);
};