Exemplo n.º 1
0
    public UnitSearchResult SearchUnit(string[] path)
    {
        ConsoleCommandGroup currentgroup = this;
        UnitSearchResult    result       = new UnitSearchResult();

        for (int i = 0; i < path.Length; i++)
        {
            ConsoleCommandGroup group   = currentgroup.GetGroup(path[i]);
            ConsoleCommand      command = currentgroup.GetCommand(path[i]);
            if (group != null)
            {
                currentgroup = group;
                result.index++;
            }
            else if (command != null)
            {
                result.index++;
                result.unit = command;
                return(result);
            }
        }
        result.unit = currentgroup;
        return(result);
    }
Exemplo n.º 2
0
    public override void Start()
    {
        // GUI
        GUI = new SGroup {
            Visible       = false,
            OnUpdateStyle = (SElement elem) => elem.Fill(),
            Children      =
            {
                new SGroup     {
                    Background      = new Color(0f, 0f, 0f, 0f),
                    AutoLayout      = (SGroup g) => g.AutoLayoutVertical,
                    ScrollDirection = SGroup.EDirection.Vertical,
                    OnUpdateStyle   = delegate(SElement elem) {
                        elem.Fill();
                        elem.Size -= new Vector2(0f, elem.Backend.LineHeight - 4f); // Command line input space
                    },
                    Children =
                    {
                        new SLabel("ETGMod <color=#ffffffff>" + ETGMod.BaseUIVersion + "</color>")
                        {
                            Foreground = Color.gray
                        },
                        new SLabel("Console backend <color=#ffffffff>R" + REVISION + "</color>")
                        {
                            Foreground = Color.gray
                        },
                        new SLabel("THIS CONSOLE IS <color=#ff0000ff>WORK IN PROGRESS</color>."),
                        new SLabel("Use <color=#ffffffff>help</color> to find out how to use the console.")
                        {
                            Foreground = Color.gray
                        },
                        new SLabel(),
                        //new SLabel("Wee this text gets randomized in order!") {
                        //   With = {
                        //       new SRandomLabelModifier()
                        //   }
                        //},
                        // new SLabel(),
                    }
                },
                new STextField {
                    OnUpdateStyle = delegate(SElement elem){
                        elem.Size.x     = elem.Parent.InnerSize.x;
                        elem.Position.x = 0f;
                        elem.Position.y = elem.Parent.InnerSize.y - elem.Size.y;
                    },
                    OnTextUpdate = delegate(STextField elem, string prevText){
                        HideAutocomplete();
                    },
                    OverrideTab = true,
                    OnKey       = delegate(STextField field, bool keyDown, KeyCode keyCode) {
                        if (!keyDown)
                        {
                            return;
                        }
                        if (keyCode == KeyCode.Escape || keyCode == KeyCode.F2 || keyCode == KeyCode.Slash || keyCode == KeyCode.BackQuote)
                        {
                            ETGModGUI.CurrentMenu = ETGModGUI.MenuOpened.None;
                            return;
                        }
                        if (keyCode == KeyCode.Tab)
                        {
                            ShowAutocomplete();
                            return;
                        }
                    },
                    OnSubmit = delegate(STextField elem, string text){
                        if (text.Length == 0)
                        {
                            return;
                        }
                        ParseCommand(text);
                        if (_CloseConsoleOnCommand)
                        {
                            ETGModGUI.CurrentMenu = ETGModGUI.MenuOpened.None;
                        }
                    }
                }
            }
        };

        // GLOBAL NAMESPACE
        Commands
        .AddUnit("help", delegate(string[] args) {
            List <List <string> > paths = Commands.ConstructPaths();
            for (int i = 0; i < paths.Count; i++)
            {
                Log(string.Join(" ", paths[i].ToArray()));
            }
        })
        .AddUnit("exit", (string[] args) => ETGModGUI.CurrentMenu = ETGModGUI.MenuOpened.None)
        .AddUnit("screenshake", SetShake)
        .AddUnit("echo", Echo)
        .AddUnit("tp", Teleport)
        .AddUnit("character", SwitchCharacter)
        .AddUnit("clear", (string[] args) => GUI[0].Children.Clear())
        .AddUnit("godmode", godmode)        // {
        //   GameManager.Instance.PrimaryPlayer.healthHaver.IsVulnerable = SetBool(args, GameManager.Instance.PrimaryPlayer.healthHaver.IsVulnerable);
        // GameManager.Instance.PrimaryPlayer.healthHaver.IsVulnerable = SetBool(args, GameManager.Instance.PrimaryPlayer.healthHaver.IsVulnerable); delegate(string[] args
        // })
        .AddGroup("spawn", Spawn, _SpawnAutocompletionSettings);

        // SPAWN NAMESAPCE
        Commands.GetGroup("spawn")
        .AddUnit("chest", SpawnChest)
        .AddUnit("all", SpawnAll);

        // GIVE NAMESPACE
        Commands.AddGroup("give", GiveItem, _GiveAutocompletionSettings);

        Commands.GetGroup("give")
        .AddGroup("all", (string[] args) => {
            foreach (string id in Game.Items.IDs)
            {
                if (id != "gungeon:cell_key" /* (bugged!) */)
                {
                    Game.PrimaryPlayer.GiveItem(id);
                }
            }
        });

        // GIVE ALL NAMESPACE
        Commands.GetGroup("give").GetGroup("all")
        .AddUnit("guns", (string[] args) => {
            foreach (string id in Game.Items.IDs)
            {
                if (ETGMod.Databases.Items[id] is Gun)
                {
                    Game.PrimaryPlayer.GiveItem(id);
                }
            }
        })
        .AddUnit("passives", (string[] args) => {
            foreach (string id in Game.Items.IDs)
            {
                if (ETGMod.Databases.Items[id] is PassiveItem)
                {
                    Game.PrimaryPlayer.GiveItem(id);
                }
            }
        })
        .AddUnit("actives", (string[] args) => {
            foreach (string id in Game.Items.IDs)
            {
                if (ETGMod.Databases.Items[id] is PlayerItem)
                {
                    Game.PrimaryPlayer.GiveItem(id);
                }
            }
        });

        // STAT NAMESPACE
        Commands.AddGroup("stat");

        Commands.GetGroup("stat")
        .AddUnit("get", StatGet, _StatAutocompletionSettings)
        .AddGroup("set", StatSetCurrentCharacter, _StatAutocompletionSettings)
        .AddUnit("mod", StatMod, _StatAutocompletionSettings)
        .AddUnit("list", StatList);

        Commands.GetGroup("stat").GetGroup("set")
        .AddUnit("session", StatSetSession, _StatAutocompletionSettings);

        // ROLL NAMESPACE
        Commands.AddGroup("roll");

        Commands.GetGroup("roll")
        .AddUnit("distance", DodgeRollDistance)
        .AddUnit("speed", DodgeRollSpeed);

        // TEST NAMESPACE
        Commands.AddUnit("test", new ConsoleCommandGroup());

        Commands.GetGroup("test")
        .AddGroup("resources")
        .AddUnit("skiplevel", delegate(string[] args) {
            Pixelator.Instance.FadeToBlack(0.5f, false, 0f);
            GameManager.Instance.DelayedLoadNextLevel(0.5f);
        }).AddUnit("charselect", delegate(string[] args) {
            Pixelator.Instance.FadeToBlack(0.5f, false, 0f);
            GameManager.Instance.DelayedLoadCharacterSelect(0.5f);
        });

        //// TEST.RESOURCES NAMESPACE
        Commands.GetGroup("test").GetGroup("resources")
        .AddUnit("load", ResourcesLoad);

        // DUMP NAMESPACE
        Commands.AddUnit("dump", new ConsoleCommandGroup());

        Commands.GetGroup("dump")
        .AddGroup("sprites", (args) => SetBool(args, ref ETGMod.Assets.DumpSprites))
        .AddUnit("packer", (args) => ETGMod.Assets.Dump.DumpPacker())
        .AddUnit("synergies", DumpSynergies)
        .AddUnit("pickups", DumpPickups);

        Commands.GetGroup("dump").GetGroup("sprites")
        .AddUnit("metadata", (args) => SetBool(args, ref ETGMod.Assets.DumpSpritesMetadata));

        // CONF NAMESPACE
        Commands.AddGroup("conf");

        Commands.GetGroup("conf")
        .AddUnit("close_console_on_command", (args) => SetBool(args, ref _CloseConsoleOnCommand))
        .AddUnit("cut_input_focus_on_command", (args) => SetBool(args, ref _CutInputFocusOnCommand))
        .AddUnit("enable_damage_indicators", (args) => SetBool(args, ref ETGModGUI.UseDamageIndicators))
        .AddUnit("match_contains", (args) => SetBool(args, ref AutocompletionSettings.MatchContains))
        .AddUnit("enable_stat_set", (args) => SetBool(args, ref StatSetEnabled))
        .AddUnit("player", (args) => ETGMod.Player.PlayerReplacement    = args.Length == 1 ? args[0] : null)
        .AddUnit("player_coop", (args) => ETGMod.Player.CoopReplacement = args.Length == 1 ? args[0] : null);
    }