Skip to content
This repository has been archived by the owner on Feb 28, 2021. It is now read-only.

Commit

Permalink
Merge pull request #3 from PintTheDragon/test
Browse files Browse the repository at this point in the history
Merge test branch
  • Loading branch information
PintTheDragon authored Aug 6, 2020
2 parents 287216c + d126beb commit 5ed1879
Show file tree
Hide file tree
Showing 10 changed files with 146 additions and 138 deletions.
4 changes: 3 additions & 1 deletion .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@ name: Build

on:
push:
branches: [ master ]
branches:
- master
- test

jobs:
build:
Expand Down
26 changes: 7 additions & 19 deletions src/Buddy.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ class Buddy : Plugin<Config>

public Dictionary<string, string> buddies = new Dictionary<string, string>();

public Dictionary<string, Player> buddyRequests = new Dictionary<string, Player>();
public Dictionary<string, List<Player>> buddyRequests = new Dictionary<string, List<Player>>();

public static Buddy singleton;

Expand All @@ -33,11 +33,9 @@ public override void OnEnabled()
{
singleton = this;

this.setLang("BuddyMessage", this.getLang("BuddyMessage").Replace("$buddyCMD", "." + this.getLang("buddyCommand")));
this.setLang("invalidUsage", this.getLang("invalidUsage").Replace("$buddyCMD", "." + this.getLang("buddyCommand")));
this.setLang("buddyRequestAcceptMessage", this.getLang("buddyRequestAcceptMessage").Replace("$unBuddyCMD", "." + this.getLang("buddyUnbuddyCommand")));
this.setLang("successMessage", this.getLang("successMessage").Replace("$unBuddyCMD", "." + this.getLang("buddyUnbuddyCommand")));
EventHandlers = new EventHandlers(this);
Config.OnReload();

EventHandlers = new EventHandlers();
Exiled.Events.Handlers.Server.RoundStarted += EventHandlers.OnRoundStart;
Exiled.Events.Handlers.Player.Joined += EventHandlers.OnPlayerJoin;
Exiled.Events.Handlers.Server.RestartingRound += EventHandlers.OnRoundRestart;
Expand All @@ -48,10 +46,12 @@ public override void OnEnabled()

public override void OnReloaded()
{
Config.OnReload();

base.OnReloaded();
}

public void removePerson(string userID)
public void RemovePerson(string userID)
{
try
{
Expand All @@ -66,17 +66,5 @@ public void removePerson(string userID)
}
catch (ArgumentException) { }
}

public string getLang(string key)
{
string outVal = "";
if (!Config.Messages.TryGetValue(key, out outVal)) return "";
return outVal;
}

public void setLang(string key, string value)
{
Config.Messages[key] = value;
}
}
}
20 changes: 10 additions & 10 deletions src/Buddy.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -53,20 +53,20 @@
<SpecificVersion>False</SpecificVersion>
<HintPath>libs\CommandSystem.Core.dll</HintPath>
</Reference>
<Reference Include="Exiled.API, Version=2.0.9.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\EXILED.2.0.9\lib\net472\Exiled.API.dll</HintPath>
<Reference Include="Exiled.API, Version=2.0.10.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\EXILED.2.0.10\lib\net472\Exiled.API.dll</HintPath>
</Reference>
<Reference Include="Exiled.Events, Version=2.0.9.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\EXILED.2.0.9\lib\net472\Exiled.Events.dll</HintPath>
<Reference Include="Exiled.Events, Version=2.0.10.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\EXILED.2.0.10\lib\net472\Exiled.Events.dll</HintPath>
</Reference>
<Reference Include="Exiled.Loader, Version=2.0.9.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\EXILED.2.0.9\lib\net472\Exiled.Loader.dll</HintPath>
<Reference Include="Exiled.Loader, Version=2.0.10.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\EXILED.2.0.10\lib\net472\Exiled.Loader.dll</HintPath>
</Reference>
<Reference Include="Exiled.Permissions, Version=2.0.9.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\EXILED.2.0.9\lib\net472\Exiled.Permissions.dll</HintPath>
<Reference Include="Exiled.Permissions, Version=2.0.10.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\EXILED.2.0.10\lib\net472\Exiled.Permissions.dll</HintPath>
</Reference>
<Reference Include="Exiled.Updater, Version=2.0.9.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\EXILED.2.0.9\lib\net472\Exiled.Updater.dll</HintPath>
<Reference Include="Exiled.Updater, Version=2.0.10.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\EXILED.2.0.10\lib\net472\Exiled.Updater.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="UnityEngine, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
Expand Down
56 changes: 33 additions & 23 deletions src/BuddyAcceptCommand.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System;
using System.Collections.Generic;
using System.Linq;
using CommandSystem;
using Exiled.API.Features;
Expand All @@ -9,7 +10,7 @@ namespace Buddy
[CommandHandler(typeof(ClientCommandHandler))]
class BuddyAcceptCommand : ICommand
{
public string Command => Buddy.singleton.getLang("buddyAcceptCommand");
public string Command => Buddy.singleton.Config.GetLang("buddyAcceptCommand");

public string[] Aliases => null;

Expand All @@ -18,66 +19,75 @@ class BuddyAcceptCommand : ICommand
public bool Execute(ArraySegment<string> arguments, ICommandSender sender, out string response)
{
response = "";
string[] args = arguments.ToArray();
if (sender is PlayerCommandSender)
{
Player player = Player.Get(((CommandSender)sender).SenderId);
response = handleBuddyAcceptCommand(player, new string[] { });
response = HandleBuddyAcceptCommand(player, arguments.ToArray());
return true;
}
return true;
}

private string handleBuddyAcceptCommand(Player p, string[] args)
private string HandleBuddyAcceptCommand(Player p, string[] args)
{
//checks
if (!Buddy.singleton.buddyRequests.ContainsKey(p.UserId))
{
return Buddy.singleton.getLang("noBuddyRequestsMessage");
return Buddy.singleton.Config.GetLang("noBuddyRequestsMessage");
}

//set the buddy
Player buddy = null;
try
{
Buddy.singleton.buddyRequests.TryGetValue(p.UserId, out buddy);
if (!Buddy.singleton.buddyRequests.TryGetValue(p.UserId, out List<Player> buddies) || buddies == null) return Buddy.singleton.Config.GetLang("errorMessage");
if (args.Length != 1) buddy = buddies.Last();
else
{
string lower = args[0].ToLower();
foreach(Player player in buddies)
{
if (player == null) continue;
if (player.Nickname.ToLower().Contains(lower) && player.UserId != p.UserId)
{
buddy = player;
break;
}
}
}
}
catch (ArgumentNullException e)
{
Log.Error(e.ToString());
return Buddy.singleton.getLang("errorMessage");
return Buddy.singleton.Config.GetLang("errorMessage");
}
if (buddy == null)
if (buddy == null || (buddy != null && Buddy.singleton.buddies.ContainsKey(buddy.UserId)))
{
Buddy.singleton.buddies.Remove(p.UserId);
Buddy.singleton.removePerson(p.UserId);
return Buddy.singleton.getLang("errorMessage");

Buddy.singleton.RemovePerson(p.UserId);
return Buddy.singleton.Config.GetLang("errorMessage");
}
try
{
if (Buddy.singleton.buddies.ContainsKey(p.UserId))
{
string refh = null;
Buddy.singleton.buddies.TryGetValue(p.UserId, out refh);
if (refh != null) Buddy.singleton.buddies.Remove(refh);
else Buddy.singleton.removePerson(p.UserId);
Buddy.singleton.buddies.Remove(p.UserId);
Buddy.singleton.RemovePerson(p.UserId);
}
}
catch (ArgumentNullException e)
{
Log.Error(e.ToString());
return Buddy.singleton.getLang("errorMessage");
Log.Error(e);
return Buddy.singleton.Config.GetLang("errorMessage");
}

Buddy.singleton.buddies.Add(p.UserId, buddy.UserId);
Buddy.singleton.buddies.Add(buddy.UserId, p.UserId);
Buddy.singleton.buddies[p.UserId] = buddy.UserId;
Buddy.singleton.buddies[buddy.UserId] = p.UserId;
Buddy.singleton.buddyRequests.Remove(p.UserId);
buddy.SendConsoleMessage(Buddy.singleton.getLang("buddyRequestAcceptMessage").Replace("$name", p.Nickname), "yellow");
if (Buddy.singleton.Config.sendBuddyAcceptedBroadcast)
buddy.Broadcast(5, Buddy.singleton.getLang("buddyRequestAcceptMessage").Replace("$name", p.Nickname), Broadcast.BroadcastFlags.Normal);
return Buddy.singleton.getLang("successMessage");
buddy.SendConsoleMessage(Buddy.singleton.Config.GetLang("buddyRequestAcceptMessage").Replace("$name", p.Nickname), "yellow");
if (Buddy.singleton.Config.SendBuddyAcceptedBroadcast)
buddy.Broadcast(5, Buddy.singleton.Config.GetLang("buddyRequestAcceptMessage").Replace("$name", p.Nickname), Broadcast.BroadcastFlags.Normal);
return Buddy.singleton.Config.GetLang("successMessage");
}
}
}
46 changes: 28 additions & 18 deletions src/BuddyCommand.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System;
using System.Collections.Generic;
using System.Linq;
using CommandSystem;
using Exiled.API.Features;
Expand All @@ -9,7 +10,7 @@ namespace Buddy
[CommandHandler(typeof(ClientCommandHandler))]
class BuddyCommand : ICommand
{
public string Command => Buddy.singleton.getLang("buddyCommand");
public string Command => Buddy.singleton.Config.GetLang("buddyCommand");

public string[] Aliases => null;

Expand All @@ -24,48 +25,57 @@ public bool Execute(ArraySegment<string> arguments, ICommandSender sender, out s
Player player = Player.Get(((CommandSender)sender).SenderId);
if (args.Length != 1)
{
response = Buddy.singleton.getLang("invalidUsage");
response = Buddy.singleton.Config.GetLang("invalidUsage");
return true;
}
try
{
response = handleBuddyCommand(player, args);
response = HandleBuddyCommand(player, args);
return true;
}
catch (Exception e)
{
Log.Error(e.ToString());
response = Buddy.singleton.getLang("errorMessage");
Log.Error(e);
response = Buddy.singleton.Config.GetLang("errorMessage");
}
}
return true;
}

