Added nullable to most Content.Shared files (#3238)

* Add nullable to some Content.Shared files.

* Use [NotNullWhen(true)]

* Undo adding now redundant !'s

* Forgot one

* Add a ton more nullable

* You can guess

* Fix some issues

* It actually compiles now

* Auto stash before merge of "null2" and "origin/master"

* I lied

* enable annotations -> enable

* Revert ActionBlockerSystem.cs to original

* Fix ActionBlockerSystem.cs

* More nullable

* Undo some added exclamation marks

* Fix issues

* Update Content.Shared/Maps/ContentTileDefinition.cs

Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>

* Resolve some issues

* Remove unused method

* Fix more issues

* Fix more issues

* Fix more issues

* Fix more issues

* Fix issue, rollback SharedGhostComponent.cs

* Update submodule

* Fix issue, invert some if-statements to reduce nesting

* Revert RobustToolbox

* FIx things broken by merge

* Some fixes

- Replaced with string.Empty
- Remove some exclamation marks
- Revert file

* Some fixes

* Trivial #nullable enable

* Fix null ables

Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
This commit is contained in:
Visne
2021-02-27 04:12:09 +01:00
committed by GitHub
parent 2f45e5e044
commit 9b94d5c195
377 changed files with 1048 additions and 646 deletions

View File

@@ -1,4 +1,6 @@
using System.Collections.Generic;
#nullable enable
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using Robust.Shared.IoC;
using Robust.Shared.Log;
@@ -14,12 +16,11 @@ namespace Content.Shared.Actions
[Dependency]
private readonly IPrototypeManager _prototypeManager = default!;
private Dictionary<ActionType, ActionPrototype> _typeToAction;
private Dictionary<ItemActionType, ItemActionPrototype> _typeToItemAction;
private readonly Dictionary<ActionType, ActionPrototype> _typeToAction = new();
private readonly Dictionary<ItemActionType, ItemActionPrototype> _typeToItemAction = new();
public void Initialize()
{
_typeToAction = new Dictionary<ActionType, ActionPrototype>();
foreach (var action in _prototypeManager.EnumeratePrototypes<ActionPrototype>())
{
if (!_typeToAction.TryAdd(action.ActionType, action))
@@ -30,7 +31,6 @@ namespace Content.Shared.Actions
}
}
_typeToItemAction = new Dictionary<ItemActionType, ItemActionPrototype>();
foreach (var action in _prototypeManager.EnumeratePrototypes<ItemActionPrototype>())
{
if (!_typeToItemAction.TryAdd(action.ActionType, action))
@@ -53,7 +53,7 @@ namespace Content.Shared.Actions
/// Tries to get the action of the indicated type
/// </summary>
/// <returns>true if found</returns>
public bool TryGet(ActionType actionType, out ActionPrototype action)
public bool TryGet(ActionType actionType, [NotNullWhen(true)] out ActionPrototype? action)
{
return _typeToAction.TryGetValue(actionType, out action);
}
@@ -62,7 +62,7 @@ namespace Content.Shared.Actions
/// Tries to get the item action of the indicated type
/// </summary>
/// <returns>true if found</returns>
public bool TryGet(ItemActionType actionType, out ItemActionPrototype action)
public bool TryGet(ItemActionType actionType, [NotNullWhen(true)] out ItemActionPrototype? action)
{
return _typeToItemAction.TryGetValue(actionType, out action);
}

View File

@@ -1,4 +1,5 @@
using Content.Shared.Interfaces;
#nullable enable
using Content.Shared.Interfaces;
using Robust.Shared.IoC;
using Robust.Shared.Prototypes;
using Robust.Shared.Serialization;
@@ -24,28 +25,28 @@ namespace Content.Shared.Actions
/// action. Null if this is not an Instant ActionBehaviorType.
/// Will be null on client side if the behavior is not in Content.Client.
/// </summary>
public IInstantAction InstantAction { get; private set; }
public IInstantAction InstantAction { get; private set; } = default!;
/// <summary>
/// The IToggleAction that should be invoked when performing this
/// action. Null if this is not a Toggle ActionBehaviorType.
/// Will be null on client side if the behavior is not in Content.Client.
/// </summary>
public IToggleAction ToggleAction { get; private set; }
public IToggleAction ToggleAction { get; private set; } = default!;
/// <summary>
/// The ITargetEntityAction that should be invoked when performing this
/// action. Null if this is not a TargetEntity ActionBehaviorType.
/// Will be null on client side if the behavior is not in Content.Client.
/// </summary>
public ITargetEntityAction TargetEntityAction { get; private set; }
public ITargetEntityAction TargetEntityAction { get; private set; } = default!;
/// <summary>
/// The ITargetPointAction that should be invoked when performing this
/// action. Null if this is not a TargetPoint ActionBehaviorType.
/// Will be null on client side if the behavior is not in Content.Client.
/// </summary>
public ITargetPointAction TargetPointAction { get; private set; }
public ITargetPointAction TargetPointAction { get; private set; } = default!;
public override void LoadFrom(YamlMappingNode mapping)
{
@@ -61,7 +62,7 @@ namespace Content.Shared.Actions
// TODO: Split this class into server/client after RobustToolbox#1405
if (IoCManager.Resolve<IModuleManager>().IsClientModule) return;
IActionBehavior behavior = null;
IActionBehavior? behavior = null;
serializer.DataField(ref behavior, "behavior", null);
switch (behavior)
{

View File

@@ -1,4 +1,5 @@
namespace Content.Shared.Actions
#nullable enable
namespace Content.Shared.Actions
{
/// <summary>
/// Every possible action. Corresponds to actionType in action prototypes.

View File

@@ -1,3 +1,4 @@
#nullable enable
using System;
using System.Collections.Generic;
using System.Linq;
@@ -15,41 +16,41 @@ namespace Content.Shared.Actions
/// </summary>
public abstract class BaseActionPrototype : IPrototype
{
public string ID { get; private set; }
public string ID { get; private set; } = string.Empty;
/// <summary>
/// Icon representing this action in the UI.
/// </summary>
[ViewVariables]
public SpriteSpecifier Icon { get; private set; }
public SpriteSpecifier Icon { get; private set; } = SpriteSpecifier.Invalid;
/// <summary>
/// For toggle actions only, icon to show when toggled on. If omitted,
/// the action will simply be highlighted when turned on.
/// </summary>
[ViewVariables]
public SpriteSpecifier IconOn { get; private set; }
public SpriteSpecifier IconOn { get; private set; } = SpriteSpecifier.Invalid;
/// <summary>
/// Name to show in UI. Accepts formatting.
/// </summary>
public FormattedMessage Name { get; private set; }
public FormattedMessage Name { get; private set; } = new();
/// <summary>
/// Description to show in UI. Accepts formatting.
/// </summary>
public FormattedMessage Description { get; private set; }
public FormattedMessage Description { get; private set; } = new();
/// <summary>
/// Requirements message to show in UI. Accepts formatting, but generally should be avoided
/// so the requirements message isn't too prominent in the tooltip.
/// </summary>
public string Requires { get; private set; }
public string Requires { get; private set; } = string.Empty;
/// <summary>
/// The type of behavior this action has. This is valid clientside and serverside.
/// </summary>
public BehaviorType BehaviorType { get; protected set; }
public BehaviorType BehaviorType { get; protected set; } = BehaviorType.None;
/// <summary>
/// For targetpoint or targetentity actions, if this is true the action will remain
@@ -73,12 +74,12 @@ namespace Content.Shared.Actions
/// <summary>
/// Filters that can be used to filter this item in action menu.
/// </summary>
public IEnumerable<string> Filters { get; private set; }
public IEnumerable<string> Filters { get; private set; } = new List<string>();
/// <summary>
/// Keywords that can be used to search this item in action menu.
/// </summary>
public IEnumerable<string> Keywords { get; private set; }
public IEnumerable<string> Keywords { get; private set; } = new List<string>();
/// <summary>
/// True if this is an action that requires selecting a target
@@ -99,7 +100,7 @@ namespace Content.Shared.Actions
serializer.DataReadFunction("description", string.Empty,
s => Description = FormattedMessage.FromMarkup(s));
serializer.DataField(this, x => x.Requires,"requires", null);
serializer.DataField(this, x => x.Requires,"requires", string.Empty);
serializer.DataField(this, x => x.Icon,"icon", SpriteSpecifier.Invalid);
serializer.DataField(this, x => x.IconOn,"iconOn", SpriteSpecifier.Invalid);

View File

@@ -1,4 +1,5 @@
using System;
#nullable enable
using System;
using Content.Shared.GameObjects.Components.Mobs;
using Robust.Shared.GameObjects;
using Robust.Shared.Serialization;
@@ -27,7 +28,7 @@ namespace Content.Shared.Actions
/// <summary>
/// Actions component of the performer.
/// </summary>
public readonly SharedActionsComponent PerformerActions;
public readonly SharedActionsComponent? PerformerActions;
public ActionEventArgs(IEntity performer, ActionType actionType)
{

View File

@@ -1,4 +1,5 @@
using Robust.Shared.GameObjects;
#nullable enable
using Robust.Shared.GameObjects;
namespace Content.Shared.Actions
{

View File

@@ -1,4 +1,5 @@
using Robust.Shared.GameObjects;
#nullable enable
using Robust.Shared.GameObjects;
namespace Content.Shared.Actions
{

View File

@@ -1,4 +1,5 @@
using System;
#nullable enable
using System;
using Content.Shared.GameObjects.Components.Mobs;
using Robust.Shared.GameObjects;
using Robust.Shared.Serialization;
@@ -34,7 +35,7 @@ namespace Content.Shared.Actions
/// <summary>
/// Item actions component of the item.
/// </summary>
public readonly ItemActionsComponent ItemActions;
public readonly ItemActionsComponent? ItemActions;
public ItemActionEventArgs(IEntity performer, IEntity item, ItemActionType actionType)
{

View File

@@ -1,4 +1,5 @@
using Robust.Shared.GameObjects;
#nullable enable
using Robust.Shared.GameObjects;
namespace Content.Shared.Actions
{

View File

@@ -1,4 +1,5 @@
using Robust.Shared.GameObjects;
#nullable enable
using Robust.Shared.GameObjects;
namespace Content.Shared.Actions
{

View File

@@ -1,4 +1,5 @@
using Robust.Shared.GameObjects;
#nullable enable
using Robust.Shared.GameObjects;
using Robust.Shared.Map;
namespace Content.Shared.Actions

View File

@@ -1,4 +1,5 @@
using Robust.Shared.GameObjects;
#nullable enable
using Robust.Shared.GameObjects;
using Robust.Shared.Map;
namespace Content.Shared.Actions

View File

@@ -1,4 +1,5 @@
using Robust.Shared.GameObjects;
#nullable enable
using Robust.Shared.GameObjects;
namespace Content.Shared.Actions
{

View File

@@ -1,4 +1,5 @@
using Robust.Shared.GameObjects;
#nullable enable
using Robust.Shared.GameObjects;
namespace Content.Shared.Actions
{

View File

@@ -1,4 +1,5 @@
using Content.Shared.Interfaces;
#nullable enable
using Content.Shared.Interfaces;
using Robust.Shared.IoC;
using Robust.Shared.Log;
using Robust.Shared.Prototypes;
@@ -26,28 +27,28 @@ namespace Content.Shared.Actions
/// action. Null if this is not an Instant ActionBehaviorType.
/// Will be null on client side if the behavior is not in Content.Client.
/// </summary>
public IInstantItemAction InstantAction { get; private set; }
public IInstantItemAction InstantAction { get; private set; } = default!;
/// <summary>
/// The IToggleItemAction that should be invoked when performing this
/// action. Null if this is not a Toggle ActionBehaviorType.
/// Will be null on client side if the behavior is not in Content.Client.
/// </summary>
public IToggleItemAction ToggleAction { get; private set; }
public IToggleItemAction ToggleAction { get; private set; } = default!;
/// <summary>
/// The ITargetEntityItemAction that should be invoked when performing this
/// action. Null if this is not a TargetEntity ActionBehaviorType.
/// Will be null on client side if the behavior is not in Content.Client.
/// </summary>
public ITargetEntityItemAction TargetEntityAction { get; private set; }
public ITargetEntityItemAction TargetEntityAction { get; private set; } = default!;
/// <summary>
/// The ITargetPointItemAction that should be invoked when performing this
/// action. Null if this is not a TargetPoint ActionBehaviorType.
/// Will be null on client side if the behavior is not in Content.Client.
/// </summary>
public ITargetPointItemAction TargetPointAction { get; private set; }
public ITargetPointItemAction TargetPointAction { get; private set; } = default!;
public override void LoadFrom(YamlMappingNode mapping)
{
@@ -65,7 +66,7 @@ namespace Content.Shared.Actions
// TODO: Split this class into server/client after RobustToolbox#1405
if (IoCManager.Resolve<IModuleManager>().IsClientModule) return;
IItemActionBehavior behavior = null;
IItemActionBehavior? behavior = null;
serializer.DataField(ref behavior, "behavior", null);
switch (behavior)
{