Merge remote-tracking branch 'origin/master'
This commit is contained in:
@@ -562,31 +562,37 @@ public class UI implements ApplicationListener, Loadable{
|
|||||||
/** Shows a menu that fires a callback when an option is selected. If nothing is selected, -1 is returned. */
|
/** Shows a menu that fires a callback when an option is selected. If nothing is selected, -1 is returned. */
|
||||||
public void showMenu(String title, String message, String[][] options, Intc callback){
|
public void showMenu(String title, String message, String[][] options, Intc callback){
|
||||||
new Dialog(title){{
|
new Dialog(title){{
|
||||||
cont.row();
|
setFillParent(true);
|
||||||
cont.image().width(400f).pad(2).colspan(2).height(4f).color(Pal.accent);
|
removeChild(titleTable);
|
||||||
cont.row();
|
cont.add(titleTable).width(400f);
|
||||||
cont.add(message).width(400f).wrap().get().setAlignment(Align.center);
|
|
||||||
cont.row();
|
|
||||||
|
|
||||||
int option = 0;
|
cont.row();
|
||||||
for(var optionsRow : options){
|
cont.image().width(400f).pad(2).colspan(2).height(4f).color(Pal.accent).bottom();
|
||||||
Table buttonRow = buttons.row().table().get().row();
|
cont.row();
|
||||||
int fullWidth = 400 - (optionsRow.length - 1) * 8; // adjust to count padding as well
|
cont.pane(table -> {
|
||||||
int width = fullWidth / optionsRow.length;
|
table.add(message).width(400f).wrap().get().setAlignment(Align.center);
|
||||||
int lastWidth = fullWidth - width * (optionsRow.length - 1); // take the rest of space for uneven table
|
table.row();
|
||||||
|
|
||||||
for(int i = 0; i < optionsRow.length; i++){
|
int option = 0;
|
||||||
if(optionsRow[i] == null) continue;
|
for(var optionsRow : options){
|
||||||
|
Table buttonRow = table.row().table().get().row();
|
||||||
|
int fullWidth = 400 - (optionsRow.length - 1) * 8; // adjust to count padding as well
|
||||||
|
int width = fullWidth / optionsRow.length;
|
||||||
|
int lastWidth = fullWidth - width * (optionsRow.length - 1); // take the rest of space for uneven table
|
||||||
|
|
||||||
String optionName = optionsRow[i];
|
for(int i = 0; i < optionsRow.length; i++){
|
||||||
int finalOption = option;
|
if(optionsRow[i] == null) continue;
|
||||||
buttonRow.button(optionName, () -> {
|
|
||||||
callback.get(finalOption);
|
String optionName = optionsRow[i];
|
||||||
hide();
|
int finalOption = option;
|
||||||
}).size(i == optionsRow.length - 1 ? lastWidth : width, 50).pad(4);
|
buttonRow.button(optionName, () -> {
|
||||||
option++;
|
callback.get(finalOption);
|
||||||
|
hide();
|
||||||
|
}).size(i == optionsRow.length - 1 ? lastWidth : width, 50).pad(4);
|
||||||
|
option++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}).growX();
|
||||||
closeOnBack(() -> callback.get(-1));
|
closeOnBack(() -> callback.get(-1));
|
||||||
}}.show();
|
}}.show();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -147,6 +147,11 @@ public class AIController implements UnitController{
|
|||||||
//let uncontrollable weapons do their own thing
|
//let uncontrollable weapons do their own thing
|
||||||
if(!weapon.controllable || weapon.noAttack) continue;
|
if(!weapon.controllable || weapon.noAttack) continue;
|
||||||
|
|
||||||
|
if(!weapon.aiControllable){
|
||||||
|
mount.rotate = false;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
float mountX = unit.x + Angles.trnsx(rotation, weapon.x, weapon.y),
|
float mountX = unit.x + Angles.trnsx(rotation, weapon.x, weapon.y),
|
||||||
mountY = unit.y + Angles.trnsy(rotation, weapon.x, weapon.y);
|
mountY = unit.y + Angles.trnsy(rotation, weapon.x, weapon.y);
|
||||||
|
|
||||||
|
|||||||
@@ -53,6 +53,8 @@ public class Weapon implements Cloneable{
|
|||||||
public boolean alwaysContinuous;
|
public boolean alwaysContinuous;
|
||||||
/** whether this weapon can be aimed manually by players */
|
/** whether this weapon can be aimed manually by players */
|
||||||
public boolean controllable = true;
|
public boolean controllable = true;
|
||||||
|
/** whether this weapon can be automatically aimed by the unit */
|
||||||
|
public boolean aiControllable = true;
|
||||||
/** whether this weapon is always shooting, regardless of targets ore cone */
|
/** whether this weapon is always shooting, regardless of targets ore cone */
|
||||||
public boolean alwaysShooting = false;
|
public boolean alwaysShooting = false;
|
||||||
/** whether to automatically target relevant units in update(); only works when controllable = false. */
|
/** whether to automatically target relevant units in update(); only works when controllable = false. */
|
||||||
|
|||||||
Reference in New Issue
Block a user