Example #1
0
    IEnumerator CreateDelayCoroutine(Transform t, DelayCommand dc, float time)
    {
        Image image = t.GetComponent <Image>();

        if (!image)
        {
            image = t.GetComponentInChildren <Image>();
        }
        //Store the color of the image
        Color color = image.color;

        //Store the color's original alpha value
        float originalAlpha = color.a;

        //Change the alpha to 0
        color.a = 0;

        image.color = color;

        while (image.color.a < 1)                //use "< 1" when fading in
        {
            color.a    += Time.deltaTime / time; //fades out over 1 second. change to += to fade in
            image.color = color;
            yield return(null);
        }
        //Set the alpha back to it's original value
        color.a     = originalAlpha;
        image.color = color;

        dc.CommandExecutionComplete();
    }
Example #2
0
    // delayExecute是命令延时执行的时间,默认为0,只有new出来的命令才能延时执行
    // 子线程中发出的命令必须是延时执行的命令!
    public void pushDelayCommand(Command cmd, CommandReceiver cmdReceiver, float delayExecute = 0.001f)
    {
        if (cmd == null || cmdReceiver == null)
        {
            UnityUtility.logError("cmd or receiver is null!");
            return;
        }
        if (!cmd.isValid())
        {
            UnityUtility.logError("cmd is invalid! make sure create cmd use CommandSystem.newCmd! pushDelayCommand cmd type : "
                                  + cmd.GetType().ToString() + "cmd id : " + cmd.mAssignID);
            return;
        }
        if (!cmd.isDelayCommand())
        {
            UnityUtility.logError("cmd is not a delay command, Command : " + cmd.mAssignID + ", " + cmd.showDebugInfo());
            return;
        }
        if (delayExecute < 0.0f)
        {
            delayExecute = 0.0f;
        }
        if (cmd.getShowDebugInfo())
        {
            UnityUtility.logInfo("CommandSystem : delay cmd : " + cmd.mAssignID + ", " + delayExecute + ", info : " + cmd.showDebugInfo() + ", receiver : " + cmdReceiver.getName(), LOG_LEVEL.LL_NORMAL);
        }
        DelayCommand delayCommand = new DelayCommand(delayExecute, cmd, cmdReceiver);

        mBufferLock.waitForUnlock(LOCK_TYPE.LT_READ);
        mCommandBufferInput.Add(delayCommand);
        mBufferLock.unlock(LOCK_TYPE.LT_READ);
    }
Example #3
0
    private IEnumerator PromoteMinion(Transform card, CardVisual cv)
    {
        yield return(new WaitForSeconds(1));

        int cost = int.Parse(cv.cost.text);

        GameManager.Instance.ActiveHero(true).AdjustMana(cost, false);

        DelayCommand dc = new DelayCommand(GameManager.Instance.GetActiveHand(true), 1f);

        dc.AddToQueue();

        yield return(new WaitForSeconds(1));

        MoveCardCommand mc = new MoveCardCommand(card.gameObject, GameManager.Instance.GetActiveMinionZone(true));

        mc.AddToQueue();

        cv.AdjustHealth(2, true);
        cv.PromotedHealth = cv.CurrentHealth;

        if (cv.Md != null)
        {
            RemoveCardFromHand(cv.Md);
        }
        else
        {
            RemoveCardFromHand(cv.Sd);
        }

        card.Find("CardBack").gameObject.SetActive(false);
    }
Example #4
0
    private IEnumerator PlayResource(Transform card, Card cardData)
    {
        card.Find("CardBack").gameObject.SetActive(false);
        AdjustHeroResources(cardData);

        DelayCommand dc = new DelayCommand(GameManager.Instance.GetActiveHand(true), 1f);

        dc.AddToQueue();

        yield return(new WaitForSeconds(1));

        MoveCardCommand mc = new MoveCardCommand(card.gameObject, GameManager.Instance.GetActiveDiscardPile(true));

        mc.AddToQueue();

        if (cardData is StarterData)
        {
            StarterData sd = (StarterData)cardData;
            RemoveCardFromHand(sd);
            AddCardToDiscardPile(sd);
        }
        else if (cardData is EssentialsData)
        {
            EssentialsData ed = (EssentialsData)cardData;
            RemoveCardFromHand(ed);
            AddCardToDiscardPile(ed);
        }
    }
