Bugfixes
This commit is contained in:
@@ -1,11 +1,9 @@
|
||||
package io.anuke.mindustry.maps.filters;
|
||||
|
||||
import io.anuke.arc.math.Mathf;
|
||||
import io.anuke.mindustry.content.Blocks;
|
||||
import io.anuke.mindustry.editor.MapGenerateDialog.*;
|
||||
import io.anuke.mindustry.maps.filters.FilterOption.BlockOption;
|
||||
import io.anuke.mindustry.maps.filters.FilterOption.SliderOption;
|
||||
import io.anuke.mindustry.world.Block;
|
||||
import io.anuke.arc.math.*;
|
||||
import io.anuke.mindustry.content.*;
|
||||
import io.anuke.mindustry.maps.filters.FilterOption.*;
|
||||
import io.anuke.mindustry.world.*;
|
||||
|
||||
import static io.anuke.mindustry.maps.filters.FilterOption.*;
|
||||
|
||||
@@ -34,9 +32,9 @@ public class BlendFilter extends GenerateFilter{
|
||||
for(int x = -rad; x <= rad; x++){
|
||||
for(int y = -rad; y <= rad; y++){
|
||||
if(Mathf.dst2(x, y) > rad*rad) continue;
|
||||
GenTile tile = in.tile(in.x + x, in.y + y);
|
||||
Tile tile = in.tile(in.x + x, in.y + y);
|
||||
|
||||
if(tile.floor == block.id || tile.block == block.id || tile.ore == block.id){
|
||||
if(tile.floor() == block || tile.block() == block || tile.overlay() == block){
|
||||
found = true;
|
||||
break outer;
|
||||
}
|
||||
|
||||
@@ -1,10 +1,8 @@
|
||||
package io.anuke.mindustry.maps.filters;
|
||||
|
||||
import io.anuke.mindustry.editor.MapGenerateDialog.GenTile;
|
||||
import io.anuke.mindustry.maps.filters.FilterOption.SliderOption;
|
||||
import io.anuke.mindustry.world.blocks.Floor;
|
||||
|
||||
import static io.anuke.mindustry.Vars.content;
|
||||
import io.anuke.mindustry.maps.filters.FilterOption.*;
|
||||
import io.anuke.mindustry.world.*;
|
||||
import io.anuke.mindustry.world.blocks.*;
|
||||
|
||||
public class DistortFilter extends GenerateFilter{
|
||||
float scl = 40, mag = 5;
|
||||
@@ -19,10 +17,10 @@ public class DistortFilter extends GenerateFilter{
|
||||
|
||||
@Override
|
||||
public void apply(){
|
||||
GenTile tile = in.tile(in.x + noise(in.x, in.y, scl, mag) - mag / 2f, in.y + noise(in.x, in.y + o, scl, mag) - mag / 2f);
|
||||
Tile tile = in.tile(in.x + noise(in.x, in.y, scl, mag) - mag / 2f, in.y + noise(in.x, in.y + o, scl, mag) - mag / 2f);
|
||||
|
||||
in.floor = content.block(tile.floor);
|
||||
if(!content.block(tile.block).synthetic() && !in.block.synthetic()) in.block = content.block(tile.block);
|
||||
if(!((Floor)in.floor).isLiquid) in.ore = content.block(tile.ore);
|
||||
in.floor = tile.floor();
|
||||
if(!tile.block().synthetic() && !in.block.synthetic()) in.block = tile.block();
|
||||
if(!((Floor)in.floor).isLiquid) in.ore = tile.overlay();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,7 +6,6 @@ import io.anuke.arc.scene.ui.*;
|
||||
import io.anuke.arc.util.*;
|
||||
import io.anuke.arc.util.noise.*;
|
||||
import io.anuke.mindustry.content.*;
|
||||
import io.anuke.mindustry.editor.MapGenerateDialog.*;
|
||||
import io.anuke.mindustry.world.*;
|
||||
import io.anuke.mindustry.world.blocks.*;
|
||||
|
||||
@@ -95,12 +94,12 @@ public abstract class GenerateFilter{
|
||||
pnoise.setSeed((int)(filter.seed + 1));
|
||||
}
|
||||
|
||||
GenTile tile(float x, float y){
|
||||
Tile tile(float x, float y){
|
||||
return buffer.get(Mathf.clamp((int)x, 0, width - 1), Mathf.clamp((int)y, 0, height - 1));
|
||||
}
|
||||
|
||||
public interface TileProvider{
|
||||
GenTile get(int x, int y);
|
||||
Tile get(int x, int y);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
package io.anuke.mindustry.maps.filters;
|
||||
|
||||
import io.anuke.arc.collection.IntArray;
|
||||
import io.anuke.arc.math.Mathf;
|
||||
import io.anuke.mindustry.editor.MapGenerateDialog.GenTile;
|
||||
import io.anuke.mindustry.maps.filters.FilterOption.SliderOption;
|
||||
import io.anuke.arc.collection.*;
|
||||
import io.anuke.arc.math.*;
|
||||
import io.anuke.mindustry.maps.filters.FilterOption.*;
|
||||
import io.anuke.mindustry.world.*;
|
||||
|
||||
import static io.anuke.mindustry.Vars.content;
|
||||
|
||||
@@ -29,9 +29,9 @@ public class MedianFilter extends GenerateFilter{
|
||||
for(int y = -rad; y <= rad; y++){
|
||||
if(Mathf.dst2(x, y) > rad*rad) continue;
|
||||
|
||||
GenTile tile = in.tile(in.x + x, in.y + y);
|
||||
blocks.add(tile.block);
|
||||
floors.add(tile.floor);
|
||||
Tile tile = in.tile(in.x + x, in.y + y);
|
||||
blocks.add(tile.block().id);
|
||||
floors.add(tile.floor().id);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -6,19 +6,17 @@ import io.anuke.arc.math.geom.*;
|
||||
import io.anuke.arc.scene.ui.*;
|
||||
import io.anuke.arc.scene.ui.layout.*;
|
||||
import io.anuke.arc.util.*;
|
||||
import io.anuke.mindustry.editor.MapGenerateDialog.*;
|
||||
import io.anuke.mindustry.maps.filters.FilterOption.*;
|
||||
import io.anuke.mindustry.graphics.*;
|
||||
|
||||
import static io.anuke.mindustry.Vars.content;
|
||||
import io.anuke.mindustry.maps.filters.FilterOption.*;
|
||||
import io.anuke.mindustry.world.*;
|
||||
|
||||
public class MirrorFilter extends GenerateFilter{
|
||||
private final Vector2 v1 = new Vector2(), v2 = new Vector2(), v3 = new Vector2();
|
||||
|
||||
float angle = 45;
|
||||
int angle = 45;
|
||||
|
||||
{
|
||||
options(new SliderOption("angle", () -> angle, f -> angle = f, 0, 360, 45));
|
||||
options(new SliderOption("angle", () -> angle, f -> angle = (int)f, 0, 360, 45));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -33,10 +31,10 @@ public class MirrorFilter extends GenerateFilter{
|
||||
|
||||
if(!left(v1, v2, v3)){
|
||||
mirror(v3, v1.x, v1.y, v2.x, v2.y);
|
||||
GenTile tile = in.tile(v3.x, v3.y);
|
||||
in.floor = content.block(tile.floor);
|
||||
in.block = content.block(tile.block);
|
||||
in.ore = content.block(tile.ore);
|
||||
Tile tile = in.tile(v3.x, v3.y);
|
||||
in.floor = tile.floor();
|
||||
in.block = tile.block();
|
||||
in.ore = tile.overlay();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -45,8 +43,8 @@ public class MirrorFilter extends GenerateFilter{
|
||||
super.draw(image);
|
||||
|
||||
Vector2 vsize = Scaling.fit.apply(image.getDrawable().getMinWidth(), image.getDrawable().getMinHeight(), image.getWidth(), image.getHeight());
|
||||
float imageWidth = vsize.x;
|
||||
float imageHeight = vsize.y;
|
||||
float imageWidth = Math.max(vsize.x, vsize.y);
|
||||
float imageHeight = Math.max(vsize.y, vsize.x);
|
||||
|
||||
float size = Math.max(image.getWidth() *2, image.getHeight()*2);
|
||||
Consumer<Vector2> clamper = v ->
|
||||
@@ -65,13 +63,19 @@ public class MirrorFilter extends GenerateFilter{
|
||||
}
|
||||
|
||||
void mirror(Vector2 p, float x0, float y0, float x1, float y1){
|
||||
float dx = x1 - x0;
|
||||
float dy = y1 - y0;
|
||||
//special case: uneven map mirrored at 45 degree angle
|
||||
if(in.width != in.height && angle % 90 != 0){
|
||||
p.x = (p.x - in.width/2f) * -1 + in.width/2f;
|
||||
p.y = (p.y - in.height/2f) * -1 + in.height/2f;
|
||||
}else{
|
||||
float dx = x1 - x0;
|
||||
float dy = y1 - y0;
|
||||
|
||||
float a = (dx * dx - dy * dy) / (dx * dx + dy*dy);
|
||||
float b = 2 * dx * dy / (dx*dx + dy*dy);
|
||||
float a = (dx * dx - dy * dy) / (dx * dx + dy * dy);
|
||||
float b = 2 * dx * dy / (dx * dx + dy * dy);
|
||||
|
||||
p.set((a * (p.x - x0) + b*(p.y - y0) + x0), (b * (p.x - x0) - a*(p.y - y0) + y0));
|
||||
p.set((a * (p.x - x0) + b * (p.y - y0) + x0), (b * (p.x - x0) - a * (p.y - y0) + y0));
|
||||
}
|
||||
}
|
||||
|
||||
boolean left(Vector2 a, Vector2 b, Vector2 c){
|
||||
|
||||
Reference in New Issue
Block a user