CrosscrowdManagerResponse doAction(string siteId, Guid managerId, EnumConsumeSourceType mallDirectType, bool isClearCd) { var crowd = CrossCrowdManager.Instance.GetCurrent(siteId); if (crowd == null || crowd.Status != 1) { return(ResponseHelper.Create <CrosscrowdManagerResponse>(MessageCode.CrowdNoData)); } DateTime curTime = DateTime.Now; CrosscrowdManagerEntity crowdManager = InnerGetManager(siteId, managerId, crowd.Idx, curTime); if (isClearCd) { var cd = MatchCdHandler.GetCdSecondsInt(managerId, EnumMatchType.CrossCrowd); if (cd <= 0) { return(GetManagerInfo(siteId, managerId, crowd.Idx, DateTime.Now)); } crowdManager.ClearCdCount++; } else { if (crowdManager.Morale <= 0) { crowdManager.Morale = _initMorale; crowdManager.ResurrectionCount++; //crowdManager.NextMatchTime = ShareUtil.BaseTime; } else { return(ResponseHelper.Create <CrosscrowdManagerResponse>(MessageCode.CrowdHasMorale)); } } var mallDirect = new CrossMallDirectFrame(siteId, managerId, mallDirectType, 0);// crowdManager.ClearCdCount); var checkCode = mallDirect.Check(); if (checkCode != MessageCode.Success) { return(ResponseHelper.Create <CrosscrowdManagerResponse>(checkCode)); } crowdManager.UpdateTime = curTime; if (!CrosscrowdManagerMgr.Update(crowdManager)) { return(ResponseHelper.Create <CrosscrowdManagerResponse>(MessageCode.NbUpdateFail)); } MatchCdHandler.Delete(managerId, EnumMatchType.CrossCrowd); checkCode = mallDirect.Save(Guid.NewGuid().ToString()); if (checkCode != MessageCode.Success) { SystemlogMgr.Error("CrossCrowd-doaction", string.Format("action:{0}", mallDirectType.ToString())); } return(GetManagerInfo(siteId, managerId, crowd.Idx, DateTime.Now, mallDirect.RemainPoint, false)); }
public MatchCreateResponse Fight(Guid managerId, Guid awayId, bool hasTask) { if (managerId == awayId) { return(ResponseHelper.Create <MatchCreateResponse>(MessageCode.PlayerKillNoSelf)); } var code = MatchCdHandler.CheckCd(managerId, EnumMatchType.PlayerKill); if (code != MessageCode.Success) { return(ResponseHelper.Create <MatchCreateResponse>(code)); } return(doFight(managerId, awayId, 1, hasTask)); }
public CrosscrowdManagerResponse GetManagerInfo(string siteId, Guid managerId, int crowdId, DateTime curTime, int curPoint = -1, bool checkStatus = true) { var crowdManager = InnerGetManager(siteId, managerId, crowdId, curTime); if (crowdManager == null) { return(ResponseHelper.Create <CrosscrowdManagerResponse>(MessageCode.NbFunctionNotOpen)); } if (checkStatus) { if (crowdManager.Morale <= 0) { return(ResponseHelper.Create <CrosscrowdManagerResponse>(MessageCode.CrowdNoMorale)); } var code = MatchCdHandler.CheckCd(managerId, EnumMatchType.CrossCrowd); if (code != MessageCode.Success) { return(ResponseHelper.Create <CrosscrowdManagerResponse>(MessageCode.NbMatchCd)); } crowdManager.ShowName = ShareUtil.GetCrossManagerNameByZoneId(siteId, crowdManager.Name); } else { crowdManager.CdSeconds = MatchCdHandler.GetCdMilSecondsInt(managerId, EnumMatchType.CrossCrowd); crowdManager.CurPoint = curPoint; crowdManager.ClearCdPoint = CacheFactory.MallCache.GetDirectPoint(EnumConsumeSourceType.CrowdClearCd, 0);//crowdManager.ClearCdCount+1); crowdManager.ResurrectionPoint = CacheFactory.MallCache.GetDirectPoint(EnumConsumeSourceType.CrowdResurrection); if (crowdManager.Morale < 1) { crowdManager.ResurrectionCdSeconds = ShareUtil.CalCountdown(crowdManager.ResurrectionTime, curTime); } else { crowdManager.ResurrectionCdSeconds = -1; } } var response = ResponseHelper.Create <CrosscrowdManagerResponse>(MessageCode.Success); response.Data = crowdManager; return(response); }
private void BuildMatchInfo(int crowdId, int pairIndex, CrosscrowdManagerEntity home, CrosscrowdManagerEntity away, Dictionary <Guid, CrosscrowdMatchEntity> matchDic) { try { var matchId = ShareUtil.GenerateComb(); var match = new CrosscrowdMatchEntity(home, away, matchId, crowdId, pairIndex); matchDic.Add(match.Idx, match); MemcachedFactory.CrowdMatchClient.Set(match.Idx, match); //更新经理-比赛关联字典 var homeHeart = new CrowdHeartEntity(matchId, away.ShowName, away.Logo, away.Morale, away.ManagerId, away.SiteId); var awayHeart = new CrowdHeartEntity(matchId, home.ShowName, home.Logo, home.Morale, home.ManagerId, home.SiteId); ManagerFightDic[home.ManagerId] = homeHeart; ManagerFightDic[away.ManagerId] = awayHeart; //try //{ // CrossChatHelper.SendCrowdPairPop(home.ManagerId, homeHeart, home.SiteId); // CrossChatHelper.SendCrowdPairPop(away.ManagerId, awayHeart, away.SiteId); //} //catch (Exception ex) //{ // SystemlogMgr.Error("CrossCrowdThread-SendCrowdPairPop", ex); //} MatchCdHandler.SetCd(home.ManagerId, EnumMatchType.CrossCrowd, _crowdCd); MatchCdHandler.SetCd(away.ManagerId, EnumMatchType.CrossCrowd, _crowdCd); try { MemcachedFactory.CrowdHeartClient.Set(home.ManagerId, homeHeart); MemcachedFactory.CrowdHeartClient.Set(away.ManagerId, awayHeart); } catch (Exception ex) { SystemlogMgr.Error("CrossCrowdThread-BuildMatchInfo-Send", ex); } } catch (Exception ex) { SystemlogMgr.Error("CrossCrowdThread-BuildMatchInfo", ex); } }