diff --git a/src/card/Card.java b/src/card/Card.java new file mode 100644 index 0000000..f772d66 --- /dev/null +++ b/src/card/Card.java @@ -0,0 +1,135 @@ +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 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 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(); + for(CardInfo ci : cardInfos){ + infoArray.put(ci.toJson()); + } + return infoArray; + } + + private void fromJson(JSONObject jo){ + // TODO: handle dummy card + int color = jo.getInt("color"); + int value = jo.getInt("value"); + JSONArray cardInfoArray = jo.getJSONArray("cardInfos"); + for(int i=0; i