1 package org.hedgewars.hedgeroid.netplay; |
1 package org.hedgewars.hedgeroid.netplay; |
2 |
2 |
3 import java.util.Map; |
3 import java.util.Map; |
4 import java.util.TreeMap; |
4 import java.util.TreeMap; |
5 |
5 |
6 import org.hedgewars.hedgeroid.Datastructures.RoomlistRoom; |
6 import org.hedgewars.hedgeroid.Datastructures.Room; |
|
7 import org.hedgewars.hedgeroid.Datastructures.RoomWithId; |
|
8 import org.hedgewars.hedgeroid.util.ObservableTreeMap; |
7 |
9 |
8 import android.util.Pair; |
10 public class Roomlist extends ObservableTreeMap<String, RoomWithId> { |
9 |
|
10 public class Roomlist extends ObservableTreeMap<String, Pair<RoomlistRoom, Long>> { |
|
11 private long nextId = 1; |
11 private long nextId = 1; |
12 |
12 |
13 public void updateList(RoomlistRoom[] newRooms) { |
13 public void updateList(Room[] newRooms) { |
14 Map<String, Pair<RoomlistRoom, Long>> newMap = new TreeMap<String, Pair<RoomlistRoom, Long>>(); |
14 Map<String, RoomWithId> newMap = new TreeMap<String, RoomWithId>(); |
15 for(RoomlistRoom room : newRooms) { |
15 for(Room room : newRooms) { |
16 Pair<RoomlistRoom, Long> oldEntry = get(room.name); |
16 RoomWithId oldEntry = get(room.name); |
17 if(oldEntry == null) { |
17 if(oldEntry == null) { |
18 newMap.put(room.name, Pair.create(room, nextId++)); |
18 newMap.put(room.name, new RoomWithId(room, nextId++)); |
19 } else { |
19 } else { |
20 newMap.put(room.name, Pair.create(room, oldEntry.second)); |
20 newMap.put(room.name, new RoomWithId(room, oldEntry.id)); |
21 } |
21 } |
22 } |
22 } |
23 replaceContent(newMap); |
23 replaceContent(newMap); |
24 } |
24 } |
25 |
25 |
26 public void addRoomWithNewId(RoomlistRoom room) { |
26 public void addRoomWithNewId(Room room) { |
27 put(room.name, Pair.create(room, nextId++)); |
27 put(room.name, new RoomWithId(room, nextId++)); |
28 } |
28 } |
29 |
29 |
30 public void updateRoom(String name, RoomlistRoom room) { |
30 public void updateRoom(String name, Room room) { |
31 Pair<RoomlistRoom, Long> oldEntry = get(name); |
31 RoomWithId oldEntry = get(name); |
32 if(oldEntry == null) { |
32 if(oldEntry == null) { |
33 addRoomWithNewId(room); |
33 addRoomWithNewId(room); |
34 } else { |
34 } else { |
35 remove(name); |
35 remove(name); |
36 put(room.name, Pair.create(room, oldEntry.second)); |
36 put(room.name, new RoomWithId(room, oldEntry.id)); |
37 } |
37 } |
38 } |
38 } |
39 } |
39 } |