private string handleBuddyCommand(Player p, string[] args)
private string HandleBuddyCommand(Player p, string[] args)
{
//get the player who the request was sent to
Player buddy = null;
string lower = args[0].ToLower();
foreach (Player hub in Player.List)
foreach (Player player in Player.List)
{
if (hub == null) continue;
if (hub.ReferenceHub.nicknameSync.Network_myNickSync.ToLower().Contains(lower) && hub.UserId != p.UserId)
if (player == null) continue;
if (player.Nickname.ToLower().Contains(lower) && player.UserId != p.UserId)
{
buddy = hub;
buddy = player;
break;
}
}
if (buddy == null)
{
return Buddy.singleton.getLang("playerNotFoundMessage");
return Buddy.singleton.Config.GetLang("playerNotFoundMessage");
}

if (Buddy.singleton.buddyRequests.ContainsKey(buddy.UserId)) Buddy.singleton.buddyRequests.Remove(buddy.UserId);
Buddy.singleton.buddyRequests.Add(buddy.UserId, p);
buddy.SendConsoleMessage(Buddy.singleton.getLang("BuddyMessagePrompt").Replace("$name", p.Nickname).Replace("$buddyAcceptCMD", "." + Buddy.singleton.getLang("buddyAcceptCommand")), "yellow");
if (Buddy.singleton.Config.sendBuddyRequestBroadcast && !Round.IsStarted)
buddy.Broadcast(5, Buddy.singleton.getLang("broadcastBuddyRequest").Replace("$name", p.Nickname), Broadcast.BroadcastFlags.Normal);
return Buddy.singleton.getLang("buddyRequestSentMessage");
if(Buddy.singleton.buddyRequests.ContainsKey(p.UserId) && Buddy.singleton.buddyRequests.TryGetValue(p.UserId, out List<Player> buddies) && buddies.Where((player) => player.UserId == buddy.UserId).Any() && !Buddy.singleton.buddies.ContainsKey(buddy.UserId))
{
Buddy.singleton.buddies[p.UserId] = buddy.UserId;
Buddy.singleton.buddies[buddy.UserId] = p.UserId;
Buddy.singleton.buddyRequests.Remove(p.UserId);
buddy.SendConsoleMessage(Buddy.singleton.Config.GetLang("buddyRequestAcceptMessage").Replace("$name", p.Nickname), "yellow");
if (Buddy.singleton.Config.SendBuddyAcceptedBroadcast)
buddy.Broadcast(5, Buddy.singleton.Config.GetLang("buddyRequestAcceptMessage").Replace("$name", p.Nickname), Broadcast.BroadcastFlags.Normal);
return Buddy.singleton.Config.GetLang("successMessage");
}
if (!Buddy.singleton.buddyRequests.ContainsKey(buddy.UserId)) Buddy.singleton.buddyRequests[buddy.UserId] = new List<Player>();
Buddy.singleton.buddyRequests[buddy.UserId].Add(p);
buddy.SendConsoleMessage(Buddy.singleton.Config.GetLang("BuddyMessagePrompt").Replace("$name", p.Nickname), "yellow");
if (Buddy.singleton.Config.SendBuddyRequestBroadcast && !Round.IsStarted)
buddy.Broadcast(5, Buddy.singleton.Config.GetLang("broadcastBuddyRequest").Replace("$name", p.Nickname), Broadcast.BroadcastFlags.Normal);
return Buddy.singleton.Config.GetLang("buddyRequestSentMessage");
}
}
}
30 changes: 19 additions & 11 deletions src/Config.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.ComponentModel;
using Exiled.Events.EventArgs;
using System.Linq;

