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); }
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(); // } }
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); }
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; }
/// <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; }
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; }
// 完成比赛,想客户端发送排序并停止比赛 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; }