Skip to content

Commit

Permalink
Added Open Map / Save Map dialogs
Browse files Browse the repository at this point in the history
  • Loading branch information
Flafla2 committed Nov 27, 2013
1 parent ad03634 commit 1d2249f
Show file tree
Hide file tree
Showing 6 changed files with 157 additions and 16 deletions.
19 changes: 8 additions & 11 deletions Remote2D/src/com/remote/remote2d/editor/GuiEditorTopMenu.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
import com.remote.remote2d.editor.operation.OperationDeleteEntity;
import com.remote.remote2d.editor.operation.OperationNewEntity;
import com.remote.remote2d.editor.operation.OperationNewMap;
import com.remote.remote2d.editor.operation.OperationOpenMap;
import com.remote.remote2d.editor.operation.OperationSaveMap;
import com.remote.remote2d.engine.DisplayHandler;
import com.remote.remote2d.engine.Remote2D;
Expand All @@ -22,9 +21,7 @@
import com.remote.remote2d.engine.gui.Gui;
import com.remote.remote2d.engine.gui.GuiInGame;
import com.remote.remote2d.engine.gui.KeyShortcut;
import com.remote.remote2d.engine.io.R2DFileManager;
import com.remote.remote2d.engine.logic.Vector2;
import com.remote.remote2d.engine.world.Map;