Example #5
0
    // delayExecute是命令延时执行的时间,默认为0,只有new出来的命令才能延时执行
    // 子线程中发出的命令必须是延时执行的命令!
    public void pushDelayCommand(Command cmd, CommandReceiver cmdReceiver, float delayExecute = 0.001f)
    {
        if (cmd == null || cmdReceiver == null)
        {
            UnityUtility.logError("cmd or receiver is null!");
            return;
        }
        if (!cmd.isValid())
        {
            UnityUtility.logError("cmd is invalid! make sure create cmd use CommandSystem.newCmd!");
            return;
        }
        if (!cmd.isDelayCommand())
        {
            UnityUtility.logError("cmd is not a delay command, Command : " + cmd.showDebugInfo());
            return;
        }
        if (delayExecute < 0.0f)
        {
            delayExecute = 0.0f;
        }
        if (mShowDebugInfo && cmd.getShowDebugInfo())
        {
            UnityUtility.logInfo("CommandSystem : delay cmd : " + delayExecute + ", info : " + cmd.showDebugInfo() + ", receiver : " + cmdReceiver.getName());
        }
        DelayCommand delayCommand = new DelayCommand(delayExecute, cmd, cmdReceiver);

        // 等待解锁缓冲区并锁定缓冲区
        waitAndLockBuffer();
        mCommandBufferInput.Add(delayCommand);
        // 解锁缓冲区
        unlockBuffer();
    }
        public NormalFixPageWithDynamicTemplate()
        {
            this.InitializeComponent();
            DataContext = this;
            AddSwipeTemplate();
            Contacts = Contact.GetContacts(140);

            EditCommand = new DelayCommand<Contact>(async itemData =>
            {
                var dlg = new MessageDialog("Edit " + itemData.Name);
                dlg.Commands.Add(new UICommand("OK"));
                dlg.Commands.Add(new UICommand("Cancel"));
                await dlg.ShowAsync();
            });
            DelCommand = new DelayCommand<Contact>(async itemData =>
            {
                var dlg = new MessageDialog("Comfire Delete " + itemData.Name + "?");
                dlg.Commands.Add(new UICommand("OK", new UICommandInvokedHandler(param =>
                {
                    _contacts.Remove(itemData);
                })));
                dlg.Commands.Add(new UICommand("Cancel"));
                await dlg.ShowAsync();
            });
        }
Example #7
0
        /// <summary>
        /// Generate a new <see cref="DelayCommand"/>.
        /// </summary>
        /// <param name="bufferOffset">The target buffer offset.</param>
        /// <param name="parameter">The delay parameter.</param>
        /// <param name="state">The delay state.</param>
        /// <param name="isEnabled">Set to true if the effect should be active.</param>
        /// <param name="workBuffer">The work buffer to use for processing.</param>
        /// <param name="nodeId">The node id associated to this command.</param>
        /// <param name="newEffectChannelMappingSupported">If set to true, the new effect channel mapping for 5.1 is supported.</param>
        public void GenerateDelayEffect(uint bufferOffset, DelayParameter parameter, Memory <DelayState> state, bool isEnabled, CpuAddress workBuffer, int nodeId, bool newEffectChannelMappingSupported)
        {
            if (parameter.IsChannelCountValid())
            {
                DelayCommand command = new DelayCommand(bufferOffset, parameter, state, isEnabled, workBuffer, nodeId, newEffectChannelMappingSupported);

                command.EstimatedProcessingTime = _commandProcessingTimeEstimator.Estimate(command);

                AddCommand(command);
            }
        }
Example #8
0
    public IEnumerator InvokeDelay(InvokeEventCommand iec)
    {
        ConditionListener cl = iec.card.GetComponent <ConditionListener>();
        int position         = iec.card.transform.GetSiblingIndex();

        object[] data = new object[] { position };

        if (!StartGameController.Instance.tutorial)
        {
            if (cl.ConditionEvent == EVENT_TYPE.TAP_MINION)
            {
                PhotonNetwork.RaiseEvent(TAP_ANIMATION_SYNC_EVENT, data, new RaiseEventOptions {
                    Receivers = ReceiverGroup.Others
                },
                                         SendOptions.SendReliable);
            }
            else
            {
                PhotonNetwork.RaiseEvent(ANIMATION_SYNC_EVENT, data, new RaiseEventOptions {
                    Receivers = ReceiverGroup.Others
                },
                                         SendOptions.SendReliable);
            }
        }

        DelayCommand dc = new DelayCommand(iec.card.transform, 2f);

        dc.AddToQueue();

        GameManager.Instance.effectText.gameObject.SetActive(true);
        yield return(new WaitForSeconds(2.5f));

        GameManager.Instance.effectText.gameObject.SetActive(false);

        iec.method.Invoke(iec.cardType, new object[] { });

        CardVisual cv = iec.card.GetComponent <CardVisual>();

        if (!StartGameController.Instance.tutorial)
        {
            if (cl.ConditionEvent == EVENT_TYPE.TAP_MINION && InvokeEventCommand.InvokeEventQueue.Count == 0)
            {
                cv.AdjustHealth(1, false);
            }
        }
        else
        {
            if (InvokeEventCommand.InvokeEventQueue.Count == 0)
            {
                cv.AdjustHealth(1, false);
            }
        }
    }