namespace Buddy
{
Expand All @@ -11,25 +12,25 @@ class Config : IConfig
public bool IsEnabled { get; set; } = true;

[Description("Makes a player the exact role as their buddy.")]
public bool forceExactRole { get; set; } = false;
public bool ForceExactRole { get; set; } = false;

[Description("If true, buddies will never spawn in as a guard and scientist. Only both a guard or both a scientist.")]
public bool disallowGuardScientistCombo { get; set; } = true;
public bool DisallowGuardScientistCombo { get; set; } = true;

[Description("Should buddies be reset every round.")]
public bool resetBuddiesEveryRound { get; set; } = true;
public bool ResetBuddiesEveryRound { get; set; } = true;

[Description("Should a broadcast be sent be sent telling players how to use the plugin.")]
public bool sendInfoBroadcast { get; set; } = true;
public bool SendInfoBroadcast { get; set; } = true;

[Description("Should a broadcast be sent be sent telling players who their buddy is..")]
public bool sendBuddyBroadcast { get; set; } = true;
public bool SendBuddyBroadcast { get; set; } = true;

[Description("Should a broadcast be sent be sent to a player when someone requests to be their buddy.")]
public bool sendBuddyRequestBroadcast { get; set; } = true;
public bool SendBuddyRequestBroadcast { get; set; } = true;

[Description("Should a broadcast be sent be sent telling players that their buddy request was accepted.")]
public bool sendBuddyAcceptedBroadcast { get; set; } = true;
public bool SendBuddyAcceptedBroadcast { get; set; } = true;

[Description("Change the messages that Buddy sends to players.")]
public Dictionary<string, string> Messages { get; set; } = new Dictionary<string, string> {
Expand All @@ -54,10 +55,17 @@ class Config : IConfig

public void OnReload()
{
Buddy.singleton.setLang("BuddyMessage", Buddy.singleton.getLang("BuddyMessage").Replace("$buddyCMD", "." + Buddy.singleton.getLang("buddyCommand")));
Buddy.singleton.setLang("invalidUsage", Buddy.singleton.getLang("invalidUsage").Replace("$buddyCMD", "." + Buddy.singleton.getLang("buddyCommand")));
Buddy.singleton.setLang("buddyRequestAcceptMessage", Buddy.singleton.getLang("buddyRequestAcceptMessage").Replace("$unBuddyCMD", "." + Buddy.singleton.getLang("buddyUnbuddyCommand")));
Buddy.singleton.setLang("successMessage", Buddy.singleton.getLang("successMessage").Replace("$unBuddyCMD", "." + Buddy.singleton.getLang("buddyUnbuddyCommand")));
foreach(string key in this.Messages.Keys.ToList())
{
if (key == "buddyCommand" || key == "buddyAcceptCommand" || key == "buddyUnbuddyCommand") continue;
this.Messages[key] = this.Messages[key].Replace("$buddyCMD", "." + this.GetLang("buddyCommand")).Replace("$buddyAcceptCMD", "." + this.GetLang("buddyAcceptCommand")).Replace("$unBuddyCMD", "." + this.GetLang("buddyUnbuddyCommand"));
}
}

public string GetLang(string key)
{
if (!this.Messages.TryGetValue(key, out string outVal)) return "";
return outVal;
}
}
}
Loading

0 comments on commit 5ed1879

Please sign in to comment.