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
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -11,11 +11,12 @@ import static mindustry.Vars.*;
/** Class for handling menus and notifications across the network. Unstable API! */
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. */
public static void registerMenu(int id, MenuListener listener){
menuListeners.put(id, listener);
public static int registerMenu(MenuListener listener){
menuListeners.add(listener);
return menuListeners.size - 1;
}
//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)
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));
menuListeners.get(menuId).get(player, option);
}