示例#1
0
        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);
        }
示例#2
0
        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);
                }
            }
        }
示例#3
0
 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");
            }
        }
示例#7
0
 protected IEnumerable <Target> EnumerateEntitiesAsTargets <T>() where T : class, IEntity
 {
     return(from r in m_fightStatus.EnumerateEntities <T>()
            select new Target(r));
 }