And also fix CTF to send you to spawn too

This commit is contained in:
UnknownShadow200 2020-02-24 21:30:50 +11:00
parent 8ce87ed122
commit 2f4c18c83b
3 changed files with 20 additions and 14 deletions

View File

@ -35,6 +35,7 @@ namespace MCGalaxy.Games {
OnPlayerSpawningEvent.Register(HandlePlayerSpawning, Priority.High);
OnTabListEntryAddedEvent.Register(HandleTabListEntryAdded, Priority.High);
OnSentMapEvent.Register(HandleSentMap, Priority.High);
OnJoinedLevelEvent.Register(HandleJoinedLevel, Priority.High);
base.HookEventHandlers();
@ -48,6 +49,7 @@ namespace MCGalaxy.Games {
OnPlayerSpawningEvent.Unregister(HandlePlayerSpawning);
OnTabListEntryAddedEvent.Unregister(HandleTabListEntryAdded);
OnSentMapEvent.Unregister(HandleSentMap);
OnJoinedLevelEvent.Unregister(HandleJoinedLevel);
base.UnhookEventHandlers();
@ -131,21 +133,14 @@ namespace MCGalaxy.Games {
}
}
void HandleJoinedLevel(Player p, Level prevLevel, Level level, ref bool announce) {
HandleJoinedCommon(p, prevLevel, level, ref announce);
void HandleSentMap(Player p, Level prevLevel, Level level) {
if (level != Map) return;
MessageMapInfo(p);
if (TeamOf(p) != null) return;
if (TeamOf(p) == null) AutoAssignTeam(p);
}
if (Blue.Members.Count > Red.Members.Count) {
JoinTeam(p, Red);
} else if (Red.Members.Count > Blue.Members.Count) {
JoinTeam(p, Blue);
} else {
bool red = new Random().Next(2) == 0;
JoinTeam(p, red ? Red : Blue);
}
void HandleJoinedLevel(Player p, Level prevLevel, Level level, ref bool announce) {
HandleJoinedCommon(p, prevLevel, level, ref announce);
}
}
}

View File

@ -145,6 +145,7 @@ namespace MCGalaxy.Games {
public override void PlayerJoinedGame(Player p) {
bool announce = false;
HandleSentMap(p, Map, Map);
HandleJoinedLevel(p, Map, Map, ref announce);
}
@ -156,6 +157,17 @@ namespace MCGalaxy.Games {
DropFlag(p, team);
}
void AutoAssignTeam(Player p) {
if (Blue.Members.Count > Red.Members.Count) {
JoinTeam(p, Red);
} else if (Red.Members.Count > Blue.Members.Count) {
JoinTeam(p, Blue);
} else {
bool red = new Random().Next(2) == 0;
JoinTeam(p, red ? Red : Blue);
}
}
void JoinTeam(Player p, CtfTeam team) {
Get(p).HasFlag = false;
team.Members.Add(p);

View File

@ -104,7 +104,6 @@ namespace MCGalaxy.Games {
void HandleSentMap(Player p, Level prevLevel, Level level) {
if (level != Map) return;
MessageMapInfo(p);
if (TeamOf(p) == null) AutoAssignTeam(p);
}