package com.arretados.leveleditor.entities.layer; import com.arretados.leveleditor.DrawMode; import com.arretados.leveleditor.GameCanvas; import com.arretados.leveleditor.ResourceManager; import com.arretados.leveleditor.ResourceManager.Resource; import com.arretados.leveleditor.entities.Entity; import com.arretados.leveleditor.entities.EntityPanel; import java.awt.Graphics; import java.awt.Rectangle; import org.json.simple.JSONObject; public class Shrub extends Entity { private static float[][] SHRUB_SIZES = new float[][] { {1f, 0.6f} }; public static EntityPanel shrub_panel; //@Override public DrawMode getType() { return DrawMode.SHRUB; } private int shrubType; public Shrub(int x, int y) { super(x, y, DrawMode.SHRUB); shrubType = 0; } public Shrub(JSONObject json){ super((int) (Double.parseDouble(String.valueOf(json.get("x"))) * GameCanvas.METER_TO_PIXELS), (int) (Double.parseDouble(String.valueOf(json.get("y"))) * GameCanvas.METER_TO_PIXELS), DrawMode.SHRUB); } public int getShrubType() { return shrubType; } public void setShrubType(int shrubType) { this.shrubType = shrubType; } @Override public boolean collides(int x, int y) { Rectangle rect = new Rectangle( this.x - ((int) (GameCanvas.METER_TO_PIXELS * SHRUB_SIZES[shrubType][0]/2)), this.y - ((int) (GameCanvas.METER_TO_PIXELS * SHRUB_SIZES[shrubType][1]/2)), (int) (SHRUB_SIZES[shrubType][0] * GameCanvas.METER_TO_PIXELS), (int) (SHRUB_SIZES[shrubType][1] * GameCanvas.METER_TO_PIXELS)); return rect.contains(x, y); } @Override public void drawMyself(Graphics g) { g.drawImage(ResourceManager.getImageFor(Resource.SHRUB), x - ((int) (GameCanvas.METER_TO_PIXELS * SHRUB_SIZES[shrubType][0]/2)), y - ((int) (GameCanvas.METER_TO_PIXELS * SHRUB_SIZES[shrubType][1]/2)), (int) (SHRUB_SIZES[shrubType][0] * GameCanvas.METER_TO_PIXELS), (int) (SHRUB_SIZES[shrubType][1] * GameCanvas.METER_TO_PIXELS), null); } @Override public JSONObject toJSON() { JSONObject json = super.toJSON(); json.put("type", this.type.toString()); json.put("shrubType", shrubType); return json; } @Override public EntityPanel getEntityPanel() { return shrub_panel; } }