public class GuiEditorTopMenu extends Gui {

Expand Down Expand Up @@ -201,16 +198,16 @@ public void tick(int i, int j, int k) {
} else if(secSubTitle.equalsIgnoreCase("Open Map"))
{
Log.info("Opening!");
Map newMap = new Map();
R2DFileManager mapManager = new R2DFileManager("res/maps/map.r2d", newMap);
mapManager.read();
if(editor.getMap() != null)
editor.confirmOperation(new OperationOpenMap(editor,newMap));
editor.pushWindow(new GuiWindowOpenMap(editor, new Vector2(i,j), editor.getWindowBounds()));
} else if(secSubTitle.equalsIgnoreCase("Save Map") && editor.getMap() != null)
{
if(editor.getMap().path != null)
editor.confirmOperation(new OperationSaveMap(editor,editor.getMap().path));
else
editor.executeOperation(new OperationOpenMap(editor,newMap));
} else if(secSubTitle.equalsIgnoreCase("Save Map"))
editor.pushWindow(new GuiWindowSaveMap(editor,new Vector2(i,j),editor.getWindowBounds()));
} else if(secSubTitle.equalsIgnoreCase("Save Map As...") && editor.getMap() != null)
{
editor.confirmOperation(new OperationSaveMap(editor));
editor.pushWindow(new GuiWindowSaveMap(editor,new Vector2(i,j),editor.getWindowBounds()));
}
} else if(secTitle.equalsIgnoreCase("Edit"))
{
Expand Down
78 changes: 78 additions & 0 deletions Remote2D/src/com/remote/remote2d/editor/GuiWindowOpenMap.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
package com.remote.remote2d.editor;

import com.remote.remote2d.editor.operation.OperationOpenMap;
import com.remote.remote2d.engine.gui.GuiButton;
import com.remote.remote2d.engine.gui.GuiTextField;
import com.remote.remote2d.engine.gui.GuiWindow;
import com.remote.remote2d.engine.gui.WindowHolder;
import com.remote.remote2d.engine.io.R2DFileManager;
import com.remote.remote2d.engine.io.R2DFileUtility;
import com.remote.remote2d.engine.logic.ColliderBox;
import com.remote.remote2d.engine.logic.Vector2;
import com.remote.remote2d.engine.world.Map;

public class GuiWindowOpenMap extends GuiWindow {

GuiTextField textField;
GuiButton doneButton;

public GuiWindowOpenMap(WindowHolder holder, Vector2 pos, ColliderBox allowedBounds)
{
this(holder,pos,new Vector2(300,100),allowedBounds);
}

public GuiWindowOpenMap(WindowHolder holder, Vector2 pos, Vector2 dim, ColliderBox allowedBounds) {
super(holder, pos, dim, allowedBounds, "Open Map");

textField = new GuiTextField(new Vector2(10,10),new Vector2(dim.x-20,40), 20);
textField.text = "/res/maps/map.r2d";
}

@Override
public void initGui()
{
if(textField != null)
textField.dim = new Vector2(dim.x-20,40);

buttonList.clear();
buttonList.add(new GuiButton(0,new Vector2(10,dim.y-50),new Vector2(dim.x/2-10,40),"Cancel"));
buttonList.add(doneButton = new GuiButton(1,new Vector2(dim.x/2+10,dim.y-50),new Vector2(dim.x/2-20,40),"Done"));
}

@Override
public void renderContents(float interpolation) {
textField.render(interpolation);
}

@Override
public void tick(int i, int j, int k)
{
super.tick(i,j,k);
textField.tick(i, j, k);

if(!R2DFileUtility.R2DExists(textField.text))
doneButton.setDisabled(true);
else if(doneButton.getDisabled())
doneButton.setDisabled(false);
}

@Override
public void actionPerformed(GuiButton button)
{
if(button.id == 0)
holder.closeWindow(this);
else if(button.id == 1 && holder instanceof GuiEditor)
{
GuiEditor editor = (GuiEditor)holder;

Map newMap = new Map();
R2DFileManager mapManager = new R2DFileManager(textField.text, newMap);
mapManager.read();
if(editor.getMap() != null)
editor.confirmOperation(new OperationOpenMap(editor,newMap));
else
editor.executeOperation(new OperationOpenMap(editor,newMap));
}
}

}
63 changes: 63 additions & 0 deletions Remote2D/src/com/remote/remote2d/editor/GuiWindowSaveMap.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
package com.remote.remote2d.editor;

import com.remote.remote2d.editor.operation.OperationSaveMap;
import com.remote.remote2d.engine.gui.GuiButton;
import com.remote.remote2d.engine.gui.GuiTextField;
import com.remote.remote2d.engine.gui.GuiWindow;
import com.remote.remote2d.engine.gui.WindowHolder;
import com.remote.remote2d.engine.logic.ColliderBox;
import com.remote.remote2d.engine.logic.Vector2;

public class GuiWindowSaveMap extends GuiWindow {

GuiTextField textField;
GuiButton doneButton;

public GuiWindowSaveMap(WindowHolder holder, Vector2 pos, ColliderBox allowedBounds)
{
this(holder,pos,new Vector2(300,100),allowedBounds);
}

public GuiWindowSaveMap(WindowHolder holder, Vector2 pos, Vector2 dim, ColliderBox allowedBounds) {
super(holder, pos, dim, allowedBounds, "Save Map");

textField = new GuiTextField(new Vector2(10,10),new Vector2(dim.x-20,40), 20);
textField.text = "/res/maps/map.r2d";
}

@Override
public void initGui()
{
textField.dim = new Vector2(dim.x-20,40);

buttonList.clear();
buttonList.add(new GuiButton(0,new Vector2(10,dim.y-50),new Vector2(dim.x/2-10,40),"Cancel"));
buttonList.add(doneButton = new GuiButton(1,new Vector2(dim.x/2+10,dim.y-50),new Vector2(dim.x/2-20,40),"Done"));
}

@Override
public void renderContents(float interpolation) {
textField.render(interpolation);
}

@Override
public void tick(int i, int j, int k)
{
super.tick(i,j,k);
textField.tick(i, j, k);
}

@Override
public void actionPerformed(GuiButton button)
{
if(button.id == 0)
holder.closeWindow(this);
else if(button.id == 1 && holder instanceof GuiEditor)
{
GuiEditor editor = (GuiEditor)holder;

editor.confirmOperation(new OperationSaveMap(editor,textField.text));
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,20 @@
import com.remote.remote2d.engine.world.Map;

public class OperationSaveMap extends Operation {

public OperationSaveMap(GuiEditor editor) {

String path;

public OperationSaveMap(GuiEditor editor, String path) {
super(editor);
this.path = path;
}

@Override
public void execute() {
Map map = editor.getMap();
R2DFileManager mapManager = new R2DFileManager("res/maps/map.r2d", map);
R2DFileManager mapManager = new R2DFileManager(path, map);
mapManager.write();
map.path = path;
editor.setMap(map);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,6 @@ public class R2DFileManager {

public R2DFileManager(String path, R2DFileSaver saverClass)
{
path = path.replace('/', File.separatorChar);
path = path.replace('\\', File.separatorChar);
this.path = path;
file = R2DFileUtility.getResource(path);
collection = new R2DTypeCollection(file.getName());
Expand Down
1 change: 1 addition & 0 deletions Remote2D/src/com/remote/remote2d/engine/world/Map.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ public class Map implements R2DFileSaver {
public Camera camera;
public int backgroundColor = 0xffffff;
public int gridSize = 16;
public String path = null;

public boolean debug = false;

Expand Down

0 comments on commit 1d2249f

Please sign in to comment.