Make selected drawn tile be transparent. Add boundary building code

Co-authored-by: r3cp3ct <45179536+r3cp3ct@users.noreply.github.com>
Co-authored-by: sigonasr2 <sigonasr2@gmail.com>
main
sigonasr2 3 years ago
parent dc048c8fd7
commit f9b0aadd30
  1. 31
      src/sig/DrawLoop.java
  2. 4
      src/sig/engine/Object.java
  3. 15
      src/sig/objects/LevelRenderer.java

@ -47,6 +47,37 @@ public class DrawLoop {
}
}
public static void Draw_Sprite_Partial_Ext(double x, double y, double xOffset, double yOffset, double w, double h, Sprite sprite, int alpha){
int[] p = panel.pixel;
for(int X=(int)xOffset;X<(int)(w+xOffset);X++){
for(int Y=(int)yOffset;Y<(int)(h+yOffset);Y++){
if (X+x-xOffset<0||Y+y-yOffset<0||X-xOffset+x>=RabiClone.BASE_WIDTH||Y-yOffset+y>=RabiClone.BASE_HEIGHT) {
continue;
} else {
int index = (Y-(int)yOffset+(int)y)*RabiClone.BASE_WIDTH+X-(int)xOffset+(int)x;
if (index<0||index>=p.length||p[index]==sprite.getBi_array()[Y*sprite.getWidth()+X]) {
continue;
} else {
if (alpha==255) {
Draw(p,index,sprite.getBi_array()[Y*sprite.getWidth()+X],true);
} else {
int oldAlpha = sprite.getBi_array()[Y*sprite.getWidth()+X]>>>24;
if (oldAlpha==0) {
Draw(p,index,sprite.getBi_array()[Y*sprite.getWidth()+X],true);
} else
if (oldAlpha==255) {
Draw(p,index,(sprite.getBi_array()[Y*sprite.getWidth()+X]&0x00FFFFFF)|(alpha<<24),true);
} {
Draw(p,index,(sprite.getBi_array()[Y*sprite.getWidth()+X]&0x00FFFFFF)|((int)((alpha/255d)*oldAlpha)<<24),true);
}
}
//Draw(p,index,sprite.getBi_array()[Y*sprite.getWidth()+X],false);
}
}
}
}
}
public static void Draw(int[] canvas,int index, int col,boolean transparency) {
if (!transparency) {
canvas[index]=col;

@ -58,6 +58,10 @@ public abstract class Object implements GameEntity{
DrawLoop.Draw_Sprite_Partial(x,y,xOffset,yOffset,w,h,sprite);
}
protected void Draw_Sprite_Partial_Ext(double x, double y, double xOffset, double yOffset, double w, double h, Sprite sprite, int alpha){
DrawLoop.Draw_Sprite_Partial_Ext(x,y,xOffset,yOffset,w,h,sprite,alpha);
}
protected boolean KeyHeld(int key) {
return panel.KEYS.getOrDefault(key,false);
}

@ -8,6 +8,7 @@ import sig.engine.MouseScrollValue;
import sig.engine.Object;
import sig.engine.Panel;
import sig.engine.Sprite;
import sig.map.Map;
import sig.map.Tile;
public class LevelRenderer extends Object{
@ -43,19 +44,25 @@ public class LevelRenderer extends Object{
int tempIndex = selectedTile.ordinal()+down-up;
int selectedIndex = tempIndex<0?Tile.values().length-Math.abs(tempIndex):tempIndex%Tile.values().length;
selectedTile = Tile.values()[selectedIndex];
//System.out.println(selectedTile);
System.out.println(selectedTile);
}
@Override
public void draw(int[] p) {
for (int y=(int)(this.getY()/Tile.TILE_HEIGHT);y<(int)(RabiClone.BASE_HEIGHT/Tile.TILE_HEIGHT+this.getY()/Tile.TILE_HEIGHT+1);y++) {
if (y<0||y>Map.MAP_HEIGHT) {
continue;
}
for (int x=(int)(0+this.getX()/Tile.TILE_WIDTH);x<(int)(RabiClone.BASE_WIDTH/Tile.TILE_WIDTH+this.getX()/Tile.TILE_WIDTH+1);x++) {
if (x<0||x>Map.MAP_WIDTH) {
continue;
}
if (RabiClone.CURRENT_MAP.getTile(x,y)!=Tile.VOID) {
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 (x==RabiClone.p.highlightedSquare.getX()&&y==RabiClone.p.highlightedSquare.getY()) {
DrawTile(x*Tile.TILE_WIDTH-this.getX(),y*Tile.TILE_HEIGHT-this.getY(),Tile.HIGHLIGHTED_TILE);
DrawTransparentTile(x*Tile.TILE_WIDTH-this.getX(),y*Tile.TILE_HEIGHT-this.getY(),selectedTile,64);
}
}
}
@ -65,4 +72,8 @@ public class LevelRenderer extends Object{
Draw_Sprite_Partial(x,y, tile.getSpriteSheetX()*tile.getTileWidth(), tile.getSpriteSheetY()*tile.getTileHeight(), tile.getTileWidth(), tile.getTileHeight(), getSprite());
}
private void DrawTransparentTile(double x, double y, Tile tile, int alpha) {
Draw_Sprite_Partial_Ext(x,y, tile.getSpriteSheetX()*tile.getTileWidth(), tile.getSpriteSheetY()*tile.getTileHeight(), tile.getTileWidth(), tile.getTileHeight(), getSprite(), alpha);
}
}

Loading…
Cancel
Save