Skip to content

Commit 71d02e7

Browse files
committed
最新版で動かなくなっていたのを修正
1 parent ef70a61 commit 71d02e7

File tree

6 files changed

+58
-44
lines changed

6 files changed

+58
-44
lines changed

Inferno/ChaosMode/ChaosMode.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@ protected override void Setup()
169169
private void CitizenChaos()
170170
{
171171
if (!PlayerPed.IsSafeExist()) return;
172-
172+
173173
//まだ処理をしていない市民に対してコルーチンを回す
174174
var nearPeds =
175175
CachedPeds.Where(x => x.IsSafeExist() && x.IsInRangeOf(PlayerPed.Position, chaosModeSetting.Radius));

Inferno/Inferno.csproj

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,8 @@
6161
<HintPath>..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
6262
</Reference>
6363
<Reference Include="PresentationFramework" />
64-
<Reference Include="ScriptHookVDotNet2, Version=2.10.3.0, Culture=neutral, processorArchitecture=AMD64">
65-
<SpecificVersion>False</SpecificVersion>
66-
<HintPath>X:\Project2\GTA\InfernoProject\Inferno\Inferno\ScriptHookVDotNet2.dll</HintPath>
64+
<Reference Include="ScriptHookVDotNet2, Version=2.11.6.0, Culture=neutral, processorArchitecture=Amd64">
65+
<HintPath>..\packages\ScriptHookVDotNet2.2.11.6\lib\net48\ScriptHookVDotNet2.dll</HintPath>
6766
</Reference>
6867
<Reference Include="System" />
6968
<Reference Include="System.ComponentModel.DataAnnotations" />
@@ -72,10 +71,6 @@
7271
<Reference Include="System.Runtime.Serialization" />
7372
<Reference Include="System.Web.Extensions" />
7473
<Reference Include="System.Windows.Forms" />
75-
<Reference Include="System.Windows.Interactivity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
76-
<HintPath>..\packages\ReactiveProperty.0.3.2.0\lib\NET40\System.Windows.Interactivity.dll</HintPath>
77-
<Private>True</Private>
78-
</Reference>
7974
<Reference Include="System.Xaml" />
8075
<Reference Include="System.XML" />
8176
<Reference Include="UniRx, Version=5.4.1.0, Culture=neutral, processorArchitecture=MSIL">
@@ -222,7 +217,6 @@
222217
<ItemGroup>
223218
<None Include="packages.config" />
224219
</ItemGroup>
225-
<ItemGroup />
226220
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
227221
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
228222
Other similar extension points exist, see Microsoft.Common.targets.

Inferno/InfernoScripts/InfernoCore/Debug/DebugLogger.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ public class DebugLogger
1212
public DebugLogger(string logPath)
1313
{
1414
this._logPath = logPath;
15-
_encoding = Encoding.GetEncoding("Shift_JIS");
15+
_encoding = Encoding.GetEncoding("UTF-8");
1616
}
1717

1818
/// <summary>
@@ -35,7 +35,7 @@ private void WriteToText(string message)
3535

3636
public void Log(string message)
3737
{
38-
var sendMessage = String.Format("[{0}] {1}", DateTime.Now, message);
38+
var sendMessage = $"[{DateTime.Now}] {message}";
3939
WriteToText(sendMessage);
4040
}
4141
}

Inferno/InfernoScripts/InfernoCore/InfernoCore.cs

Lines changed: 31 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ public sealed class InfernoCore : Script
1919
private static readonly Subject<KeyEventArgs> OnKeyDownSubject = new Subject<KeyEventArgs>();
2020
private static readonly Subject<IEventMessage> EventMessageSubject = new Subject<IEventMessage>();
2121

