Add base for sector repository; clarify naming.

This commit is contained in:
Major-
2013-11-09 13:49:05 +00:00
parent 0544ad7e2c
commit fb422bcfe1
12 changed files with 123 additions and 88 deletions
@@ -33,4 +33,4 @@ public final class RegionChangeEvent extends Event {
return position;
}
}
}
+25 -32
View File
@@ -60,48 +60,42 @@ public final class Position {
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (this == obj) {
return true;
}
if (getClass() != obj.getClass()) {
return false;
}
Position other = (Position) obj;
if (height != other.height) {
return false;
}
if (x != other.x) {
return false;
}
if (y != other.y) {
if (height != other.height || x != other.x || y != other.y) {
return false;
}
return true;
}
/**
* Gets the x coordinate of the central region.
* Gets the x coordinate of the central sector.
*
* @return The x coordinate of the central region.
* @return The x coordinate of the central sector.
*/
public int getCentralRegionX() {
public int getCentralSectorX() {
return x / 8;
}
/**
* Gets the y coordinate of the central region.
* Gets the y coordinate of the central sector.
*
* @return The y coordinate of the central region.
* @return The y coordinate of the central sector.
*/
public int getCentralRegionY() {
public int getCentralSectorY() {
return y / 8;
}
/**
* Gets the distance between this position and another position. Only X and Y are considered (i.e. 2 dimensions).
* Gets the distance between this position and another position. Only x and y are considered (i.e. 2 dimensions).
*
* @param other The other position.
* @return The distance.
@@ -109,7 +103,6 @@ public final class Position {
public int getDistance(Position other) {
int deltaX = x - other.x;
int deltaY = y - other.y;
// TODO will rounding up interfere with other stuff?
return (int) Math.ceil(Math.sqrt(deltaX * deltaX + deltaY * deltaY));
}
@@ -123,7 +116,7 @@ public final class Position {
}
/**
* Gets the x coordinate inside the region of this position.
* Gets the x coordinate inside the sector of this position.
*
* @return The local x coordinate.
*/
@@ -132,17 +125,17 @@ public final class Position {
}
/**
* Gets the local x coordinate inside the region of the {@code base} position.
* Gets the local x coordinate inside the sector of the {@code base} position.
*
* @param base The base position.
* @return The local x coordinate.
*/
public int getLocalX(Position base) {
return x - base.getTopLeftRegionX() * 8;
return x - base.getTopLeftSectorX() * 8;
}
/**
* Gets the y coordinate inside the region of this position.
* Gets the y coordinate inside the sector of this position.
*
* @return The local y coordinate.
*/
@@ -151,13 +144,13 @@ public final class Position {
}
/**
* Gets the local y coordinate inside the region of the {@code base} position.
* Gets the local y coordinate inside the sector of the {@code base} position.
*
* @param base The base position.
* @return The local y coordinate.
*/
public int getLocalY(Position base) {
return y - base.getTopLeftRegionY() * 8;
return y - base.getTopLeftSectorY() * 8;
}
/**
@@ -173,20 +166,20 @@ public final class Position {
}
/**
* Gets the x coordinate of the region.
* Gets the x coordinate of the sector.
*
* @return The region x coordinate.
* @return The sector x coordinate.
*/
public int getTopLeftRegionX() {
public int getTopLeftSectorX() {
return x / 8 - 6;
}
/**
* Gets the y coordinate of the region.
* Gets the y coordinate of the sector.
*
* @return The region y coordinate.
* @return The sector y coordinate.
*/
public int getTopLeftRegionY() {
public int getTopLeftSectorY() {
return y / 8 - 6;
}
@@ -228,7 +221,7 @@ public final class Position {
@Override
public String toString() {
return Position.class.getName() + " [x=" + x + ", y=" + y + ", height=" + height + "]";
return Position.class.getName() + " [x= " + x + ", y= " + y + ", height= " + height + "]";
}
}
}
@@ -1,15 +0,0 @@
package org.apollo.game.model.region;
/**
* Represents an 8x8 region.
*
* @author Graham
*/
public final class Region {
/**
* The width and height of the region in tiles.
*/
public static final int REGION_SIZE = 8;
}
@@ -1,10 +0,0 @@
package org.apollo.game.model.region;
/**
* Manages the repository of regions.
*
* @author Graham
*/
public class RegionRepository {
}
@@ -1,7 +0,0 @@
/**
* Contains classes which represent in-game regions, blocks of 8x8 tiles which
* are grouped, and can be used to store ground items, temporary objects, etc.
* efficiently.
*/
package org.apollo.game.model.region;
@@ -0,0 +1,57 @@
package org.apollo.game.model.sector;
/**
* Represents an 8x8 area of the map.
*
* @author Graham
*/
public final class Sector {
/**
* The width and height of the sector, in tiles.
*/
public static final int SECTOR_SIZE = 8;
/**
* The {@link SectorCoordinates} of this sector.
*/
private final SectorCoordinates coordinates;
/**
* Creates a new sector.
*
* @param x The x coordinate of the sector.
* @param y The y coordinate of the sector.
*/
public Sector(int x, int y) {
this(new SectorCoordinates(x, y));
}
/**
* Creates a new sector with the specified {@link SectorCoordinates}.
*
* @param coordinates The coordinates.
*/
public Sector(SectorCoordinates coordinates) {
this.coordinates = coordinates;
}
/**
* Gets the x coordinate of this sector.
*
* @return The x coordinate.
*/
public int getX() {
return coordinates.getX();
}
/**
* Gets the y coordinate of this sector.
*
* @return The y coordinate.
*/
public int getY() {
return coordinates.getY();
}
}
@@ -1,29 +1,29 @@
package org.apollo.game.model.region;
package org.apollo.game.model.sector;
/**
* An immutable class which contains the coordinates of a region.
* An immutable class representing the coordinates of a sector.
*
* @author Graham
*/
public final class RegionCoordinates {
public final class SectorCoordinates {
/**
* The X coordinate.
* The x coordinate.
*/
private final int x;
/**
* The Y coordinate.
* The y coordinate.
*/
private final int y;
/**
* Creates the region coordinates.
* Creates the sector coordinates.
*
* @param x The x coordinate.
* @param y The y coordinate.
*/
public RegionCoordinates(int x, int y) {
public SectorCoordinates(int x, int y) {
this.x = x;
this.y = y;
}
@@ -36,29 +36,26 @@ public final class RegionCoordinates {
if (getClass() != obj.getClass()) {
return false;
}
final RegionCoordinates other = (RegionCoordinates) obj;
if (x != other.x) {
return false;
}
if (y != other.y) {
final SectorCoordinates other = (SectorCoordinates) obj;
if (x != other.x || y != other.y) {
return false;
}
return true;
}
/**
* Gets the X coordinate.
* Gets the x coordinate.
*
* @return The X coordinate.
* @return The x coordinate.
*/
public int getX() {
return x;
}
/**
* Gets the Y coordinate.
* Gets the y coordinate.
*
* @return The Y coordinate.
* @return The y coordinate.
*/
public int getY() {
return y;
@@ -72,4 +69,4 @@ public final class RegionCoordinates {
return hash;
}
}
}
@@ -0,0 +1,10 @@
package org.apollo.game.model.sector;
/**
* A repository of sectors.
*
* @author Graham
*/
public class SectorRepository {
}
@@ -0,0 +1,5 @@
/**
* Contains classes which represent in-game sectors - blocks of 8x8 tiles used to store ground items, temporary objects, etc.
* efficiently.
*/
package org.apollo.game.model.sector;
@@ -16,10 +16,11 @@ public final class RegionChangeEventEncoder extends EventEncoder<RegionChangeEve
@Override
public GamePacket encode(RegionChangeEvent event) {
System.out.println("Sending region change event.");
GamePacketBuilder builder = new GamePacketBuilder(73);
builder.put(DataType.SHORT, DataTransformation.ADD, event.getPosition().getCentralRegionX());
builder.put(DataType.SHORT, event.getPosition().getCentralRegionY());
builder.put(DataType.SHORT, DataTransformation.ADD, event.getPosition().getCentralSectorX());
builder.put(DataType.SHORT, event.getPosition().getCentralSectorY());
return builder.toGamePacket();
}
}
}
@@ -18,9 +18,9 @@ public final class RegionChangeEventEncoder extends EventEncoder<RegionChangeEve
@Override
public GamePacket encode(RegionChangeEvent event) {
GamePacketBuilder builder = new GamePacketBuilder(222);
builder.put(DataType.SHORT, event.getPosition().getCentralRegionY());
builder.put(DataType.SHORT, DataOrder.LITTLE, DataTransformation.ADD, event.getPosition().getCentralRegionX());
builder.put(DataType.SHORT, event.getPosition().getCentralSectorY());
builder.put(DataType.SHORT, DataOrder.LITTLE, DataTransformation.ADD, event.getPosition().getCentralSectorX());
return builder.toGamePacket();
}
}
}