コード例 #1
0
ファイル: Quest.cs プロジェクト: tuita520/RL_CardGame
 public void UpdateCollectAmount(ItemBase item, int leftAmount)//得道具时用到
 {
     if (item == Item)
     {
         if (IsComplete)
         {
             return;
         }
         if (!InOrder)
         {
             CurrentAmount = leftAmount;
         }
         else if (AllPrevObjCmplt)
         {
             CurrentAmount = leftAmount;
         }
         if (CurrentAmount > 0)
         {
             string message = DisplayName + (IsComplete ? "(完成)" : "[" + CurrentAmount + "/" + Amount + "]");
             PopoutController.CreatePopoutMessage(message, 50);
         }
         if (runtimeParent.IsComplete)
         {
             string message = "[任务]" + runtimeParent.TITLE + "(已完成)";
             PopoutController.CreatePopoutMessage(message, 50);
         }
     }
 }
コード例 #2
0
    public static PopoutController CreatePopoutUnitSpeak(string unitName, string message
                                                         , string unitImageAddress
                                                         , int sortingoder
                                                         , bool dismissAfterTapBtn, PopoutWIndowAlertType type
                                                         , Action <PopoutController, PopoutWindowAlertActionType> action = null)
    {
        string name = popoutPrefabName;

        UnityEngine.Object prefab = null;
        name = "Windows/PopoutUnitSpeak";
        if (popoutMessage == null)
        {
            Debug.Log("Loading popout file " + name);
            popoutMessage = Resources.Load(name);
            DontDestroyOnLoad(popoutMessage);
        }
        prefab = popoutMessage;
        GameObject tf = Instantiate(prefab) as GameObject;
        //tf.transform.position = pos;
        PopoutController pop = tf.GetComponent <PopoutController>();

        pop.Setup(unitName, message, sortingoder, dismissAfterTapBtn, type, action);
        pop.panelBgImg1.sprite = Resources.Load <Sprite>(unitImageAddress);
        pop.fadeEndScale       = Vector3.zero;
        return(pop);
    }
コード例 #3
0
ファイル: Quest.cs プロジェクト: tuita520/RL_CardGame
 protected virtual void UpdateAmountUp(int amount = 1)
 {
     if (IsComplete)
     {
         return;
     }
     if (!InOrder)
     {
         CurrentAmount += amount;
     }
     else if (AllPrevObjCmplt)
     {
         CurrentAmount += amount;
     }
     if (CurrentAmount > 0)
     {
         string message = DisplayName + (IsComplete ? "完成" : "[" + CurrentAmount
                                         + "/" + Amount + "]");
         PopoutController.CreatePopoutMessage(message, 50);
     }
     if (runtimeParent.IsComplete)
     {
         PopoutController.CreatePopoutMessage
             ("[任务 " + runtimeParent.TITLE + " ](已完成)", 50);
     }
 }
コード例 #4
0
    public static PopoutController CreatePopoutMessage(string message, int sortinggoder
                                                       , Action <PopoutController, PopoutWindowAlertActionType> action = null)
    {
        string name = popoutPrefabName;

        UnityEngine.Object prefab = null;
        name = "Windows/PopoutMessage";
        if (popoutMessage == null)
        {
            Debug.Log("Loading popout file " + name);
            popoutMessage = Resources.Load(name);
        }
        prefab = popoutMessage;

        Debug.Log("Loading file " + name);
        GameObject       tf  = Instantiate(prefab) as GameObject;
        PopoutController pop = tf.GetComponent <PopoutController>();

        pop.SetupMsgFlow("", message, sortinggoder, true
                         , PopoutWIndowAlertType.MessageDismissWithDelay
                         , action);
        isShowingPopout = false;
        //SDGameManager.Instance.audio
        return(pop);
    }
