Fixed rendering and other issues.

This commit is contained in:
Commodore64x
2018-04-16 09:08:44 +10:00
parent 494e415bd3
commit 0e50fbf3f2
3 changed files with 15 additions and 20 deletions

View File

@@ -270,7 +270,7 @@ setting.multithread.name=Multithreading
setting.fps.name=Show FPS setting.fps.name=Show FPS
setting.vsync.name=VSync setting.vsync.name=VSync
setting.lasers.name=Show Power Lasers setting.lasers.name=Show Power Lasers
setting.previewopacity.name = Placing Preview Opacity setting.previewopacity.name=Placing Preview Opacity
setting.healthbars.name=Show Entity Health bars setting.healthbars.name=Show Entity Health bars
setting.pixelate.name=Pixelate Screen setting.pixelate.name=Pixelate Screen
setting.musicvol.name=Music Volume setting.musicvol.name=Music Volume

View File

@@ -2,6 +2,7 @@ package io.anuke.mindustry.graphics;
import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.Colors;
import com.badlogic.gdx.graphics.GL20; import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.OrthographicCamera; import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.Array;
@@ -17,11 +18,11 @@ import io.anuke.mindustry.world.blocks.types.production.Drill;
import io.anuke.mindustry.world.blocks.types.production.Pump; import io.anuke.mindustry.world.blocks.types.production.Pump;
import io.anuke.ucore.core.Core; import io.anuke.ucore.core.Core;
import io.anuke.ucore.core.Graphics; import io.anuke.ucore.core.Graphics;
import io.anuke.ucore.core.Settings;
import io.anuke.ucore.graphics.CacheBatch; import io.anuke.ucore.graphics.CacheBatch;
import io.anuke.ucore.graphics.Draw; import io.anuke.ucore.graphics.Draw;
import io.anuke.ucore.graphics.Lines; import io.anuke.ucore.graphics.Lines;
import io.anuke.ucore.util.Mathf; import io.anuke.ucore.util.Mathf;
import io.anuke.ucore.core.*;
import java.util.Arrays; import java.util.Arrays;
@@ -285,8 +286,7 @@ public class BlockRenderer{
cbatch = new CacheBatch(world.width() * world.height() * 4); cbatch = new CacheBatch(world.width() * world.height() * 4);
} }
public void drawPreview(Block block, float drawx, float drawy, float rotation, float opacity) { public void drawPreview(Block block, float drawx, float drawy, float rotation, float opacity) {
Draw.reset();
Draw.alpha(opacity); Draw.alpha(opacity);
Draw.rect(block.name(), drawx, drawy, rotation); Draw.rect(block.name(), drawx, drawy, rotation);
} }
@@ -296,15 +296,17 @@ public class BlockRenderer{
if(control.input().recipe != null && state.inventory.hasItems(control.input().recipe.requirements) if(control.input().recipe != null && state.inventory.hasItems(control.input().recipe.requirements)
&& control.input().validPlace(tilex, tiley, block) && (android || control.input().cursorNear())) { && control.input().validPlace(tilex, tiley, block) && (android || control.input().cursorNear())) {
float opacity = (float)Settings.getInt("previewopacity")/100f;
if(block.isMultiblock()) { if(block.isMultiblock()) {
if((tiley - control.input().getBlockY()) % block.height != 0 if((tiley - control.input().getBlockY()) % block.height != 0
|| (tilex - control.input().getBlockX()) % block.width != 0) return; || (tilex - control.input().getBlockX()) % block.width != 0) return;
} }
float opacity = (float) Settings.getInt("previewopacity") / 100f;
Draw.color(Color.WHITE);
Draw.alpha(opacity);
if(block instanceof Turret) { if(block instanceof Turret) {
Draw.alpha(opacity);
if (block.isMultiblock()) { if (block.isMultiblock()) {
Draw.rect("block-" + block.width + "x" + block.height, drawx, drawy); Draw.rect("block-" + block.width + "x" + block.height, drawx, drawy);
} else { } else {
@@ -314,11 +316,6 @@ public class BlockRenderer{
drawPreview(block, drawx, drawy, rotation, opacity); drawPreview(block, drawx, drawy, rotation, opacity);
Tile tile = world.tile(tilex, tiley);
if((block instanceof Drill || block instanceof Pump) && block.isLayer(tile)) {
block.drawLayer(tile);
}
Draw.reset(); Draw.reset();
} }
} }

View File

@@ -7,7 +7,6 @@ import com.badlogic.gdx.math.Vector2;
import io.anuke.mindustry.ui.fragments.ToolFragment; import io.anuke.mindustry.ui.fragments.ToolFragment;
import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.Block;
import io.anuke.mindustry.world.Tile; import io.anuke.mindustry.world.Tile;
import io.anuke.mindustry.world.blocks.types.production.Drill;
import io.anuke.ucore.core.Timers; import io.anuke.ucore.core.Timers;
import io.anuke.ucore.graphics.Draw; import io.anuke.ucore.graphics.Draw;
import io.anuke.ucore.graphics.Lines; import io.anuke.ucore.graphics.Lines;
@@ -35,6 +34,8 @@ public enum PlaceMode{
float si = MathUtils.sin(Timers.time() / 6f) + 1.5f; float si = MathUtils.sin(Timers.time() / 6f) + 1.5f;
renderer.getBlocks().handlePreview(control.input().recipe.result, control.input().recipe.result.rotate ? control.input().rotation * 90 : 0f, x + offset.x, y + offset.y, tilex, tiley);
Draw.color(valid ? Colors.get("place") : Colors.get("placeInvalid")); Draw.color(valid ? Colors.get("place") : Colors.get("placeInvalid"));
Lines.stroke(2f); Lines.stroke(2f);
Lines.crect(x + offset.x, y + offset.y, tilesize * control.input().recipe.result.width + si, Lines.crect(x + offset.x, y + offset.y, tilesize * control.input().recipe.result.width + si,
@@ -42,13 +43,10 @@ public enum PlaceMode{
control.input().recipe.result.drawPlace(tilex, tiley, control.input().rotation, valid); control.input().recipe.result.drawPlace(tilex, tiley, control.input().rotation, valid);
renderer.getBlocks().handlePreview(control.input().recipe.result, control.input().recipe.result.rotate ? control.input().rotation * 90 : 0f, x + offset.x, y + offset.y, tilex, tiley);
if(control.input().recipe.result.rotate){ if(control.input().recipe.result.rotate){
Draw.color(Colors.get("placeRotate")); Draw.color(Colors.get("placeRotate"));
tr.trns(control.input().rotation * 90, 7, 0); tr.trns(control.input().rotation * 90, 7, 0);
Lines.stroke(2f);
Lines.line(x, y, x + tr.x, y + tr.y); Lines.line(x, y, x + tr.x, y + tr.y);
} }
} }
@@ -277,8 +275,6 @@ public enum PlaceMode{
Draw.alpha(0.3f); Draw.alpha(0.3f);
Draw.crect("blank", x, y, x2 - x, y2 - y); Draw.crect("blank", x, y, x2 - x, y2 - y);
Draw.color(Colors.get("placeInvalid"));
int amount = 1; int amount = 1;
for(int cx = 0; cx <= Math.abs(endx - tilex); cx ++){ for(int cx = 0; cx <= Math.abs(endx - tilex); cx ++){
for(int cy = 0; cy <= Math.abs(endy - tiley); cy ++){ for(int cy = 0; cy <= Math.abs(endy - tiley); cy ++){
@@ -288,9 +284,11 @@ public enum PlaceMode{
renderer.getBlocks().handlePreview(control.input().recipe.result, control.input().recipe.result.rotate ? rotation * 90 : 0f, px * t + offset.x, py * t + offset.y, px, py); renderer.getBlocks().handlePreview(control.input().recipe.result, control.input().recipe.result.rotate ? rotation * 90 : 0f, px * t + offset.x, py * t + offset.y, px, py);
if(!control.input().validPlace(px, py, control.input().recipe.result) if(!control.input().validPlace(px, py, control.input().recipe.result)
|| !state.inventory.hasItems(control.input().recipe.requirements, amount)) || !state.inventory.hasItems(control.input().recipe.requirements, amount)){
Lines.stroke(2f);
Draw.color(Colors.get("placeInvalid"));
Lines.crect(px * t + offset.x, py * t + offset.y, t*block.width, t*block.height); Lines.crect(px * t + offset.x, py * t + offset.y, t*block.width, t*block.height);
}
amount ++; amount ++;
} }
} }