From 489186c077cc4dae5f075cad1746ba64854af9d9 Mon Sep 17 00:00:00 2001 From: "sigonasr2, Sig, Sigo" Date: Mon, 13 Jun 2022 18:17:02 +0000 Subject: [PATCH] Draw data tiles on the grid Co-authored-by: r3cp3ct <45179536+r3cp3ct@users.noreply.github.com> Co-authored-by: sigonasr2 --- src/sig/map/DataTile.java | 3 +++ src/sig/map/Maps.java | 9 ++++++++ src/sig/objects/EditorRenderer.java | 33 +++++++++++++++++++++++++---- src/sig/objects/LevelRenderer.java | 9 ++++++-- 4 files changed, 48 insertions(+), 6 deletions(-) diff --git a/src/sig/map/DataTile.java b/src/sig/map/DataTile.java index 5c42a8b..d2db68e 100644 --- a/src/sig/map/DataTile.java +++ b/src/sig/map/DataTile.java @@ -15,4 +15,7 @@ public enum DataTile { DataTile(java.lang.String s) { this.description=new String(s); } + public String getDescription() { + return description; + } } diff --git a/src/sig/map/Maps.java b/src/sig/map/Maps.java index 2990405..5df53fd 100644 --- a/src/sig/map/Maps.java +++ b/src/sig/map/Maps.java @@ -46,6 +46,15 @@ public enum Maps { } } + public DataTile getDataTile(int x,int y) { + int index = y*Map.MAP_WIDTH+x; + if (index<0||index>=this.map.data.length) { + return DataTile.NULL; + } else { + return DataTile.values()[this.map.data[index]]; + } + } + public View getView(int x,int y) { int index = (y/Tile.TILE_SCREEN_COUNT_Y)*(Map.MAP_WIDTH/Tile.TILE_WIDTH)+x/Tile.TILE_SCREEN_COUNT_X; if (index<0||index>=this.map.views.length) { diff --git a/src/sig/objects/EditorRenderer.java b/src/sig/objects/EditorRenderer.java index 86b7e34..ea21919 100644 --- a/src/sig/objects/EditorRenderer.java +++ b/src/sig/objects/EditorRenderer.java @@ -2,18 +2,17 @@ package sig.objects; import java.awt.event.MouseEvent; import java.io.IOException; -import java.awt.event.KeyEvent; import sig.RabiClone; import sig.engine.Action; import sig.engine.Alpha; import sig.engine.Font; -import sig.engine.Key; import sig.engine.MouseScrollValue; import sig.engine.PaletteColor; import sig.engine.Panel; import sig.engine.String; import sig.map.Background; +import sig.map.DataTile; import sig.map.Map; import sig.map.Tile; import sig.map.View; @@ -22,6 +21,7 @@ import sig.map.Type; public class EditorRenderer extends LevelRenderer{ Tile selectedTile = Tile.WALL; + DataTile selectedDataTile = DataTile.BUN1; String messageLog = new String(); final static long MESSAGE_TIME = 5000; @@ -110,7 +110,11 @@ public class EditorRenderer extends LevelRenderer{ if (x<0||x>Map.MAP_WIDTH) { continue; } - drawMapTileForEditorMode(x,y); + if (dataTileView) { + drawMapTileForDataTileMode(p,x,y); + } else { + drawMapTileForEditorMode(x,y); + } } } for (int y=(int)(this.getY()/Tile.TILE_HEIGHT);y<(int)(RabiClone.BASE_HEIGHT/Tile.TILE_HEIGHT+this.getY()/Tile.TILE_HEIGHT+1);y++) { @@ -163,7 +167,6 @@ public class EditorRenderer extends LevelRenderer{ } } - @Override protected void drawMapTileForEditorMode(int x, int y) { int tilerX = (int)(RabiClone.MOUSE_POS.getX()+getX())/Tile.TILE_WIDTH; int tilerY = (int)(RabiClone.MOUSE_POS.getY()+getY())/Tile.TILE_HEIGHT; @@ -176,6 +179,28 @@ public class EditorRenderer extends LevelRenderer{ } } + protected void drawMapTileForDataTileMode(byte[] p, int x, int y) { + int tilerX = (int)(RabiClone.MOUSE_POS.getX()+getX())/Tile.TILE_WIDTH; + int tilerY = (int)(RabiClone.MOUSE_POS.getY()+getY())/Tile.TILE_HEIGHT; + if (x==tilerX&&y==tilerY) { + 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); + } + } + + 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); + } + + @Override + protected void DrawDataTile(byte[] p, double x, double y, DataTile tile) { + DrawTransparentDataTile(p,x,y,tile,PaletteColor.MIDNIGHT_BLUE); + } + @Override @SuppressWarnings("incomplete-switch") public void KeyPressed(Action a) { diff --git a/src/sig/objects/LevelRenderer.java b/src/sig/objects/LevelRenderer.java index 02cc2f4..f1a87ab 100644 --- a/src/sig/objects/LevelRenderer.java +++ b/src/sig/objects/LevelRenderer.java @@ -15,6 +15,7 @@ import sig.engine.objects.AnimatedObject; import sig.engine.objects.Object; import sig.engine.String; import sig.map.Background; +import sig.map.DataTile; import sig.map.Map; import sig.map.Tile; @@ -43,6 +44,9 @@ 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)); + } } } if (RabiClone.player!=null) { @@ -83,8 +87,6 @@ public class LevelRenderer extends Object{ //RenderCollisionGrid(p); } - protected void drawMapTileForEditorMode(int x, int y) {} - /** * Draws an object where its sprite is centered among its position and drawn relative to the camera position. * @param object @@ -105,6 +107,9 @@ public class LevelRenderer extends Object{ Draw_Sprite_Partial(x,y, tile.getSpriteSheetX()*tile.getTileWidth(), tile.getSpriteSheetY()*tile.getTileHeight(), tile.getTileWidth(), tile.getTileHeight(), getSprite(), 0, Transform.NONE); } + protected void DrawDataTile(byte[] p, double x, double y, DataTile tile) { + } + protected void DrawTransparentTile(double x, double y, Tile tile, Alpha alpha) { Draw_Sprite_Partial_Ext(x,y, tile.getSpriteSheetX()*tile.getTileWidth(), tile.getSpriteSheetY()*tile.getTileHeight(), tile.getTileWidth(), tile.getTileHeight(), getSprite(), alpha, Transform.NONE); }