Skip to content

Commit dd1cc9d

Browse files
authored
Merge pull request #107 from ToniMacaroni/SiraUtil3
code quality changes
2 parents da4bd96 + fff26f2 commit dd1cc9d

21 files changed

+141
-38
lines changed

.editorconfig

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
[*.cs]
2+
3+
# UNT0023: Coalescing assignment on Unity objects
4+
dotnet_diagnostic.UNT0023.severity = error
5+
6+
# UNT0022: Inefficient position/rotation assignment
7+
dotnet_diagnostic.UNT0022.severity = error
8+
9+
# UNT0007: Null coalescing on Unity objects
10+
dotnet_diagnostic.UNT0007.severity = error
11+
12+
# UNT0008: Null propagation on Unity objects
13+
dotnet_diagnostic.UNT0008.severity = error

SaberFactory.sln

+7-2
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,17 @@
11

22
Microsoft Visual Studio Solution File, Format Version 12.00
3-
# Visual Studio Version 16
4-
VisualStudioVersion = 16.0.29709.97
3+
# Visual Studio Version 17
4+
VisualStudioVersion = 17.1.31911.260
55
MinimumVisualStudioVersion = 10.0.40219.1
66
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SaberFactory", "SaberFactory\SaberFactory.csproj", "{C287398D-B333-4DFE-9C7E-9518D9D09745}"
77
EndProject
88
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SaberFactory.Unity", "SaberFactory.Unity\SaberFactory.Unity.csproj", "{42D12C91-86D3-4006-8D15-0291488970B6}"
99
EndProject
10+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{2B173B38-BE01-4606-9F77-D09B360CBC69}"
11+
ProjectSection(SolutionItems) = preProject
12+
.editorconfig = .editorconfig
13+
EndProjectSection
14+
EndProject
1015
Global
1116
GlobalSection(SolutionConfigurationPlatforms) = preSolution
1217
Debug|Any CPU = Debug|Any CPU

SaberFactory/DataStore/TextureAsset.cs

+12-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,18 @@ namespace SaberFactory.DataStore
77
{
88
internal class TextureAsset : IDisposable
99
{
10-
public Sprite Sprite => _cachedSprite ??= CreateSprite();
10+
public Sprite Sprite
11+
{
12+
get
13+
{
14+
if (_cachedSprite == null)
15+
{
16+
_cachedSprite = CreateSprite();
17+
}
18+
return _cachedSprite;
19+
}
20+
}
21+
1122
public bool IsInUse;
1223
public string Name;
1324
public EAssetOrigin Origin;

SaberFactory/Editor/Pedestal.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,8 @@ public async Task Instantiate(Vector3 pos, Quaternion rot)
6060
SaberContainerTransform.localPosition += new Vector3(0, 1, 0);
6161
SaberContainerTransform.localEulerAngles = new Vector3(-90, 0, 0);
6262

63-
_rootTransform.position = pos;
64-
_rootTransform.rotation = rot;
63+
_rootTransform.SetPositionAndRotation(pos, rot);
64+
6565

6666
IsVisible = false;
6767
}

SaberFactory/Editor/SaberGrabController.cs

+10-2
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,11 @@ public void ShowHandle()
3333
}
3434

3535
_isHandleVisisble = true;
36-
_menuPlayerController.leftController?.transform.Find("MenuHandle")?.gameObject.SetActive(_isHandleVisisble);
36+
37+
if (_menuPlayerController.leftController != null && _menuPlayerController.leftController.transform.Find("MenuHandle") is { } handle)
38+
{
39+
handle.gameObject.SetActive(_isHandleVisisble);
40+
}
3741
}
3842

3943
public void HideHandle()
@@ -44,7 +48,11 @@ public void HideHandle()
4448
}
4549

4650
_isHandleVisisble = false;
47-
_menuPlayerController.leftController?.transform.Find("MenuHandle")?.gameObject.SetActive(_isHandleVisisble);
51+
52+
if (_menuPlayerController != null && _menuPlayerController.leftController.transform.Find("MenuHandle") is { } handle)
53+
{
54+
handle.gameObject.SetActive(_isHandleVisisble);
55+
}
4856
}
4957
}
5058
}

SaberFactory/Game/AFHandler.cs

+6-1
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,12 @@ public async Task InitPosition(Transform transform, float xPos)
7878

7979
private async Task<GameObject> GetThruster()
8080
{
81-
return _thruster ??= await _assetLoader.LoadAsset<GameObject>("Thruster");
81+
if (_thruster == null)
82+
{
83+
_thruster = await _assetLoader.LoadAsset<GameObject>("Thruster");
84+
}
85+
86+
return _thruster;
8287
}
8388
}
8489
}