Example #9
0
    //This function is called when PostNotification is called on the SACRIFICE_SELECTED event and isPromoting is true
    public void PromoteMinionWithPlayback()
    {
        DelayCommand dc = new DelayCommand(GameManager.Instance.GetActiveHand(true), 1f);

        dc.AddToQueue();

        MoveCardCommand mc = new MoveCardCommand(GameManager.Instance.MinionToSacrifice,
                                                 GameManager.Instance.GetActiveDiscardPile(true), UIManager.Instance.GetActiveDiscardList(true));

        mc.AddToQueue();
        //GameManager.Instance.MoveCard(GameManager.Instance.MinionToSacrifice, GameManager.Instance.GetActiveDiscardPile(true), GameManager.Instance.GetActiveDiscardPileList(true), true);
        MoveCardFromHand(true);
    }
Example #10
0
    private IEnumerator LevelUp()
    {
        Transform hero = GameManager.Instance.ActiveHero(true).gameObject.transform;
        int       cnt  = 4;

        for (int i = 0; i < cnt; i++)
        {
            DelayCommand dc = new DelayCommand(hero.Find("ExpBarBorder"), 1f);
            dc.AddToQueue();
            GameManager.Instance.ActiveHero(true).GainExp(1);

            yield return(new WaitForSeconds(1f));
        }

        UpdateUI();
    }
Example #11
0
    // delayExecute是命令延时执行的时间,默认为0,只有new出来的命令才能延时执行
    // 子线程中发出的命令必须是延时执行的命令!
    public new void pushDelayCommand(Command cmd, CommandReceiver cmdReceiver, float delayExecute = 0.001f)
    {
        // 如果命令系统已经销毁了,则不能再发送命令
        if (mSystemDestroy)
        {
            return;
        }
        if (cmd == null)
        {
            logError("cmd is null! receiver : " + (cmdReceiver != null ? cmdReceiver.getName() : ""));
            return;
        }
        if (cmdReceiver == null)
        {
            logError("receiver is null! cmd : " + (cmd != null ? cmd.getType().ToString() : ""));
            return;
        }
        if (!cmd.isValid())
        {
            logError("cmd is invalid! make sure create cmd use CommandSystem.newCmd! pushDelayCommand cmd type : "
                     + cmd.GetType().ToString() + "cmd id : " + cmd.mAssignID);
            return;
        }
        if (!cmd.isDelayCommand())
        {
            logError("cmd is not a delay command, Command : " + cmd.mAssignID + ", " + cmd.showDebugInfo());
            return;
        }
        if (delayExecute < 0.0f)
        {
            delayExecute = 0.0f;
        }
        if (cmd.getShowDebugInfo())
        {
            logInfo("CommandSystem : delay cmd : " + cmd.mAssignID + ", " + delayExecute + ", info : " + cmd.showDebugInfo() + ", receiver : " + cmdReceiver.getName(), LOG_LEVEL.LL_NORMAL);
        }
        DelayCommand delayCommand = new DelayCommand(delayExecute, cmd, cmdReceiver);

        mBufferLock.waitForUnlock();
        mCommandBufferInput.Add(delayCommand);
        mBufferLock.unlock();
    }
Example #12
0
    private IEnumerator SendCardToDiscard(Transform card, CardVisual cv)
    {
        DelayCommand dc = new DelayCommand(GameManager.Instance.GetActiveHand(true), 1f);

        dc.AddToQueue();

        yield return(new WaitForSeconds(1f));

        MoveCardCommand mc = new MoveCardCommand(card.gameObject, GameManager.Instance.GetActiveDiscardPile(true));

        mc.AddToQueue();

        if (cv.Md != null)
        {
            AddCardToDiscardPile(cv.Md);
        }
        else
        {
            AddCardToDiscardPile(cv.Sd);
        }
    }
