示例#1
0
    public void InitSetting()
    {
        Client.IGameOption option = Client.ClientGlobal.Instance().gameOption;
        if (option == null)
        {
            return;
        }


        for (int i = (int)AutoRecoverGrid.MedicalType.Hp; i < (int)AutoRecoverGrid.MedicalType.Max; ++i)
        {
            AutoRecoverGrid.MedicalType mtype = (AutoRecoverGrid.MedicalType)i;

            bool select = option.GetInt("MedicalSetting", mtype.ToString(), 1) == 1;

            float value = option.GetInt("MedicalSetting", mtype.ToString() + "value", 50) * 0.01f;

            uint itemid = (uint)option.GetInt("MedicalSetting", mtype.ToString() + "itemid", 0);

            if (!m_dicMedical.ContainsKey(mtype))
            {
                m_dicMedical.Add(mtype, new UseMedicalInfo());
            }

            m_dicMedical[mtype].select       = select;
            m_dicMedical[mtype].Type         = mtype;
            m_dicMedical[mtype].triggerValue = value;
            m_dicMedical[mtype].itemid       = itemid;
        }
    }
示例#2
0
    /// <summary>
    /// 使用瞬药
    /// </summary>
    public void UseAtOnceMedicine()
    {
        bool canRunning = Engine.Utility.EventEngine.Instance().DispatchVote((int)GameVoteEventID.AUTORECOVER, null);

        if (!canRunning)
        {
            Engine.Utility.Log.LogGroup("ZCX", "canRunning false");
            return;
        }

        //是否可以使用瞬药
        bool canUseAtOnce = Engine.Utility.EventEngine.Instance().DispatchVote((int)GameVoteEventID.AUTOAtOnceRECOVER, null);

        if (!canUseAtOnce)
        {
            Engine.Utility.Log.LogGroup("ZCX", "canUseAtOnce false");
            return;
        }

        Client.IPlayer mainPlayer = Client.ClientGlobal.Instance().MainPlayer;
        if (mainPlayer == null || mainPlayer.IsDead())
        {
            Engine.Utility.Log.LogGroup("ZCX", "player dead");
            return;
        }
        Dictionary <AutoRecoverGrid.MedicalType, UseMedicalInfo> .Enumerator iter = m_dicMedical.GetEnumerator();
        while (iter.MoveNext())
        {
            UseMedicalInfo medical = iter.Current.Value;
            if (medical != null && medical.select)
            {
                AutoRecoverGrid.MedicalType mtype = medical.Type;
                float rate = 1f;
                if (AutoRecoverGrid.MedicalType.HpAtOnce == mtype)
                {//瞬药 单独处理
                    rate = mainPlayer.GetProp((int)CreatureProp.Hp) * 1f / mainPlayer.GetProp((int)CreatureProp.MaxHp);

                    if (rate < medical.triggerValue)
                    {
                        uint itemid = medical.itemid;
                        if (itemid != 0 && CanUse(itemid))
                        {
                            List <BaseItem> itemdataList = DataManager.Manager <ItemManager>().GetItemByBaseId(itemid);
                            if (itemdataList.Count > 0)
                            {
                                DataManager.Instance.Sender.UseItem(
                                    mainPlayer.GetID(),
                                    (uint)GameCmd.SceneEntryType.SceneEntry_Player,
                                    itemdataList[0].QWThisID, 1);
                            }
                        }
                    }
                }
            }
        }
    }
示例#3
0
    protected override void OnShow(object data)
    {
        base.OnShow(data);
        if (data == null)
        {
            return;
        }

        m_MedicineSettingParam = (MedicineSettingParam)data;
        AutoRecoverGrid.MedicalType type = (AutoRecoverGrid.MedicalType)m_MedicineSettingParam.type;
        OnShowItems(type);
    }
