Made the Menus API less conflicting (#6154)

* Made the Menus API less conflicting

* Fixed ignoring zero menuId in Menus
This commit is contained in:
Zelaux
2021-10-14 23:23:12 +05:00
committed by GitHub
parent d5babe88e3
commit dcb84f9faf

View File

@@ -11,11 +11,12 @@ import static mindustry.Vars.*;
/** Class for handling menus and notifications across the network. Unstable API! */ /** Class for handling menus and notifications across the network. Unstable API! */
public class Menus{ public class Menus{
private static IntMap<MenuListener> menuListeners = new IntMap<>(); private static final Seq<MenuListener> menuListeners = new Seq<>();
/** Register a *global* menu listener. If no option is chosen, the option is returned as -1. */ /** Register a *global* menu listener. If no option is chosen, the option is returned as -1. */
public static void registerMenu(int id, MenuListener listener){ public static int registerMenu(MenuListener listener){
menuListeners.put(id, listener); menuListeners.add(listener);
return menuListeners.size - 1;
} }
//do not invoke any of the methods below directly, use Call //do not invoke any of the methods below directly, use Call
@@ -30,7 +31,7 @@ public class Menus{
@Remote(targets = Loc.both, called = Loc.both) @Remote(targets = Loc.both, called = Loc.both)
public static void menuChoose(@Nullable Player player, int menuId, int option){ public static void menuChoose(@Nullable Player player, int menuId, int option){
if(player != null && menuListeners.containsKey(menuId)){ if(player != null && menuId >= 0 && menuId < menuListeners.size){
Events.fire(new MenuOptionChooseEvent(player, menuId, option)); Events.fire(new MenuOptionChooseEvent(player, menuId, option));
menuListeners.get(menuId).get(player, option); menuListeners.get(menuId).get(player, option);
} }