SaberFactory/Game/EventPlayer.cs

+13-5
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using System.Collections;
33
using System.Collections.Generic;
44
using IPA.Utilities;
5+
using ModestTree;
56
using SaberFactory.Configuration;
67
using SaberFactory.Models;
78
using UnityEngine;
@@ -18,11 +19,14 @@ internal class EventPlayer : IDisposable
1819

1920
[Inject] private readonly GameEnergyCounter _energyCounter = null;
2021

21-
//[Inject] private readonly ObstacleSaberSparkleEffectManager _obstacleSaberSparkleEffectManager = null;
22+
[InjectOptional] private ObstacleSaberSparkleEffectManager _obstacleSaberSparkleEffectManager;
2223

2324
[Inject] private readonly PluginConfig _pluginConfig = null;
2425

2526
[Inject] private readonly ScoreController _scoreController = null;
27+
28+
[Inject] private readonly MonoKernel _monoKernel = null;
29+
2630
private bool _didInit;
2731

2832
[Inject(Id = "LastNoteId")] private float _lastNoteTime;
@@ -36,8 +40,8 @@ public void Dispose()
3640
_beatmapObjectManager.noteWasCutEvent -= OnNoteCut;
3741
_beatmapObjectManager.noteWasMissedEvent -= OnNoteMiss;
3842

39-
//_obstacleSaberSparkleEffectManager.sparkleEffectDidStartEvent -= SaberStartCollide;
40-
//_obstacleSaberSparkleEffectManager.sparkleEffectDidEndEvent -= SaberEndCollide;
43+
_obstacleSaberSparkleEffectManager.sparkleEffectDidStartEvent -= SaberStartCollide;
44+
_obstacleSaberSparkleEffectManager.sparkleEffectDidEndEvent -= SaberEndCollide;
4145

4246
_energyCounter.gameEnergyDidReach0Event -= InvokeOnLevelFail;
4347

@@ -64,8 +68,12 @@ public void SetPartEventList(List<PartEvents> partEventsList, SaberType saberTyp
6468
_beatmapObjectManager.noteWasMissedEvent += OnNoteMiss;
6569

6670
// Sabers clashing
67-
//_obstacleSaberSparkleEffectManager.sparkleEffectDidStartEvent += SaberStartCollide;
68-
//_obstacleSaberSparkleEffectManager.sparkleEffectDidEndEvent += SaberEndCollide;
71+
if (_obstacleSaberSparkleEffectManager == null)
72+
{
73+
_obstacleSaberSparkleEffectManager = _monoKernel.GetComponentInChildren<ObstacleSaberSparkleEffectManager>();
74+
}
75+
_obstacleSaberSparkleEffectManager.sparkleEffectDidStartEvent += SaberStartCollide;
76+
_obstacleSaberSparkleEffectManager.sparkleEffectDidEndEvent += SaberEndCollide;
6977

7078
// OnLevelFail
7179
_energyCounter.gameEnergyDidReach0Event += InvokeOnLevelFail;

SaberFactory/Helpers/DebugMenu.cs

-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ public class DebugMenu : MonoBehaviour
1111

1212
private void Start()
1313
{
14-
Debug.LogWarning("Hello");
1514
}
1615

1716
private void OnGUI()

SaberFactory/Helpers/ShaderPropertyInfo.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ public override void FromJson(JToken token, Material mat, params object[] args)
184184
public override JToken ToJson(Material mat)
185185
{
186186
var tex = (Texture)GetValue(mat);
187-
return JToken.FromObject(tex?.name??"");
187+
return JToken.FromObject(tex != null ? tex.name : "");
188188
}
189189
}
190190

SaberFactory/Installers/PluginGameInstaller.cs

+2-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
using SaberFactory.Helpers;
77
using SaberFactory.Models;
88
using SiraUtil.Interfaces;
9+
using SiraUtil.Sabers;
910
using Zenject;
1011

1112
namespace SaberFactory.Installers
@@ -33,7 +34,7 @@ public override void InstallBindings()
3334
//Container.BindInterfacesAndSelfTo<AFHandler>().AsSingle();
3435
Container.BindInterfacesAndSelfTo<GameSaberSetup>().AsSingle();
3536
//Container.Bind<IModelProvider>().To<SFSaberProvider>().AsSingle();
36-
Container.BindInstance(SiraUtil.Sabers.SaberModelRegistration.Create<SfSaberModelController>());
37+
Container.BindInstance(SaberModelRegistration.Create<SfSaberModelController>());
3738

