示例#1
0
        public static List <ArenaControl> RandomArenaSet(ArenaType type)
        {
            List <ArenaControl> arenaset = new List <ArenaControl>();
            List <string>       settypes = new List <string>();
            Random rand = new Random();
            string set  = "";

            if (Arenas.ContainsKey(type))
            {
                arenaset.AddRange(Arenas[type]);
                foreach (ArenaControl a in arenaset)
                {
                    if (!settypes.Contains(a.Set))
                    {
                        settypes.Add(a.Set);
                    }
                }

                set = settypes[rand.Next(settypes.Count)];

                arenaset.RemoveAll(delegate(ArenaControl a) { return(a.Set != set); });
            }

            return(arenaset);
        }
示例#2
0
    private GameObject getRandomArena(ArenaType arenaType, System.Random rand)
    {
        switch (arenaType)
        {
        case ArenaType.Hub:
            return(weightedChance(ref hub_prefabs, rand));

        case ArenaType.T:
            return(weightedChance(ref t_prefabs, rand));

        case ArenaType.Straight:
            return(weightedChance(ref straight_prefabs, rand));

        case ArenaType.Bend:
            return(weightedChance(ref bend_prefabs, rand));

        case ArenaType.Start:
            return(weightedChance(ref start_prefabs, rand));

        case ArenaType.End:
            return(weightedChance(ref end_prefabs, rand));

        case ArenaType.assigning:
            Debug.LogError("ArenaType is assigning while trying to spawn");
            return(null);

        case ArenaType.Unassigned:
            Debug.LogError("ArenaType is unassigned while trying to spawn");
            return(null);

        default:
            Debug.LogError("ArenaType is null while trying to spawn");
            return(null);
        }
    }
示例#3
0
 /// <summary>
 /// Main Constructor
 /// </summary>
 public Tournament()
 {
     m_Teams     = new List <Teams>();
     m_Date      = DateTime.Now;
     m_ArenaSets = new List <string>();
     m_Type      = TournamentType.SingleElimination;
     m_TeamSize  = ArenaType.OneVsOne;
     m_Supplied  = true;
     m_Prizes    = new Dictionary <string, Item>();
 }
示例#4
0
        public static Duration GetPoTime(
            int offsetMinutes,
            ArenaType arenaType,
            Instant?utcNow = null)
        {
            Instant  other       = utcNow.HasValue ? utcNow.Value : SystemClock.Instance.GetCurrentInstant();
            DateTime dateTimeUtc = other.ToDateTimeUtc();
            int      hourOfDay   = arenaType == ArenaType.Squad ? 18 : 19;
            Instant  instant     = Instant.FromUtc(dateTimeUtc.Year, dateTimeUtc.Month, dateTimeUtc.Day, hourOfDay, 0, 0).Minus(Duration.FromMinutes((long)offsetMinutes));

            return(instant >= other?instant.Minus(other) : instant.Plus(Duration.FromHours(24)).Minus(other));
        }
示例#5
0
        public static List <ArenaControl> GetArenaSet(ArenaType type, string set)
        {
            List <ArenaControl> arenaset = new List <ArenaControl>();

            if (Arenas.ContainsKey(type))
            {
                arenaset.AddRange(Arenas[type]);
                arenaset.RemoveAll(delegate(ArenaControl a) { return(a.Set == set); });
            }

            return(arenaset);
        }
