Skip to content

Commit a606ada

Browse files
authored
hmm optimization!
1 parent 953f849 commit a606ada

File tree

5 files changed

+125
-36
lines changed

5 files changed

+125
-36
lines changed
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
using Exiled.API.Enums;
2+
using Exiled.API.Features;
3+
using Exiled.Events.EventArgs.Player;
4+
using PlayerRoles;
5+
using SCP_600V.API.Role;
6+
7+
namespace SCP_600V.EventHandler
8+
{
9+
internal class GameEvents
10+
{
11+
internal void OnEscape(EscapingEventArgs e)
12+
{
13+
if (e.Player != null && RoleGet.IsScp600(e.Player))
14+
{
15+
Log.Debug($"Canceling escape scp600 player: [{e.Player.Nickname}]");
16+
e.IsAllowed = false;
17+
}
18+
}
19+
internal void ChangingRole(ChangingRoleEventArgs e)
20+
{
21+
if (e.Player != null && e.Reason == SpawnReason.ForceClass & e.NewRole == RoleTypeId.None || e.NewRole == RoleTypeId.Spectator & RoleGet.IsScp600(e.Player))
22+
{
23+
Log.Debug("Detected admin forces scp600 to spectator");
24+
e.Player.ShowHint("\n\n\n\n\n\n<color=\"red\">Your are admin forced to spectator scp600 is removed role for your");
25+
}
26+
}
27+
internal void EnetignPocketDemens(EnteringPocketDimensionEventArgs e)
28+
{
29+
if (e.Player != null && RoleGet.IsScp600(e.Player))
30+
{
31+
Log.Debug("Scp-106 don't touch scp600 in pocket demension");
32+
e.IsAllowed = false;
33+
}
34+
}
35+
}
36+
}
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
using Exiled.API.Enums;
2+
using Exiled.API.Features;
3+
using System.Linq;
4+
using Exiled.Events.EventArgs.Server;
5+
using PlayerRoles;
6+
using SCP_600V.API.Role;
7+
using System.Collections.Generic;
8+
9+
namespace SCP_600V.EventHandler
10+
{
11+
internal class RoundEvents
12+
{
13+
internal void OnEndingRound(EndingRoundEventArgs e)
14+
{
15+
bool scp = false;
16+
bool human = false;
17+
18+
int mtf = TeamGet.AmountTeamNotScp(Team.FoundationForces);
19+
int d = TeamGet.AmountTeamNotScp(Team.ClassD);
20+
int s = TeamGet.AmountTeamNotScp(Team.SCPs);
21+
22+
if (mtf > 0 || d > 0)
23+
{
24+
human = true;
25+
}
26+
if (s > 0 || RoleGet.Scp600Players().Count() > 0)
27+
{
28+
scp = true;
29+
}
30+
if (human & scp)
31+
{
32+
e.IsRoundEnded = false;
33+
}
34+
}
35+
internal void OnRoundStarted()
36+
{
37+
bool Spawnable = IsSpawnable();
38+
if (Spawnable && Server.PlayerCount > 2)
39+
{
40+
List<Player> players = new List<Player>();
41+
foreach (Player p in Player.List.Where(x => x.IsAlive && x.Role.Type == RoleTypeId.ClassD))
42+
{
43+
players.Add(p);
44+
}
45+
RoleSet.Spawn(players[UnityEngine.Random.Range(1, players.Count())]);
46+
Log.Debug("Spawned random players");
47+
}
48+
else
49+
{
50+
return;
51+
}
52+
}
53+
internal bool IsSpawnable()
54+
{
55+
if (UnityEngine.Random.value <= Sai.Instance.Config.PercentToSpawn)
56+
{
57+
return true;
58+
}
59+
else
60+
{
61+
return false;
62+
}
63+
}
64+
}
65+
}

SCP-600V/Properties/AssemblyInfo.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,6 @@
3333
// Можно задать все значения или принять номера сборки и редакции по умолчанию
3434
// используя "*", как показано ниже:
3535
// [assembly: AssemblyVersion("1.0.*")]
36-
[assembly: AssemblyVersion("2.0.5.0")]
37-
[assembly: AssemblyFileVersion("2.0.5.0")]
36+
[assembly: AssemblyVersion("2.0.6.0")]
37+
[assembly: AssemblyFileVersion("2.0.6.0")]
3838
[assembly: NeutralResourcesLanguage("ru-RU")]

