using System.Collections.Generic; using System.Linq; namespace Funique { /// /// Extensions: Player Information
/// ------------------------------------------------
/// 擴充: 用戶資訊 Hash ///
public static class PlayerInformationExtensions { public static int RandomID(this Dictionary PlayerInfoDic, int memberLimit) { int LastID = UnityEngine.Random.Range(0, memberLimit); int stopNum = 0; while (!CheckRepeatID(PlayerInfoDic, LastID) && stopNum < 100) { stopNum++; LastID = UnityEngine.Random.Range(0, memberLimit); } if (stopNum >= 100) LastID = -1; return LastID; } public static string RandomIP(this Dictionary PlayerInfoDic, int memberLimit) { int LastID = UnityEngine.Random.Range(0, memberLimit); string IP = "192.168.1." + (LastID + 1).ToString(); int stopNum = 0; while (!CheckRepeatIP(PlayerInfoDic, IP) && stopNum < 100) { stopNum++; LastID = UnityEngine.Random.Range(0, memberLimit); IP = "192.168.1." + (LastID + 1).ToString(); } return IP; } public static bool CheckRepeatID(this Dictionary PlayerInfoDic, int ID) { return PlayerInfoDic.ToList().FindIndex(x => x.Value.ID == ID) != -1; } public static bool CheckRepeatIP(this Dictionary PlayerInfoDic, string IP) { return PlayerInfoDic.ToList().FindIndex(x => x.Value.IP == IP) != -1; } } }