New shaders, remake of Android placement partially done

This commit is contained in:
Anuken
2018-05-29 22:03:43 -04:00
parent b434c37f01
commit 0f09a0b152
18 changed files with 508 additions and 76 deletions
@@ -30,6 +30,20 @@ public interface BlockBuilder {
/**Returns the queue for storing build requests.*/
Queue<BuildRequest> getPlaceQueue();
/**If a place request matching this signature is present, it is removed.
* Otherwise, a new place request is added to the queue.*/
default void replaceBuilding(int x, int y, int rotation, Recipe recipe){
for(BuildRequest request : getPlaceQueue()){
if(request.x == x && request.y == y){
clearBuilding();
addBuildRequest(request);
return;
}
}
addBuildRequest(new BuildRequest(x, y, rotation, recipe));
}
/**Clears the placement queue.*/
default void clearBuilding(){
getPlaceQueue().clear();
@@ -245,9 +245,12 @@ public class Player extends Unit implements BlockBuilder {
Draw.tscl(fontScale);
}
/**Draw all current build requests. Does not draw the beam effect, only the positions.*/
public void drawBuildRequests(){
for (BuildRequest request : getPlaceQueue()) {
if(request.remove){
//draw removal request
Draw.color(Palette.remove);
Draw.alpha(0.4f);
Lines.stroke(1f);
@@ -270,11 +273,17 @@ public class Player extends Unit implements BlockBuilder {
Lines.poly(tile.drawx(), tile.drawy(),
4, tile.block().size * tilesize /2f * (1f-progress) + Mathf.absin(Timers.time(), 3f, 1f));
}else{
//draw place request
Draw.color(Palette.accent);
Lines.stroke((1f-request.progress));
Lines.poly(request.x * tilesize + request.recipe.result.offset(),
request.y * tilesize + request.recipe.result.offset(),
4, request.recipe.result.size * tilesize /2f + Mathf.absin(Timers.time(), 3f, 1f));
Lines.poly(request.x * tilesize + request.recipe.result.offset(),
request.y * tilesize + request.recipe.result.offset(),
4, request.recipe.result.size * tilesize /2f + 2f, 45 + 15);
}
}