示例#4
0
    void OnShowItems(AutoRecoverGrid.MedicalType type)
    {
        m_trans_root.DestroyChildren();
        m_lstMedicalReplace.Clear();

        ItemManager itemMgr             = DataManager.Manager <ItemManager>();
        List <table.ItemDataBase> items = null;

        switch (type)
        {
        case AutoRecoverGrid.MedicalType.Hp:
            items = GetItemListByType(GameCmd.ItemBaseType.ItemBaseType_Consumption, 1);
            break;

        case AutoRecoverGrid.MedicalType.Mp:
            items = GetItemListByType(GameCmd.ItemBaseType.ItemBaseType_Consumption, 2);
            break;

        case AutoRecoverGrid.MedicalType.HpAtOnce:
            items = GetItemListByType(GameCmd.ItemBaseType.ItemBaseType_Consumption, 3);
            break;

        case AutoRecoverGrid.MedicalType.PetHp:
            items = GetItemListByType(GameCmd.ItemBaseType.ItemBaseType_Consumption, 4);
            break;

        default:
            break;
        }

        if (items != null)
        {
            for (int i = 0; i < items.Count; i++)
            {
                GameObject go = NGUITools.AddChild(m_trans_root.gameObject, m_widget_itemprefab.gameObject);
                go.transform.localPosition = new Vector3(0, -i * 100, 0);
                MedicalReplace mr = go.AddComponent <MedicalReplace>();
                go.SetActive(true);
                mr.Init(this, items[i], type);
                m_lstMedicalReplace.Add(mr);
            }
        }
        m_trans_root.parent.GetComponent <UIScrollView>().ResetPosition();
    }
示例#5
0
    public void Init(MedicineSettingPanel parent, table.ItemDataBase itemdatabase, AutoRecoverGrid.MedicalType type)
    {
        m_parent = parent;
        if (itemdatabase == null)
        {
            return;
        }
        int num = DataManager.Manager <ItemManager>().GetItemNumByBaseId(itemdatabase.itemID);

        mtype    = type;
        m_itemid = itemdatabase.itemID;
        if (uiitem != null)
        {
            uiitem.Release();
            uiitem = null;
        }
        bool showGetWay = mtype != AutoRecoverGrid.MedicalType.HpAtOnce;

        if (num > 0)
        {
            uiitem = DataManager.Manager <UIManager>().GetUICommonItem(itemdatabase.itemID, (uint)num, 0, null, null, showGetWay);
        }
        else
        {
            uiitem = DataManager.Manager <UIManager>().GetUICommonItem(itemdatabase.itemID, (uint)num, 0, (grid) => {
                m_parent.OnClickItem(grid.Data.DwObjectId);
            }, null, showGetWay);
        }
        if (uiitem != null && iconTrans != null)
        {
            uiitem.Attach(iconTrans);
            //uiitem.SetPosition(true, new Vector3(0, -iconTrans.GetComponent<UIWidget>().height * 0.5f, 0));
        }

        if (lableDes != null)
        {
            lableDes.text = itemdatabase.description;
        }
        if (lableName != null)
        {
            lableName.text = itemdatabase.itemName;
        }
    }
示例#6
0
    uint GetUseItemId(AutoRecoverGrid.MedicalType type)
    {
        Dictionary <uint, uint> dicMedicineItem = null;
        List <uint>             lstKeys         = null;

        if (type == AutoRecoverGrid.MedicalType.Hp)
        {
            lstKeys         = m_lstHpKey;
            dicMedicineItem = m_dicHpMedicineItem;
        }
        else if (type == AutoRecoverGrid.MedicalType.Mp)
        {
            lstKeys         = m_lstMpKey;
            dicMedicineItem = m_dicMpMedicineItem;
        }


        if (dicMedicineItem != null && lstKeys != null)
        {
            int playerLevel = MainPlayerHelper.GetPlayerLevel();
            for (int i = lstKeys.Count - 1; i >= 0; i--)
            {
                if (playerLevel >= lstKeys[i])//可以使用
                {
                    if (dicMedicineItem.ContainsKey(lstKeys[i]))
                    {
                        uint id  = dicMedicineItem[lstKeys[i]];
                        int  num = DataManager.Manager <ItemManager>().GetItemNumByBaseId(id);
                        if (num > 0)
                        {
                            return(id);
                        }
                    }
                }
            }
        }

        return(0);
    }
