コード例 #1
0
        public override string GetCursor(int2 pos)
        {
            return(Sync.CheckSyncUnchanged(world, () =>
            {
                if (SelectionBox != null)
                {
                    return null;                        /* always show an arrow while selecting */
                }
                var mi = new MouseInput
                {
                    Location = pos,
                    Button = Game.mouseButtonPreference.Action,
                    Modifiers = Game.GetModifierKeys()
                };

                // TODO: fix this up.
                return world.OrderGenerator.GetCursor(world, Game.viewport.ViewToWorld(mi), mi);
            }));
        }
コード例 #2
0
        public override string GetCursor(int2 screenPos)
        {
            return(Sync.CheckSyncUnchanged(World, () =>
            {
                // Always show an arrow while selecting
                if (SelectionBox != null)
                {
                    return null;
                }

                var cell = worldRenderer.Viewport.ViewToWorld(screenPos);

                var mi = new MouseInput
                {
                    Location = screenPos,
                    Button = Game.Settings.Game.MouseButtonPreference.Action,
                    Modifiers = Game.GetModifierKeys()
                };

                return World.OrderGenerator.GetCursor(World, cell, mi);
            }));
        }
コード例 #3
0
        public LoadIngamePlayerOrObserverUILogic(Widget widget, World world)
        {
            var ingameRoot = widget.Get("INGAME_ROOT");
            var worldRoot  = ingameRoot.Get("WORLD_ROOT");
            var menuRoot   = ingameRoot.Get("MENU_ROOT");
            var playerRoot = worldRoot.Get("PLAYER_ROOT");

            if (world.LocalPlayer == null)
            {
                Game.LoadWidget(world, "OBSERVER_WIDGETS", playerRoot, new WidgetArgs());
            }
            else
            {
                var playerWidgets = Game.LoadWidget(world, "PLAYER_WIDGETS", playerRoot, new WidgetArgs());
                var sidebarTicker = playerWidgets.Get <LogicTickerWidget>("SIDEBAR_TICKER");
                var objectives    = world.LocalPlayer.PlayerActor.Info.TraitInfoOrDefault <MissionObjectivesInfo>();

                sidebarTicker.OnTick = () =>
                {
                    // Switch to observer mode after win/loss
                    if (world.LocalPlayer.WinState != WinState.Undefined && !loadingObserverWidgets)
                    {
                        loadingObserverWidgets = true;
                        Game.RunAfterDelay(objectives != null ? objectives.GameOverDelay : 0, () =>
                        {
                            if (!Game.IsCurrentWorld(world))
                            {
                                return;
                            }

                            playerRoot.RemoveChildren();
                            Game.LoadWidget(world, "OBSERVER_WIDGETS", playerRoot, new WidgetArgs());
                        });
                    }
                };
            }

            Game.LoadWidget(world, "CHAT_PANEL", worldRoot, new WidgetArgs()
            {
                { "isMenuChat", false }
            });

            world.GameOver += () =>
            {
                Ui.CloseWindow();
                menuRoot.RemoveChildren();

                if (world.LocalPlayer != null)
                {
                    var scriptContext = world.WorldActor.TraitOrDefault <LuaScript>();
                    var missionData   = world.WorldActor.Info.TraitInfoOrDefault <MissionDataInfo>();
                    if (missionData != null && !(scriptContext != null && scriptContext.FatalErrorOccurred))
                    {
                        var video = world.LocalPlayer.WinState == WinState.Won ? missionData.WinVideo : missionData.LossVideo;
                        if (!string.IsNullOrEmpty(video))
                        {
                            Media.PlayFMVFullscreen(world, video, () => { });
                        }
                    }
                }

                var optionsButton = playerRoot.GetOrNull <MenuButtonWidget>("OPTIONS_BUTTON");
                if (optionsButton != null)
                {
                    Sync.CheckSyncUnchanged(world, optionsButton.OnClick);
                }
            };
        }