Fixed a few minor bugs with scrolling in editor

This commit is contained in:
Anuken
2018-05-23 22:23:52 -04:00
parent 9693de8885
commit e4231e012d
4 changed files with 22 additions and 8 deletions

View File

@@ -306,6 +306,10 @@ public class Control extends Module{
triggerUpdateInput();
for(InputHandler inputHandler : inputs){
inputHandler.updateController();
}
if(!state.is(State.menu)){
for(InputHandler input : inputs){
input.update();

View File

@@ -4,13 +4,17 @@ import com.badlogic.gdx.files.FileHandle;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.Pixmap;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
import com.badlogic.gdx.math.Vector2;
import com.badlogic.gdx.utils.Align;
import com.badlogic.gdx.utils.Disposable;
import com.badlogic.gdx.utils.ObjectMap;
import io.anuke.mindustry.content.blocks.Blocks;
import io.anuke.mindustry.core.Platform;
import io.anuke.mindustry.game.Team;
import io.anuke.mindustry.io.*;
import io.anuke.mindustry.io.Map;
import io.anuke.mindustry.io.MapIO;
import io.anuke.mindustry.io.MapMeta;
import io.anuke.mindustry.io.MapTileData;
import io.anuke.mindustry.ui.dialogs.FileChooser;
import io.anuke.mindustry.ui.dialogs.FloatingDialog;
import io.anuke.mindustry.world.Block;
@@ -23,7 +27,6 @@ import io.anuke.ucore.core.Timers;
import io.anuke.ucore.function.Listenable;
import io.anuke.ucore.graphics.Pixmaps;
import io.anuke.ucore.input.Input;
import io.anuke.ucore.scene.Element;
import io.anuke.ucore.scene.actions.Actions;
import io.anuke.ucore.scene.builders.build;
import io.anuke.ucore.scene.builders.label;
@@ -223,11 +226,18 @@ public class MapEditorDialog extends Dialog implements Disposable{
build.end();
tapped(() -> {
Element e = Core.scene.hit(Graphics.mouse().x, Graphics.mouse().y, true);
if(e == null || !e.isDescendantOf(pane)) Core.scene.setScrollFocus(null);
});
update(() -> {
Vector2 v = pane.stageToLocalCoordinates(Graphics.mouse());
if(v.x >= 0 && v.y >= 0 && v.x <= pane.getWidth() && v.y <= pane.getHeight()){
Core.scene.setScrollFocus(pane);
}else{
Core.scene.setScrollFocus(null);
}
if(Core.scene != null && Core.scene.getKeyboardFocus() == this){
doInput();
}
@@ -360,7 +370,7 @@ public class MapEditorDialog extends Dialog implements Disposable{
}
public boolean hasPane(){
return Core.scene.getScrollFocus() == pane;
return Core.scene.getScrollFocus() == pane || Core.scene.getKeyboardFocus() != this;
}
public void build(){

View File

@@ -42,8 +42,6 @@ public class DesktopInput extends InputHandler{
@Override
public void update(){
updateController();
if(player.isDead()) return;
if(Inputs.keyRelease(section, "select") && recipe != null){
@@ -213,7 +211,8 @@ public class DesktopInput extends InputHandler{
return controlling;
}
void updateController(){
@Override
public void updateController(){
boolean mousemove = Gdx.input.getDeltaX() > 1 || Gdx.input.getDeltaY() > 1;
if(KeyBinds.getSection(section).device.type == DeviceType.controller && (!mousemove || player.playerIndex > 0)){

View File

@@ -57,6 +57,7 @@ public abstract class InputHandler extends InputAdapter{
public int getBlockEndY(){ return Mathf.sclb(Graphics.world(getCursorEndX(), getCursorEndY()).y, tilesize, round2()); }
public void resetCursor(){}
public boolean isCursorVisible(){ return false; }
public void updateController(){}
public float mouseAngle(float x, float y){
return Graphics.world(getMouseX(), getMouseY()).sub(x, y).angle();