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); })); }
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); })); }
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); } }; }