1 /*
2 * Copyright (C) 2010 Unreal Visualizer Authors
3 *
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 3 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17 package nl.tudelft.goal.ut2004.visualizer.data;
18
19 import java.util.LinkedList;
20
21 import nl.tudelft.goal.ut2004.visualizer.util.ObservingCollection;
22 import cz.cuni.amis.pogamut.ut2004.communication.messages.gbinfomessages.MapList;
23 import cz.cuni.amis.pogamut.ut2004.communication.messages.gbinfomessages.Player;
24 import cz.cuni.amis.pogamut.ut2004.communication.worldview.map.Waypoint;
25 import cz.cuni.amis.pogamut.ut2004.server.IUT2004Server;
26 import cz.cuni.amis.utils.collections.ObservableCollection;
27
28 /**
29 * Class that keeps track of the players that are currently in the server.
30 *
31 * @author Lennard de Rijk
32 * @author M.P. Korstanje
33 *
34 */
35 public class GameData extends AbstractData {
36
37 private final ObservingCollection<Player> players;
38 private final ObservableCollection<Waypoint> waypoints;
39 private final ObservableCollection<MapList> maps;
40
41 /** Most rescent message containing info about the player's score. */
42 //Map<UnrealId, PlayerScore> lastPlayerScore = null;
43
44 /** Most rescent message containing info about the player team's score. */
45 //Map<Integer, TeamScore> lastTeamScore = null;
46
47
48 public GameData() {
49 players = new ObservingCollection<Player>();
50 waypoints = new ObservableCollection<Waypoint>(new LinkedList<Waypoint>());
51 maps = new ObservableCollection<MapList>(new LinkedList<MapList>());
52
53 }
54
55 @Override
56 public void serverChanged(IUT2004Server server) {
57 players.removeObserved();
58 waypoints.clear();
59 maps.clear();
60 // lastPlayerScore.clear();
61 // lastTeamScore.clear();
62
63 if (server != null) {
64 players.setObserved(server.getPlayers());
65 waypoints.addAll(server.getMap().vertexSet());
66 maps.addAll(server.getAvailableMaps());
67
68 }
69 }
70
71 public ObservableCollection<MapList> getAvailableMaps() {
72 return maps;
73 }
74
75 public ObservableCollection<Player> getPlayers() {
76 return players;
77 }
78
79 public ObservableCollection<Waypoint> getWaypoints() {
80 return waypoints;
81 }
82
83
84
85
86 // /**
87 // * PlayerScore listener.
88 // */
89 // private class PlayerScoreListener implements IWorldEventListener<PlayerScore>
90 // {
91 // @Override
92 // public void notify(PlayerScore event)
93 // {
94 // synchronized(lastPlayerScore) {
95 // lastPlayerScore.put(event.getId(), event);
96 // }
97 // }
98 //
99 // /**
100 // * Constructor. Registers itself on the given WorldView object.
101 // * @param worldView WorldView object to listent to.
102 // */
103 // public PlayerScoreListener(IWorldView worldView)
104 // {
105 // worldView.addEventListener(PlayerScore.class, this);
106 // }
107 // }
108 //
109 // /** PlayerScore listener */
110 // private PlayerScoreListener playerScoreListener;
111 //
112 // /*========================================================================*/
113 //
114 // /**
115 // * TeamScore listener.
116 // */
117 // private class TeamScoreListener implements IWorldObjectEventListener<TeamScore, WorldObjectUpdatedEvent<TeamScore>>
118 // {
119 // /**
120 // * Constructor. Registers itself on the given WorldView object.
121 // * @param worldView WorldView object to listent to.
122 // */
123 // public TeamScoreListener(IWorldView worldView)
124 // {
125 // worldView.addObjectListener(TeamScore.class, WorldObjectUpdatedEvent.class, this);
126 // }
127 //
128 // @Override
129 // public void notify(WorldObjectUpdatedEvent<TeamScore> event) {
130 // synchronized(lastTeamScore) {
131 // lastTeamScore.put(event.getObject().getTeam(), event.getObject());
132 // }
133 // }
134 // }
135 //
136 // /** TeamScore listener */
137 // private TeamScoreListener teamScoreListener;
138
139 }