diff --git a/maps/world1.map b/maps/world1.map index 2bc5e9c..34e6161 100644 Binary files a/maps/world1.map and b/maps/world1.map differ diff --git a/src/sig/DrawLoop.java b/src/sig/DrawLoop.java index b632fa9..00bdb47 100644 --- a/src/sig/DrawLoop.java +++ b/src/sig/DrawLoop.java @@ -122,8 +122,10 @@ public class DrawLoop { public static void Fill_Rect(byte[] p,byte col,double x,double y,double w,double h) { for (int xx=0;xx=0&&y+yy>=0&&x+xx[]{Double.class,Double.class}).newInstance(x,y)); + RabiClone.OBJ.add((Object)entity.getDeclaredConstructor(new Class[]{double.class,double.class}).newInstance(x,y)); } catch (InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException e) { e.printStackTrace(); diff --git a/src/sig/map/DataTile.java b/src/sig/map/DataTile.java index df44ad6..4fe174f 100644 --- a/src/sig/map/DataTile.java +++ b/src/sig/map/DataTile.java @@ -15,7 +15,9 @@ public enum DataTile { String description; Event event; - DataTile(){} + DataTile(){ + this.description=new String(""); + } DataTile(Event e) { this.description=e.getDescription(); this.event=e; diff --git a/src/sig/map/Map.java b/src/sig/map/Map.java index 1fbb6dd..c51e12c 100644 --- a/src/sig/map/Map.java +++ b/src/sig/map/Map.java @@ -27,12 +27,14 @@ public class Map { final public static int MAP_WIDTH=512; final public static int MAP_HEIGHT=288; + final public static int MAP_SCREENS_X=32; + final public static int MAP_SCREENS_Y=32; char[] tiles = new char[MAP_WIDTH*MAP_HEIGHT]; - byte[] views = new byte[(MAP_WIDTH/Tile.TILE_WIDTH)*(MAP_HEIGHT/Tile.TILE_HEIGHT)]; - byte[] backgrounds = new byte[(MAP_WIDTH/Tile.TILE_WIDTH)*(MAP_HEIGHT/Tile.TILE_HEIGHT)]; - byte[] colors = new byte[(MAP_WIDTH/Tile.TILE_WIDTH)*(MAP_HEIGHT/Tile.TILE_HEIGHT)]; - byte[] types = new byte[(MAP_WIDTH/Tile.TILE_WIDTH)*(MAP_HEIGHT/Tile.TILE_HEIGHT)]; + byte[] views = new byte[MAP_SCREENS_X*MAP_SCREENS_Y]; + byte[] backgrounds = new byte[MAP_SCREENS_X*MAP_SCREENS_Y]; + byte[] colors = new byte[MAP_SCREENS_X*MAP_SCREENS_Y]; + byte[] types = new byte[MAP_SCREENS_X*MAP_SCREENS_Y]; char[] data = new char[MAP_WIDTH*MAP_HEIGHT]; int eventTileCount=0; @@ -100,13 +102,15 @@ public class Map { case EVENT_DATA_COUNT: newMap.eventTileCount=stream.readInt(); readingData=EVENT_DATA; - iterationCount=newMap.eventTileCount; + iterationCount=newMap.eventTileCount+1; //It gets decreased by one after the loop. + System.out.println("Event tile count is "+(iterationCount-1)); break; case EVENT_DATA: int dataPacket = stream.readInt(); //First 14 bits are event info. Last 18 bits are index info. char event = (char)(dataPacket>>>18); int index = dataPacket&0b00000000000000111111111111111111; + System.out.println("Unpacked: "+((int)event)+" // x:"+(index%Map.MAP_WIDTH)+", y:"+(index/Map.MAP_WIDTH)); newMap.data[index]=event; break; } @@ -114,7 +118,7 @@ public class Map { if (iterationCount<=0) { readingData++; marker=0; - iterationCount=(MAP_WIDTH/Tile.TILE_WIDTH)*(MAP_HEIGHT/Tile.TILE_HEIGHT); + iterationCount=MAP_SCREENS_X*MAP_SCREENS_Y; } } stream.close(); @@ -139,11 +143,13 @@ public class Map { map.getMap().eventTileCount=stream.readInt(); int remainingCount = map.getMap().eventTileCount; + System.out.println("Found "+remainingCount+" events."); while (remainingCount-->0) { int dataPacket = stream.readInt(); //First 14 bits are event info. Last 18 bits are index info. char event = (char)(dataPacket>>>18); int index = dataPacket&0b00000000000000111111111111111111; + System.out.println("Unpacked: "+((int)event)+" // x:"+(index%Map.MAP_WIDTH)+", y:"+(index/Map.MAP_WIDTH)); map.getMap().data[index]=event; } stream.close(); diff --git a/src/sig/objects/EditorRenderer.java b/src/sig/objects/EditorRenderer.java index 5bab56d..153e267 100644 --- a/src/sig/objects/EditorRenderer.java +++ b/src/sig/objects/EditorRenderer.java @@ -122,6 +122,9 @@ public class EditorRenderer extends LevelRenderer{ } if (dataTileView) { drawMapTileForDataTileMode(p,x,y); + if (RabiClone.CURRENT_MAP.getDataTile(x, y)!=DataTile.NULL) { + DrawDataTile(p,x*Tile.TILE_WIDTH-this.getX(),y*Tile.TILE_HEIGHT-this.getY(),RabiClone.CURRENT_MAP.getDataTile(x, y)); + } } else { drawMapTileForEditorMode(x,y); } @@ -196,17 +199,15 @@ public class EditorRenderer extends LevelRenderer{ double tileX = x*Tile.TILE_WIDTH-this.getX(); double tileY = y*Tile.TILE_HEIGHT-this.getY(); DrawTransparentDataTile(p,tileX,tileY,selectedDataTile,PaletteColor.GRAPE); - Draw_Text(tileX+2,tileY-Font.PROFONT_12.getGlyphHeight()-2,new String(selectedTile.toString()),Font.PROFONT_12); - Draw_Text_Ext(tileX+2,tileY+Tile.TILE_HEIGHT+2,new String(RabiClone.CURRENT_MAP.getTile(x,y).toString()),Font.PROFONT_12,Alpha.ALPHA0,PaletteColor.CRIMSON); + Draw_Text_Ext(tileX+2,tileY+Tile.TILE_HEIGHT+2,selectedDataTile.getDescription(),Font.PROFONT_12,Alpha.ALPHA0,PaletteColor.CRIMSON); } } protected void DrawTransparentDataTile(byte[] p, double x, double y, DataTile tile,PaletteColor col) { Draw_Rect(p,col,x,y,Tile.TILE_WIDTH,Tile.TILE_HEIGHT); - Draw_Text_Ext(x+2,y+2,RabiClone.CURRENT_MAP.getDataTile((int)x,(int)y).getDescription(),Font.PROFONT_12,Alpha.ALPHA0,PaletteColor.WHITE); + Draw_Text_Ext(x+2,y+2,new String(tile.toString()),Font.PROFONT_12,Alpha.ALPHA0,PaletteColor.WHITE); } - @Override protected void DrawDataTile(byte[] p, double x, double y, DataTile tile) { DrawTransparentDataTile(p,x,y,tile,PaletteColor.MIDNIGHT_BLUE); } @@ -235,5 +236,7 @@ public class EditorRenderer extends LevelRenderer{ RabiClone.CURRENT_MAP.setBackground(tileX,tileY,Background.values()[(RabiClone.CURRENT_MAP.getBackground(tileX, tileY).ordinal()+1)%Background.values().length]); }break; } - } + } + + } diff --git a/src/sig/objects/Erinoah.java b/src/sig/objects/Erinoah.java index 5abcb64..e21da00 100644 --- a/src/sig/objects/Erinoah.java +++ b/src/sig/objects/Erinoah.java @@ -21,7 +21,6 @@ public class Erinoah extends AnimatedObject implements RenderedObject{ @Override public void draw(byte[] p) { - Draw_Animated_Sprite(16, 16, getAnimatedSpr(), getCurrentFrame()); } @Override diff --git a/src/sig/objects/LevelRenderer.java b/src/sig/objects/LevelRenderer.java index 9de73e4..f8c8324 100644 --- a/src/sig/objects/LevelRenderer.java +++ b/src/sig/objects/LevelRenderer.java @@ -2,6 +2,8 @@ package sig.objects; import java.awt.event.KeyEvent; +import javax.xml.crypto.Data; + import sig.RabiClone; import sig.engine.Action; import sig.engine.Alpha; @@ -60,9 +62,6 @@ public class LevelRenderer extends Object{ DrawTile(x*Tile.TILE_WIDTH-this.getX(),y*Tile.TILE_HEIGHT-this.getY(),RabiClone.CURRENT_MAP.getTile(x,y)); //System.out.println((x*Tile.TILE_WIDTH+(this.getX()%Tile.TILE_WIDTH) )+","+(y*Tile.TILE_HEIGHT+(this.getY()%Tile.TILE_HEIGHT))); } - if (RabiClone.CURRENT_MAP.getDataTile(x,y)!=DataTile.NULL) { - DrawDataTile(p,x*Tile.TILE_WIDTH-this.getX(),y*Tile.TILE_HEIGHT-this.getY(),RabiClone.CURRENT_MAP.getDataTile(x,y)); - } } } for (int i=0;i