/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package com.arretados.leveleditor.entities; import com.arretados.leveleditor.DrawMode; import com.arretados.leveleditor.GameCanvas; import com.arretados.leveleditor.ResourceManager; import com.arretados.leveleditor.ResourceManager.Resource; import java.awt.Graphics; import java.awt.Rectangle; import org.json.simple.JSONObject; /** * * @author Bruno */ public final class Hole extends Entity{ private float HOLE_WIDTH = 1.3f; private float HOLE_HEIGHT = 0.4f; public static HolePanel panel; private float distance; public Hole(int x, int y) { this(x, y, 3f); } public Hole(int x, int y, float distance) { super(x, y, DrawMode.HOLE); this.distance = distance; } public Hole(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.BOX); this.setDistance( ((Double) Double.parseDouble( String.valueOf(json.get("distance")))).floatValue() ); } public float getDistance(){ return this.distance; } public void setDistance(float distance) { this.distance = distance; } @Override public boolean collides(int x, int y) { Rectangle rect = new Rectangle( this.x - (int) ((GameCanvas.METER_TO_PIXELS * (HOLE_WIDTH - distance) /2)), this.y - (int) ((GameCanvas.METER_TO_PIXELS * HOLE_HEIGHT/2)), (int) (HOLE_WIDTH * GameCanvas.METER_TO_PIXELS), (int) (HOLE_HEIGHT * GameCanvas.METER_TO_PIXELS)); if (rect.contains(x, y)) { return true; } rect = new Rectangle( this.x - (int) ((GameCanvas.METER_TO_PIXELS * (HOLE_WIDTH + distance) /2)), this.y - (int) ((GameCanvas.METER_TO_PIXELS * HOLE_HEIGHT/2)), (int) (HOLE_WIDTH * GameCanvas.METER_TO_PIXELS), (int) (HOLE_HEIGHT * GameCanvas.METER_TO_PIXELS)); return rect.contains(x, y); } @Override public void drawMyself(Graphics g) { g.drawImage(ResourceManager.getImageFor(Resource.HOLE), x - ((int) (GameCanvas.METER_TO_PIXELS * (HOLE_WIDTH - distance) / 2)), y - ((int) (GameCanvas.METER_TO_PIXELS * (HOLE_HEIGHT) /2)), (int) (HOLE_WIDTH * GameCanvas.METER_TO_PIXELS), (int) (HOLE_HEIGHT * GameCanvas.METER_TO_PIXELS), null); g.drawImage(ResourceManager.getImageFor(Resource.HOLE), x - ((int) (GameCanvas.METER_TO_PIXELS * (HOLE_WIDTH + distance) / 2)), y - ((int) (GameCanvas.METER_TO_PIXELS * (HOLE_HEIGHT) /2)), (int) (HOLE_WIDTH * GameCanvas.METER_TO_PIXELS), (int) (HOLE_HEIGHT * GameCanvas.METER_TO_PIXELS), null); } @Override public JSONObject toJSON() { JSONObject json = super.toJSON(); json.put("type", this.type.toString()); json.put("distance", distance); return json; } @Override public EntityPanel getEntityPanel() { return panel; } }