Ejemplo n.º 1
0
 public override IEnumerator UpdateView(FightStatus fightStatus)
 {
     if (fightStatus.TryGetEntity(concernedEntity, out CompanionStatus companionStatus))
     {
         if (fightStatus.TryGetEntity(ownerId, out PlayerStatus ownerStatus))
         {
             if (!ownerStatus.isLocalPlayer)
             {
                 FightMap current = FightMap.current;
                 if (null != current)
                 {
                     if (current.TryGetCellObject(refCoord.X, refCoord.Y, out CellObject cellObject))
                     {
                         ReserveCompanionStatus reserveCompanion = new ReserveCompanionStatus(ownerStatus, (CompanionDefinition)companionStatus.definition, level);
                         yield return(FightUIRework.ShowPlayingCompanion(reserveCompanion, cellObject));
                     }
                     else
                     {
                         Log.Error(FightEventErrors.InvalidPosition(refCoord), 59, "C:\\BuildAgents\\AgentB\\work\\cub_client_win64_develop\\client\\DofusCube.Unity\\Assets\\Core\\Code\\Fight\\Events\\CompanionAddedEvent.cs");
                     }
                 }
             }
             yield return(CreateCompanionCharacterObject(fightStatus, companionStatus, ownerStatus, refCoord.X, refCoord.Y, (Direction)direction));
         }
         else
         {
             Log.Error(FightEventErrors.PlayerNotFound(ownerId), 70, "C:\\BuildAgents\\AgentB\\work\\cub_client_win64_develop\\client\\DofusCube.Unity\\Assets\\Core\\Code\\Fight\\Events\\CompanionAddedEvent.cs");
         }
     }
     else
     {
         Log.Error(FightEventErrors.EntityNotFound <CompanionStatus>(concernedEntity), 75, "C:\\BuildAgents\\AgentB\\work\\cub_client_win64_develop\\client\\DofusCube.Unity\\Assets\\Core\\Code\\Fight\\Events\\CompanionAddedEvent.cs");
     }
     FightLogicExecutor.FireUpdateView(fightStatus.fightId, EventCategory.EntityAddedOrRemoved);
 }
Ejemplo n.º 2
0
        public bool TryGetCompanion(int definitionId, out ReserveCompanionStatus companionStatus)
        {
            List <ReserveCompanionStatus> availableCompanions = m_availableCompanions;
            int count = availableCompanions.Count;

            for (int i = 0; i < count; i++)
            {
                ReserveCompanionStatus reserveCompanionStatus = availableCompanions[i];
                if (reserveCompanionStatus.definition.get_id() == definitionId)
                {
                    companionStatus = reserveCompanionStatus;
                    return(true);
                }
            }
            List <ReserveCompanionStatus> additionalCompanions = m_additionalCompanions;
            int count2 = additionalCompanions.Count;

            for (int j = 0; j < count2; j++)
            {
                ReserveCompanionStatus reserveCompanionStatus2 = additionalCompanions[j];
                if (reserveCompanionStatus2.definition.get_id() == definitionId)
                {
                    companionStatus = reserveCompanionStatus2;
                    return(true);
                }
            }
            companionStatus = null;
            return(false);
        }
        public void Set(ReserveCompanionStatus companion)
        {
            ReserveCompanionValueContext reserveCompanionValueContext = companion.CreateValueContext();

            m_definition           = companion.definition;
            m_tooltipValueProvider = new FightValueProvider(companion);
            m_life           = m_definition.life.GetValueWithLevel(reserveCompanionValueContext.level);
            m_movementPoints = m_definition.movementPoints.GetValueWithLevel(reserveCompanionValueContext.level);
            m_actionValue    = ExtractActionValue(m_definition, reserveCompanionValueContext);
            ApplyIllu(companion.currentPlayer.isLocalPlayer);
        }
Ejemplo n.º 4
0
        public void SetAdditionalCompanionState(int companionDefinitionId, CompanionReserveState state)
        {
            int count = m_additionalCompanions.Count;

            for (int i = 0; i < count; i++)
            {
                ReserveCompanionStatus reserveCompanionStatus = m_additionalCompanions[i];
                if (reserveCompanionStatus.definition.get_id() == companionDefinitionId)
                {
                    reserveCompanionStatus.SetState(state);
                    return;
                }
            }
            Log.Error($"Could not change state of an additional companion from player with id {base.id} because it was not in its secondary reserve.", 256, "C:\\BuildAgents\\AgentB\\work\\cub_client_win64_develop\\client\\DofusCube.Unity\\Assets\\Core\\Code\\Fight\\Entities\\Status\\PlayerStatus.cs");
        }
Ejemplo n.º 5
0
        public void SetAvailableCompanions(IReadOnlyList <int> definitionIds, IReadOnlyList <int> levels)
        {
            int count = definitionIds.Count;

            for (int i = 0; i < count; i++)
            {
                int num   = definitionIds[i];
                int level = levels[i];
                if (!RuntimeData.companionDefinitions.TryGetValue(num, out CompanionDefinition value))
                {
                    Log.Error(string.Format("Could not find {0} with id {1}.", "CompanionDefinition", num), 168, "C:\\BuildAgents\\AgentB\\work\\cub_client_win64_develop\\client\\DofusCube.Unity\\Assets\\Core\\Code\\Fight\\Entities\\Status\\PlayerStatus.cs");
                    continue;
                }
                ReserveCompanionStatus item = new ReserveCompanionStatus(this, value, level);
                m_availableCompanions.Add(item);
            }
        }
Ejemplo n.º 6
0
        public static bool StartInvokingCompanion(PlayerStatus casterStatus, ReserveCompanionStatus companionStatus)
        {
            if (s_currentCastType != 0)
            {
                Log.Error($"Tried to start invoking a companion while current cast type is {s_currentCastType}", 208, "C:\\BuildAgents\\AgentB\\work\\cub_client_win64_develop\\client\\DofusCube.Unity\\Assets\\Core\\Code\\Fight\\FightCastManager.cs");
                return(false);
            }
            CompanionDefinition definition = companionStatus.definition;

            if (null == definition)
            {
                Log.Error("Tried to start invoking a companion without a loaded definition.", 215, "C:\\BuildAgents\\AgentB\\work\\cub_client_win64_develop\\client\\DofusCube.Unity\\Assets\\Core\\Code\\Fight\\FightCastManager.cs");
                return(false);
            }
            OneCastTargetContext castTargetContext = new OneCastTargetContext(FightStatus.local, casterStatus.id, DynamicValueHolderType.Companion, definition.get_id(), companionStatus.level, 0);
            FightMap             current           = FightMap.current;

            if (null != current)
            {
                ICoordSelector spawnLocation = definition.spawnLocation;
                if (spawnLocation == null)
                {
                    Log.Error("Tried to start invoking a companion that has no spawn location.", 227, "C:\\BuildAgents\\AgentB\\work\\cub_client_win64_develop\\client\\DofusCube.Unity\\Assets\\Core\\Code\\Fight\\FightCastManager.cs");
                    return(false);
                }
                FightMap fightMap = current;
                fightMap.onTargetChanged = (Action <Target?, CellObject>)Delegate.Combine(fightMap.onTargetChanged, new Action <Target?, CellObject>(OnCompanionInvocationLocationChanged));
                FightMap fightMap2 = current;
                fightMap2.onTargetSelected = (Action <Target?>)Delegate.Combine(fightMap2.onTargetSelected, new Action <Target?>(OnCompanionInvocationLocationSelected));
                current.SetTargetingPhase(EnumerateCompanionAvailableLocations(spawnLocation, castTargetContext));
            }
            s_currentCastType       = CurrentCastType.Companion;
            s_playerCasting         = casterStatus;
            s_companionBeingInvoked = companionStatus;
            s_castTargetContext     = castTargetContext;
            ShowCompanionCostsPreview();
            return(true);
        }
Ejemplo n.º 7
0
        public static void StopInvokingCompanion(bool cancelled)
        {
            if (s_currentCastType != CurrentCastType.Companion)
            {
                Log.Error($"Tried to stop casting a spell while current cast type is {s_currentCastType}", 285, "C:\\BuildAgents\\AgentB\\work\\cub_client_win64_develop\\client\\DofusCube.Unity\\Assets\\Core\\Code\\Fight\\FightCastManager.cs");
                return;
            }
            FightCastManager.OnUserActionEnd?.Invoke(cancelled ? FightCastState.Cancelled : FightCastState.DoneCasting);
            HideCompanionCostsPreview(cancelled);
            FightMap current = FightMap.current;

            if (null != current)
            {
                FightMap fightMap = current;
                fightMap.onTargetChanged = (Action <Target?, CellObject>)Delegate.Remove(fightMap.onTargetChanged, new Action <Target?, CellObject>(OnCompanionInvocationLocationChanged));
                FightMap fightMap2 = current;
                fightMap2.onTargetSelected = (Action <Target?>)Delegate.Remove(fightMap2.onTargetSelected, new Action <Target?>(OnCompanionInvocationLocationSelected));
                RevertFightMapTargetingPhase(current);
            }
            s_currentCastType       = CurrentCastType.None;
            s_playerCasting         = null;
            s_companionBeingInvoked = null;
            s_castTargetContext     = null;
        }
Ejemplo n.º 8
0
 public void AddAdditionalCompanion([NotNull] ReserveCompanionStatus companion)
 {
     companion.SetCurrentPlayer(this);
     m_additionalCompanions.Add(companion);
 }