Example #13
0
    //This function is called when PostNotification is called on the SACRIFICE_SELECTED event and isPromoting is true
    public void PromoteMinionWithPlayback()
    {
        DelayCommand dc = new DelayCommand(GameManager.Instance.GetActiveHand(true), 1f);

        dc.AddToQueue();

        MoveCardCommand mc = new MoveCardCommand(GameManager.Instance.MinionToSacrifice,
                                                 GameManager.Instance.GetActiveDiscardPile(true), UIManager.Instance.GetActiveDiscardList(true));

        mc.AddToQueue();
        //GameManager.Instance.MoveCard(GameManager.Instance.MinionToSacrifice, GameManager.Instance.GetActiveDiscardPile(true), GameManager.Instance.GetActiveDiscardPileList(true), true);

        CardVisual        cv = GameManager.Instance.MinionToSacrifice.GetComponent <CardVisual>();
        MinionDataPhoton  mdp;
        StarterDataPhoton sdp;

        byte[] cardByte;
        string type;

        if (cv.Md != null)
        {
            mdp      = new MinionDataPhoton(cv.Md);
            cardByte = DataHandler.Instance.ObjectToByteArray(mdp);
            type     = "Minion";
        }
        else
        {
            sdp      = new StarterDataPhoton(cv.Sd);
            cardByte = DataHandler.Instance.ObjectToByteArray(sdp);
            type     = "Starter";
        }

        object[] data = new object[] { cardByte, type };
        PlayCardPun.Instance.SendData(REMOVE_MINION, data);

        MoveCardFromHand(true);
    }
Example #14
0
    private void MoveCardFromHand(bool isMinion)
    {
        bool         promote = false;
        DelayCommand dc      = new DelayCommand(GameManager.Instance.GetActiveHand(true), 1f);

        dc.AddToQueue();
        card = gameObject;
        CardVisual cv = card.GetComponent <CardVisual>();

        byte[]               cardByte;
        MinionDataPhoton     mdp;
        StarterDataPhoton    sdp;
        EssentialsDataPhoton edp;
        string               type;

        if (isMinion)
        {
            Card cardData = card.GetComponent <CardVisual>().CardData;
            if (UIManager.Instance.GetActiveHandList(true).Contains(cardData))
            {
                UIManager.Instance.GetActiveHandList(true).Remove(cardData);
            }

            if (GameManager.Instance.IsPromoting)
            {
                card = GameManager.Instance.MinionToPromote;
                StartOrCancelPromotionEvent(false);
                summonPanel.SetActive(false);
                cv.AdjustHealth(2, true);
                cv.IsPromoted     = true;
                cv.PromotedHealth = cv.CurrentHealth;
                promote           = true;
            }

            MoveCardCommand mc = new MoveCardCommand(card, GameManager.Instance.GetActiveMinionZone(true));
            mc.AddToQueue();

            //Add Condition Scripts
            if (thisCard is MinionData)
            {
                GameManager.Instance.GetComponent <ConditionAndEffectAssigner>().Md   = thisCard as MinionData;
                GameManager.Instance.GetComponent <ConditionAndEffectAssigner>().Card = card;
                EventManager.Instance.PostNotification(EVENT_TYPE.ASSIGN_CONDITIONS);
            }

            if (!StartGameController.Instance.tutorial)
            {
                if (thisCard is MinionData)
                {
                    mdp      = new MinionDataPhoton(cv.Md);
                    cardByte = DataHandler.Instance.ObjectToByteArray(mdp);
                    type     = "Minion";
                }
                else
                {
                    sdp      = new StarterDataPhoton(cv.Sd);
                    cardByte = DataHandler.Instance.ObjectToByteArray(sdp);
                    type     = "Starter";
                }

                object[] data = new object[] { cardByte, type };
                if (!promote)
                {
                    PlayCardPun.Instance.SendData(PLAY_MINION, data);
                }
                else
                {
                    PlayCardPun.Instance.SendData(PROMOTE_MINION, data);
                }
            }
        }
        else
        {
            Card cardData = card.GetComponent <CardVisual>().CardData;
            if (UIManager.Instance.GetActiveHandList(true).Contains(cardData))
            {
                UIManager.Instance.GetActiveHandList(true).Remove(cardData);
            }

            //GameManager.Instance.MoveCard(card, GameManager.Instance.GetActiveDiscardPile(true), GameManager.Instance.GetActiveDiscardPileList(true), true);

            int position = 0;
            if (thisCard is StarterData)
            {
                position = gameObject.transform.GetSiblingIndex();
                type     = "Starter";
            }
            else
            {
                position = gameObject.transform.GetSiblingIndex();
                type     = "Essential";
            }

            if (!StartGameController.Instance.tutorial)
            {
                object[] data = new object[] { position, type };
                PlayCardPun.Instance.SendData(PLAY_RESOURCE, data);
            }

            MoveCardCommand mc = new MoveCardCommand(card, GameManager.Instance.GetActiveDiscardPile(true), UIManager.Instance.GetActiveDiscardList(true));
            mc.AddToQueue();
        }

        AdjustHeroResources();
    }
Example #15
0
 protected internal override void VisitDelayCommand(DelayCommand delayCommand)
 {
     this.WriteIndent();
     this.writer.WriteLine("delay {0}", delayCommand.Time);
 }
Example #16
0
    private void MoveCardFromHand(bool isMinion)
    {
        DelayCommand dc = new DelayCommand(GameManager.Instance.GetActiveHand(true), 1f);

        dc.AddToQueue();
        card = gameObject;
        CardVisual cv = card.GetComponent <CardVisual>();

        if (isMinion)
        {
            Card cardData = card.GetComponent <CardVisual>().CardData;
            if (UIManager.Instance.GetActiveHandList(true).Contains(cardData))
            {
                UIManager.Instance.GetActiveHandList(true).Remove(cardData);
            }

            if (GameManager.Instance.IsPromoting)
            {
                card = GameManager.Instance.MinionToPromote;
                StartOrCancelPromotionEvent(false);
                summonPanel.SetActive(false);
                cv.AdjustHealth(2, true);
                cv.IsPromoted     = true;
                cv.PromotedHealth = cv.CurrentHealth;
            }

            MoveCardCommand mc = new MoveCardCommand(card, GameManager.Instance.GetActiveMinionZone(true));
            mc.AddToQueue();

            //Add Condition Scripts
            if (thisCard is MinionData)
            {
                //GameManager.Instance.GetComponent<ConditionAndEffectAssigner>().Md = thisCard as MinionData;
                //GameManager.Instance.GetComponent<ConditionAndEffectAssigner>().Card = card;
                //EventManager.Instance.PostNotification(EVENT_TYPE.ASSIGN_CONDITIONS);

                gameObject.AddComponent <TutorialConditionListener>();
                gameObject.GetComponent <TutorialConditionListener>().ConditionEvent = EVENT_TYPE.TAP_MINION;
                if (thisCard.MinionID == 4)
                {
                    gameObject.AddComponent <DrawCardListener>();
                }
                else if (thisCard.MinionID == 101)
                {
                    gameObject.AddComponent <BuffMinionStarter>();
                    gameObject.AddComponent <EssentialListener>();
                    gameObject.GetComponent <EssentialListener>().Type = "Gold";
                }
                gameObject.GetComponent <TutorialConditionListener>().Card    = gameObject;
                gameObject.GetComponent <TutorialConditionListener>().Md      = thisCard as MinionData;
                gameObject.GetComponent <TutorialConditionListener>().enabled = true;
            }

            cv.particleGlow.gameObject.SetActive(false);
        }
        else
        {
            Card cardData = card.GetComponent <CardVisual>().CardData;
            if (UIManager.Instance.GetActiveHandList(true).Contains(cardData))
            {
                UIManager.Instance.GetActiveHandList(true).Remove(cardData);
            }

            MoveCardCommand mc = new MoveCardCommand(card, GameManager.Instance.GetActiveDiscardPile(true), UIManager.Instance.GetActiveDiscardList(true));
            mc.AddToQueue();
            //GameManager.Instance.MoveCard(card, GameManager.Instance.GetActiveDiscardPile(true), GameManager.Instance.GetActiveDiscardPileList(true), true);
        }

        AdjustHeroResources();

        //Increase Count in TutorialUI
        int count    = StartGameController.Instance.TutorialObject.GetComponent <TutorialTextController>().count;
        int maxCount = StartGameController.Instance.TutorialObject.GetComponent <TutorialTextController>().maxCount;

        if (count < maxCount)
        {
            StartGameController.Instance.TutorialObject.GetComponent <TutorialTextController>().count++;
        }
        else
        {
            StartGameController.Instance.TutorialObject.GetComponent <TutorialTextController>().ShowUI();
        }

        TutorialPlayCard tpc = gameObject.GetComponent <TutorialPlayCard>();

        Destroy(tpc);
    }
Example #17
0
        public override uint Estimate(DelayCommand command)
        {
            Debug.Assert(_sampleCount == 160 || _sampleCount == 240);

            if (_sampleCount == 160)
            {
                if (command.Enabled)
                {
                    switch (command.Parameter.ChannelCount)
                    {
                    case 1:
                        return(8929);

                    case 2:
                        return(25501);

                    case 4:
                        return(47760);

                    case 6:
                        return(82203);

                    default:
                        throw new NotImplementedException($"{command.Parameter.ChannelCount}");
                    }
                }
                else
                {
                    switch (command.Parameter.ChannelCount)
                    {
                    case 1:
                        return((uint)1295.20f);

                    case 2:
                        return((uint)1213.60f);

                    case 4:
                        return((uint)942.03f);

                    case 6:
                        return((uint)1001.6f);

                    default:
                        throw new NotImplementedException($"{command.Parameter.ChannelCount}");
                    }
                }
            }

            if (command.Enabled)
            {
                switch (command.Parameter.ChannelCount)
                {
                case 1:
                    return(11941);

                case 2:
                    return(37197);

                case 4:
                    return(69750);

                case 6:
                    return(12004);

                default:
                    throw new NotImplementedException($"{command.Parameter.ChannelCount}");
                }
            }
            else
            {
                switch (command.Parameter.ChannelCount)
                {
                case 1:
                    return((uint)997.67f);

                case 2:
                    return((uint)977.63f);

                case 4:
                    return((uint)792.31f);

                case 6:
                    return((uint)875.43f);

                default:
                    throw new NotImplementedException($"{command.Parameter.ChannelCount}");
                }
            }
        }
Example #18
0
    private void DelayOnHero(string type, float time)
    {
        Hero      heroObject = GameManager.Instance.ActiveHero(true);
        Transform hero       = GameManager.Instance.ActiveHero(true).gameObject.transform;

        if (type.Equals("Hero"))
        {
            DelayCommand dc = new DelayCommand(heroObject.HeroImage.transform, time);
            dc.AddToQueue();
        }
        else if (type.Equals("ResourcesAndLevel"))
        {
            Transform    topObject = hero.Find("TopUiElements");
            DelayCommand dc        = new DelayCommand(topObject.Find("HeroDamage"), time);
            dc.AddToQueue();
            dc = new DelayCommand(hero.Find("HealthBarBorder"), time);
            dc.AddToQueue();
            dc = new DelayCommand(hero.Find("ManaBarBorder"), time);
            dc.AddToQueue();
            dc = new DelayCommand(hero.Find("Level"), time);
            dc.AddToQueue();
        }
        else if (type.Equals("Damage"))
        {
            Transform    topObject = hero.Find("TopUiElements");
            DelayCommand dc        = new DelayCommand(topObject.Find("HeroDamage"), time);
            dc.AddToQueue();
        }
        else if (type.Equals("Gold"))
        {
            Transform    topObject = hero.Find("TopUiElements");
            DelayCommand dc        = new DelayCommand(topObject.Find("GoldOwned"), time);
            dc.AddToQueue();
        }
        else if (type.Equals("Shop"))
        {
            DelayCommand dc = new DelayCommand(GameManager.Instance.shopButton.transform, time);
            dc.AddToQueue();
        }
        else if (type.Equals("Opponent"))
        {
            DelayCommand dc = new DelayCommand(GameManager.Instance.ActiveHero(false).HeroImage.transform, time);
            dc.AddToQueue();
        }
        else if (type.Equals("Hand"))
        {
            DelayCommand dc = new DelayCommand(GameManager.Instance.GetActiveHand(true), time);
            dc.AddToQueue();
        }
        else if (type.Equals("Mana"))
        {
            DelayCommand dc = new DelayCommand(hero.Find("ManaBarBorder"), time);
            dc.AddToQueue();
        }
        else if (type.Equals("Exp"))
        {
            DelayCommand dc = new DelayCommand(hero.Find("ExpBarBorder"), time);
            dc.AddToQueue();
        }
        else if (type.Equals("ChangeButton"))
        {
            DelayCommand dc = new DelayCommand(GameManager.Instance.changeButton.transform, time);
            dc.AddToQueue();
        }
        else if (type.Equals("Attack"))
        {
            DelayCommand dc = new DelayCommand(GameManager.Instance.ActiveHero(true).AttackButton, time);
            dc.AddToQueue();
        }
        else if (type.Equals("Submit"))
        {
            DelayCommand dc = new DelayCommand(GameManager.Instance.ActiveHero(true).SubmitButton, time);
            dc.AddToQueue();
        }
        else if (type.Equals("Cancel"))
        {
            DelayCommand dc = new DelayCommand(GameManager.Instance.ActiveHero(true).CancelButton, time);
            dc.AddToQueue();
        }
        else if (type.Equals("EndTurn"))
        {
            DelayCommand dc = new DelayCommand(GameManager.Instance.endButton.transform, time);
            dc.AddToQueue();
        }
        else if (type.Equals("SkillEffect"))
        {
            DelayCommand dc = new DelayCommand(GameManager.Instance.skillTree.GetComponent <SkillTreeController>().buffIcon.transform, time);
            dc.AddToQueue();
        }

        StartCoroutine(ButtonDelay(2f));
    }
Example #19
0
 public uint Estimate(DelayCommand command)
 {
     return((uint)(_sampleCount * command.Parameter.ChannelCount * 202.5f));
 }