3839

3940
#if DEBUG && TEST_TRAIL

SaberFactory/Instances/Trail/SFTrail.cs

+6-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using SaberFactory.Helpers;
3+
using TMPro;
34
using UnityEngine;
45

56
namespace SaberFactory.Instances.Trail
@@ -115,7 +116,11 @@ public override float GetTrailWidth(BladeMovementDataElement lastAddedData)
115116
public void SetMaterial(Material newMaterial)
116117
{
117118
_customMaterial = newMaterial;
118-
_trailRenderer?.Cast<SFTrailRenderer>().SetMaterial(_customMaterial);
119+
120+
if (_trailRenderer != null)
121+
{
122+
_trailRenderer.Cast<SFTrailRenderer>().SetMaterial(_customMaterial);
123+
}
119124
}
120125
}
121126
}

SaberFactory/Misc/VertexPool.cs

+2-3
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ internal class VertexPool
99
{
1010
public const int BlockSize = 108;
1111

12-
public Mesh MyMesh => _meshFilter?.sharedMesh;
12+
public Mesh MyMesh => _meshFilter != null ? _meshFilter.sharedMesh : null;
1313

1414
public float BoundsScheduleTime = 1f;
1515
public bool ColorChanged;
@@ -73,8 +73,7 @@ private void CreateMeshObj(AltTrail owner, Material material)
7373
_meshFilter = _gameObject.AddComponent<MeshFilter>();
7474
var meshrenderer = _gameObject.AddComponent<MeshRenderer>();
7575

76-
_gameObject.transform.position = Vector3.zero;
77-
_gameObject.transform.rotation = Quaternion.identity;
76+
_gameObject.transform.SetPositionAndRotation(Vector3.zero, Quaternion.identity);
7877

7978
meshrenderer.shadowCastingMode = ShadowCastingMode.Off;
8079
meshrenderer.receiveShadows = false;

SaberFactory/Models/PreloadMetaData.cs

+27-2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
using SaberFactory.Loaders;
66
using SaberFactory.UI;
77
using SaberFactory.UI.Lib;
8+
using TMPro;
89
using UnityEngine;
910

1011
namespace SaberFactory.Models
@@ -13,8 +14,32 @@ internal class PreloadMetaData : ICustomListItem
1314
{
1415
public AssetTypeDefinition AssetTypeDefinition { get; private set; }
1516

16-
public Texture2D CoverTex => _coverTex ??= LoadTexture();
17-
public Sprite CoverSprite => _coverSprite ??= LoadSprite();
17+
public Texture2D CoverTex
18+
{
19+
get
20+
{
21+
if (_coverTex == null)
22+
{
23+
_coverTex = LoadTexture();
24+
}
25+
26+
return _coverTex;
27+
}
28+
}
29+
30+
public Sprite CoverSprite
31+
{
32+
get
33+
{
34+
if (_coverSprite == null)
35+
{
36+
_coverSprite = LoadSprite();
37+
}
38+
39+
return _coverSprite;
40+
}
41+
}
42+
1843
public readonly AssetMetaPath AssetMetaPath;
1944

2045
private byte[] _coverData;

SaberFactory/Plugin.cs

+3-2
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,9 @@ public async void Init(IPALogger logger, Config conf, Zenjector zenjector, Plugi
3636
return;
3737
}
3838

39-
zenjector.UseLogger();
39+
zenjector.UseLogger(logger);
4040
zenjector.UseHttpService();
41+
zenjector.Expose<ObstacleSaberSparkleEffectManager>("Gameplay");
4142
zenjector.Install<PluginAppInstaller>(Location.App, logger, pluginConfig, metadata);
4243
zenjector.Install<PluginMenuInstaller>(Location.Menu);
4344
zenjector.Install<PluginGameInstaller>(Location.Player | Location.MultiPlayer);
@@ -52,7 +53,7 @@ public void OnEnable()
5253
[OnDisable]
5354
public void OnDisable()
5455
{
55-
_harmony.UnpatchAll(HarmonyId);
56+
_harmony.UnpatchSelf();
5657
}
5758

5859
/// <summary>

SaberFactory/SaberFactory.csproj

+5
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,7 @@
209209
</ItemGroup>
210210

211211
<ItemGroup>
212+
<None Include="..\.editorconfig" Link=".editorconfig" />
212213
<None Include="Directory.Build.props" Condition="Exists('Directory.Build.props')" />
213214
<None Include="Directory.Build.targets" Condition="Exists('Directory.Build.targets')" />
214215
<None Include="SaberFactory.csproj.user" Condition="Exists('SaberFactory.csproj.user')" />
@@ -303,6 +304,10 @@
303304
<PrivateAssets>all</PrivateAssets>
304305
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
305306
</PackageReference>
307+
<PackageReference Include="Microsoft.Unity.Analyzers" Version="1.11.2">
308+
<PrivateAssets>all</PrivateAssets>
309+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
310+
</PackageReference>
306311
</ItemGroup>
307312

308313
</Project>

SaberFactory/UI/CustomSaber/Views/MainView.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public void ChangeCategory(ENavigationCategory category)
3737

3838
private T AddView<T>(bool switchToView = false, Transform container = null) where T : SubView
3939
{
40-
var view = CreateSubView<T>(container ?? _subViewContainer, switchToView);
40+
var view = CreateSubView<T>(container != null ? container : _subViewContainer, switchToView);
4141
if (view is INavigationCategoryView navView)
4242
{
4343
_navViews.Add(navView.Category, navView);

SaberFactory/UI/CustomSaber/Views/SaberSelectorView.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ private async void Setup()
114114

115115
if (CommonHelpers.IsDate(null, 10) &&
116116
_pluginConfig.SpecialBackground &&
117-
_saberList.transform.GetChild(0)?.GetComponent<ImageView>() is { } imageView)
117+
_saberList.transform.GetChild(0) is {} child && child.GetComponent<ImageView>() is { } imageView)
118118
{
119119
imageView.sprite = Utilities.FindSpriteInAssembly("SaberFactory.Resources.UI.halloween_bg.png");
120120
imageView.overrideSprite = imageView.sprite;

SaberFactory/UI/Lib/BSML/BackgroundableHandler.cs

+5-5
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ private void AddBorder(GameObject go, bool squareSprite = false)
9393
if (_borderTemplate == null)
9494
{
9595
var button = Resources.FindObjectsOfTypeAll<Button>().FirstOrDefault(x => x.name == "ActionButton");
96-
var borderTransform = button?.transform.Find("Border");
96+
var borderTransform = button != null ? button.transform.Find("Border") : null;
9797
if (borderTransform is null)
9898
{
9999
return;
@@ -144,8 +144,8 @@ private void InitSprite()
144144
}
145145

146146
var image = Resources.FindObjectsOfTypeAll<GameObject>()
147-
.FirstOrDefault(x => x.name == "MiddleHorizontalTextSegmentedControlCell")?
148-
.transform.Find("BG")?
147+
.FirstOrDefault(x => x.name == "MiddleHorizontalTextSegmentedControlCell")!
148+
.transform.Find("BG")
149149
.GetComponent<ImageView>();
150150
if (image == null)
151151
{
@@ -168,8 +168,8 @@ private ImageView GetOrAddImageView(Backgroundable backgroundable)
168168
if (_imageViewPrefab == null)
169169
{
170170
_imageViewPrefab = Resources.FindObjectsOfTypeAll<ImageView>().First(x =>
171-
x.gameObject?.name == "KeyboardWrapper" && x.sprite?.name == "RoundRect10" &&
172-
x.transform.parent?.name == "Wrapper");
171+
(x.gameObject != null ? x.gameObject.name : null) == "KeyboardWrapper" && (x.sprite != null ? x.sprite.name : null) == "RoundRect10" &&
172+
(x.transform.parent != null ? x.transform.parent.name : null) == "Wrapper");
173173
if (_imageViewPrefab == null)
174174
{
175175
return null;

SaberFactory/UI/Lib/BSML/ButtonImageControllerHandler.cs

+8-2
Original file line numberDiff line numberDiff line change
@@ -68,11 +68,17 @@ private void SetSkew(ButtonImageController imageController, string skew)
6868
{
6969
imageController.BackgroundImage.SetField("_skew", float.Parse(skew));
7070
imageController.LineImage.SetField("_skew", float.Parse(skew));
71-
imageController.ForegroundImage?.SetField("_skew", float.Parse(skew));
71+
if (imageController.ForegroundImage != null)
72+
{
73+
imageController.ForegroundImage.SetField("_skew", float.Parse(skew));
74+
}
7275

7376
imageController.BackgroundImage.SetVerticesDirty();
7477
imageController.LineImage.SetVerticesDirty();
75-
imageController.ForegroundImage?.SetVerticesDirty();
78+
if (imageController.ForegroundImage != null)
79+
{
80+
imageController.ForegroundImage.SetVerticesDirty();
81+
}
7682
}
7783
}
7884
}

0 commit comments

Comments
 (0)