示例#6
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);
            int index;

            m_FightingAreaOne = new List <Point3D>();
            m_FightingAreaTwo = new List <Point3D>();
            m_StagingAreaOne  = new List <Point3D>();
            m_StagingAreaTwo  = new List <Point3D>();

            m_Occupied = false;
            reader.ReadBool();
            m_Supplied      = reader.ReadBool();
            m_Set           = reader.ReadString();
            m_Type          = (ArenaType)reader.ReadInt();
            m_AnnouncerSpot = reader.ReadPoint3D();
            m_ExitArea      = reader.ReadPoint3D();
            index           = reader.ReadInt();
            for (int i = 0; i < index; i++)
            {
                m_FightingAreaOne.Add(reader.ReadPoint3D());
            }
            index = reader.ReadInt();
            for (int i = 0; i < index; i++)
            {
                m_FightingAreaTwo.Add(reader.ReadPoint3D());
            }
            m_HoldingArea = reader.ReadPoint3D();
            index         = reader.ReadInt();
            for (int i = 0; i < index; i++)
            {
                m_StagingAreaOne.Add(reader.ReadPoint3D());
            }
            index = reader.ReadInt();
            for (int i = 0; i < index; i++)
            {
                m_StagingAreaTwo.Add(reader.ReadPoint3D());
            }

            m_ArenaArea     = ReadRect3DArray(reader);
            m_SpectatorArea = ReadRect3DArray(reader);

            Active = reader.ReadBool();

            UpdateRegions();
        }
示例#7
0
        public static List <string> GetSets(ArenaType type)
        {
            List <string> sets = new List <string>();

            if (Arenas.ContainsKey(type))
            {
                List <ArenaControl> list = Arenas[type];
                foreach (ArenaControl a in list)
                {
                    if (!sets.Contains(a.Set))
                    {
                        sets.Add(a.Set);
                    }
                }
            }

            return(sets);
        }
示例#8
0
 public Tracker(
     IDiscordMessenger messenger,
     IPlayerSettingsProvider playerSettingsProvider,
     IArenaRankStorage arenaRankStorage,
     IPlayerRankService playerRankService,
     ILog logger,
     ITagsProvider tagProvider,
     ArenaType arenaType,
     IStatsService statService)
 {
     this.Messenger = messenger;
     this.PlayerSettingsProvider = playerSettingsProvider;
     this.ArenaRankStorage       = arenaRankStorage;
     this.PlayerRankService      = playerRankService;
     this.Logger         = logger;
     this.ArenaType      = arenaType;
     this.TagProvider    = tagProvider;
     this.StatService    = statService;
     this.googleExporter = new GoogleExporter();
 }
示例#9
0
        /// <summary>
        /// Cleans the "tournament" list by removing tournaments
        /// that do not have an arena. Sorts the list by date
        /// after the removal
        /// </summary>
        /// <param name="type"></param>
        public static void CleanTournamentList(ArenaType type)
        {
            m_Type = type;
            if (m_Events.ContainsKey("tournament"))
            {
                List <Tournament> list = new List <Tournament>();
                foreach (object obj in m_Events["tournament"])
                {
                    Tournament t = (Tournament)obj;
                    list.Add(t);
                }

                list.RemoveAll(RemoveType);
                m_Events["tournament"].Clear();
                foreach (object obj in list)
                {
                    m_Events["tournament"].Add(obj);
                }
            }
        }
示例#10
0
        public ArenaControl()
        {
            ItemID = 0x1f13;
            Visible = false;

            Name = "General Arena";
            m_Active = false;
            m_Occupied = false;
            m_Supplied = false;
            m_Set = "General";
            m_Type = ArenaType.OneVsOne;
            m_AnnouncerSpot = new Point3D(0,0,0);
            m_HoldingArea = new Point3D(0, 0, 0);
            m_ExitArea = new Point3D(0,0,0);
            m_FightingAreaOne = new List<Point3D>();
            m_FightingAreaTwo = new List<Point3D>();
            m_StagingAreaOne = new List<Point3D>();
            m_StagingAreaTwo = new List<Point3D>();
            m_Arena = new ArenaRegion(this);
            m_Spectator = new SpectatorRegion(this);
        }
