コード例 #1
0
ファイル: MainState.cs プロジェクト: guoruichao/c-_Project
        public override void OnEnter(object[] pars = null)
        {
            if (pars == null || pars.Length == 0)
            {
                Console.WriteLine("error !! MainState OnEnter");
                return ;
            }
            lnRoleID = long.Parse(pars[0].ToString());
            if (lnRoleID == 0)
            {
                Console.WriteLine("error lnRoleID == 0!! MainState OnEnter");
                return;
            }
            Random random = new Random();
            int iRandom = random.Next(1, 5);
            switch (iRandom)
            {
                case 1:
                    SwitchRole();
                    break;
                case 2:

                case 3:

                default:
                    //StartMatch();
                    break;
            }
            _tmMatchTimeOut = new MyTimeOut(10000);
        }
コード例 #2
0
ファイル: RoleState.cs プロジェクト: guoruichao/c-_Project
 public override void OnEnter(object[] pars = null)
 {
     if (pars == null)
     {
         Console.WriteLine("errrrrr RoleState::OnEnter !!! ");
         return;
     }
     object obj = pars[0];
     int nRoleCount = int.Parse(obj.ToString());
     _nRoleCount = nRoleCount;
     _tmSelectTimeOut = new MyTimeOut(5000);
     UpdateRoleArr();
     RandomBehaviour();
     //             if (nRoleCount <= 0)
     //             {
     //                 CreateRole();
     //             }
 }
コード例 #3
0
ファイル: RoleState.cs プロジェクト: guoruichao/c-_Project
        private void SelectRole()
        {
            Console.WriteLine(sMgr.GetContext<ClientUser>().lnRoleID+"   ...send");
            if (_roleArr == null||_roleArr.Length==0)
            {

                Console.WriteLine("没有角色,无法选择,自动调用创建角色" );
                CreateRole();
                return;
            }
            int nRandValue = sMgr.GetContext<ClientUser>().random.Next(0, _roleArr.Length - 1);
            RoleData role = _roleArr[nRandValue];
            _tmSelectRole = null;
            IDataCore dataCore = GetDataCore();
            dataCore.SelectRole(role.lnRoleID);
        }
コード例 #4
0
ファイル: MatchRoom.cs プロジェクト: guoruichao/c-_Project
 public void Stop()
 {
     _CompleteTimeout = null;
     _CompleteMemberList.Clear();
     _msgProcCallBackList.Clear();
     _nStartMatchTime = 0;
     KeyValuePair<long,MatchMember> [] arrMember = _memberMap.ToArray();
     foreach (var MemberIt in arrMember)
     {
         MatchMember member = MemberIt.Value;
         if (member == null)
         {
             continue;
         }
         member.StopMatch();
     }
     _memberMap.Clear();
     SetThread();
     _lnKeyID = 0;
     _nCurCount = 0;
 }
コード例 #5
0
ファイル: MatchRoom.cs プロジェクト: guoruichao/c-_Project
 /// <summary>
 /// 开始比赛,如果开始失败,自动发送匹配失败,或者发送比赛失败
 /// </summary>
 /// <param name="lnKeyID"></param>
 public bool Start(long lnKeyID)
 {
     _lnKeyID = lnKeyID;
     _CompleteTimeout = null;
     _CompleteMemberList.Clear();
     _msgProcCallBackList.Clear();
     _nStartMatchTime = DelayEvent.GetCurUtcMSTime();
     foreach (var mem in _memberMap)
     {
         MatchMember Member = mem.Value;
         SendMemInfoToUser(Member.user);
     }
     foreach (var mem in _memberMap)
     {
         MatchMember Member = mem.Value;
         SendMatchingResult(Member.user);
     }
     MatchThreadPool.GetInstance().AddProcss(this);
     /// 启动线程。。
     return true;
 }
コード例 #6
0
ファイル: MatchRoom.cs プロジェクト: guoruichao/c-_Project
 public bool CompleteMatchByMember(MatchMember matchMember)
 {
     if (matchMember == null || matchMember._user == null)
     {
         return false;
     }
     if (_nStartMatchTime <= 0)
     {
         return false;
     }
     matchMember._nCompleteTime = (int)(DelayEvent.GetCurUtcMSTime() - _nStartMatchTime);
     _CompleteMemberList.Add(matchMember);
     if (_CompleteMemberList.Count == 1)
     {
         int nCountdownTime = 10000;
         _CompleteTimeout = new MyTimeOut(nCountdownTime);
         object[] pars = { nCountdownTime };
         APIMessage message = new APIMessage { Type = (int)enMessageType.EMT_SC_CompleteStartCountdown, Parameters = pars };
         SendMsgToAllUser(message);
     }
     if (_CompleteMemberList.Count == _memberMap.Count)
     {
         CompleteMatch(true);
     }
     return true;
 }
コード例 #7
0
ファイル: MatchRoom.cs プロジェクト: guoruichao/c-_Project
        // 完成比赛,想客户端发送排序并停止比赛
        public void CompleteMatch(bool bAllFinish = false)
        {
            if (_CompleteMemberList.Count < 1)
            {
                object[] parsResa = { 0, bAllFinish };
                SendMsgToAllUser(new APIMessage { Type = (int)enMessageType.EMT_SC_MatchShowResultUI, Parameters = parsResa });
                return;
            }

            BonusSettlement(_CompleteMemberList);

            int nOrder = 1;
            foreach (var comMember in _CompleteMemberList)
            {

                if (!SendMatchResInfo(comMember, nOrder))
                {
                    comMember._nCompleteTime = 0;
                    continue;
                }
                nOrder++;
            }
            foreach (var MemberIt in _memberMap)
            {

                MatchMember member = MemberIt.Value;
                if (member == null)
                {
                    continue;
                }
                if (member._nCompleteTime != 0)
                {
                    continue;
                }
                SendMatchResInfo(member, -1);
            }

            object[] parsRes = { _memberMap.Count, bAllFinish };
            SendMsgToAllUser(new APIMessage { Type = (int)enMessageType.EMT_SC_MatchShowResultUI, Parameters = parsRes });
            _MatchMgr.StopMatch(this);
            _CompleteTimeout = null;
        }