22+
private DateTimeOffset _lastUpdate;
23+
2224
/// <summary>
2325
/// イベントメッセージを発行する
2426
/// </summary>
@@ -36,22 +38,32 @@ public static void Publish(IEventMessage message)
3638
/// <summary>
3739
/// 周辺市民
3840
/// </summary>
39-
public ReactiveProperty<Ped[]> PedsNearPlayer = new ReactiveProperty<Ped[]>();
41+
public IReadOnlyReactiveProperty<Ped[]> PedsNearPlayer => _nearPeds;
42+
43+
private readonly ReactiveProperty<Ped[]> _nearPeds = new ReactiveProperty<Ped[]>();
4044

4145
/// <summary>
4246
/// 周辺車両
4347
/// </summary>
44-
public ReactiveProperty<Vehicle[]> VehicleNearPlayer = new ReactiveProperty<Vehicle[]>();
48+
public IReadOnlyReactiveProperty<Vehicle[]> VehicleNearPlayer => _nearVehicle;
49+
50+
private readonly ReactiveProperty<Vehicle[]> _nearVehicle = new ReactiveProperty<Vehicle[]>();
51+
4552

4653
/// <summary>
4754
/// プレイヤ
4855
/// </summary>
49-
public ReactiveProperty<Ped> PlayerPed = new ReactiveProperty<Ped>();
56+
public IReadOnlyReactiveProperty<Ped> PlayerPed => _playerPed;
57+
58+
private readonly ReactiveProperty<Ped> _playerPed = new ReactiveProperty<Ped>();
59+
5060

5161
/// <summary>
5262
/// プレイヤの乗ってる車両
5363
/// </summary>
54-
public ReactiveProperty<Vehicle> PlayerVehicle = new ReactiveProperty<Vehicle>();
64+
public IReadOnlyReactiveProperty<Vehicle> PlayerVehicle => _playerVehicle;
65+
66+
private readonly ReactiveProperty<Vehicle> _playerVehicle = new ReactiveProperty<Vehicle>();
5567

5668
/// <summary>
5769
/// 25ms周期のTick
@@ -69,16 +81,19 @@ public InfernoCore()
6981

7082
_debugLogger = new DebugLogger(@"InfernoScript.log");
7183

84+
_lastUpdate = DateTimeOffset.Now;
85+
7286
//100ms周期でイベントを飛ばす
7387
Interval = 100;
74-
Observable.FromEventPattern<EventHandler, EventArgs>(h => h.Invoke, h => Tick += h, h => Tick -= h)
88+
Observable
89+
.FromEventPattern<EventHandler, EventArgs>(h => h.Invoke, h => Tick += h, h => Tick -= h)
7590
.Select(_ => Unit.Default)
7691
.Multicast(OnTickSubject)
7792
.Connect();
7893

7994
//キー入力
8095
Observable.FromEventPattern<KeyEventHandler, KeyEventArgs>(h => h.Invoke, h => KeyDown += h,
81-
h => KeyDown -= h)
96+
h => KeyDown -= h)
8297
.Select(e => e.EventArgs)
8398
.Multicast(OnKeyDownSubject)
8499
.Connect();
@@ -93,27 +108,29 @@ public InfernoCore()
93108
/// </summary>
94109
private void UpdatePedsAndVehiclesList()
95110
{
111+
// 1秒おきにキャッシュ更新
112+
if (DateTimeOffset.Now - _lastUpdate < TimeSpan.FromMilliseconds(1000)) return;
113+
_lastUpdate = DateTimeOffset.Now;
114+
96115
try
97116
{
98117
var player = Game.Player;
99118
var ped = player?.Character;
100119
if (!ped.IsSafeExist()) return;
101-
PlayerPed.Value = ped;
102-
PedsNearPlayer.Value = World.GetNearbyPeds(ped, 500);
103-
VehicleNearPlayer.Value = World.GetNearbyVehicles(ped, 500);
104-
PlayerVehicle.Value = ped?.CurrentVehicle;
120+
_playerPed.Value = ped;
121+
_nearPeds.Value = World.GetNearbyPeds(ped, 500) ?? Array.Empty<Ped>();
122+
_nearVehicle.Value = World.GetNearbyVehicles(ped, 500) ?? Array.Empty<Vehicle>();
123+
_playerVehicle.Value = ped?.CurrentVehicle;
105124
}
106125
catch (Exception e)
107126
{
108-
LogWrite(e.StackTrace);
127+
LogWrite(e.Message + "\n" + e.StackTrace);
109128
}
110129
}
111130

