Skip to content

Commit

Permalink
got tile transfer between worlds to work!
Browse files Browse the repository at this point in the history
  • Loading branch information
drafkind committed Apr 16, 2013
1 parent 4902ac5 commit 830bfd1
Show file tree
Hide file tree
Showing 2 changed files with 62 additions and 13 deletions.
Expand Up @@ -74,4 +74,11 @@ abstract class InputManagerGameState extends BasicGameState {
topLevelContainer,
new MouseMotionEventPayload(mButtonHeld, oldx, oldy, newx, newy)));
}
}

override def keyPressed(key:Int, character:Char):Unit = {
doEvent(
Event.KEY_PRESSED.spawn(
topLevelContainer,
new KeyPressedEventPayload(key, character)));
}
}
Expand Up @@ -137,12 +137,15 @@ class TileTable(baseTileImage:Image, initialTileCount:Int) extends Component {
endX = mouseEvent.x;
endY = mouseEvent.y;

var x1 = scala.math.min(startX, endX) + offsetX;
var x2 = scala.math.max(startX, endX) + offsetX;
var y1 = scala.math.min(startY, endY) + offsetY;
var y2 = scala.math.max(startY, endY) + offsetY;
val left = getInt(Component.LEFT);
val top = getInt(Component.TOP);

val x1 = scala.math.min(startX, endX) + offsetX - left;
val x2 = scala.math.max(startX, endX) + offsetX - left;
val y1 = scala.math.min(startY, endY) + offsetY - top;
val y2 = scala.math.max(startY, endY) + offsetY - top;

var fakeBin = new Bin(x1, y1, x2-x1, y2-y1);
val fakeBin = new Bin(x1, y1, x2-x1, y2-y1);
for (tile <- tiles) {
if (fakeBin.contains(tile)) {
tile.highlighted = true;
Expand Down Expand Up @@ -170,7 +173,7 @@ class TileTable(baseTileImage:Image, initialTileCount:Int) extends Component {
var row = 0;
var column = 0;

for (tile <- tiles) {
for (tile <- tiles) {
tile.x = TileTable.MARGIN + (column * (TerrainLbxReader.TILE_WIDTH + TileTable.MARGIN));
tile.y = TileTable.MARGIN + (row * (TerrainLbxReader.TILE_HEIGHT + TileTable.MARGIN));

Expand All @@ -189,8 +192,17 @@ class TileTable(baseTileImage:Image, initialTileCount:Int) extends Component {

var screenWidth = maxX - minX;
var screenHeight = maxY - minY;
var horizBinCount = screenWidth / TileTable.BIN_WIDTH;
var vertBinCount = screenHeight / TileTable.BIN_HEIGHT;

def sign(x:Int) =
x match {
case y if y < 0 => -1;
case z if z > 0 => 1;
case _ => 0;
}

var horizBinCount = (screenWidth / TileTable.BIN_WIDTH) + sign(screenWidth % TileTable.BIN_WIDTH);
var vertBinCount = (screenHeight / TileTable.BIN_HEIGHT) + sign(screenHeight % TileTable.BIN_HEIGHT);
bins = List[Bin]();
for (j <- 0 until vertBinCount) {
for (i <- 0 until horizBinCount) {

Expand Down Expand Up @@ -253,8 +265,8 @@ class TileTable(baseTileImage:Image, initialTileCount:Int) extends Component {

val tX = (whichTile % TerrainLbxReader.SPRITE_SHEET_WIDTH) * TerrainLbxReader.TILE_WIDTH;
val tY = (whichTile / TerrainLbxReader.SPRITE_SHEET_WIDTH) * TerrainLbxReader.TILE_HEIGHT;
val dX = t.x - (offsetX + dragx);
val dY = t.y - (offsetY + dragy);
val dX = left + t.x - (offsetX + dragx);
val dY = top + t.y - (offsetY + dragy);

baseTileImage.drawEmbedded(
dX, dY, dX + TerrainLbxReader.TILE_WIDTH, dY + TerrainLbxReader.TILE_HEIGHT,
Expand Down Expand Up @@ -286,6 +298,24 @@ class TileTable(baseTileImage:Image, initialTileCount:Int) extends Component {

this;
}

def moveSelectedTilesTo(other:TileTable):Unit = {
for (t <- tiles) {
if (t.highlighted) {
other.addTile(t.index);
}
}

tiles = tiles.filterNot(t => t.highlighted);

layout();
other.layout();
}

def addTile(tileIndex:Int) = {
val tile = new Tile(0, 0, tileIndex, false, 0, 0);
tiles = tiles + tile;
}
}

class PlaneSelectionState(val imageLibrarian:ImageLibrarian,
Expand All @@ -309,13 +339,13 @@ class PlaneSelectionState(val imageLibrarian:ImageLibrarian,
Component.LEFT -> 0,
Component.TOP -> 0);

val arcanusTerrainTiles = new TileTable(baseTileImage, TerrainLbxReader.TILE_COUNT);
val arcanusTerrainTiles = new TileTable(baseTileImage, 0 /*TerrainLbxReader.TILE_COUNT*/);
arcanusTerrainTiles.set(
TileTable.LINE_COLOR -> 206,
Component.WIDTH -> VisualMetadataEditor.WIDTH,
Component.HEIGHT -> VisualMetadataEditor.HEIGHT/2);

val myrrorTerrainTiles = new TileTable(baseTileImage, 0);
val myrrorTerrainTiles = new TileTable(baseTileImage, TerrainLbxReader.TILE_COUNT /*0*/);
myrrorTerrainTiles.set(
TileTable.BACKGROUND_COLOR -> 133,
TileTable.LINE_COLOR -> 206,
Expand All @@ -329,6 +359,18 @@ class PlaneSelectionState(val imageLibrarian:ImageLibrarian,

add(container);
add(gameButton);

listen(Event.KEY_PRESSED, (event:Event) => {
val keyEvent = event.payload.asInstanceOf[KeyPressedEventPayload];
println(keyEvent.key);
if (keyEvent.key == 200) {
myrrorTerrainTiles.moveSelectedTilesTo(arcanusTerrainTiles);
} else if (keyEvent.key == 208) {

arcanusTerrainTiles.moveSelectedTilesTo(myrrorTerrainTiles);
}
Some(this);
});
}

override def update(container:GameContainer, game:StateBasedGame, delta:Int):Unit = {
Expand Down

0 comments on commit 830bfd1

Please sign in to comment.