Esempio n. 1
0
        public override void StartClientSide(ICoreClientAPI api)
        {
            renderer = new PlacementRenderer(api);
            api.Event.RegisterRenderer(renderer, EnumRenderStage.Opaque);
            api.RegisterCommand("pconfig", "Config Placement Preview System", "[enabled|textured]", (id, args) =>
            {
                WaypointUtilConfig config = api.ModLoader.GetModSystem <WaypointUtilSystem>().Config;
                string arg   = args.PopWord();
                bool?enabled = args.PopBool();
                switch (arg)
                {
                case "enabled":
                    config.PRShow = enabled ?? !config.PRShow;
                    api.ShowChatMessage("Block preview set to " + config.PRShow);
                    break;

                case "tinted":
                    config.PRTint = enabled ?? !config.PRTint;
                    api.ShowChatMessage("Block preview tinting set to " + config.PRTint);
                    break;

                default:
                    break;
                }
                api.ModLoader.GetModSystem <ConfigLoader>().SaveConfig();
            });
            api.Event.LevelFinalize += () => api.Shader.ReloadShaders();
        }
Esempio n. 2
0
        public override void StartClientSide(ICoreClientAPI api)
        {
            capi         = api;
            configLoader = capi.ModLoader.GetModSystem <ConfigLoader>();
            config       = configLoader.Config;
            capi.RegisterCommand("lightutil", "Light Util", "[lightlevel|type|radius|alpha|red]", new ClientChatCommandDelegate(CmdLightUtil));

            id = api.World.RegisterGameTickListener(dt =>
            {
                EntityPlayer player = api.World.Player.Entity;

                if (player != null)
                {
                    api.World.RegisterGameTickListener(d =>
                    {
                        if (config.LightLevels)
                        {
                            LightHighlight(null, config.LightLevelType);
                        }
                        else
                        {
                            ClearLightLevelHighlights();
                        }
                    }, 100);

                    api.World.UnregisterGameTickListener(id);
                }
            }, 500);
        }
        public void LoadConfig()
        {
            if (capi.LoadModConfig <WaypointUtilConfig>("waypointutils.json") == null)
            {
                SaveConfig(); return;
            }

            Config = capi.LoadModConfig <WaypointUtilConfig>("waypointutils.json");
            SaveConfig();
        }
        public override void OnOwnPlayerDataReceived()
        {
            base.OnOwnPlayerDataReceived();
            config = capi.ModLoader.GetModSystem <ConfigLoader>().Config;

            ElementBounds dialogBounds = ElementBounds.Fixed(EnumDialogArea.LeftMiddle, 30, 0, 465, 500);
            ElementBounds bgBounds     = ElementBounds.Fixed(EnumDialogArea.LeftMiddle, 0, -200, 465, 100);

            string[]      colors;
            List <string> c = new List <string>()
            {
                "Random"
            };

            string[] names = Enum.GetNames(typeof(KnownColor));

            for (int i = 28; i < 166; i++)
            {
                c.Add(names[i]);
            }
            colors = c.ToArray();
            config.SetColorIndex = config.SetColorIndex < 0 ? 0 : config.SetColorIndex;

            color = colors[config.SetColorIndex];
            UpdateDropDown(colors, color);

            SingleComposer = capi.Gui.CreateCompo("waypointfrontend", dialogBounds)
                             .AddDialogTitleBar("Waypoint Utils", VClose, CairoFont.WhiteSmallText())
                             .AddDialogBG(bgBounds)
                             .AddTextInput(ElementBounds.Fixed(EnumDialogArea.LeftMiddle, 86.5, -200, 370, 20), OnTextChanged, null, "textinput")
                             .AddDropDown(colors, colors, config.SetColorIndex, (newval, on) =>
            {
                UpdateDropDown(colors, newval);
                capi.TriggerChatMessage(".wpcfg save");
                capi.Event.RegisterCallback(dt => capi.ModLoader.GetModSystem <WaypointUtilSystem>().Update(), 100);
            },
                                          ElementBounds.Fixed(EnumDialogArea.LeftMiddle, 250, -170, 125, 10), "dropdown")
                             .AddTextToggleButtons(new string[] { "Create WP", "Purge Death Waypoints", "Toggle Floaty Waypoints", "Toggle Block Waypoints", "Toggle This Color" }, CairoFont.ButtonText().WithFontSize(10), i =>
            {
                capi.Event.RegisterCallback(j =>
                {
                    SingleComposer.Dispose();
                    OnOwnPlayerDataReceived();
                    SingleComposer.Compose();
                    capi.TriggerChatMessage(".wpcfg save");
                }, 100);
                switch (i)
                {
                case 0:
                    CreateWaypoint();
                    break;

                case 1:
                    capi.TriggerChatMessage(".wpcfg pdw");
                    break;

                case 2:
                    capi.TriggerChatMessage(".wpcfg open");
                    break;

                case 3:
                    capi.TriggerChatMessage(".wpcfg perblockwaypoints");
                    break;

                case 4:
                    if (config.DisabledColors.Contains(intColor))
                    {
                        config.DisabledColors.Remove(intColor);
                    }
                    else
                    {
                        config.DisabledColors.Add(intColor);
                    }
                    break;

                default:
                    break;
                }
                capi.Event.RegisterCallback(dt => capi.ModLoader.GetModSystem <WaypointUtilSystem>().Update(), 100);
            }, new ElementBounds[] {
                ElementBounds.Fixed(EnumDialogArea.LeftMiddle, 5, -200, 80, 25),
                ElementBounds.Fixed(EnumDialogArea.LeftMiddle, 5, -170, 80, 35),
                ElementBounds.Fixed(EnumDialogArea.LeftMiddle, 85, -170, 80, 35),
                ElementBounds.Fixed(EnumDialogArea.LeftMiddle, 165, -170, 80, 35),
                ElementBounds.Fixed(EnumDialogArea.LeftMiddle, 380, -170, 80, 35),
            });
        }