コード例 #5
0
 public override void btnTapped()
 {
     //base.btnTapped();
     if (isUnlocked)
     {
         if (!isEmpty)
         {
             GDEtimeTaskData task   = SDDataManager.Instance.GetTimeTaskById(taskId);
             string          itemId = task.itemId;
             int             oldD   = task.oldData;
             if (SDDataManager.Instance.FinishTimeTask(taskId))
             {
                 CurrentRewardList = new List <string>();
                 CurrentRewardList.Add(itemId);
                 for (int i = 0; i < FP.AllProducts.Count; i++)
                 {
                     float r = oldD * 1f / (oldD + i + 2);
                     if (UnityEngine.Random.Range(0, 1f) < r)
                     {
                         CurrentRewardList.Add(FP.AllProducts[i].ID);
                         SDDataManager.Instance.addConsumable(FP.AllProducts[i].ID);
                     }
                 }
                 Debug.Log("成功获取工厂成果");
                 string re = CurrentRewardList[0];
                 for (int i = 1; i < CurrentRewardList.Count; i++)
                 {
                     re += " & " + CurrentRewardList[i];
                 }
                 PopoutController.CreatePopoutMessage("获取奖励" + re, 10);
             }
         }
     }
 }
コード例 #6
0
 public void SumonTenTimes_n()
 {
     CurrentAltarType = AltarType.n_tenTime;
     if (SDDataManager.Instance.getConsumableNum(Coupon_n_tenTimes.ID) > 0)
     {
         InitDAP();
     }
     else
     {
         if (SDDataManager.Instance.getConsumableNum(Coupon_n_oneTime.ID) > 10)
         {
             InitDAP();
         }
         else
         {
             if (SDDataManager.Instance.PlayerData.damond
                 >= SDConstants.altarDamondCost * 10)
             {
                 if (SDDataManager.Instance.PlayerData.damond >= SDConstants.altarDamondCost)
                 {
                     PopoutController.CreatePopoutAlert
                     (
                         SDGameManager.T("提醒")
                         , SDGameManager.T("确认消耗")
                         + SDConstants.altarDamondCost * 10
                         + SDGameManager.T("钻石")
                         , 25, false,
                         PopoutController.PopoutWIndowAlertType.ConfirmMessage
                         , (PopoutController pop
                            , PopoutController.PopoutWindowAlertActionType type)
                         =>
                     {
                         if (type == PopoutController.PopoutWindowAlertActionType.OnConfirm)
                         {
                             InitDAP();     //pop.Dismiss();
                         }
                         else
                         {
                             //pop.Dismiss();
                         }
                         StartCoroutine(pop.Dismiss());
                     }
                     );
                 }
                 else
                 {
                     Debug.Log("无法获取:道具或钻石不足");
                     return;
                 }
             }
         }
     }
 }
コード例 #7
0
    public IEnumerator IEInitCallingRewards()
    {
        yield return(new WaitForSeconds(newHeroPoseDismissDelay * 4));

        homeScene.mapBtn.gameObject.SetActive(false);
        for (int i = 0; i < RewardHCs.Count; i++)
        {
            bool               firstGet = true;
            GDEHeroData        heroData = SDDataManager.Instance.getHeroByHashcode(RewardHCs[i]);
            string             id       = heroData.id;
            List <GDEHeroData> _List    = SDDataManager.Instance.PlayerData.herosOwned.FindAll
                                              (x => x.id == id);
            if (_List.Count > 1)
            {
                firstGet = false;
            }
            resultRewards[i].initCalledHero(RewardHCs[i]);
            if (firstGet)
            {
                currentPanelContent          = panelContent.pose;
                resultRewards[i].upText.text = "NEW!!!";

                if (!excapePose)
                {
                    PopoutController.CreatePopoutUnitSpeak("英雄大名"
                                                           , "久仰大名", "Textures/xgb33", 10 + RewardHCs.Count - i
                                                           , false, PopoutController.PopoutWIndowAlertType.ConfirmMessage
                                                           , (PopoutController c, PopoutController.PopoutWindowAlertActionType a)
                                                           =>
                    {
                        if (a == PopoutController.PopoutWindowAlertActionType.OnConfirm)
                        {
                            StartCoroutine(c.Dismiss());
                        }
                        else
                        {
                            StartCoroutine(c.IEWaitAndDismiss(newHeroPoseDismissDelay));
                        }
                    });
                    yield return(new WaitForSeconds(newHeroPoseDismissDelay));
                }
            }
            if (excapePose)
            {
                excapePose = false;
            }
        }
        currentPanelContent = panelContent.rrp;
        homeScene.mapBtn.gameObject.SetActive(true);
    }
