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.math.Vector2i;
|
||||
import xyz.valnet.engine.math.Vector4f;
|
||||
import xyz.valnet.engine.scenegraph.GameObject;
|
||||
import xyz.valnet.hadean.HadeanGame;
|
||||
import xyz.valnet.hadean.gameobjects.worldobjects.pawn.Pawn;
|
||||
|
|
@ -174,6 +173,40 @@ public class JobBoard extends GameObject {
|
|||
// } 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() {
|
||||
|
||||
String takenJobsString = "";
|
||||
|
|
|
|||
|
|
@ -213,7 +213,7 @@ public class SelectionLayer extends GameObject implements IMouseCaptureArea, ITr
|
|||
|
||||
public void clearSelection() {
|
||||
if(selected.size() == 0) return;
|
||||
selected.clear();
|
||||
selected = new ArrayList<ISelectable>();
|
||||
broadcastSelectionChanged();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2,17 +2,20 @@ package xyz.valnet.hadean.gameobjects.ui;
|
|||
|
||||
import xyz.valnet.engine.graphics.IModalUI;
|
||||
import xyz.valnet.engine.scenegraph.GameObject;
|
||||
import xyz.valnet.engine.scenegraph.IKeyboardListener;
|
||||
import xyz.valnet.engine.scenegraph.ITransient;
|
||||
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.util.Assets;
|
||||
|
||||
public class ExclusivityManager extends GameObject implements ITransient {
|
||||
public class ExclusivityManager extends GameObject implements ITransient, IKeyboardListener {
|
||||
private IModalUI current = null;
|
||||
|
||||
private boolean switching = false;
|
||||
|
||||
private IModalUI defaultTab = null;
|
||||
private IModalUI menuTab = null;
|
||||
|
||||
public void switchTo(IModalUI tab) {
|
||||
if(tab == current) return;
|
||||
|
|
@ -41,9 +44,25 @@ public class ExclusivityManager extends GameObject implements ITransient {
|
|||
else current.back();
|
||||
}
|
||||
|
||||
private void backOrMenu() {
|
||||
if(current == null) switchTo(menuTab);
|
||||
else current.back();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void connect() {
|
||||
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;
|
||||
|
||||
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.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 boolean opened;
|
||||
private float progress = 0f;
|
||||
private float width = 200;
|
||||
|
||||
private int padding = 10;
|
||||
private int height = 200;
|
||||
|
||||
@Override
|
||||
public void render() {
|
||||
Drawing.setLayer(Layers.GENERAL_UI);
|
||||
float left = lerp(-width - padding, padding, progress);
|
||||
Assets.uiFrame.draw((int) left, padding, (int) width, 576 - padding * 2 - BottomBar.bottomBarHeight);
|
||||
Assets.font.drawString(jobBoard.details(), (int) left + padding, padding * 2);
|
||||
protected void gui() {
|
||||
if(!shouldRender()) return;
|
||||
|
||||
window(0, animate(576 + 50, 576 - BottomBar.bottomBarHeight - height + 1), 1024, height, () -> {
|
||||
horizontal(() -> {
|
||||
vertical(() -> {
|
||||
text("Valid");
|
||||
text(jobBoard.getValidJobs());
|
||||
});
|
||||
space(32);
|
||||
vertical(() -> {
|
||||
text("Invalid");
|
||||
text(jobBoard.getInvalidJobs());
|
||||
});
|
||||
space(32);
|
||||
vertical(() -> {
|
||||
text("Taken");
|
||||
text(jobBoard.getTakenJobs());
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void connect() {
|
||||
super.connect();
|
||||
selection = get(SelectionLayer.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
|
||||
public String getTabName() {
|
||||
return "Jobs";
|
||||
return "Work";
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onClose() {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
protected void onClose() { }
|
||||
|
||||
@Override
|
||||
protected void onOpen() {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void gui() {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
protected void onOpen() { }
|
||||
}
|
||||
|
|
|
|||
|
|
@ -28,10 +28,12 @@ public class MenuTab extends Tab {
|
|||
space(8);
|
||||
if(button("Save")) {
|
||||
save();
|
||||
close();
|
||||
}
|
||||
space(8);
|
||||
if(button("Load")) {
|
||||
load();
|
||||
close();
|
||||
}
|
||||
space(24);
|
||||
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.tabs.BuildTab;
|
||||
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.worldobjects.pawn.Pawn;
|
||||
|
||||
|
|
@ -53,7 +54,7 @@ public class GameScene extends SceneGraph {
|
|||
objects.add(new BottomBar());
|
||||
objects.add(new ExclusivityManager());
|
||||
objects.add(new BuildTab());
|
||||
// objects.add(new JobBoardTab());
|
||||
objects.add(new JobBoardTab());
|
||||
objects.add(new DebugTab());
|
||||
objects.add(new MenuTab());
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue