project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/netplay/Roomlist.java
changeset 7508 763d3961400b
parent 7491 d954c1a36e51
child 7584 7831c84cc644
equal deleted inserted replaced
7504:ed1d52c5aa94 7508:763d3961400b
     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 }