package card;
import java.util.ArrayList;
import java.util.List;
import org.json.JSONArray;
import org.json.JSONObject;
/*
* COLORS:
* GREEN
* RED
* YELLOW
* WHITE
* BLUE
* (COLORED)
*/
public class Card {
protected int color;
protected int value;
protected int id;
protected List<CardInfo> cardInfos;
protected boolean isSelected;
public static Card DUMMY_CARD = new Card();
static {
DUMMY_CARD.color = -1;
DUMMY_CARD.value = -1;
DUMMY_CARD.id = -1;
DUMMY_CARD.cardInfos = null;
}
public Card(int color, int value, int id){
this();
this.color = color;
this.value = value;
this.id = id;
}
public Card(){
cardInfos = new ArrayList<>();
}
public Card(JSONObject jo){
this();
fromJson(jo);
}
public void addCardInfo(int type, boolean is, int what, int from){
cardInfos.add(new CardInfo(type, is, what, from));
}
public List<CardInfo> getCardInfos(){
return cardInfos;
}
public String colorToText(){
return intColorToText(color);
}
public static String intColorToText(int id){
String color = "";
switch(id){
case 0:
color = "green";
break;
case 1:
color = "red";
break;
case 2:
color = "yellow";
break;
case 3:
color = "white";
break;
case 4:
color = "blue";
break;
}
return color;
}
public boolean isSelected(){
return isSelected;
}
public void setSelected(boolean set){
isSelected = set;
}
public int getColorInt(){
return color;
}
public int getValue(){
return value;
}
public int getId(){
return id;
}
public JSONObject toJson(){
// TODO: handle dummy card
JSONObject root = new JSONObject();
root.put("value", value);
root.put("id", id);
root.put("color", color);
root.put("cardInfos", cardInfosToJson());
return root;
}
private JSONArray cardInfosToJson(){
JSONArray infoArray = new JSONArray();
if(cardInfos == null) return infoArray;
for(CardInfo ci : cardInfos){
infoArray.put(ci.toJson());
}
return infoArray;
}
private void fromJson(JSONObject jo){
// TODO: handle dummy card
cardInfos = new ArrayList<>();
int color = jo.getInt("color");
int value = jo.getInt("value");
int id = jo.getInt("id");
JSONArray cardInfoArray = jo.getJSONArray("cardInfos");
for(int i=0; i<cardInfoArray.length(); ++i){
JSONObject cardInfo = cardInfoArray.getJSONObject(i);
CardInfo ci = new CardInfo(cardInfo);
cardInfos.add(ci);
}
this.color = color;
this.value = value;
this.id = id;
}
@Override
public String toString(){
return "[Color: " + color + "; Value: " + value + "; ID: " + id + "]";
}
}