コード例 #8
0
 /// <summary>
 /// 放弃任务
 /// </summary>
 /// <param name="quest">放弃的任务</param>
 /// <param name="loadMode">是否为读档模式</param>
 /// <returns></returns>
 public bool AbandonQuest(Quest quest, bool loadMode = false)
 {
     if (HasOngoingQuest(quest) && quest && quest.Abandonable)
     {
         quest.IsOngoing = false;
         QuestsOngoing.Remove(quest);
         foreach (Objective o in quest.ObjectiveInstances)
         {
             if (o is CollectObjective)
             {
                 CollectObjective co = o as CollectObjective;
                 TriggerManager.Instance.OnGetItemEvent  += co.UpdateCollectAmount;
                 TriggerManager.Instance.OnLoseItemEvent += co.UpdateCollectAmountDown;
             }
             if (o is KillObjective)
             {
                 KillObjective ko = o as KillObjective;
                 ko.CurrentAmount = 0;
                 TriggerManager.Instance.OnUnitDeathEvent -= ko.UpdateKillAmount;
             }
             if (o is TalkObjective)
             {
             }
             if (o is SubmitObjective)
             {
             }
             if (o is CustomObjective)
             {
                 CustomObjective cuo = o as CustomObjective;
                 cuo.CurrentAmount = 0;
                 TriggerManager.Instance.OnTriggerSetEvent -= cuo.UpdateTriggerState;
             }
         }
         if (!quest.SbmtOnOriginalNPC)
         {
         }
         if (QuestsOngoing.Count < 1)
         {
         }
         return(true);
     }
     else if (!quest.Abandonable)
     {
         PopoutController.CreatePopoutAlert("", "该任务无法放弃"
                                            , 50, true, PopoutController.PopoutWIndowAlertType.ConfirmMessage
                                            , null);
     }
     return(false);
 }
コード例 #9
0
ファイル: Quest.cs プロジェクト: tuita520/RL_CardGame
    public void UpdateCollectAmount(string itemId, int leftAmount)
    {
        bool flag = false;

        if (Item != null)
        {
            if (itemId == Item.ID)
            {
                flag = true;
            }
        }
        else
        if (itemId == ItemID)
        {
            flag = true;
        }

        if (flag)
        {
            if (IsComplete)
            {
                return;
            }
            if (!InOrder)
            {
                CurrentAmount = leftAmount;
            }
            else if (AllPrevObjCmplt)
            {
                CurrentAmount = leftAmount;
            }
            if (CurrentAmount > 0)
            {
                string message = DisplayName + (IsComplete ? "(完成)" : "[" + CurrentAmount + "/" + Amount + "]");
                PopoutController.CreatePopoutMessage(message, 50);
            }
            if (runtimeParent.IsComplete)
            {
                string message = "[任务]" + runtimeParent.TITLE + "(已完成)";
                PopoutController.CreatePopoutMessage(message, 50);
            }
        }
    }
コード例 #10
0
 /// <summary>
 /// 放弃当前选中的任务
 /// </summary>
 public void AbandonSelectedQuest()
 {
     if (!selectedQuest)
     {
         return;
     }
     PopoutController.CreatePopoutAlert("", "确认放弃该任务吗(已消耗道具不会退回)", 50
                                        , true, PopoutController.PopoutWIndowAlertType.ConfirmOrCancel
                                        , (PopoutController c, PopoutController.PopoutWindowAlertActionType a)
                                        =>
     {
         if (a == PopoutController.PopoutWindowAlertActionType.OnConfirm)
         {
             AbandonQuest(selectedQuest);
         }
         else
         {
             StartCoroutine(c.IEWaitAndDismiss(0.3f));
         }
     }
                                        );
 }
