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