public void SaveMap() { IoCManager.Resolve <IMapManager>().SaveMap(); }
public ReagentPrototype() { IoCManager.InjectDependencies(this); }
public void Execute(IConsoleShell shell, IPlayerSession?player, string[] args) { if (args.Length < 5) { return; } if (!int.TryParse(args[0], out var x) || !int.TryParse(args[1], out var y) || !int.TryParse(args[2], out var id) || !float.TryParse(args[3], out var amount) || !bool.TryParse(args[4], out var ratio)) { return; } var gridId = new GridId(id); var mapMan = IoCManager.Resolve <IMapManager>(); if (!gridId.IsValid() || !mapMan.TryGetGrid(gridId, out var gridComp)) { shell.SendText(player, "Invalid grid ID."); return; } var entMan = IoCManager.Resolve <IEntityManager>(); if (!entMan.TryGetEntity(gridComp.GridEntityId, out var grid)) { shell.SendText(player, "Failed to get grid entity."); return; } if (!grid.HasComponent <GridAtmosphereComponent>()) { shell.SendText(player, "Grid doesn't have an atmosphere."); return; } var gam = grid.GetComponent <GridAtmosphereComponent>(); var indices = new Vector2i(x, y); var tile = gam.GetTile(indices); if (tile == null) { shell.SendText(player, "Invalid coordinates."); return; } if (tile.Air == null) { shell.SendText(player, "Can't remove gas from that tile."); return; } if (ratio) { tile.Air.RemoveRatio(amount); } else { tile.Air.Remove(amount); } gam.Invalidate(indices); }
protected override Control MakeUI(object?value) { var coords = (EntityCoordinates)value !; var hBoxContainer = new BoxContainer { Orientation = LayoutOrientation.Horizontal, MinSize = new Vector2(240, 0), }; hBoxContainer.AddChild(new Label { Text = "grid: " }); var entityManager = IoCManager.Resolve <IEntityManager>(); var gridId = new LineEdit { Editable = !ReadOnly, HorizontalExpand = true, PlaceHolder = "Grid ID", ToolTip = "Grid ID", Text = coords.GetGridId(entityManager).ToString() }; hBoxContainer.AddChild(gridId); hBoxContainer.AddChild(new Label { Text = "pos: " }); var x = new LineEdit { Editable = !ReadOnly, HorizontalExpand = true, PlaceHolder = "X", ToolTip = "X", Text = coords.X.ToString(CultureInfo.InvariantCulture) }; hBoxContainer.AddChild(x); var y = new LineEdit { Editable = !ReadOnly, HorizontalExpand = true, PlaceHolder = "Y", ToolTip = "Y", Text = coords.Y.ToString(CultureInfo.InvariantCulture) }; hBoxContainer.AddChild(y); void OnEntered(LineEdit.LineEditEventArgs e) { var gridVal = int.Parse(gridId.Text, CultureInfo.InvariantCulture); var mapManager = IoCManager.Resolve <IMapManager>(); var xVal = float.Parse(x.Text, CultureInfo.InvariantCulture); var yVal = float.Parse(y.Text, CultureInfo.InvariantCulture); if (!mapManager.TryGetGrid(new GridId(gridVal), out var grid)) { ValueChanged(new EntityCoordinates(EntityUid.Invalid, (xVal, yVal))); return; } ValueChanged(new EntityCoordinates(grid.GridEntityId, (xVal, yVal))); } if (!ReadOnly) { gridId.OnTextEntered += OnEntered; x.OnTextEntered += OnEntered; y.OnTextEntered += OnEntered; } return(hBoxContainer); }
public T res <T>() { return(IoCManager.Resolve <T>()); }
public bool Execute(IDebugConsole console, params string[] args) { var vvm = IoCManager.Resolve <IViewVariablesManager>(); // If you don't provide an entity ID, it opens the test class. // Spooky huh. if (args.Length == 0) { vvm.OpenVV(new VVTest()); return(false); } var valArg = args[0]; if (valArg.StartsWith("SI")) { // Server-side IoC selector. var selector = new ViewVariablesIoCSelector(valArg.Substring(1)); vvm.OpenVV(selector); return(false); } if (valArg.StartsWith("I")) { // Client-side IoC selector. var reflection = IoCManager.Resolve <IReflectionManager>(); if (!reflection.TryLooseGetType(valArg, out var type)) { console.AddLine("Unable to find that type."); return(false); } object obj; try { obj = IoCManager.ResolveType(type); } catch (UnregisteredTypeException) { console.AddLine("Unable to find that type."); return(false); } vvm.OpenVV(obj); return(false); } if (valArg.StartsWith("gui/")) { // UI element. var obj = IoCManager.Resolve <IUserInterfaceManager>().RootControl; if (!obj.TryGetChild(valArg.Substring(4), out var control)) { console.AddLine("That control does not exist."); return(false); } vvm.OpenVV(control); return(false); } // Entity. if (!EntityUid.TryParse(args[0], out var uid)) { console.AddLine("Invalid specifier format."); return(false); } var entityManager = IoCManager.Resolve <IEntityManager>(); if (!entityManager.TryGetEntity(uid, out var entity)) { console.AddLine("That entity does not exist."); return(false); } vvm.OpenVV(entity); return(false); }
public ConstructionMenu() { IoCManager.InjectDependencies(this); Placement = (PlacementManager)IoCManager.Resolve <IPlacementManager>(); Placement.PlacementChanged += OnPlacementChanged; Title = "Construction"; var hSplitContainer = new HSplitContainer(); // Left side var recipes = new VBoxContainer { CustomMinimumSize = new Vector2(150.0f, 0.0f) }; SearchBar = new LineEdit { PlaceHolder = "Search" }; RecipeList = new Tree { SizeFlagsVertical = SizeFlags.FillExpand, HideRoot = true }; recipes.AddChild(SearchBar); recipes.AddChild(RecipeList); hSplitContainer.AddChild(recipes); // Right side var guide = new VBoxContainer(); var info = new HBoxContainer(); InfoIcon = new TextureRect(); InfoLabel = new Label { SizeFlagsHorizontal = SizeFlags.FillExpand, SizeFlagsVertical = SizeFlags.ShrinkCenter }; info.AddChild(InfoIcon); info.AddChild(InfoLabel); guide.AddChild(info); var stepsLabel = new Label { SizeFlagsHorizontal = SizeFlags.ShrinkCenter, SizeFlagsVertical = SizeFlags.ShrinkCenter, Text = "Steps" }; guide.AddChild(stepsLabel); StepList = new ItemList { SizeFlagsVertical = SizeFlags.FillExpand, SelectMode = ItemList.ItemListSelectMode.None }; guide.AddChild(StepList); var buttonsContainer = new HBoxContainer(); BuildButton = new Button { SizeFlagsHorizontal = SizeFlags.FillExpand, TextAlign = Label.AlignMode.Center, Text = "Build!", Disabled = true, ToggleMode = true }; EraseButton = new Button { TextAlign = Label.AlignMode.Center, Text = "Clear Ghosts", ToggleMode = true }; buttonsContainer.AddChild(BuildButton); buttonsContainer.AddChild(EraseButton); guide.AddChild(buttonsContainer); hSplitContainer.AddChild(guide); Contents.AddChild(hSplitContainer); BuildButton.OnToggled += OnBuildToggled; EraseButton.OnToggled += OnEraseToggled; SearchBar.OnTextChanged += OnTextEntered; RecipeList.OnItemSelected += OnItemSelected; PopulatePrototypeList(); PopulateTree(); }
public StorageWindow() { Title = "Storage Item"; RectClipContent = true; var containerButton = new ContainerButton { SizeFlagsHorizontal = SizeFlags.Fill, SizeFlagsVertical = SizeFlags.Fill, MouseFilter = MouseFilterMode.Pass, }; var innerContainerButton = new PanelContainer { PanelOverride = _unHoveredBox, SizeFlagsHorizontal = SizeFlags.Fill, SizeFlagsVertical = SizeFlags.Fill, }; containerButton.AddChild(innerContainerButton); containerButton.OnPressed += args => { var controlledEntity = IoCManager.Resolve <IPlayerManager>().LocalPlayer.ControlledEntity; if (controlledEntity.TryGetComponent(out HandsComponent hands)) { StorageEntity.SendNetworkMessage(new InsertEntityMessage()); } }; VSplitContainer = new VBoxContainer() { MouseFilter = MouseFilterMode.Ignore, }; containerButton.AddChild(VSplitContainer); Information = new Label { Text = "Items: 0 Volume: 0/0 Stuff", SizeFlagsVertical = SizeFlags.ShrinkCenter }; VSplitContainer.AddChild(Information); var listScrollContainer = new ScrollContainer { SizeFlagsVertical = SizeFlags.FillExpand, SizeFlagsHorizontal = SizeFlags.FillExpand, HScrollEnabled = true, VScrollEnabled = true, }; EntityList = new VBoxContainer { SizeFlagsHorizontal = SizeFlags.FillExpand }; listScrollContainer.AddChild(EntityList); VSplitContainer.AddChild(listScrollContainer); Contents.AddChild(containerButton); listScrollContainer.OnMouseEntered += args => { innerContainerButton.PanelOverride = _HoveredBox; }; listScrollContainer.OnMouseExited += args => { innerContainerButton.PanelOverride = _unHoveredBox; }; }
public void DoTargetEntityAction(TargetEntityActionEventArgs args) { var disarmedActs = args.Target.GetAllComponents <IDisarmedAct>().ToArray(); if (!args.Performer.InRangeUnobstructed(args.Target)) { return; } if (disarmedActs.Length == 0) { if (args.Performer.TryGetComponent(out ActorComponent? actor)) { // Fall back to a normal interaction with the entity var player = actor.PlayerSession; var coordinates = args.Target.Transform.Coordinates; var target = args.Target.Uid; EntitySystem.Get <InteractionSystem>().HandleUseInteraction(player, coordinates, target); return; } return; } if (!args.Performer.TryGetComponent <SharedActionsComponent>(out var actions)) { return; } if (args.Target == args.Performer || !EntitySystem.Get <ActionBlockerSystem>().CanAttack(args.Performer)) { return; } var random = IoCManager.Resolve <IRobustRandom>(); var audio = EntitySystem.Get <AudioSystem>(); var system = EntitySystem.Get <MeleeWeaponSystem>(); var diff = args.Target.Transform.MapPosition.Position - args.Performer.Transform.MapPosition.Position; var angle = Angle.FromWorldVec(diff); actions.Cooldown(ActionType.Disarm, Cooldowns.SecondsFromNow(_cooldown)); if (random.Prob(_failProb)) { SoundSystem.Play(Filter.Pvs(args.Performer), "/Audio/Weapons/punchmiss.ogg", args.Performer, AudioHelpers.WithVariation(0.025f)); args.Performer.PopupMessageOtherClients(Loc.GetString("disarm-action-popup-message-other-clients", ("performerName", args.Performer.Name), ("targetName", args.Target.Name))); args.Performer.PopupMessageCursor(Loc.GetString("disarm-action-popup-message-cursor", ("targetName", args.Target.Name))); system.SendLunge(angle, args.Performer); return; } system.SendAnimation("disarm", angle, args.Performer, args.Performer, new [] { args.Target }); var eventArgs = new DisarmedActEventArgs() { Target = args.Target, Source = args.Performer, PushProbability = _pushProb }; // Sort by priority. Array.Sort(disarmedActs, (a, b) => a.Priority.CompareTo(b.Priority)); foreach (var disarmedAct in disarmedActs) { if (disarmedAct.Disarmed(eventArgs)) { return; } } SoundSystem.Play(Filter.Pvs(args.Performer), "/Audio/Effects/thudswoosh.ogg", args.Performer.Transform.Coordinates, AudioHelpers.WithVariation(0.025f)); }
public void PlayFootstep() { SoundSystem.Play(Filter.Pvs(Owner), SoundCollection.GetSound(), IoCManager.Resolve <IEntityManager>().GetComponent <TransformComponent>(Owner).Coordinates, AudioHelpers.WithVariation(Variation).WithVolume(-2f)); }