コード例 #11
0
ファイル: RunePanel.cs プロジェクト: tuita520/RL_CardGame
    public void Btn_compose_confirm()
    {
        GDERuneData rune0 = SDDataManager.Instance.getRuneOwnedByHashcode
                                (ComposeMaterialSlots[0].hashcode);
        GDERuneData rune1 = SDDataManager.Instance.getRuneOwnedByHashcode
                                (ComposeMaterialSlots[1].hashcode);
        GDERuneData rune2 = SDDataManager.Instance.getRuneOwnedByHashcode
                                (ComposeMaterialSlots[2].hashcode);

        //
        if (SDDataManager.Instance.CheckIfCanComposeToCreateNewRune
                (rune0, rune1, rune2, out string result))
        {
            SDDataManager.Instance.ConsumeRune(rune0.Hashcode);
            SDDataManager.Instance.ConsumeRune(rune1.Hashcode);
            SDDataManager.Instance.ConsumeRune(rune2.Hashcode);
            SDDataManager.Instance.AddRune(result);
            //
            RuneItem RI = SDDataManager.Instance.getRuneItemById(result);
            PopoutController.CreatePopoutMessage("成功呢获得 " + RI.NAME, 10);
            ResetComposePanel();
        }
    }
コード例 #12
0
    public static PopoutController CreatePopoutAlert(string title, string message, int sortingoder
                                                     , bool dismissAfterTapBtn, PopoutWIndowAlertType type
                                                     , Action <PopoutController, PopoutWindowAlertActionType> action = null
                                                     , string style = "")
    {
        string name = popoutPrefabName;

        UnityEngine.Object prefab = null;
        if (style == "con")
        {
            name = "Windows/PopoutConfirmCon";
            if (popout1 == null)
            {
                Debug.Log("Loading popout file " + name);
                popout1 = Resources.Load(name);
                DontDestroyOnLoad(popout1);
            }
            prefab = popout1;
        }
        else
        {
            if (popout0 == null)
            {
                Debug.Log("Loading popout file " + name);
                popout0 = Resources.Load(name);
                DontDestroyOnLoad(popout0);
            }
            prefab = popout0;
        }
        Debug.Log("Loading file " + name);
        GameObject       tf  = Instantiate(prefab) as GameObject;
        PopoutController pop = tf.GetComponent <PopoutController>();

        pop.Setup(title, message, sortingoder, dismissAfterTapBtn, type, action);
        //SDGameManager.Instance.audio
        return(pop);
    }
コード例 #13
0
    public static PopoutController CreateDamagePopoutMessage(string fontname, Vector3 pos
                                                             , string message, int sortingoder
                                                             , Action <PopoutController, PopoutWindowAlertActionType> action = null)
    {
        string name = popoutPrefabName;

        UnityEngine.Object prefab = null;
        name = "Windows/PopoutDamageMessage";
        switch (fontname)
        {
        case "font1": name += "1"; break;

        case "font2": name += "2"; break;

        case "font3": name += "3"; break;

        default: break;
        }
        if (popoutMessage == null)
        {
            Debug.Log("Loading popout file" + name);
            popoutMessage = Resources.Load(name);
            DontDestroyOnLoad(popoutMessage);
        }
        prefab = popoutMessage;

        GameObject tf = Instantiate(prefab) as GameObject;

        tf.transform.position = pos;
        PopoutController pop = tf.GetComponent <PopoutController>();

        pop.Setup
            ("", "-" + message, sortingoder, true
            , PopoutWIndowAlertType.MessageDismissWithDelay, action);
        return(pop);
    }
コード例 #14
0
ファイル: SettingPanel.cs プロジェクト: tuita520/RL_CardGame
    public void BtnGiveUpBattle()
    {
        BattleManager BM = FindObjectOfType <BattleManager>();

        if (BM)
        {
            //SDGameManager.Instance.isGamePaused = true;
            //BM.BattleFail();
            PopoutController.CreatePopoutAlert("警告", "确定放弃战斗吗</n>(有死之荣无生之辱)"
                                               , 50, true, PopoutController.PopoutWIndowAlertType.ConfirmOrCancel
                                               , (PopoutController c, PopoutController.PopoutWindowAlertActionType a) =>
            {
                if (a == PopoutController.PopoutWindowAlertActionType.OnConfirm)
                {
                    SDGameManager.Instance.isGamePaused = true;
                    BM.BattleFail();
                }
                else
                {
                    c.StartCoroutine(c.IEWaitAndDismiss(0.2f));
                }
            });
        }
    }
コード例 #15
0
    public void consumeToGetItems(string itemId, bool useDamond, int itemNum = 1)
    {
        SDConstants.ItemType type = SDDataManager.Instance.getItemTypeById(itemId);
        int allConsume            = 0;

        if (type == SDConstants.ItemType.Consumable)
        {
            consumableItem data = SDDataManager.Instance.getConsumableItemById(itemId);
            if (!useDamond)
            {
                allConsume = data.buyPrice_coin * itemNum;
            }
            else
            {
                allConsume = data.buyPrice_diamond * itemNum;
            }
        }
        else if (type == SDConstants.ItemType.Consumable)
        {
            consumableItem DATA = SDDataManager.Instance.getConsumableItemById(itemId);
            if (!useDamond)
            {
                allConsume = DATA.buyPrice_coin * itemNum;
            }
            else
            {
                allConsume = DATA.buyPrice_diamond * itemNum;
            }
        }
        else if (type == SDConstants.ItemType.Equip)
        {
        }

        if (allConsume <= 0)
        {
            return;
        }

        if (!useDamond)
        {
            if (ConsumeCoinToGetItems(allConsume, itemId, out int surplus, itemNum))
            {
                Debug.Log("消耗 金币 " + allConsume + " 获得 商品id " + itemId
                          + " X" + itemNum + "====== 剩余 金币 " + surplus);
            }
        }
        else
        {
            PopoutController.CreatePopoutAlert
            (
                "",
                SDGameManager.T("是否确认购买"),
                5,
                true,
                PopoutController.PopoutWIndowAlertType.ConfirmMessage,
                (PopoutController c, PopoutController.PopoutWindowAlertActionType d) =>
            {
                if (d == PopoutController.PopoutWindowAlertActionType.OnConfirm)
                {
                    bool a = ConsumeDamondToGetItems
                                 (allConsume, itemId, out int surplus, itemNum);
                    if (a)
                    {
                        Debug.Log("消耗 钻石 " + allConsume + " 获得 商品id " + itemId
                                  + " X" + itemNum + "====== 剩余 钻石 " + surplus);
                        c._dismissAfterTapBtn = true;
                    }
                }
コード例 #16
0
    /// <summary>
    /// 完成任务
    /// </summary>
    /// <param name="quest">完成的任务</param>
    /// <param name="loadMode">是否为读档模式</param>
    /// <returns></returns>
    public bool CompleteQuest(Quest quest, bool loadMode = false)
    {
        if (!quest)
        {
            return(false);
        }
        if (HasOngoingQuest(quest) && quest.IsComplete)
        {
            if (!loadMode)
            {
                foreach (ItemInfo rwi in quest.QuestItemReward.RewardItems)
                {
                    //if()
                }
                foreach (QuestItemReward.DictItemInfo dwi
                         in quest.QuestItemReward.DictRewardItems)
                {
                    //if()
                }

                List <Quest> questsReqThisQuestItem = new List <Quest>();
                foreach (Objective o in quest.ObjectiveInstances)
                {
                    if (o is CollectObjective)
                    {
                        CollectObjective co = o as CollectObjective;
                        questsReqThisQuestItem = QuestRequiredItem(co.Item
                                                                   , SDDataManager.Instance.GetItemAmount(co.Item.ID) - o.Amount)
                                                 .ToList();
                    }
                    if (questsReqThisQuestItem.Contains(quest) &&
                        questsReqThisQuestItem.Count > 1)
                    //需要道具的任务群包含该任务且数量多于一个,说明其他任务对该任务提交的道具存在依赖
                    {
                        PopoutController.CreatePopoutMessage
                            ("提交失败,其他任务对该任务提交物品有需求", 50);
                        return(false);
                    }
                }
            }
            quest.IsOngoing = false;
            QuestsOngoing.Remove(quest);
            RemoveQuestAgentByQuest(quest);
            //quest.current
            QuestsComplete.Add(quest);
            //
            foreach (Objective o in quest.ObjectiveInstances)
            {
                o.OnStateChangeEvent -= OnObjectiveStateChange;
                if (o is CollectObjective)
                {
                    CollectObjective co = o as CollectObjective;
                    TriggerManager.Instance.OnGetItemEvent  += co.UpdateCollectAmount;
                    TriggerManager.Instance.OnLoseItemEvent += co.UpdateCollectAmountDown;
                    if (!loadMode && co.LoseItemAtSbmt)
                    {
                        SDDataManager.Instance.LoseItem(co.Item.ID, o.Amount);
                    }
                }
                if (o is KillObjective)
                {
                    KillObjective ko = o as KillObjective;
                    TriggerManager.Instance.OnUnitDeathEvent -= ko.UpdateKillAmount;
                }
                if (o is TalkObjective)
                {
                }
                if (o is SubmitObjective)
                {
                }
                if (o is CustomObjective)
                {
                    CustomObjective cuo = o as CustomObjective;
                    TriggerManager.Instance.OnTriggerSetEvent -= cuo.UpdateTriggerState;
                }
            }
            if (!loadMode)
            {
                SDDataManager.Instance.AddCoin(quest.RewardCoin);
                SDDataManager.Instance.AddDamond(quest.RewardDamond);
                SDDataManager.Instance.AddJiancai(quest.RewardJianCai);

                float R = UnityEngine.Random.Range(0, 1);
                if (R <= quest.QuestItemReward.GetPossible)
                {
                    foreach (ItemInfo info in quest.QuestItemReward.RewardItems)
                    {
                        SDDataManager.Instance.AddItem(info.ItemID, info.Amount);
                    }
                    foreach (QuestItemReward.DictItemInfo INFO
                             in quest.QuestItemReward.DictRewardItems)
                    {
                        float _R = UnityEngine.Random.Range(0, 1);
                        if (_R <= INFO.Possibility)
                        {
                            SDDataManager.Instance.AddItem(INFO.ID, INFO.amount);
                        }
                    }
                }
                PopoutController.CreatePopoutMessage
                    ("完成任务 [" + quest.TITLE + "]", 50);
            }
            return(true);
        }
        return(false);
    }
コード例 #17
0
    /// <summary>
    /// 接取任务
    /// </summary>
    /// <param name="quest">要接取的任务</param>
    /// <param name="loadMode">是否读档模式</param>
    /// <returns></returns>
    public bool AcceptQuest(Quest quest, bool loadMode = false)
    {
        if (!quest || !quest.IsValid)
        {
            //PopoutController.CreatePopoutMessage("无效任务", 25);
            Debug.Log("无效任务");
            return(false);
        }
        if (HasOngoingQuest(quest))
        {
            //PopoutController.CreatePopoutMessage("任务正在执行", 25);
            Debug.Log("任务正在执行");
            return(false);
        }

        if (quest.Group)
        {
        }

        foreach (Objective o in quest.ObjectiveInstances)
        {
            if (o is CollectObjective)
            {
                CollectObjective co = o as CollectObjective;
                TriggerManager.Instance.OnGetItemEvent  += co.UpdateCollectAmount;
                TriggerManager.Instance.OnLoseItemEvent += co.UpdateCollectAmountDown;
            }
            if (o is KillObjective)
            {
                KillObjective ko = o as KillObjective;
                TriggerManager.Instance.OnUnitDeathEvent += ko.UpdateKillAmount;
            }
            if (o is TalkObjective)
            {
            }
            if (o is SubmitObjective)
            {
            }
            if (o is CustomObjective)
            {
                CustomObjective cuo = o as CustomObjective;
                TriggerManager.Instance.OnTriggerSetEvent += cuo.UpdateTriggerState;
                if (cuo.CheckStateAtAcpt)
                {
                    TriggerManager.Instance.SetTrigger(cuo.TriggerName
                                                       , TriggerManager.Instance.GetTriggerState(cuo.TriggerName));
                }
            }
            o.OnStateChangeEvent += OnObjectiveStateChange;
        }
        quest.IsOngoing = true;
        QuestsOngoing.Add(quest);
        if (!quest.SbmtOnOriginalNPC)
        {
        }

        if (!loadMode)
        {
            PopoutController.CreatePopoutMessage("接取任务[" + quest.TITLE + "]", 50);
        }
        if (quest.ObjectiveInstances.Count > 0)
        {
            Objective firstObj = quest.ObjectiveInstances[0];
            //
        }
        return(true);
    }