job board & main menu + bugfixes
parent
a24bcce937
commit
2ff6b06588
|
|
@ -11,7 +11,6 @@ import java.util.stream.Stream;
|
||||||
|
|
||||||
import xyz.valnet.engine.graphics.Color;
|
import xyz.valnet.engine.graphics.Color;
|
||||||
import xyz.valnet.engine.math.Vector2i;
|
import xyz.valnet.engine.math.Vector2i;
|
||||||
import xyz.valnet.engine.math.Vector4f;
|
|
||||||
import xyz.valnet.engine.scenegraph.GameObject;
|
import xyz.valnet.engine.scenegraph.GameObject;
|
||||||
import xyz.valnet.hadean.HadeanGame;
|
import xyz.valnet.hadean.HadeanGame;
|
||||||
import xyz.valnet.hadean.gameobjects.worldobjects.pawn.Pawn;
|
import xyz.valnet.hadean.gameobjects.worldobjects.pawn.Pawn;
|
||||||
|
|
@ -174,6 +173,40 @@ public class JobBoard extends GameObject {
|
||||||
// } else return null;
|
// } else return null;
|
||||||
// }
|
// }
|
||||||
|
|
||||||
|
public String getValidJobs() {
|
||||||
|
Map<String, Integer> jobs = new HashMap<String, Integer>();
|
||||||
|
for(Job job : availableJobs) {
|
||||||
|
if(!job.isValid()) continue;
|
||||||
|
String name = job.getJobName();
|
||||||
|
if(!jobs.containsKey(name)) jobs.put(name, 0);
|
||||||
|
jobs.put(name, jobs.get(name) + 1);
|
||||||
|
}
|
||||||
|
String str = "";
|
||||||
|
for(Entry<String, Integer> entry : jobs.entrySet()) {
|
||||||
|
// int num = entry.getValue();
|
||||||
|
// if(num == 1) str += " "
|
||||||
|
str += entry.getValue() + "x " + entry.getKey() + "\n";
|
||||||
|
}
|
||||||
|
return str.trim();
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getInvalidJobs() {
|
||||||
|
String str = "";
|
||||||
|
for(Job job : availableJobs) {
|
||||||
|
if(job.isValid()) continue;
|
||||||
|
str += " " + job.getJobName() + "\n";
|
||||||
|
}
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTakenJobs() {
|
||||||
|
String str = "";
|
||||||
|
for(Entry<Pawn, Job> allocation : allocations.entrySet()) {
|
||||||
|
str += " " + allocation.getKey().getName() + ": " + allocation.getValue().getJobName() + "\n";
|
||||||
|
}
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
public String details() {
|
public String details() {
|
||||||
|
|
||||||
String takenJobsString = "";
|
String takenJobsString = "";
|
||||||
|
|
|
||||||
|
|
@ -213,7 +213,7 @@ public class SelectionLayer extends GameObject implements IMouseCaptureArea, ITr
|
||||||
|
|
||||||
public void clearSelection() {
|
public void clearSelection() {
|
||||||
if(selected.size() == 0) return;
|
if(selected.size() == 0) return;
|
||||||
selected.clear();
|
selected = new ArrayList<ISelectable>();
|
||||||
broadcastSelectionChanged();
|
broadcastSelectionChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,17 +2,20 @@ package xyz.valnet.hadean.gameobjects.ui;
|
||||||
|
|
||||||
import xyz.valnet.engine.graphics.IModalUI;
|
import xyz.valnet.engine.graphics.IModalUI;
|
||||||
import xyz.valnet.engine.scenegraph.GameObject;
|
import xyz.valnet.engine.scenegraph.GameObject;
|
||||||
|
import xyz.valnet.engine.scenegraph.IKeyboardListener;
|
||||||
import xyz.valnet.engine.scenegraph.ITransient;
|
import xyz.valnet.engine.scenegraph.ITransient;
|
||||||
import xyz.valnet.hadean.gameobjects.ui.tabs.BuildTab;
|
import xyz.valnet.hadean.gameobjects.ui.tabs.BuildTab;
|
||||||
|
import xyz.valnet.hadean.gameobjects.ui.tabs.MenuTab;
|
||||||
import xyz.valnet.hadean.gameobjects.ui.tabs.Tab;
|
import xyz.valnet.hadean.gameobjects.ui.tabs.Tab;
|
||||||
import xyz.valnet.hadean.util.Assets;
|
import xyz.valnet.hadean.util.Assets;
|
||||||
|
|
||||||
public class ExclusivityManager extends GameObject implements ITransient {
|
public class ExclusivityManager extends GameObject implements ITransient, IKeyboardListener {
|
||||||
private IModalUI current = null;
|
private IModalUI current = null;
|
||||||
|
|
||||||
private boolean switching = false;
|
private boolean switching = false;
|
||||||
|
|
||||||
private IModalUI defaultTab = null;
|
private IModalUI defaultTab = null;
|
||||||
|
private IModalUI menuTab = null;
|
||||||
|
|
||||||
public void switchTo(IModalUI tab) {
|
public void switchTo(IModalUI tab) {
|
||||||
if(tab == current) return;
|
if(tab == current) return;
|
||||||
|
|
@ -41,9 +44,25 @@ public class ExclusivityManager extends GameObject implements ITransient {
|
||||||
else current.back();
|
else current.back();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void backOrMenu() {
|
||||||
|
if(current == null) switchTo(menuTab);
|
||||||
|
else current.back();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void connect() {
|
protected void connect() {
|
||||||
defaultTab = get(BuildTab.class);
|
defaultTab = get(BuildTab.class);
|
||||||
|
menuTab = get(MenuTab.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void keyPress(int code) {
|
||||||
|
if(code == 256) { // ESCAPE
|
||||||
|
backOrMenu();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void keyRelease(int code) {}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,93 +1,53 @@
|
||||||
package xyz.valnet.hadean.gameobjects.ui.tabs;
|
package xyz.valnet.hadean.gameobjects.ui.tabs;
|
||||||
|
|
||||||
import static xyz.valnet.engine.util.Math.lerp;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import xyz.valnet.engine.graphics.Drawing;
|
|
||||||
import xyz.valnet.hadean.gameobjects.BottomBar;
|
import xyz.valnet.hadean.gameobjects.BottomBar;
|
||||||
import xyz.valnet.hadean.gameobjects.JobBoard;
|
import xyz.valnet.hadean.gameobjects.JobBoard;
|
||||||
import xyz.valnet.hadean.gameobjects.inputlayer.SelectionLayer;
|
|
||||||
import xyz.valnet.hadean.interfaces.ISelectable;
|
|
||||||
import xyz.valnet.hadean.interfaces.ISelectionChangeListener;
|
|
||||||
import xyz.valnet.hadean.util.Assets;
|
|
||||||
import xyz.valnet.hadean.util.Layers;
|
|
||||||
|
|
||||||
public class JobBoardTab extends Tab implements ISelectionChangeListener {
|
public class JobBoardTab extends Tab {
|
||||||
|
|
||||||
private SelectionLayer selection;
|
|
||||||
private JobBoard jobBoard;
|
private JobBoard jobBoard;
|
||||||
|
|
||||||
private boolean opened;
|
private int height = 200;
|
||||||
private float progress = 0f;
|
|
||||||
private float width = 200;
|
|
||||||
|
|
||||||
private int padding = 10;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void render() {
|
protected void gui() {
|
||||||
Drawing.setLayer(Layers.GENERAL_UI);
|
if(!shouldRender()) return;
|
||||||
float left = lerp(-width - padding, padding, progress);
|
|
||||||
Assets.uiFrame.draw((int) left, padding, (int) width, 576 - padding * 2 - BottomBar.bottomBarHeight);
|
window(0, animate(576 + 50, 576 - BottomBar.bottomBarHeight - height + 1), 1024, height, () -> {
|
||||||
Assets.font.drawString(jobBoard.details(), (int) left + padding, padding * 2);
|
horizontal(() -> {
|
||||||
|
vertical(() -> {
|
||||||
|
text("Valid");
|
||||||
|
text(jobBoard.getValidJobs());
|
||||||
|
});
|
||||||
|
space(32);
|
||||||
|
vertical(() -> {
|
||||||
|
text("Invalid");
|
||||||
|
text(jobBoard.getInvalidJobs());
|
||||||
|
});
|
||||||
|
space(32);
|
||||||
|
vertical(() -> {
|
||||||
|
text("Taken");
|
||||||
|
text(jobBoard.getTakenJobs());
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void connect() {
|
protected void connect() {
|
||||||
super.connect();
|
super.connect();
|
||||||
selection = get(SelectionLayer.class);
|
|
||||||
jobBoard = get(JobBoard.class);
|
jobBoard = get(JobBoard.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void start() {
|
|
||||||
super.start();
|
|
||||||
opened = false;
|
|
||||||
if(selection != null) selection.subscribe(this);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void update(float dTime) {
|
|
||||||
progress = lerp(progress, opened ? 1 : 0, 0.05f);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void selectionChanged(List<ISelectable> selected) {
|
|
||||||
if(selected.isEmpty()) return;
|
|
||||||
opened = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void evoke() {
|
|
||||||
opened = !opened;
|
|
||||||
|
|
||||||
if(opened) {
|
|
||||||
selection.updateSelection(new ArrayList<ISelectable>());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getTabName() {
|
public String getTabName() {
|
||||||
return "Jobs";
|
return "Work";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onClose() {
|
protected void onClose() { }
|
||||||
// TODO Auto-generated method stub
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onOpen() {
|
protected void onOpen() { }
|
||||||
// TODO Auto-generated method stub
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void gui() {
|
|
||||||
// TODO Auto-generated method stub
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -28,10 +28,12 @@ public class MenuTab extends Tab {
|
||||||
space(8);
|
space(8);
|
||||||
if(button("Save")) {
|
if(button("Save")) {
|
||||||
save();
|
save();
|
||||||
|
close();
|
||||||
}
|
}
|
||||||
space(8);
|
space(8);
|
||||||
if(button("Load")) {
|
if(button("Load")) {
|
||||||
load();
|
load();
|
||||||
|
close();
|
||||||
}
|
}
|
||||||
space(24);
|
space(24);
|
||||||
if(button("Main Menu")) {
|
if(button("Main Menu")) {
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,7 @@ import xyz.valnet.hadean.gameobjects.ui.ExclusivityManager;
|
||||||
import xyz.valnet.hadean.gameobjects.ui.HoverQuery;
|
import xyz.valnet.hadean.gameobjects.ui.HoverQuery;
|
||||||
import xyz.valnet.hadean.gameobjects.ui.tabs.BuildTab;
|
import xyz.valnet.hadean.gameobjects.ui.tabs.BuildTab;
|
||||||
import xyz.valnet.hadean.gameobjects.ui.tabs.DebugTab;
|
import xyz.valnet.hadean.gameobjects.ui.tabs.DebugTab;
|
||||||
|
import xyz.valnet.hadean.gameobjects.ui.tabs.JobBoardTab;
|
||||||
import xyz.valnet.hadean.gameobjects.ui.tabs.MenuTab;
|
import xyz.valnet.hadean.gameobjects.ui.tabs.MenuTab;
|
||||||
import xyz.valnet.hadean.gameobjects.worldobjects.pawn.Pawn;
|
import xyz.valnet.hadean.gameobjects.worldobjects.pawn.Pawn;
|
||||||
|
|
||||||
|
|
@ -53,7 +54,7 @@ public class GameScene extends SceneGraph {
|
||||||
objects.add(new BottomBar());
|
objects.add(new BottomBar());
|
||||||
objects.add(new ExclusivityManager());
|
objects.add(new ExclusivityManager());
|
||||||
objects.add(new BuildTab());
|
objects.add(new BuildTab());
|
||||||
// objects.add(new JobBoardTab());
|
objects.add(new JobBoardTab());
|
||||||
objects.add(new DebugTab());
|
objects.add(new DebugTab());
|
||||||
objects.add(new MenuTab());
|
objects.add(new MenuTab());
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue