示例#1
0
 public override bool AddPowerTargets()
 {
     foreach (PowerTask task in base.m_taskList.GetTaskList())
     {
         Network.PowerHistory power = task.GetPower();
         if (power.Type == Network.PowerType.FULL_ENTITY)
         {
             Network.HistFullEntity entity = power as Network.HistFullEntity;
             int    iD      = entity.Entity.ID;
             Entity entity2 = GameState.Get().GetEntity(iD);
             if (entity2 == null)
             {
                 UnityEngine.Debug.LogWarning(string.Format("{0}.AddPowerTargets() - WARNING encountered HistFullEntity where entity id={1} but there is no entity with that id", this, iD));
                 return(false);
             }
             if (!entity2.IsHero())
             {
                 UnityEngine.Debug.LogWarning(string.Format("{0}.AddPowerTargets() - WARNING HistFullEntity where entity id={1} is not a hero", this, iD));
                 return(false);
             }
             this.AddTarget(entity2.GetCard().gameObject);
             return(true);
         }
     }
     return(false);
 }
    protected bool CompleteMetaDataTasks(int metaDataIndex, PowerTaskList.CompleteCallback completeCallback, object callbackData)
    {
        List <PowerTask> taskList = this.m_taskList.GetTaskList();
        int count = 1;

        for (int i = metaDataIndex + 1; i < taskList.Count; i++)
        {
            Network.PowerHistory power = taskList[i].GetPower();
            if (power.Type == Network.PowerType.META_DATA)
            {
                Network.HistMetaData data = (Network.HistMetaData)power;
                if (data.MetaType == HistoryMeta.Type.TARGET)
                {
                    break;
                }
            }
            count++;
        }
        if (count == 0)
        {
            UnityEngine.Debug.LogError(string.Format("{0}.CompleteMetaDataTasks() - there are no tasks to complete for meta data {1}", this, metaDataIndex));
            return(false);
        }
        this.m_taskList.DoTasks(metaDataIndex, count, completeCallback, callbackData);
        return(true);
    }
示例#3
0
    protected override bool AddPowerSourceAndTargets(PowerTaskList taskList)
    {
        if (!this.HasSourceCard(taskList))
        {
            return(false);
        }
        this.m_fatigueTagChange = null;
        List <PowerTask> list = base.m_taskList.GetTaskList();

        for (int i = 0; i < list.Count; i++)
        {
            Network.PowerHistory power = list[i].GetPower();
            if (power.Type == Network.PowerType.TAG_CHANGE)
            {
                Network.HistTagChange change = (Network.HistTagChange)power;
                if (change.Tag == 0x16)
                {
                    this.m_fatigueTagChange = change;
                }
            }
        }
        if (this.m_fatigueTagChange == null)
        {
            return(false);
        }
        Card card = taskList.GetSourceEntity().GetCard();

        base.SetSource(card);
        return(true);
    }
示例#4
0
    public PowerTask CreateTask(Network.PowerHistory netPower)
    {
        PowerTask item = new PowerTask();

        item.SetPower(netPower);
        this.m_tasks.Add(item);
        return(item);
    }
示例#5
0
    private AttackInfo BuildAttackInfo()
    {
        GameState  state = GameState.Get();
        AttackInfo info  = new AttackInfo();
        bool       flag  = false;

        foreach (PowerTask task in this.GetTaskList())
        {
            Network.PowerHistory power = task.GetPower();
            if (power.Type == Network.PowerType.TAG_CHANGE)
            {
                Network.HistTagChange change = power as Network.HistTagChange;
                if (change.Tag == 0x24)
                {
                    info.m_defenderTagValue = new int?(change.Value);
                    if (change.Value == 1)
                    {
                        info.m_defender = state.GetEntity(change.Entity);
                    }
                    flag = true;
                }
                else if (change.Tag == 0x26)
                {
                    info.m_attackerTagValue = new int?(change.Value);
                    if (change.Value == 1)
                    {
                        info.m_attacker = state.GetEntity(change.Entity);
                    }
                    flag = true;
                }
                else if (change.Tag == 0x27)
                {
                    info.m_proposedAttackerTagValue = new int?(change.Value);
                    if (change.Value != 0)
                    {
                        info.m_proposedAttacker = state.GetEntity(change.Value);
                    }
                    flag = true;
                }
                else if (change.Tag == 0x25)
                {
                    info.m_proposedDefenderTagValue = new int?(change.Value);
                    if (change.Value != 0)
                    {
                        info.m_proposedDefender = state.GetEntity(change.Value);
                    }
                    flag = true;
                }
            }
        }
        if (flag)
        {
            return(info);
        }
        return(null);
    }
    private void FindOldAndNewCards()
    {
        int num = -1;
        List <PowerTask> taskList = base.m_taskList.GetTaskList();

        for (int i = 0; i < taskList.Count; i++)
        {
            Network.PowerHistory power = taskList[i].GetPower();
            switch (power.Type)
            {
            case Network.PowerType.FULL_ENTITY:
            {
                Network.HistFullEntity entity = (Network.HistFullEntity)power;
                Entity entity2 = GameState.Get().GetEntity(entity.Entity.ID);
                if (entity2 != null)
                {
                    Card card = entity2.GetCard();
                    if (card != null)
                    {
                        this.m_newCard = card;
                    }
                }
                break;
            }

            case Network.PowerType.SHOW_ENTITY:
            {
                Network.HistShowEntity entity3 = (Network.HistShowEntity)power;
                Entity entity4 = GameState.Get().GetEntity(entity3.Entity.ID);
                if (entity4 != null)
                {
                    Card card2 = entity4.GetCard();
                    if ((card2 != null) && (entity4.GetZone() == TAG_ZONE.DECK))
                    {
                        if (< > f__am$cache5 == null)
                        {
                            < > f__am$cache5 = delegate(Network.Entity.Tag tag) {
                                if (tag.Name != 0x31)
                                {
                                    return(false);
                                }
                                if (tag.Value != 3)
                                {
                                    return(false);
                                }
                                return(true);
                            };
                        }
                        if (entity3.Entity.Tags.Find(< > f__am$cache5) != null)
                        {
                            this.m_oldCard = card2;
                            num            = i;
                        }
                    }
 public override bool AddPowerTargets()
 {
     this.m_oldHeroCard = null;
     this.m_newHeroCard = null;
     foreach (PowerTask task in base.m_taskList.GetTaskList())
     {
         Network.PowerHistory power = task.GetPower();
         if (power.Type == Network.PowerType.FULL_ENTITY)
         {
             Network.HistFullEntity entity = (Network.HistFullEntity)power;
             int    iD      = entity.Entity.ID;
             Entity entity2 = GameState.Get().GetEntity(iD);
             if (entity2 == null)
             {
                 UnityEngine.Debug.LogWarning(string.Format("{0}.AddPowerTargets() - WARNING encountered HistFullEntity where entity id={1} but there is no entity with that id", this, iD));
                 return(false);
             }
             if (entity2.IsHero())
             {
                 this.m_newHeroCard = entity2.GetCard();
             }
         }
         else if (power.Type == Network.PowerType.TAG_CHANGE)
         {
             Network.HistTagChange change = (Network.HistTagChange)power;
             if ((change.Tag == 0x31) && (change.Value == 6))
             {
                 int    id      = change.Entity;
                 Entity entity3 = GameState.Get().GetEntity(id);
                 if (entity3 == null)
                 {
                     UnityEngine.Debug.LogWarning(string.Format("{0}.AddPowerTargets() - WARNING encountered HistTagChange where entity id={1} but there is no entity with that id", this, id));
                     return(false);
                 }
                 if (entity3.IsHero())
                 {
                     this.m_oldHeroCard = entity3.GetCard();
                 }
             }
         }
     }
     if (this.m_oldHeroCard == null)
     {
         this.m_newHeroCard = null;
         return(false);
     }
     if (this.m_newHeroCard == null)
     {
         this.m_oldHeroCard = null;
         return(false);
     }
     return(true);
 }
示例#8
0
 public bool HasFriendlyConcede()
 {
     for (int i = 0; i < this.m_tasks.Count; i++)
     {
         Network.PowerHistory power = this.m_tasks[i].GetPower();
         if (power.Type == Network.PowerType.TAG_CHANGE)
         {
             Network.HistTagChange tagChange = (Network.HistTagChange)power;
             if (GameUtils.IsFriendlyConcede(tagChange))
             {
                 return(true);
             }
         }
     }
     return(false);
 }
示例#9
0
 public bool IsTaskPartOfMetaData(int taskIndex, HistoryMeta.Type metaType)
 {
     for (int i = taskIndex; i >= 0; i--)
     {
         Network.PowerHistory power = this.m_tasks[i].GetPower();
         if (power.Type == Network.PowerType.META_DATA)
         {
             Network.HistMetaData data = (Network.HistMetaData)power;
             if (data.MetaType == metaType)
             {
                 return(true);
             }
         }
     }
     return(false);
 }
示例#10
0
 public bool HasGameOver()
 {
     for (int i = 0; i < this.m_tasks.Count; i++)
     {
         Network.PowerHistory power = this.m_tasks[i].GetPower();
         if (power.Type == Network.PowerType.TAG_CHANGE)
         {
             Network.HistTagChange change = (Network.HistTagChange)power;
             if (GameUtils.IsGameOverTag(change.Entity, change.Tag, change.Value))
             {
                 return(true);
             }
         }
     }
     return(false);
 }
    public static void ApplyPower(Entity entity, Network.PowerHistory power)
    {
        switch (power.Type)
        {
        case Network.PowerType.SHOW_ENTITY:
            ApplyShowEntity(entity, (Network.HistShowEntity)power);
            break;

        case Network.PowerType.HIDE_ENTITY:
            ApplyHideEntity(entity, (Network.HistHideEntity)power);
            break;

        case Network.PowerType.TAG_CHANGE:
            ApplyTagChange(entity, (Network.HistTagChange)power);
            break;
        }
    }
    protected virtual Card GetTargetCardFromPowerTask(int index, PowerTask task)
    {
        Network.PowerHistory power = task.GetPower();
        if (power.Type != Network.PowerType.TAG_CHANGE)
        {
            return(null);
        }
        Network.HistTagChange change = power as Network.HistTagChange;
        Entity entity = GameState.Get().GetEntity(change.Entity);

        if (entity == null)
        {
            UnityEngine.Debug.LogWarning(string.Format("{0}.GetTargetCardFromPowerTask() - WARNING trying to target entity with id {1} but there is no entity with that id", this, change.Entity));
            return(null);
        }
        return(entity.GetCard());
    }
示例#13
0
    protected override Card GetTargetCardFromPowerTask(int index, PowerTask task)
    {
        Network.PowerHistory power = task.GetPower();
        if (power.Type != Network.PowerType.FULL_ENTITY)
        {
            return(null);
        }
        Network.HistFullEntity entity  = (Network.HistFullEntity)power;
        Network.Entity         entity2 = entity.Entity;
        Entity entity3 = GameState.Get().GetEntity(entity2.ID);

        if (entity3 == null)
        {
            Debug.LogWarning(string.Format("{0}.GetTargetCardFromPowerTask() - WARNING trying to target entity with id {1} but there is no entity with that id", this, entity2.ID));
            return(null);
        }
        return(entity3.GetCard());
    }
示例#14
0
 private void BuildTaskList(List <Network.PowerHistory> powerList, ref int index, PowerTaskList taskList)
 {
     while (index < powerList.Count)
     {
         Network.PowerHistory netPower = powerList[index];
         Network.PowerType    type     = netPower.Type;
         if (type == Network.PowerType.ACTION_START)
         {
             if (!taskList.IsEmpty())
             {
                 this.EnqueueTaskList(taskList);
             }
             PowerTaskList item = new PowerTaskList();
             item.SetSourceAction((Network.HistActionStart)netPower);
             PowerTaskList origin = taskList.GetOrigin();
             if (origin.IsSourceActionOrigin())
             {
                 item.SetParent(origin);
             }
             this.m_previousStack.Push(item);
             index++;
             this.BuildTaskList(powerList, ref index, item);
             return;
         }
         if (type == Network.PowerType.ACTION_END)
         {
             taskList.SetEndAction((Network.HistActionEnd)netPower);
             if (this.m_previousStack.Count > 0)
             {
                 this.m_previousStack.Pop();
                 this.EnqueueTaskList(taskList);
                 return;
             }
             break;
         }
         taskList.CreateTask(netPower).DoRealTimeTask(powerList, index);
         index++;
     }
     if (!taskList.IsEmpty())
     {
         this.EnqueueTaskList(taskList);
     }
 }
    public static void DoDamageTasks(PowerTaskList powerTaskList, Card sourceCard, Card targetCard)
    {
        List <PowerTask> taskList = powerTaskList.GetTaskList();

        if ((taskList != null) && (taskList.Count != 0))
        {
            int entityId = sourceCard.GetEntity().GetEntityId();
            int num2     = targetCard.GetEntity().GetEntityId();
            foreach (PowerTask task in taskList)
            {
                Network.PowerHistory power = task.GetPower();
                if (power.Type == Network.PowerType.META_DATA)
                {
                    Network.HistMetaData data = (Network.HistMetaData)power;
                    if ((data.MetaType == HistoryMeta.Type.DAMAGE) || (data.MetaType == HistoryMeta.Type.HEALING))
                    {
                        foreach (int num3 in data.Info)
                        {
                            if ((num3 == entityId) || (num3 == num2))
                            {
                                task.DoTask();
                            }
                        }
                    }
                }
                else if (power.Type == Network.PowerType.TAG_CHANGE)
                {
                    Network.HistTagChange change = (Network.HistTagChange)power;
                    if ((change.Entity == entityId) || (change.Entity == num2))
                    {
                        switch (((GAME_TAG)change.Tag))
                        {
                        case GAME_TAG.DAMAGE:
                        case GAME_TAG.EXHAUSTED:
                            task.DoTask();
                            break;
                        }
                    }
                }
            }
        }
    }
示例#16
0
 public void DebugDump(Logger logger)
 {
     if (logger.CanPrint())
     {
         GameState state       = GameState.Get();
         string    indentation = string.Empty;
         int       num         = (this.m_parent != null) ? this.m_parent.GetId() : 0;
         int       num2        = (this.m_previous != null) ? this.m_previous.GetId() : 0;
         object[]  args        = new object[] { this.m_id, num, num2, this.m_tasks.Count };
         logger.Print("PowerTaskList.DebugDump() - ID={0} ParentID={1} PreviousID={2} TaskCount={3}", args);
         if (this.m_sourceAction == null)
         {
             object[] objArray2 = new object[] { indentation };
             logger.Print("PowerTaskList.DebugDump() - {0}Source Action=(null)", objArray2);
             indentation = indentation + "    ";
         }
         else
         {
             state.DebugPrintPower(logger, "PowerTaskList", this.m_sourceAction, ref indentation);
         }
         for (int i = 0; i < this.m_tasks.Count; i++)
         {
             Network.PowerHistory power = this.m_tasks[i].GetPower();
             state.DebugPrintPower(logger, "PowerTaskList", power, ref indentation);
         }
         if (this.m_endAction == null)
         {
             if (indentation.Length >= "    ".Length)
             {
                 indentation = indentation.Remove(indentation.Length - "    ".Length);
             }
             object[] objArray3 = new object[] { indentation };
             logger.Print("PowerTaskList.DebugDump() - {0}End Action=(null)", objArray3);
         }
         else
         {
             state.DebugPrintPower(logger, "PowerTaskList", this.m_endAction, ref indentation);
         }
     }
 }
示例#17
0
    private void AddDeadCardsToTargetList(PowerTaskList taskList)
    {
        List <PowerTask> list = base.m_taskList.GetTaskList();

        for (int i = 0; i < list.Count; i++)
        {
            Network.PowerHistory power = list[i].GetPower();
            if (power.Type == Network.PowerType.TAG_CHANGE)
            {
                Network.HistTagChange tagChange = power as Network.HistTagChange;
                if (GameUtils.IsCharacterDeathTagChange(tagChange))
                {
                    Entity entity = GameState.Get().GetEntity(tagChange.Entity);
                    Card   card   = entity.GetCard();
                    if (this.CanAddTarget(entity, card))
                    {
                        base.AddTarget(card);
                    }
                }
            }
        }
    }
    protected bool AddSinglePowerTarget_FromMetaData(List <PowerTask> tasks)
    {
        GameState state = GameState.Get();

        for (int i = 0; i < tasks.Count; i++)
        {
            Network.PowerHistory power = tasks[i].GetPower();
            if (power.Type == Network.PowerType.META_DATA)
            {
                Network.HistMetaData data = (Network.HistMetaData)power;
                if (data.MetaType == HistoryMeta.Type.TARGET)
                {
                    if ((data.Info == null) || (data.Info.Count == 0))
                    {
                        UnityEngine.Debug.LogError(string.Format("{0}.AddSinglePowerTarget_FromMetaData() - META_DATA at index {1} has no Info", this, i));
                    }
                    else
                    {
                        for (int j = 0; j < data.Info.Count; j++)
                        {
                            Entity entity = state.GetEntity(data.Info[j]);
                            if (entity == null)
                            {
                                UnityEngine.Debug.LogError(string.Format("{0}.AddSinglePowerTarget_FromMetaData() - Entity is null for META_DATA at index {1} Info index {2}", this, i, j));
                            }
                            else
                            {
                                Card targetCard = entity.GetCard();
                                this.AddTargetFromMetaData(i, targetCard);
                                return(true);
                            }
                        }
                    }
                }
            }
        }
        return(false);
    }
示例#19
0
 public DamageInfo GetDamageInfo(Entity entity)
 {
     if (entity != null)
     {
         int entityId = entity.GetEntityId();
         foreach (PowerTask task in this.m_tasks)
         {
             Network.PowerHistory power = task.GetPower();
             if (power.Type == Network.PowerType.TAG_CHANGE)
             {
                 Network.HistTagChange change = power as Network.HistTagChange;
                 if ((change.Tag == 0x2c) && (change.Entity == entityId))
                 {
                     DamageInfo info;
                     return(new DamageInfo {
                         m_entity = GameState.Get().GetEntity(change.Entity), m_damage = change.Value - info.m_entity.GetDamage()
                     });
                 }
             }
         }
     }
     return(null);
 }
示例#20
0
 public void SetPower(Network.PowerHistory power)
 {
     this.m_power = power;
 }
示例#21
0
 public void SetPower(Network.PowerHistory power)
 {
     object[] objArray1 = new object[] { power };
     base.method_8("SetPower", objArray1);
 }
示例#22
0
 public void PredictZoneFromPower(TempZone tempZone, Network.PowerHistory power)
 {
     object[] objArray1 = new object[] { tempZone, power };
     base.method_8("PredictZoneFromPower", objArray1);
 }
示例#23
0
 public void DebugPrintPower(Logger logger, string callerName, Network.PowerHistory power)
 {
     object[] objArray1 = new object[] { logger, callerName, power };
     base.method_9("DebugPrintPower", new Class272.Enum20[] { Class272.Enum20.Class }, objArray1);
 }
示例#24
0
 public PowerTask CreateTask(Network.PowerHistory netPower)
 {
     object[] objArray1 = new object[] { netPower };
     return(base.method_14 <PowerTask>("CreateTask", objArray1));
 }
示例#25
0
    public void NotifyHistoryOfAdditionalTargets()
    {
        List <int> list = new List <int>();
        bool       flag = true;

        foreach (PowerTask task in this.GetTaskList())
        {
            Network.PowerHistory power = task.GetPower();
            if (power.Type == Network.PowerType.META_DATA)
            {
                Network.HistMetaData data = power as Network.HistMetaData;
                if (data.MetaType == HistoryMeta.Type.TARGET)
                {
                    if ((data.Info != null) && (data.Info.Count > 0))
                    {
                        for (int i = 0; i < data.Info.Count; i++)
                        {
                            HistoryManager.Get().NotifyAboutAdditionalTarget(data.Info[i]);
                        }
                    }
                }
                else if ((data.MetaType == HistoryMeta.Type.DAMAGE) || (data.MetaType == HistoryMeta.Type.HEALING))
                {
                    flag = false;
                }
                continue;
            }
            if (power.Type == Network.PowerType.SHOW_ENTITY)
            {
                Network.HistShowEntity entity = power as Network.HistShowEntity;
                bool flag2 = false;
                bool flag3 = false;
                foreach (Network.Entity.Tag tag in entity.Entity.Tags)
                {
                    if ((tag.Name == 0xca) && (tag.Value == 6))
                    {
                        flag2 = true;
                        break;
                    }
                    if ((tag.Name == 0x31) && (tag.Value == 4))
                    {
                        flag3 = true;
                    }
                }
                if (!flag2)
                {
                    if (flag3)
                    {
                        HistoryManager.Get().NotifyAboutCardDeath(GameState.Get().GetEntity(entity.Entity.ID));
                    }
                    else
                    {
                        HistoryManager.Get().NotifyAboutAdditionalTarget(entity.Entity.ID);
                    }
                }
                continue;
            }
            Entity sourceEntity = this.GetSourceEntity();
            int    num2         = (sourceEntity != null) ? sourceEntity.GetEntityId() : 0;
            if (power.Type == Network.PowerType.FULL_ENTITY)
            {
                Network.HistFullEntity entity3 = power as Network.HistFullEntity;
                bool flag4 = false;
                bool flag5 = false;
                bool flag6 = false;
                foreach (Network.Entity.Tag tag2 in entity3.Entity.Tags)
                {
                    if ((tag2.Name == 0xca) && (tag2.Value == 6))
                    {
                        flag4 = true;
                        break;
                    }
                    if ((tag2.Name == 0x31) && ((tag2.Value == 1) || (tag2.Value == 7)))
                    {
                        flag5 = true;
                    }
                    if ((tag2.Name == 0x181) && (tag2.Value == num2))
                    {
                        flag6 = true;
                    }
                }
                if (!flag4 && (flag5 || flag6))
                {
                    HistoryManager.Get().NotifyAboutAdditionalTarget(entity3.Entity.ID);
                }
                continue;
            }
            if (power.Type == Network.PowerType.TAG_CHANGE)
            {
                Network.HistTagChange tagChange = power as Network.HistTagChange;
                Entity entity4 = GameState.Get().GetEntity(tagChange.Entity);
                if (tagChange.Tag == 0x2c)
                {
                    if (!list.Contains(tagChange.Entity) && !flag)
                    {
                        HistoryManager.Get().NotifyAboutDamageChanged(entity4, tagChange.Value);
                        flag = true;
                    }
                }
                else if (tagChange.Tag == 0x124)
                {
                    if (!list.Contains(tagChange.Entity))
                    {
                        HistoryManager.Get().NotifyAboutArmorChanged(entity4, tagChange.Value);
                    }
                }
                else if (tagChange.Tag == 0x13e)
                {
                    HistoryManager.Get().NotifyAboutPreDamage(entity4);
                }
                else if ((tagChange.Tag == 0x181) && (tagChange.Value == num2))
                {
                    HistoryManager.Get().NotifyAboutAdditionalTarget(tagChange.Entity);
                }
                else if (tagChange.Tag == 0x106)
                {
                    HistoryManager.Get().NotifyAboutAdditionalTarget(tagChange.Entity);
                }
                if (GameUtils.IsHistoryDeathTagChange(tagChange))
                {
                    HistoryManager.Get().NotifyAboutCardDeath(entity4);
                    list.Add(tagChange.Entity);
                }
            }
        }
    }
示例#26
0
 public static bool IsHandledPower(Network.PowerHistory power)
 {
     object[] objArray1 = new object[] { power };
     return(MonoClass.smethod_14 <bool>(TritonHs.MainAssemblyPath, "", "ZoneMgr", "IsHandledPower", objArray1));
 }
示例#27
0
 public static void ApplyPower(Triton.Game.Mapping.Entity entity, Network.PowerHistory power)
 {
     object[] objArray1 = new object[] { entity, power };
     MonoClass.smethod_18(TritonHs.MainAssemblyPath, "", "GameUtils", "ApplyPower", objArray1);
 }