SCP-600V/SCP-600V.csproj

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -51,11 +51,8 @@
5151
<Compile Include="Command\PermissionList.cs" />
5252
<Compile Include="Command\Spawn.cs" />
5353
<Compile Include="Config.cs" />
54-
<Compile Include="EventHandler\GameEvent\OnEscape.cs" />
55-
<Compile Include="EventHandler\GameEvent\OnRoleChenged.cs" />
56-
<Compile Include="EventHandler\GameEvent\Scp106.cs" />
57-
<Compile Include="EventHandler\RoundEvent\EndingRound.cs" />
58-
<Compile Include="EventHandler\RoundEvent\StartingRound.cs" />
54+
<Compile Include="EventHandler\GameEvents.cs" />
55+
<Compile Include="EventHandler\RoundEvents.cs" />
5956
<Compile Include="Extension\Scp600CotumRoleBase.cs" />
6057
<Compile Include="Sai.cs" />
6158
<Compile Include="Properties\AssemblyInfo.cs" />

SCP-600V/Sai.cs

Lines changed: 20 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
1-
using System;
2-
using Exiled.API.Features;
1+
using Exiled.API.Features;
32
using Exiled.CustomRoles.API;
43
using Exiled.CustomRoles.API.Features;
54
using HarmonyLib;
6-
using SCP_600V.Extension;
7-
using Hand = Exiled.Events.Handlers;
5+
using SCP_600V.EventHandler;
6+
using Handler = Exiled.Events.Handlers;
87

98
namespace SCP_600V
109
{
@@ -13,11 +12,8 @@ internal class Sai: Plugin<Config>
1312

1413
public static Sai Instance;
1514
public Harmony _harma;
16-
public EventHandler.RoundEvent.StartingRound str;
17-
public EventHandler.RoundEvent.EndingRound er;
18-
public EventHandler.GameEvent.OnRoleChenged orc;
19-
public EventHandler.GameEvent.Scp106 spd;
20-
public EventHandler.GameEvent.OnEscape osc;
15+
public GameEvents _gameEvents;
16+
public RoundEvents _roundEvents;
2117

2218
public override void OnEnabled()
2319
{
@@ -28,35 +24,30 @@ public override void OnEnabled()
2824
_harma.PatchAll();
2925
this.Config.Scp600ConfigRole.Register();
3026
Log.Debug("Registered role scp600v in game");
31-
str = new EventHandler.RoundEvent.StartingRound();
32-
er = new EventHandler.RoundEvent.EndingRound();
33-
orc = new EventHandler.GameEvent.OnRoleChenged();
34-
spd = new EventHandler.GameEvent.Scp106();
35-
osc = new SCP_600V.EventHandler.GameEvent.OnEscape();
27+
_gameEvents = new GameEvents();
28+
_roundEvents = new RoundEvents();
3629
//s1 = new EventHandler.GameEvent.Scp173();
37-
Hand.Server.RoundStarted += str.OnRoundStarted;
38-
Hand.Server.EndingRound += er.OnEndingRound;
39-
Hand.Player.ChangingRole += orc.OnRoleChenge;
40-
Hand.Player.EnteringPocketDimension += spd.OnPocketDemensionCapture;
41-
Hand.Player.Escaping += osc.OnEscaped;
30+
Handler.Server.RoundStarted += _roundEvents.OnRoundStarted;
31+
Handler.Server.EndingRound += _roundEvents.OnEndingRound;
32+
Handler.Player.ChangingRole += _gameEvents.ChangingRole;
33+
Handler.Player.EnteringPocketDimension += _gameEvents.EnetignPocketDemens;
34+
Handler.Player.Escaping += _gameEvents.OnEscape;
4235
}
4336
public override void OnDisabled()
4437
{
4538
base.OnDisabled();
4639
Instance = null;
4740
CustomRole.UnregisterRoles();
4841
_harma.UnpatchAll("com.scp600.Harmoni");
49-
str = null;
50-
er = null;
51-
orc = null;
52-
spd = null;
53-
osc = null;
42+
_harma = null;
43+
_roundEvents = null;
44+
_gameEvents = null;
5445

55-
Hand.Server.RoundStarted -= str.OnRoundStarted;
56-
Hand.Server.EndingRound -= er.OnEndingRound;
57-
Hand.Player.ChangingRole -= orc.OnRoleChenge;
58-
Hand.Player.EnteringPocketDimension -= spd.OnPocketDemensionCapture;
59-
Hand.Player.Escaping -= osc.OnEscaped;
46+
Handler.Server.RoundStarted -= _roundEvents.OnRoundStarted;
47+
Handler.Server.EndingRound -= _roundEvents.OnEndingRound;
48+
Handler.Player.ChangingRole -= _gameEvents.ChangingRole;
49+
Handler.Player.EnteringPocketDimension -= _gameEvents.EnetignPocketDemens;
50+
Handler.Player.Escaping -= _gameEvents.OnEscape;
6051
}
6152
}
6253
}

0 commit comments

Comments
 (0)