private static CastValidity ComputeCastValidity(ICastableStatus status) { PrecomputedData precomputedData = status.GetDefinition()?.precomputedData; FightStatus local = FightStatus.local; if (precomputedData != null && local != null) { PlayerStatus player = local.GetLocalPlayer(); HeroStatus heroStatus = player.heroStatus; WeaponDefinition weaponDefinition = (WeaponDefinition)heroStatus.definition; if (precomputedData.checkNumberOfSummonings) { int num = local.EnumerateEntities((SummoningStatus s) => s.ownerId == player.id).Count(); int valueWithLevel = weaponDefinition.maxSummoningsOnBoard.GetValueWithLevel(heroStatus.level); if (num >= valueWithLevel) { return(CastValidity.TOO_MANY_SUMMONING); } } if (precomputedData.checkNumberOfMechanisms) { int num2 = local.EnumerateEntities((MechanismStatus s) => s.ownerId == player.id).Count(); int valueWithLevel2 = weaponDefinition.maxMechanismsOnBoard.GetValueWithLevel(heroStatus.level); if (num2 >= valueWithLevel2) { return(CastValidity.TOO_MANY_MECHANISM); } } } return(CastValidity.SUCCESS); }
public override void UpdateStatus(FightStatus fightStatus) { fightStatus.endReason = GetEndReason(fightStatus); switch (GameStatus.fightType) { case FightType.TeamVersus: foreach (IEntityWithBoardPresence item in fightStatus.EnumerateEntities <IEntityWithBoardPresence>()) { IEntityWithOwner entityWithOwner; if ((entityWithOwner = (item as IEntityWithOwner)) == null || entityWithOwner.teamId != winningTeamId) { m_removedEntities.Add(item); fightStatus.RemoveEntity(item.id); } } break; case FightType.BossFight: foreach (IEntityWithBoardPresence item2 in fightStatus.EnumerateEntities <IEntityWithBoardPresence>()) { m_removedEntities.Add(item2); fightStatus.RemoveEntity(item2.id); } break; default: throw new ArgumentOutOfRangeException(); } if (fightStatus == FightStatus.local) { FightMap current3 = FightMap.current; if (null != current3) { current3.Stop(); } FightUIRework instance = FightUIRework.instance; if (null != instance) { instance.SetResignButtonEnabled(value: false); } } }
public override IEnumerator UpdateView(FightStatus fightStatus) { foreach (CharacterStatus item in fightStatus.EnumerateEntities((CharacterStatus c) => c.ownerId == concernedEntity)) { IObjectWithAction objectWithAction; if ((objectWithAction = (item.view as IObjectWithAction)) != null) { objectWithAction.SetActionUsed(actionUsed: true, turnEnded: true); } } yield break; }
public void SetLocalPlayerLevel() { FightStatus local = FightStatus.local; if (local != null) { foreach (HeroStatus item in local.EnumerateEntities <HeroStatus>()) { if (item.ownerId == local.localPlayerId) { m_level = item.level; break; } } } }
public override IEnumerator UpdateView(FightStatus fightStatus) { foreach (CharacterStatus item in fightStatus.EnumerateEntities((CharacterStatus c) => c.ownerId == concernedEntity)) { IObjectWithAction objectWithAction; if ((objectWithAction = (item.view as IObjectWithAction)) != null) { objectWithAction.SetActionUsed(actionUsed: false, turnEnded: false); } } if (fightStatus != FightStatus.local) { yield break; } FightUIRework instance = FightUIRework.instance; if (!(null != instance)) { yield break; } switch (GameStatus.fightType) { case FightType.BossFight: case FightType.TeamVersus: break; case FightType.Versus: if (fightStatus.TryGetEntity(concernedEntity, out PlayerStatus entityStatus)) { if (entityStatus.isLocalPlayer) { yield return(instance.ShowTurnFeedback(TurnFeedbackUI.Type.Player, 61373)); } else { yield return(instance.ShowTurnFeedback(TurnFeedbackUI.Type.Opponent, 30091)); } } break; default: throw new ArgumentOutOfRangeException(); } }
public override void UpdateStatus(FightStatus fightStatus) { fightStatus.currentTurnPlayerId = concernedEntity; foreach (CharacterStatus item in fightStatus.EnumerateEntities((CharacterStatus c) => c.ownerId == concernedEntity)) { item.actionUsed = false; } fightStatus.NotifyEntityPlayableStateChanged(); if (fightStatus != FightStatus.local || fightStatus.localPlayerId != concernedEntity) { return; } FightMap current = FightMap.current; if (null != current) { current.SetMovementPhase(); } FightUIRework instance = FightUIRework.instance; if (null != instance) { instance.StartLocalPlayerTurn(); } if (fightStatus.TryGetEntity(concernedEntity, out PlayerStatus entityStatus)) { AbstractPlayerUIRework view = entityStatus.view; if (null != view) { view.SetUIInteractable(interactable: true); } } else { Log.Error(FightEventErrors.PlayerNotFound(concernedEntity), 55, "C:\\BuildAgents\\AgentB\\work\\cub_client_win64_develop\\client\\DofusCube.Unity\\Assets\\Core\\Code\\Fight\\Events\\TurnStartedEvent.cs"); } }
protected IEnumerable <Target> EnumerateEntitiesAsTargets <T>() where T : class, IEntity { return(from r in m_fightStatus.EnumerateEntities <T>() select new Target(r)); }