示例#11
0
        public ArenaControl()
        {
            ItemID  = 0x1f13;
            Visible = false;

            Name              = "General Arena";
            m_Active          = false;
            m_Occupied        = false;
            m_Supplied        = false;
            m_Set             = "General";
            m_Type            = ArenaType.OneVsOne;
            m_AnnouncerSpot   = new Point3D(0, 0, 0);
            m_HoldingArea     = new Point3D(0, 0, 0);
            m_ExitArea        = new Point3D(0, 0, 0);
            m_FightingAreaOne = new List <Point3D>();
            m_FightingAreaTwo = new List <Point3D>();
            m_StagingAreaOne  = new List <Point3D>();
            m_StagingAreaTwo  = new List <Point3D>();
            m_Arena           = new ArenaRegion(this);
            m_Spectator       = new SpectatorRegion(this);
        }
示例#12
0
        private static Tracker InitTracker()
        {
            string    str       = Environment.GetEnvironmentVariable("GAME_CLIENT_VERSION") ?? "99.99.99";
            string    url       = (Environment.GetEnvironmentVariable("ALLY_CODES_URL") ?? "").Trim();
            ArenaType arenaType = (Environment.GetEnvironmentVariable("ARENA_TYPE") ?? "SQUAD").Trim().Equals("FLEET") ? ArenaType.Fleet : ArenaType.Squad;

            Program.Logger.Log(string.Format("Arena type: {0}", (object)arenaType));
            string webHook = (Environment.GetEnvironmentVariable("DISCORD_WEB_HOOK") ?? "").Trim();

            if (string.IsNullOrEmpty(webHook))
            {
                Program.Logger.Log("ENV variable DISCORD_WEB_HOOK not found");
            }
            IPlayerSettingsProvider playerSettingsProvider;

            if (!string.IsNullOrEmpty(url))
            {
                Program.Logger.Log("Ally codes and tags will be loaded from the provided url");
                playerSettingsProvider = (IPlayerSettingsProvider) new PlayerSettingsUrlProvider(url, Program.Logger);
            }
            else
            {
                playerSettingsProvider = (IPlayerSettingsProvider) new PlayerSettingsEnvProvider(Program.Logger);
                IList <PlayerSettings> result = playerSettingsProvider.GetPlayerSettingAsync().Result;
                List <string>          list1  = result.Select <PlayerSettings, string>((Func <PlayerSettings, string>)(ac => ac.AllyCode)).ToList <string>();
                Program.Logger.Log(string.Format("Provided ally codes from environment: #{0}", (object)list1.Count));
                Program.Logger.Log(string.Join <string>(',', (IEnumerable <string>)list1));
                List <string> list2 = result.Select <PlayerSettings, string>((Func <PlayerSettings, string>)(x => x.DiscordId)).ToList <string>();
                Program.Logger.Log(string.Format("Provided discord tags: #{0}", (object)list2.Count));
                Program.Logger.Log(string.Join <string>(',', (IEnumerable <string>)list2));
            }
            return(new Tracker((IDiscordMessenger) new DiscordMessenger(webHook), playerSettingsProvider, (IArenaRankStorage) new StaticArenaRankStorage(), (IPlayerRankService) new PlayerRankService((IGameClient) new Ipd.GameClient.GameClient("ipd-arena-tracker:" + StatsService.ClientVersion)
            {
                GameClientVersion = str
            }), Program.Logger, (ITagsProvider) new EnvTagsProvider(Program.Logger), arenaType, (IStatsService) new StatsService()));
        }
示例#13
0
        public static List<ArenaControl> RandomArenaSet(ArenaType type)
        {
            List<ArenaControl> arenaset = new List<ArenaControl>();
            List<string> settypes = new List<string>();
            Random rand = new Random();
            string set = "";

            if (Arenas.ContainsKey(type))
            {
                arenaset.AddRange(Arenas[type]);
                foreach (ArenaControl a in arenaset)
                    if (!settypes.Contains(a.Set))
                        settypes.Add(a.Set);

                set = settypes[rand.Next(settypes.Count)];

                arenaset.RemoveAll(delegate(ArenaControl a) { return a.Set != set; });
            }

            return arenaset;
        }