Example #20
0
 private async Task ExecuteCommandAsync(DelayCommand command) => await Task.Delay(command.DelayTime);
Example #21
0
        public uint Estimate(DelayCommand command)
        {
            Debug.Assert(_sampleCount == 160 || _sampleCount == 240);

            if (_sampleCount == 160)
            {
                if (command.Enabled)
                {
                    switch (command.Parameter.ChannelCount)
                    {
                    case 1:
                        return((uint)41636.0f);

                    case 2:
                        return((uint)97861.0f);

                    case 4:
                        return((uint)192520.0f);

                    case 6:
                        return((uint)301760.0f);

                    default:
                        throw new NotImplementedException($"{command.Parameter.ChannelCount}");
                    }
                }
                else
                {
                    switch (command.Parameter.ChannelCount)
                    {
                    case 1:
                        return((uint)578.53f);

                    case 2:
                        return((uint)663.06f);

                    case 4:
                        return((uint)703.98f);

                    case 6:
                        return((uint)760.03f);

                    default:
                        throw new NotImplementedException($"{command.Parameter.ChannelCount}");
                    }
                }
            }

            if (command.Enabled)
            {
                switch (command.Parameter.ChannelCount)
                {
                case 1:
                    return((uint)8770.3f);

                case 2:
                    return((uint)25741.0f);

                case 4:
                    return((uint)47551.0f);

                case 6:
                    return((uint)81629.0f);

                default:
                    throw new NotImplementedException($"{command.Parameter.ChannelCount}");
                }
            }
            else
            {
                switch (command.Parameter.ChannelCount)
                {
                case 1:
                    return((uint)521.28f);

                case 2:
                    return((uint)585.4f);

                case 4:
                    return((uint)629.88f);

                case 6:
                    return((uint)713.57f);

                default:
                    throw new NotImplementedException($"{command.Parameter.ChannelCount}");
                }
            }
        }
