android port: convert use of java.awt.Rectangle to own CityRect class
java.awt.Rectangle does not exist in the android SDK, so this patch replaces its use within the Micropolis engine code with a custom class with equivalent functionality. This way all the classes in micropolisj.engine can be compiled with the subset of the Java SDK that also exists in the Android SDK. git-svn-id: https://micropolis.googlecode.com/svn/trunk/micropolis-java@853 d9718cc8-9f43-0410-858b-315f434eb58c
This commit is contained in:
parent
6b899d096d
commit
7b68e1299d
7 changed files with 70 additions and 20 deletions
|
@ -1,6 +1,5 @@
|
|||
package micropolisj.engine;
|
||||
|
||||
import java.awt.Rectangle;
|
||||
import static micropolisj.engine.TileConstants.*;
|
||||
|
||||
class Bulldozer extends ToolStroke
|
||||
|
@ -13,7 +12,7 @@ class Bulldozer extends ToolStroke
|
|||
@Override
|
||||
protected void applyArea(ToolEffectIfc eff)
|
||||
{
|
||||
Rectangle b = getBounds();
|
||||
CityRect b = getBounds();
|
||||
|
||||
// scan selection area for rubble, forest, etc...
|
||||
for (int y = 0; y < b.height; y++) {
|
||||
|
|
54
src/micropolisj/engine/CityRect.java
Normal file
54
src/micropolisj/engine/CityRect.java
Normal file
|
@ -0,0 +1,54 @@
|
|||
// This file is part of MicropolisJ.
|
||||
// Copyright (C) 2013 Jason Long
|
||||
// Portions Copyright (C) 1989-2007 Electronic Arts Inc.
|
||||
//
|
||||
// MicropolisJ is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU GPLv3, with additional terms.
|
||||
// See the README file, included in this distribution, for details.
|
||||
|
||||
package micropolisj.engine;
|
||||
|
||||
public class CityRect
|
||||
{
|
||||
/** The X coordinate of the upper-left corner of the rectangle. */
|
||||
public int x;
|
||||
|
||||
/** The Y coordinate of the upper-left corner of the rectangle. */
|
||||
public int y;
|
||||
|
||||
public int width;
|
||||
public int height;
|
||||
|
||||
public CityRect()
|
||||
{
|
||||
}
|
||||
|
||||
public CityRect(int x, int y, int width, int height)
|
||||
{
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
this.width = width;
|
||||
this.height = height;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj)
|
||||
{
|
||||
if (obj instanceof CityRect) {
|
||||
CityRect rhs = (CityRect)obj;
|
||||
return this.x == rhs.x &&
|
||||
this.y == rhs.y &&
|
||||
this.width == rhs.width &&
|
||||
this.height == rhs.height;
|
||||
}
|
||||
else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
return "["+x+","+y+","+width+"x"+height+"]";
|
||||
}
|
||||
}
|
|
@ -1,6 +1,5 @@
|
|||
package micropolisj.engine;
|
||||
|
||||
import java.awt.Rectangle;
|
||||
import static micropolisj.engine.TileConstants.*;
|
||||
|
||||
class RoadLikeTool extends ToolStroke
|
||||
|
@ -27,7 +26,7 @@ class RoadLikeTool extends ToolStroke
|
|||
{
|
||||
boolean anyChange = false;
|
||||
|
||||
Rectangle b = getBounds();
|
||||
CityRect b = getBounds();
|
||||
for (int i = b.height - 1; i >= 0; i--) {
|
||||
for (int j = b.width - 1; j >= 0; j--) {
|
||||
TranslatedToolEffect tte = new TranslatedToolEffect(eff, b.x+j, b.y+i);
|
||||
|
@ -41,7 +40,7 @@ class RoadLikeTool extends ToolStroke
|
|||
{
|
||||
boolean anyChange = false;
|
||||
|
||||
Rectangle b = getBounds();
|
||||
CityRect b = getBounds();
|
||||
for (int i = 0; i < b.height; i++) {
|
||||
for (int j = 0; j < b.width; j++) {
|
||||
TranslatedToolEffect tte = new TranslatedToolEffect(eff, b.x+j, b.y+i);
|
||||
|
@ -52,7 +51,7 @@ class RoadLikeTool extends ToolStroke
|
|||
}
|
||||
|
||||
@Override
|
||||
public Rectangle getBounds()
|
||||
public CityRect getBounds()
|
||||
{
|
||||
// constrain bounds to be a rectangle with
|
||||
// either width or height equal to one.
|
||||
|
@ -62,7 +61,7 @@ class RoadLikeTool extends ToolStroke
|
|||
|
||||
if (Math.abs(xdest-xpos) >= Math.abs(ydest-ypos)) {
|
||||
// horizontal line
|
||||
Rectangle r = new Rectangle();
|
||||
CityRect r = new CityRect();
|
||||
r.x = Math.min(xpos, xdest);
|
||||
r.width = Math.abs(xdest-xpos) + 1;
|
||||
r.y = ypos;
|
||||
|
@ -71,7 +70,7 @@ class RoadLikeTool extends ToolStroke
|
|||
}
|
||||
else {
|
||||
// vertical line
|
||||
Rectangle r = new Rectangle();
|
||||
CityRect r = new CityRect();
|
||||
r.x = xpos;
|
||||
r.width = 1;
|
||||
r.y = Math.min(ypos, ydest);
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
package micropolisj.engine;
|
||||
|
||||
import java.awt.Rectangle;
|
||||
import java.util.*;
|
||||
import static micropolisj.engine.TileConstants.*;
|
||||
|
||||
|
@ -45,9 +44,9 @@ public class ToolPreview implements ToolEffectIfc
|
|||
}
|
||||
}
|
||||
|
||||
public Rectangle getBounds()
|
||||
public CityRect getBounds()
|
||||
{
|
||||
return new Rectangle(
|
||||
return new CityRect(
|
||||
-offsetX,
|
||||
-offsetY,
|
||||
getWidth(),
|
||||
|
|
|
@ -8,7 +8,6 @@
|
|||
|
||||
package micropolisj.engine;
|
||||
|
||||
import java.awt.Rectangle;
|
||||
import static micropolisj.engine.TileConstants.*;
|
||||
|
||||
public class ToolStroke
|
||||
|
@ -53,7 +52,7 @@ public class ToolStroke
|
|||
|
||||
protected void applyArea(ToolEffectIfc eff)
|
||||
{
|
||||
Rectangle r = getBounds();
|
||||
CityRect r = getBounds();
|
||||
|
||||
for (int i = 0; i < r.height; i += tool.getHeight()) {
|
||||
for (int j = 0; j < r.width; j += tool.getWidth()) {
|
||||
|
@ -111,9 +110,9 @@ public class ToolStroke
|
|||
this.ydest = ydest;
|
||||
}
|
||||
|
||||
public Rectangle getBounds()
|
||||
public CityRect getBounds()
|
||||
{
|
||||
Rectangle r = new Rectangle();
|
||||
CityRect r = new CityRect();
|
||||
|
||||
r.x = xpos;
|
||||
if (tool.getWidth() >= 3) {
|
||||
|
|
|
@ -1265,7 +1265,7 @@ public class MainWindow extends JFrame
|
|||
if (h >= 3)
|
||||
y--;
|
||||
|
||||
drawingArea.setToolCursor(new Rectangle(x,y,w,h), currentTool);
|
||||
drawingArea.setToolCursor(new CityRect(x,y,w,h), currentTool);
|
||||
}
|
||||
|
||||
private void onToolExited(MouseEvent ev)
|
||||
|
|
|
@ -243,12 +243,12 @@ public class MicropolisDrawingArea extends JComponent
|
|||
|
||||
static class ToolCursor
|
||||
{
|
||||
Rectangle rect;
|
||||
CityRect rect;
|
||||
Color borderColor;
|
||||
Color fillColor;
|
||||
}
|
||||
|
||||
public void setToolCursor(Rectangle newRect, MicropolisTool tool)
|
||||
public void setToolCursor(CityRect newRect, MicropolisTool tool)
|
||||
{
|
||||
ToolCursor tp = new ToolCursor();
|
||||
tp.rect = newRect;
|
||||
|
@ -292,7 +292,7 @@ public class MicropolisDrawingArea extends JComponent
|
|||
public void setToolPreview(ToolPreview newPreview)
|
||||
{
|
||||
if (toolPreview != null) {
|
||||
Rectangle b = toolPreview.getBounds();
|
||||
CityRect b = toolPreview.getBounds();
|
||||
Rectangle r = new Rectangle(
|
||||
b.x*TILE_WIDTH,
|
||||
b.y*TILE_HEIGHT,
|
||||
|
@ -305,7 +305,7 @@ public class MicropolisDrawingArea extends JComponent
|
|||
toolPreview = newPreview;
|
||||
if (toolPreview != null) {
|
||||
|
||||
Rectangle b = toolPreview.getBounds();
|
||||
CityRect b = toolPreview.getBounds();
|
||||
Rectangle r = new Rectangle(
|
||||
b.x*TILE_WIDTH,
|
||||
b.y*TILE_HEIGHT,
|
||||
|
|
Reference in a new issue