project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/netplay/RoomList.java
changeset 7491 d954c1a36e51
parent 7488 7e09947b6aa5
child 7494 e65adfc99f15
equal deleted inserted replaced
7488:7e09947b6aa5 7491:d954c1a36e51
     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 }