Example #22
0
    private void OnEvent(EventData photonData)
    {
        byte eventCode = photonData.Code;

        if (eventCode == TAP_ANIMATION_SYNC_EVENT)
        {
            object[] data  = (object[])photonData.CustomData;
            int      index = (int)data[0];

            Transform card = GameManager.Instance.GetActiveMinionZone(true).GetChild(index);

            CardVisual cv = card.GetComponent <CardVisual>();
            cv.IsTapped = true;
            cv.ChangeTappedAppearance();

            DelayCommand dc = new DelayCommand(card, 2f);
            dc.AddToQueue();

            StartCoroutine(ShowEffectAnimation());

            cv.AdjustHealth(1, false);
        }
        else if (eventCode == ANIMATION_SYNC_EVENT)
        {
            object[] data  = (object[])photonData.CustomData;
            int      index = (int)data[0];

            Transform    card = GameManager.Instance.GetActiveMinionZone(true).GetChild(index);
            DelayCommand dc   = new DelayCommand(card, 2f);
            dc.AddToQueue();

            StartCoroutine(ShowEffectAnimation());
        }
        else if (eventCode == PEEK_SHOP_SYNC_EVENT)
        {
            object[]          data      = (object[])photonData.CustomData;
            string            cardClass = (string)data[0];
            int[]             cards     = (int[])data[1];
            List <MinionData> cardList  = new List <MinionData>();

            foreach (int id in cards)
            {
                MinionData minion = Resources.Load("Minions/" + id) as MinionData;
                cardList.Add(minion);
            }

            UIManager.Instance.MoveTopCardsToBottom(cardClass, cardList);
        }
        else if (eventCode == ADJUST_HEALTH_SYNC_EVENT)
        {
            object[] data               = (object[])photonData.CustomData;
            int      position           = (int)data[0];
            int      healthAmount       = (int)data[1];
            bool     increaseOrDecrease = (bool)data[2];
            bool     activeOrInactive   = (bool)data[3];

            Transform  card = GameManager.Instance.GetActiveMinionZone(activeOrInactive).GetChild(position);
            CardVisual cv   = card.GetComponent <CardVisual>();
            cv.AdjustHealth(healthAmount, increaseOrDecrease);
        }
        else if (eventCode == ADJUST_DAMAGE_SYNC_EVENT)
        {
            object[] data               = (object[])photonData.CustomData;
            int      position           = (int)data[0];
            int      damageAmount       = (int)data[1];
            bool     increaseOrDecrease = (bool)data[2];

            Transform  card = GameManager.Instance.GetActiveMinionZone(true).GetChild(position);
            CardVisual cv   = card.GetComponent <CardVisual>();
            cv.AdjustDamage(damageAmount, increaseOrDecrease);
        }
        else if (eventCode == ADJUST_GOLD_SYNC_EVENT)
        {
            object[] data   = (object[])photonData.CustomData;
            int      amount = (int)data[0];

            GameManager.Instance.ActiveHero(true).AdjustGold(2, true);
        }
        else if (eventCode == ADJUST_EXP_SYNC_EVENT)
        {
            object[] data   = (object[])photonData.CustomData;
            int      amount = (int)data[0];

            GameManager.Instance.ActiveHero(true).EnemyGainExp(2);
        }
        else if (eventCode == ADJUST_HERO_HEALTH_SYNC_EVENT)
        {
            object[] data   = (object[])photonData.CustomData;
            int      amount = (int)data[0];

            GameManager.Instance.ActiveHero(false).AdjustHealth(amount, false);
        }
        else if (eventCode == DRAW_DISCARD_SYNC_EVENT)
        {
            object[] data     = (object[])photonData.CustomData;
            int      position = (int)data[0];

            Transform card = GameManager.Instance.GetActiveHand(true).GetChild(position);
            GameManager.Instance.DiscardCard(card.gameObject);
        }
        else if (eventCode == ACTIVATE_SILENCE_SYNC_EVENT)
        {
            object[] data     = (object[])photonData.CustomData;
            int      position = (int)data[0];

            Transform  card = GameManager.Instance.GetActiveMinionZone(false).GetChild(position);
            CardVisual cv   = card.GetComponent <CardVisual>();
            cv.ActivateSilence(true);
        }
        else if (eventCode == ADJUST_DISCARD_SYNC_EVENT)
        {
            object[] data     = (object[])photonData.CustomData;
            bool     increase = (bool)data[0];

            GameManager.Instance.ActiveHero(false).AdjustEnemyDiscard(increase);
        }
        else if (eventCode == ANIMATION_MESSAGE_SYNC_EVENT)
        {
            object[] data    = (object[])photonData.CustomData;
            string   message = (string)data[0];

            StartCoroutine(ShowEffectAnimation(message));
        }
        else if (eventCode == COMBAT_EFFECT_SYNC_EVENT)
        {
            object[] data            = (object[])photonData.CustomData;
            int      position        = (int)data[0];
            bool     enableOrDisable = (bool)data[1];
            string   to = (string)data[2];

            Transform card;
            if (to.Equals("Hand"))
            {
                card = GameManager.Instance.GetActiveHand(true).GetChild(position);
            }
            else
            {
                card = GameManager.Instance.GetActiveMinionZone(true).GetChild(position);
            }

            CardVisual cv = card.GetComponent <CardVisual>();

            cv.IsCombatEffectActivated = enableOrDisable;
            cv.CombatEffectActivated(enableOrDisable);
        }
    }
        public uint Estimate(DelayCommand command)
        {
            Debug.Assert(_sampleCount == 160 || _sampleCount == 240);

            if (_sampleCount == 160)
            {
                if (command.Enabled)
                {
                    switch (command.Parameter.ChannelCount)
                    {
                    case 1:
                        return((uint)8929.04f);

                    case 2:
                        return((uint)25500.75f);

                    case 4:
                        return((uint)47759.62f);

                    case 6:
                        return((uint)82203.07f);

                    default:
                        throw new NotImplementedException($"{command.Parameter.ChannelCount}");
                    }
                }
                else
                {
                    switch (command.Parameter.ChannelCount)
                    {
                    case 1:
                        return((uint)1295.20f);

                    case 2:
                        return((uint)1213.60f);

                    case 4:
                        return((uint)942.03f);

                    case 6:
                        return((uint)1001.55f);

                    default:
                        throw new NotImplementedException($"{command.Parameter.ChannelCount}");
                    }
                }
            }

            if (command.Enabled)
            {
                switch (command.Parameter.ChannelCount)
                {
                case 1:
                    return((uint)11941.05f);

                case 2:
                    return((uint)37197.37f);

                case 4:
                    return((uint)69749.84f);

                case 6:
                    return((uint)120042.40f);

                default:
                    throw new NotImplementedException($"{command.Parameter.ChannelCount}");
                }
            }
            else
            {
                switch (command.Parameter.ChannelCount)
                {
                case 1:
                    return((uint)997.67f);

                case 2:
                    return((uint)977.63f);

                case 4:
                    return((uint)792.30f);

                case 6:
                    return((uint)875.43f);

                default:
                    throw new NotImplementedException($"{command.Parameter.ChannelCount}");
                }
            }
        }
Example #24
0
 public void CreateDelay(Transform t, DelayCommand dc, float time)
 {
     StartCoroutine(CreateDelayCoroutine(t, dc, time));
 }