示例#14
0
 /// <summary>
 /// Main Constructor
 /// </summary>
 public Tournament()
 {
     m_Teams = new List<Teams>();
     m_Date = DateTime.Now;
     m_ArenaSets = new List<string>();
     m_Type = TournamentType.SingleElimination;
     m_TeamSize = ArenaType.OneVsOne;
     m_Supplied = true;
     m_Prizes = new Dictionary<string,Item>();
 }
示例#15
0
 public void ToArenaScene(ArenaType arena)
 {
     SceneManager.LoadScene("arena_" + arena.ToString());
 }
    //void OnGUI()
    //{
    //    if (GUILayout.Button("input code print"))
    //    {
    //        Handle_DecodeNumInputConfirm(new int[] { 6, 8, 7, 3, 2, 8, 9, 2, 0, 3, 1, 7 });
    //    }
    //}
    void Handle_DecodeNumInputConfirm(int[] digits)
    {
        BackStageSetting bs = GameMain.Singleton.BSSetting;

        //����������
        ulong codeOri = 0;

        ulong[] pows = new ulong[12];
        for (int i = 0; i != 12; ++i)
        {
            pows[i] = 1;
        }
        for (int i = 0; i != 12; ++i)
        {
            for (int powMulti = 0; powMulti != i; ++powMulti)
            {
                pows[i] *= 10;
            }
        }

        for (int i = 0; i != 12; ++i)
        {
            codeOri += (ulong)(digits[11 - i]) * pows[i];
        }

        byte[] msgEncrypt = HF_Decoder.MsgFromDecimalCode(codeOri);
        byte[] msgDecrypt = HF_Decoder.Decrypt_Msg(msgEncrypt, (uint)GameMain.Singleton.BSSetting.Dat_IdTable.Val, mCurTagId);

//         string msgPlainStr = "";
//         foreach (byte b in msgDecrypt)
//         {
//             msgPlainStr += string.Format("{0:x2}   ", b);
//         }
//         Debug.Log("msgPlainStr = " + msgPlainStr);


        bool needCodePrint = false;
        //(hqc:����ͨ����У�������Խ��������������⣬����ijЩ������(������)λ������,������Ҫ�Ķ�Ӳ������.
        //�����ü򵥷���.ȱ��:�������Ļ����û���������������ʱ��������������)
        bool isInputValCorrect = true;//����ֵ�Ƿ��Ϸ���
        int  codeTypeIdx       = -1;

        HF_Decoder.MsgCode codeType = HF_Decoder.GetMsgPlainType(msgDecrypt);
        bool isVerifySucess         = false;

        switch (codeType)
        {
        case HF_Decoder.MsgCode.TouBiBiLi:
        {
            //codeTypeStr = "Ͷ�ұ���";
            codeTypeIdx = 0;
            int val = HF_Decoder.TouBiBiLi_FromMsgPlain(msgDecrypt, (uint)GameMain.Singleton.BSSetting.Dat_IdTable.Val, mCurTagId, out isVerifySucess);
            if (val < 1 || val > 1000 || !isVerifySucess)
            {
                isInputValCorrect = false;
                break;
            }
            bs.InsertCoinScoreRatio.Val = val;
            Text_InsertCoinRatio.text   = "1 �� " + bs.InsertCoinScoreRatio.Val.ToString();
            Text_InsertCoinRatio.text   = string.Format("1 {0:s} {1:d} {2:s}", BackstageMain.Singleton.Unit_Coin.CurrentText, bs.InsertCoinScoreRatio.Val, BackstageMain.Singleton.Unit_Score.CurrentText);
            Text_InsertCoinRatio.Commit();
            needCodePrint = true;
        }
        break;

        case HF_Decoder.MsgCode.ChangDiLeiXing:
        {
            //codeTypeStr = "��������";
            codeTypeIdx = 1;
            ArenaType oldArenaType = bs.ArenaType_.Val;
            int       val          = HF_Decoder.ChangeDiLeiXing_FromMsgPlain(msgDecrypt, (uint)GameMain.Singleton.BSSetting.Dat_IdTable.Val, mCurTagId, out isVerifySucess);

            if (val < 0 || val > 2 || !isVerifySucess)
            {
                isInputValCorrect = false;
                break;
            }

            bs.ArenaType_.Val = (ArenaType)val;
            if (GameMain.EvtBGChangeArenaType != null)
            {
                GameMain.EvtBGChangeArenaType(oldArenaType, bs.ArenaType_.Val);
            }

            Text_ArenaType.text = ArenaTexts[(int)bs.ArenaType_.Val].CurrentText;
            Text_ArenaType.Commit();
        }
        break;

        case HF_Decoder.MsgCode.DaMaTianShu:
        {
            //codeTypeStr = "��������";
            codeTypeIdx = 2;
            int val = HF_Decoder.DaMaTianShu_FromMsgPlain(msgDecrypt, (uint)GameMain.Singleton.BSSetting.Dat_IdTable.Val, mCurTagId, out isVerifySucess);

            if (val < 1 || val > 13 || !isVerifySucess)
            {
                isInputValCorrect = false;
                break;
            }

            bs.CodePrintDay.Val    = val;
            Text_CodePrintDay.text = bs.CodePrintDay.Val.ToString() + "  " + BackstageMain.Singleton.Unit_Day.CurrentText;
            Text_CodePrintDay.Commit();
        }
        break;

        case HF_Decoder.MsgCode.XiTongShiJian:
        {
            //codeTypeStr = "ϵͳʱ��";
            codeTypeIdx = 3;
            uint[] timeData = new uint[5];
            HF_Decoder.XiTongShiJian_FromMsgPlain(msgDecrypt, out timeData[0], out timeData[1], out timeData[02], out timeData[3], out timeData[4]);
            if ((int)timeData[1] < 1 || (int)timeData[1] > 12 || (int)timeData[2] < 1 || (int)timeData[2] > 31 || (int)timeData[3] < 0 || (int)timeData[3] > 24 || (int)timeData[4] < 0 || (int)timeData[4] > 60)
            {
                isInputValCorrect = false;
                break;
            }

            System.DateTime dt = new System.DateTime((int)timeData[0] + 2000, (int)timeData[1], (int)timeData[2], (int)timeData[3], (int)timeData[4], 0);
            //����ϵͳʱ��
            win32Api.SetLocalTimeByDateTime(dt);

            //��ʾ
            Text_SystemTime.text = string.Format("{0:d}-{1:d2}-{2:d2} {3:d2}:{4:d2}:{5:d2}"
                                                 , dt.Year, dt.Month, dt.Day, dt.Hour, dt.Minute, dt.Second);
            Text_SystemTime.Commit();
        }
        break;

        case HF_Decoder.MsgCode.XianShiDaMaXinXi:
        {
            //codeTypeStr = "�����ɹ���Ϣ";
            codeTypeIdx = 4;
            bs.IsViewCodebeatSuccess.Val = HF_Decoder.XianShiDaMaXinXi_FromMsgPlain(msgDecrypt, (uint)GameMain.Singleton.BSSetting.Dat_IdTable.Val, mCurTagId, out isVerifySucess);
            if (!isVerifySucess)
            {
                isInputValCorrect = false;
                break;
            }

            Text_IsViewCodeBeatSuccess.text = bs.IsViewCodebeatSuccess.Val ? ViewCodeBeatSuccessTexts[1].CurrentText : ViewCodeBeatSuccessTexts[0].CurrentText;
            Text_IsViewCodeBeatSuccess.Commit();
        }
        break;
        }

        if (!isInputValCorrect || codeType == HF_Decoder.MsgCode.None)//��������.
        {
            Box_Decoder.ViewErroInput();
        }
        else//�����ɹ�
        {
            if (needCodePrint)
            {
                mIsCursorMovable = true;
                Box_Decoder.gameObject.SetActiveRecursively(false);
                gameObject.SetActiveRecursively(false);

                GameMain.Singleton.BSSetting.CodePrintCurrentAction.SetImmdiately(false);//��0״̬
                GameMain.Singleton.BSSetting.IsCodePrintClearAllData.SetImmdiately(true);
                //BackstageMain.Singleton.WndCodePrint.gameObject.SetActiveRecursively(true);
                BackstageMain.Singleton.WndCodePrint.Enter();
            }
            else
            {
                mIsCursorMovable = true;
                Box_Decoder.gameObject.SetActiveRecursively(false);

                Text_DeCodeSuccessInfo.text = DecodeResultHintTexts[codeTypeIdx].CurrentText;// string.Format("��{0}�����������ɹ�", codeTypeStr);
                Text_DeCodeSuccessInfo.Commit();
                Text_DeCodeSuccessInfo.GetComponent <Renderer>().enabled = true;
                Rd_DecodeSuccessBG.enabled = true;
                StartCoroutine(_Coro_DelayDisableSucessInfo());
            }
        }
    }
