Newer
Older
hanabi-networking / src / player / BasePlayer.java
package player;

import org.json.JSONArray;
import org.json.JSONObject;

import card.Card;
import server.ServerGame.PROTOCOL;

public class BasePlayer {
	protected int id;
	protected String name;
	protected Card[] cards;
	public final PROTOCOL PROTO;

	public BasePlayer(int id, int nrOfCards){
		this(id, nrOfCards, "");
	}
	
	public BasePlayer(int id, int nrOfCards, String name){
		this();
		this.id = id;
		this.cards = new Card[nrOfCards];
		this.name = name;
	}
	
	public BasePlayer(JSONObject jo){
		this();
		fromJson(jo);
	}
	
	private BasePlayer() {
		PROTO = PROTOCOL.VIBE_DUMB;
	}

	public void setCards(JSONArray ja){
		cards = new Card[ja.length()];
		for(int i=0; i<ja.length(); ++i){
			JSONObject card = ja.getJSONObject(i);
			Card c = new Card(card);
			cards[i] = c;
		}
	}

	public void setCard(int index, Card c){
		cards[index] = c;
	}
	
	public Card getCard(int index){
		return cards[index];
	}

	public Card[] getCards(){
		return cards;
	}

	public String getName(){
		return name;
	}

	public JSONObject toJson(){
		JSONObject root = new JSONObject();
		root.put("name", name);
		root.put("id",  id);
		root.put("cards", cardsToJson());
		return root;
	}
	
	private JSONArray cardsToJson(){
		JSONArray cardArray = new JSONArray();
		for(Card c : cards){
			cardArray.put(c.toJson());
		}
		return cardArray;
	}
	
	private void fromJson(JSONObject jo){
		int id = jo.getInt("id");
		String name = jo.getString("name");
		setCards(jo.getJSONArray("cards"));
		this.id = id;
		this.name = name;
	}
}