package com.angrykings; import com.angrykings.cannons.Cannonball; import com.angrykings.castles.Castle; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.util.ArrayList; public class Keyframe implements IJsonSerializable { private double timestampSec; private KeyframeData cannonballData; private ArrayList<KeyframeData> castleBlocksData; public Keyframe() { this.castleBlocksData = new ArrayList<KeyframeData>(); } public Keyframe(JSONObject json) throws JSONException { this(); this.fromJson(json); } public Keyframe(double timestampSec, Cannonball cannonball, Castle castle) throws JSONException { this(); this.timestampSec = timestampSec; this.cannonballData = cannonball.getKeyframeData(); this.castleBlocksData = castle.getKeyframeData(); } public double getTimestampSec() { return timestampSec; } public KeyframeData getCannonballKeyframeData() { return this.cannonballData; } public ArrayList<KeyframeData> getCastleKeyframeData() { return this.castleBlocksData; } @Override public JSONObject toJson() throws JSONException { JSONObject json = new JSONObject(); json.put("t", this.timestampSec); json.put("ball", this.cannonballData.toJson()); JSONArray blocksJson = new JSONArray(); for(KeyframeData kd : this.castleBlocksData) blocksJson.put(kd.toJson()); json.put("castle", blocksJson); return json; } @Override public void fromJson(JSONObject json) throws JSONException { try { this.timestampSec = json.getDouble("t"); this.cannonballData = new KeyframeData(json.getJSONObject("ball")); this.castleBlocksData.clear(); JSONArray blocks = json.getJSONArray("castle"); for(int i = 0; i < blocks.length(); i++) { this.castleBlocksData.add(new KeyframeData(blocks.getJSONObject(i))); } } catch (JSONException e) { e.printStackTrace(); } } }