示例#17
0
        /// <summary>
        /// Cleans the "tournament" list by removing tournaments
        /// that do not have an arena. Sorts the list by date
        /// after the removal
        /// </summary>
        /// <param name="type"></param>
        public static void CleanTournamentList(ArenaType type)
        {
            m_Type = type;
            if(m_Events.ContainsKey("tournament"))
            {
                List<Tournament> list = new List<Tournament>();
                foreach (object obj in m_Events["tournament"])
                {
                    Tournament t = (Tournament)obj;
                    list.Add(t);
                }

                list.RemoveAll(RemoveType);
                m_Events["tournament"].Clear();
                foreach (object obj in list)
                {
                    m_Events["tournament"].Add(obj);
                }
            }
        }
示例#18
0
        public static List<ArenaControl> GetArenaSet(ArenaType type, string set)
        {
            List<ArenaControl> arenaset = new List<ArenaControl>();
            if (Arenas.ContainsKey(type))
            {
                arenaset.AddRange(Arenas[type]);
                arenaset.RemoveAll(delegate(ArenaControl a) { return a.Set == set; });
            }

            return arenaset;
        }
示例#19
0
 public BattleArenaStateEventArgs(ArenaType _type, ArenaState _state)
 {
     BattleArenaType  = _type;
     BattleArenaState = _state;
 }