112131
public void LogWrite(string message)
113132
{
114133
_debugLogger.Log(message);
115134
}
116-
117-
118135
}
119-
}
136+
}

Inferno/InfernoScripts/InfernoCore/InfernoScript.cs

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ namespace Inferno
1818
/// </summary>
1919
public abstract class InfernoScript : Script
2020
{
21-
2221
protected Random Random = new Random();
2322

2423
private readonly ReactiveProperty<bool> _isActiveReactiveProperty = new ReactiveProperty<bool>(false);
@@ -44,6 +43,7 @@ protected IScheduler InfernoScriptScheduler
4443
{
4544
throw new Exception("設定ファイル名が設定されていません");
4645
}
46+
4747
var loader = new InfernoConfigLoader<T>();
4848
var dto = loader.LoadSettingFile(ConfigFileName);
4949
//バリデーションに引っかかったらデフォルト値を返す
@@ -62,7 +62,8 @@ protected bool IsActive
6262
/// <summary>
6363
/// IsActiveが変化したことを通知する
6464
/// </summary>
65-
protected UniRx.IObservable<bool> IsActiveAsObservable => _isActiveReactiveProperty.AsObservable().DistinctUntilChanged();
65+
protected UniRx.IObservable<bool> IsActiveAsObservable =>
66+
_isActiveReactiveProperty.AsObservable().DistinctUntilChanged();
6667

6768
#region Chace
6869

@@ -72,21 +73,18 @@ protected bool IsActive
7273
public Ped PlayerPed => cahcedPlayerPed ?? Game.Player.Character;
7374

7475
private Ped cahcedPlayerPed;
75-
public ReactiveProperty<Vehicle> PlayerVehicle = new ReactiveProperty<Vehicle>();
76+
public readonly ReactiveProperty<Vehicle> PlayerVehicle = new ReactiveProperty<Vehicle>();
7677

77-
private Ped[] _cachedPeds = new Ped[0];
7878

7979
/// <summary>
8080
/// キャッシュされたプレイヤ周辺の市民
8181
/// </summary>
82-
public Ped[] CachedPeds => _cachedPeds;
83-
84-
private Vehicle[] _cachedVehicles = new Vehicle[0];
85-
82+
public Ped[] CachedPeds => InfernoCore.Instance.PedsNearPlayer.Value;
83+
8684
/// <summary>
8785
/// キャッシュされたプレイヤ周辺の車両
8886
/// </summary>
89-
public ReadOnlyCollection<Vehicle> CachedVehicles => Array.AsReadOnly(_cachedVehicles ?? new Vehicle[0]);
87+
public Vehicle[] CachedVehicles => InfernoCore.Instance.VehicleNearPlayer.Value;
9088

9189
#endregion Chace
9290

@@ -116,9 +114,10 @@ public UniRx.IObservable<KeyEventArgs> OnKeyDownAsObservable
116114
if (_onKeyDownAsObservable != null) return _onKeyDownAsObservable;
117115
_onKeyDownAsObservable =
118116
Observable.FromEventPattern<KeyEventHandler, KeyEventArgs>(h => h.Invoke, h => KeyDown += h,
119-
h => KeyDown -= h)
117+
h => KeyDown -= h)
120118
.Select(e => e.EventArgs)
121-
.Publish().RefCount();
119+
.Publish()
120+
.RefCount();
122121
return _onKeyDownAsObservable;
123122
}
124123
}
@@ -149,7 +148,8 @@ protected UniRx.IObservable<Unit> CreateInputKeywordAsObservable(string keyword)
149148
.Select(x => x.Aggregate((p, c) => p + c))
150149
.Where(x => x == keyword.ToUpper()) //入力文字列を比較
151150
.Select(_ => Unit.Default)
152-
.First().Repeat() //1回動作したらBufferをクリア
151+
.First()
152+
.Repeat() //1回動作したらBufferをクリア
153153
.Publish()
154154
.RefCount();
155155
}
@@ -161,6 +161,7 @@ protected UniRx.IObservable<Unit> CreateTickAsObservable(TimeSpan timeSpan)
161161
{
162162
return OnTickAsObservable.ThrottleFirst(timeSpan, InfernoScriptScheduler).Share();
163163
}
164+
164165
#endregion forEvents
165166

