project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/netplay/ClientFlagsUpdate.java
changeset 7691 55c0a856ecd0
child 10017 de822cd3df3a
equal deleted inserted replaced
7689:855eeee4166f 7691:55c0a856ecd0
       
     1 package org.hedgewars.hedgeroid.netplay;
       
     2 
       
     3 import org.hedgewars.hedgeroid.Datastructures.Player;
       
     4 import org.hedgewars.hedgeroid.Datastructures.PlayerInRoom;
       
     5 
       
     6 final class ClientFlagsUpdate {
       
     7 	public static final char FLAG_ADMIN = 'a';
       
     8 	public static final char FLAG_CHIEF = 'h';
       
     9 	public static final char FLAG_READY = 'r';
       
    10 	public static final char FLAG_REGISTERED = 'u';
       
    11 	
       
    12 	public final String nick, flags;
       
    13 	public final boolean newFlagState;
       
    14 	
       
    15 	public ClientFlagsUpdate(String nick, String flags, boolean newFlagState) {
       
    16 		this.nick = nick;
       
    17 		this.flags = flags;
       
    18 		this.newFlagState = newFlagState;
       
    19 	}
       
    20 
       
    21 	public Player applyTo(Player p) {
       
    22 		return new Player(
       
    23 				p.name,
       
    24 				updatedFlag(FLAG_REGISTERED, p.registered),
       
    25 				updatedFlag(FLAG_ADMIN, p.admin));
       
    26 	}
       
    27 	
       
    28 	public PlayerInRoom applyTo(PlayerInRoom p) {
       
    29 		return new PlayerInRoom(
       
    30 				this.applyTo(p.player),
       
    31 				updatedFlag(FLAG_READY, p.ready),
       
    32 				updatedFlag(FLAG_CHIEF, p.roomChief));
       
    33 	}
       
    34 	
       
    35 	public boolean appliesTo(char flag) {
       
    36 		return flags.indexOf(flag) != -1;
       
    37 	}
       
    38 	
       
    39 	private boolean updatedFlag(char flag, boolean oldValue) {
       
    40 		return appliesTo(flag) ? newFlagState : oldValue;
       
    41 	}
       
    42 	
       
    43 	@Override
       
    44 	public String toString() {
       
    45 		return "ClientFlagsUpdate [nick=" + nick + ", flags=" + flags
       
    46 				+ ", newFlagState=" + newFlagState + "]";
       
    47 	}
       
    48 }