示例#7
0
    private void UseMedicine()
    {
        bool canRunning = Engine.Utility.EventEngine.Instance().DispatchVote((int)GameVoteEventID.AUTORECOVER, null);

        if (!canRunning)
        {
            Engine.Utility.Log.LogGroup("ZCX", "canRunning false");
            return;
        }

        Client.IPlayer mainPlayer = Client.ClientGlobal.Instance().MainPlayer;
        if (mainPlayer == null || mainPlayer.IsDead())
        {
            Engine.Utility.Log.LogGroup("ZCX", "player dead");
            return;
        }
        Dictionary <AutoRecoverGrid.MedicalType, UseMedicalInfo> .Enumerator iter = m_dicMedical.GetEnumerator();
        while (iter.MoveNext())
        {
            UseMedicalInfo medical = iter.Current.Value;
            if (medical != null && medical.select)
            {
                AutoRecoverGrid.MedicalType mtype = medical.Type;
                float rate = 1f;
                if (AutoRecoverGrid.MedicalType.HpAtOnce == mtype)
                {//瞬药 单独处理
                    continue;
                }
                if (AutoRecoverGrid.MedicalType.Hp == mtype || (AutoRecoverGrid.MedicalType.HpAtOnce == mtype))
                {
                    rate = mainPlayer.GetProp((int)CreatureProp.Hp) * 1f / mainPlayer.GetProp((int)CreatureProp.MaxHp);
                }
                else if (AutoRecoverGrid.MedicalType.Mp == mtype)
                {
                    rate = mainPlayer.GetProp((int)CreatureProp.Mp) * 1f / mainPlayer.GetProp((int)CreatureProp.MaxMp);
                    // string log = string.Format("rate = {0} trigger = {1} mp = {2} max= {3}", rate, medical.triggerValue, mainPlayer.GetProp((int)CreatureProp.Mp), mainPlayer.GetProp((int)CreatureProp.MaxMp));
                    //UnityEngine.Debug.LogError(log);
                }
                else if (AutoRecoverGrid.MedicalType.PetHp == mtype)
                {
                    if (DataManager.Manager <PetDataManager>().CurFightingPet == 0)
                    {
                        continue;
                    }
                    Client.INPC pet = DataManager.Manager <PetDataManager>().GetNpcByPetID(DataManager.Manager <PetDataManager>().CurFightingPet);
                    if (pet != null)
                    {
                        int a = pet.GetProp((int)CreatureProp.Hp);
                        rate = pet.GetProp((int)CreatureProp.Hp) * 1f / pet.GetProp((int)CreatureProp.MaxHp);
                    }
                }

                if (rate < medical.triggerValue)
                {
                    uint itemid = medical.itemid;
                    if (AutoRecoverGrid.MedicalType.Hp == mtype)
                    {
                        if (UnityEngine.Time.realtimeSinceStartup - m_nhpsendTime < 5f)
                        {
                            continue;
                        }
                        itemid = GetUseItemId(mtype);
                    }
                    else if (AutoRecoverGrid.MedicalType.Mp == mtype)
                    {
                        if (UnityEngine.Time.realtimeSinceStartup - m_nmpsendTime < 5f)
                        {
                            continue;
                        }
                        itemid = GetUseItemId(mtype);
                    }
                    if (itemid != 0 && CanUse(itemid))
                    {
                        List <BaseItem> itemdataList = DataManager.Manager <ItemManager>().GetItemByBaseId(itemid);
                        if (itemdataList.Count > 0)
                        {
                            if (AutoRecoverGrid.MedicalType.PetHp == mtype)
                            {
                                uint petID = DataManager.Manager <PetDataManager>().GetNpcIDByPetID(DataManager.Manager <PetDataManager>().CurFightingPet);
                                DataManager.Instance.Sender.UseItem(
                                    petID,
                                    (uint)GameCmd.SceneEntryType.SceneEntry_NPC,
                                    itemdataList[0].QWThisID, 1);
                            }
                            else
                            {
                                DataManager.Instance.Sender.UseItem(
                                    mainPlayer.GetID(),
                                    (uint)GameCmd.SceneEntryType.SceneEntry_Player,
                                    itemdataList[0].QWThisID, 1);

                                if (AutoRecoverGrid.MedicalType.Hp == mtype)
                                {
                                    m_nhpsendTime = UnityEngine.Time.realtimeSinceStartup;
                                }
                                else if (AutoRecoverGrid.MedicalType.Mp == mtype)
                                {
                                    m_nmpsendTime = UnityEngine.Time.realtimeSinceStartup;
                                }
                            }

                            //                            if (UnityEngine.Application.isEditor)
                            //                           {
                            //                               UnityEngine.Debug.Log(string.Format("使用物品 {0}" , itemid));
                            //                          }
                        }
                    }
                }
            }
        }
    }