166167
#region forAbort
@@ -192,11 +193,11 @@ protected UniRx.IObservable<Unit> OnAbortAsync
192193
return _onAbortObservable ??
193194
(_onAbortObservable =
194195
Observable.FromEventPattern<EventHandler, EventArgs>(h => h.Invoke, h => Aborted += h,
195-
h => Aborted -= h).AsUnitObservable());
196+
h => Aborted -= h)
197+
.AsUnitObservable());
196198
}
197199
}
198200

199-
200201
#endregion
201202

202203
#region forCoroutine
@@ -219,7 +220,6 @@ protected void StopAllCoroutine()
219220
}
220221

221222

222-
223223
/// <summary>
224224
/// 指定秒数待機するIEnumerable
225225
/// </summary>
@@ -295,15 +295,14 @@ protected InfernoScript()
295295
.First()
296296
.Subscribe(_ =>
297297
{
298-
InfernoCore.Instance.PedsNearPlayer.Subscribe(x => _cachedPeds = x);
299-
InfernoCore.Instance.VehicleNearPlayer.Subscribe(x => _cachedVehicles = x);
300298
InfernoCore.Instance.PlayerPed.Subscribe(x => cahcedPlayerPed = x);
301299
InfernoCore.Instance.PlayerVehicle.Subscribe(x => PlayerVehicle.Value = x);
302300
});
303301

304302
OnTickAsObservable =
305303
Observable.FromEventPattern<EventHandler, EventArgs>(h => h.Invoke, h => Tick += h, h => Tick -= h)
306-
.Select(_ => Unit.Default).Share(); //Subscribeされたらイベントハンドラを登録する
304+
.Select(_ => Unit.Default)
305+
.Share(); //Subscribeされたらイベントハンドラを登録する
307306

308307
OnThinnedTickAsObservable =
309308
OnTickAsObservable.ThrottleFirst(TimeSpan.FromMilliseconds(100), InfernoScriptScheduler)
@@ -324,6 +323,7 @@ protected InfernoScript()
324323
{
325324
SynchronizationContext.SetSynchronizationContext(InfernoSynchronizationContext);
326325
}
326+
327327
InfernoSynchronizationContext.Update();
328328
});
329329

@@ -336,6 +336,7 @@ protected InfernoScript()
336336
{
337337
c.Update(100);
338338
}
339+
339340
//完了状態にあるタイマを全て削除
340341
_counterList.RemoveAll(x => x.IsCompleted);
341342
});
@@ -354,6 +355,7 @@ protected InfernoScript()
354355
{
355356
e.MarkAsNoLongerNeeded();
356357
}
358+
357359
_autoReleaseEntities.Clear();
358360
});
359361

@@ -385,4 +387,4 @@ public void LogWrite(string message)
385387

386388
#endregion Debug
387389
}
388-
}
390+
}

Inferno/packages.config

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,6 @@
22
<packages>
33
<package id="Moq" version="4.2.1502.0911" targetFramework="net45" userInstalled="true" />
44
<package id="Newtonsoft.Json" version="13.0.3" targetFramework="net48" />
5+
<package id="ScriptHookVDotNet2" version="2.11.6" targetFramework="net48" />
56
<package id="UniRx" version="5.4.1.0" targetFramework="net452" />
67
</packages>

0 commit comments

Comments
 (0)