示例#20
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);
            int index;
            m_FightingAreaOne = new List<Point3D>();
            m_FightingAreaTwo = new List<Point3D>();
            m_StagingAreaOne = new List<Point3D>();
            m_StagingAreaTwo = new List<Point3D>();

            m_Occupied = false;
            reader.ReadBool();
            m_Supplied = reader.ReadBool();
            m_Set = reader.ReadString();
            m_Type = (ArenaType)reader.ReadInt();
            m_AnnouncerSpot = reader.ReadPoint3D();
            m_ExitArea = reader.ReadPoint3D();
            index = reader.ReadInt();
            for (int i = 0; i < index; i++)
                m_FightingAreaOne.Add(reader.ReadPoint3D());
            index = reader.ReadInt();
            for (int i = 0; i < index; i++)
                m_FightingAreaTwo.Add(reader.ReadPoint3D());
            m_HoldingArea = reader.ReadPoint3D();
            index = reader.ReadInt();
            for (int i = 0; i < index; i++)
                m_StagingAreaOne.Add(reader.ReadPoint3D());
            index = reader.ReadInt();
            for (int i = 0; i < index; i++)
                m_StagingAreaTwo.Add(reader.ReadPoint3D());

            m_ArenaArea = ReadRect3DArray(reader);
            m_SpectatorArea = ReadRect3DArray(reader);

            Active = reader.ReadBool();

            UpdateRegions();
        }
示例#21
0
        public static List<string> GetSets(ArenaType type)
        {
            List<string> sets = new List<string>();
            if (Arenas.ContainsKey(type))
            {
                List<ArenaControl> list = Arenas[type];
                foreach (ArenaControl a in list)
                    if (!sets.Contains(a.Set))
                        sets.Add(a.Set);
            }

            return sets;
        }