Ejemplo n.º 1
0
    /// <summary>
    /// 设置植物 土地和动物的状态
    /// </summary>
    /// <param name="landIndex"></param>
    /// <param name="state"></param>
    void SetPlantAndAnimalEntityState(int landIndex, int state, EntityType type)
    {
        foreach (var land in entityStateDic)
        {
            HomeEntityInfo info = land.Value;

            if (info.index == landIndex)
            {
                if (type == EntityType.EntityType_Plant || type == EntityType.EntityType_Animal)
                {
                    uint seedID = 0;
                    if (seedIndexDic.TryGetValue((uint)landIndex, out seedID))
                    {
                        SeedAndCubDataBase sdb = GameTableManager.Instance.GetTableItem <SeedAndCubDataBase>(seedID);
                        if (sdb != null)
                        {
                            SetHomeEntityState(land.Key, state, sdb.indexID);
                            return;
                        }
                    }
                }
                else if (type == EntityType.EntityType_Soil)
                {
                    SetHomeEntityState(land.Key, state, landID);
                    return;
                }
            }
        }
    }
Ejemplo n.º 2
0
 /// <summary>
 /// 设置家园实体状态通过实体id
 /// </summary>
 /// <param name="landIndex">实体id</param>
 /// <param name="state">状态</param>
 /// <param name="indexID">homeland.xlsx 模型配置表里对应的索引id</param>
 void SetHomeEntityState(long uid, int state, uint indexID)
 {
     if (entityStateDic.ContainsKey(uid))
     {
         HomeEntityInfo info = entityStateDic[uid];
         info.state          = state;
         entityStateDic[uid] = info;
         IEntitySystem es = ClientGlobal.Instance().GetEntitySystem();
         if (es != null)
         {
             IEntity en = es.FindEntity(uid);
             if (en != null)
             {
                 HomeLandViewDatabase db = GameTableManager.Instance.GetTableItem <HomeLandViewDatabase>((uint)indexID, state);
                 if (db != null)
                 {
                     ResourceDataBase rdb = GameTableManager.Instance.GetTableItem <ResourceDataBase>(db.dwModelID);
                     if (rdb != null)
                     {
                         ChangePart cp = new ChangePart();
                         cp.strPartName = "main";
                         cp.strResName  = rdb.strPath;
                         en.SendMessage(EntityMessage.EntityCommand_ChangePart, cp);
                     }
                 }
             }
         }
     }
     else
     {
         Log.Error("not cotain uid " + uid.ToString());
     }
 }
Ejemplo n.º 3
0
    void OnClickPlantEntity(IEntity et)
    {
        if (et == null)
        {
            Log.Error("et is null");
            return;
        }
        long uid = et.GetUID();

        if (EntityStateDic.ContainsKey(uid))
        {
            HomeEntityInfo info = EntityStateDic[uid];
            selectLandIndex = info.index;
            if (info.type == EntityType.EntityType_Soil)
            {
                if (info.index == animalYardID)
                {
                    OnClickAnimalYard();//点击牧场土地
                }
                else
                {
                    OnClickLand(info);
                    //土地
                }
            }
            if (info.type == EntityType.EntityType_Plant)
            {
                OnClickPlant(info);
            }
        }
    }
Ejemplo n.º 4
0
 void AddPlantAndAnimalModel(HomePosInfo plant, uint leftTime, uint seedID, EntityType type = EntityType.EntityType_Plant)
 {
     if (seedID != 0)
     {
         CreatureSmallState st = GetPlantStateByLandData(seedID, leftTime);
         SeedAndCubDataBase db = GameTableManager.Instance.GetTableItem <SeedAndCubDataBase>(seedID);
         if (db == null)
         {
             Log.Error("种子没找到");
             return;
         }
         IEntity sen = HomeScene.Instance.AddEntity(plant.index.ToString(), type, db.indexID, (int)st);
         if (sen != null)
         {
             sen.SendMessage(EntityMessage.EntityCommand_SetPos, new Vector3(plant.posX, 2.97f, -plant.posZ));
             HomeEntityInfo info = new HomeEntityInfo();
             info.index    = plant.index;
             info.state    = (int)st;
             info.type     = type;
             info.entityID = sen.GetUID();
             AddHomeEntity(sen.GetUID(), info);
             AddPlantAndAnimalRemainTime(plant.index, leftTime);
         }
     }
 }
Ejemplo n.º 5
0
    void CreateTree()
    {
        IEntity            en      = null;
        HomeEntityInfo     info    = null;
        List <HomePosInfo> posList = GetPosListByModuleID(ironTreeID);

        if (posList == null)
        {
            return;
        }
        foreach (var plant in posList)
        {
            en = HomeScene.Instance.AddEntity(plant.index.ToString(), EntityType.EntityType_Tree, ironTreeID, (int)TreeState.Iron);
            if (en != null)
            {
                en.SendMessage(EntityMessage.EntityCommand_SetPos, new Vector3(plant.posX, 3f, -plant.posZ));
                info          = new HomeEntityInfo();
                info.index    = plant.index;
                info.state    = (int)TreeState.Iron;
                info.type     = EntityType.EntityType_Tree;
                info.entityID = en.GetUID();
                AddHomeEntity(en.GetUID(), info);
            }
        }
    }
Ejemplo n.º 6
0
    public void OnGainAnimal(stGainAnimalHomeUserCmd_CS cmd)
    {
        ItemDataBase db = GameTableManager.Instance.GetTableItem <ItemDataBase>((uint)cmd.item_id1);

        if (db != null)
        {
            TipsManager.Instance.ShowTipsById(114502, db.itemName, cmd.num1);
        }
        ItemDataBase db2 = GameTableManager.Instance.GetTableItem <ItemDataBase>((uint)cmd.item_id2);

        if (db2 != null)
        {
            TipsManager.Instance.ShowTipsById(114502, db2.itemName, cmd.num2);
        }
        int            seedID    = (int)cmd.seed_id;
        int            landIndex = (int)(cmd.land_id + animalIndexStart);
        long           entityID  = 0;
        HomeEntityInfo info      = GetHomeEntityByIndex(EntityType.EntityType_Animal, landIndex, out entityID);

        if (entityID != 0)
        {
            DeleteHomeEntity(entityID);
        }
        DeleteCanCainLand(landIndex);
        DeletePlantAndAnimalRemainTime(landIndex);
        RefreshLandUI();
    }
Ejemplo n.º 7
0
 void AddHomeEntity(long uid, HomeEntityInfo state)
 {
     if (entityStateDic.ContainsKey(uid))
     {
         entityStateDic[uid] = state;
     }
     else
     {
         entityStateDic.Add(uid, state);
     }
 }
Ejemplo n.º 8
0
    void OnClickPlant(HomeEntityInfo info)
    {
        uint index = (uint)info.index;

        if (info.state != (int)CreatureSmallState.CanGain && info.state != (int)CreatureSmallState.None)
        {
            uint seedID = 0;
            if (seedIndexDic.TryGetValue(index, out seedID))
            {
                SeedAndCubDataBase sdb = GameTableManager.Instance.GetTableItem <SeedAndCubDataBase>(seedID);
                if (sdb != null && sdb.type == 0)
                {
                    uint leftTime = 0;
                    if (plantAndAnimalRemainTimeDic.TryGetValue((int)index, out leftTime))
                    {
                        Double c = (double)leftTime / sdb.growUnitTime;
                        c = c * sdb.growUnitCostCoupons;
                        IncreaseDataBase idb = GameTableManager.Instance.GetTableItem <IncreaseDataBase>(1, (int)PlantFastRipeNum);
                        int count            = 0;
                        if (idb != null)
                        {
                            count = (int)Math.Ceiling(c * idb.increase);
                        }
                        Engine.Utility.Log.LogGroup("LC", "剩余时间:" + leftTime.ToString()
                                                    + "    立即成熟单位时长:" + sdb.growUnitTime
                                                    + "    基础单位费用:" + sdb.growUnitCostCoupons
                                                    + "    使用次数:" + PlantFastRipeNum
                                                    + "    涨  幅:" + idb.increase.ToString()
                                                    + "    元宝数:" + count.ToString());
                        if (HasEnoughDianJuan(count))
                        {
                            string tips = DataManager.Manager <TextManager>().GetLocalFormatText(114533, count);
                            TipsManager.Instance.ShowTipWindow(TipWindowType.CancelOk, tips, () =>
                            {
                                stImmediRipeHomeUserCmd_CS cmd = new stImmediRipeHomeUserCmd_CS();
                                cmd.land_id = index;
                                NetService.Instance.Send(cmd);
                                info.state = (int)CreatureSmallState.CanGain;
                            });
                        }
                        else
                        {
                            TipsManager.Instance.ShowTips("目前还没有通用充值界面,此处后期再做处理");
                        }
                    }
                }
            }
        }
        else if (info.state == (int)CreatureSmallState.CanGain)
        {
            this.GainOnePlant(info.index);
        }
    }
Ejemplo n.º 9
0
 HomeEntityInfo GetHomeEntityByIndex(EntityType type, int index, out long entityid)
 {
     foreach (var dic in entityStateDic)
     {
         HomeEntityInfo info = dic.Value;
         if (info.type == type && info.index == index)
         {
             entityid = dic.Key;
             return(info);
         }
     }
     entityid = 0;
     return(null);
 }
Ejemplo n.º 10
0
 /// <summary>
 /// 设置土地状态通过土地索引
 /// </summary>
 /// <param name="landIndex">土地索引</param>
 /// <param name="state">状态</param>
 void SetLandEntityState(int landIndex, int state)
 {
     foreach (var land in entityStateDic)
     {
         HomeEntityInfo info = land.Value;
         if (info.type == EntityType.EntityType_Soil)
         {
             if (info.index == landIndex)
             {
                 SetHomeEntityState(land.Key, state, landID);
                 return;
             }
         }
     }
 }
Ejemplo n.º 11
0
    void AddAnimalYardModel(HomePosInfo plant, LandState st)
    {
        IEntity en = HomeScene.Instance.AddEntity(plant.index.ToString(), EntityType.EntityType_Soil, animalID, (int)st);

        if (en != null)
        {
            en.SendMessage(EntityMessage.EntityCommand_SetPos, new Vector3(plant.posX, 2.966f, -plant.posZ));
            HomeEntityInfo info = new HomeEntityInfo();
            info.index    = animalYardID; // plant.index;
            info.state    = (int)st;
            info.type     = EntityType.EntityType_Soil;
            info.entityID = en.GetUID();
            AddHomeEntity(en.GetUID(), info);
        }
    }
Ejemplo n.º 12
0
    void OnClickTreeEntity(IEntity et)
    {
        if (et == null)
        {
            Log.Error("et is null");
            return;
        }
        HomeEntityInfo info = EntityStateDic[et.GetUID()];

        selectLandIndex = info.index;
        uint selfID = ClientGlobal.Instance().MainPlayer.GetID();

        if (!IsMyHome())
        {
            selfID = m_uHomeUserID;
        }
        ClickTree(selfID);
    }
Ejemplo n.º 13
0
    public void OnGainPlant(stGainFramHomeUserCmd_CS cmd)
    {
        ItemDataBase db = GameTableManager.Instance.GetTableItem <ItemDataBase>((uint)cmd.fruit_id);

        if (db != null)
        {
            TipsManager.Instance.ShowTipsById(114502, db.itemName, cmd.num);
            int  seedID    = (int)cmd.seed_id;
            int  landIndex = (int)cmd.land_id;
            long entityID  = 0;
            SetLandEntityState(landIndex, (int)LandState.Idle);
            HomeEntityInfo info = GetHomeEntityByIndex(EntityType.EntityType_Plant, landIndex, out entityID);
            if (entityID != 0)
            {
                DeleteHomeEntity(entityID);
            }
            DeleteCanCainLand(landIndex);
            DeletePlantAndAnimalRemainTime(landIndex);
        }
        RefreshLandUI();
    }
Ejemplo n.º 14
0
    void OnClickLand(HomeEntityInfo info)
    {
        if (info.state == (int)LandState.Idle)
        {
            object data = EntityType.EntityType_Plant;
            DataManager.Manager <UIPanelManager>().ShowPanel(PanelID.PlantingPanel, data: data);
        }
        else if (info.state == (int)LandState.LockCanBuy)
        {
            if (info.index == LandUnlockNum + 1)
            {
                LandAndFarmDataBase db = GameTableManager.Instance.GetTableItem <LandAndFarmDataBase>(landID, info.index);
                if (db != null)
                {
                    uint   money = db.needMoneyNum;
                    string str   = MainPlayerHelper.GetMoneyNameByType(db.costType);
                    if (!MainPlayerHelper.IsHasEnoughMoney(db.costType, money))
                    {
                        return;
                    }
                    if (!MainPlayerHelper.HasEnoughVipLevel(db.vipLimitLevel))
                    {
                        TipsManager.Instance.ShowTipsById(114503, db.vipLimitLevel);
                        return;
                    }

                    string tips = DataManager.Manager <TextManager>().GetLocalFormatText(114532, str, money);
                    TipsManager.Instance.ShowTipWindow(TipWindowType.CancelOk, tips, () =>
                    {
                        stUnlockFarmHomeUserCmd_CS cmd = new stUnlockFarmHomeUserCmd_CS();
                        cmd.unlock_index = info.index;
                        NetService.Instance.Send(cmd);
                    });
                }
            }
        }
    }
Ejemplo n.º 15
0
    void CreateMineEntity()
    {
        List <HomePosInfo> normalList = GetPosListByModuleID(mineModuleID);

        foreach (var pos in normalList)
        {
            HomeMineState st = HomeMineState.Lock;
            if (pos.index == 1)
            {
                st = HomeMineState.CanFind;
            }
            IEntity en = HomeScene.Instance.AddEntity(pos.index.ToString(), EntityType.EntityType_Minerals, mineModuleID, (int)st);
            if (en != null)
            {
                en.SendMessage(EntityMessage.EntityCommand_SetPos, new Vector3(pos.posX, 3f, -pos.posZ));
                HomeEntityInfo info = new HomeEntityInfo();
                info.index    = pos.index;
                info.state    = (int)st;
                info.type     = EntityType.EntityType_Minerals;
                info.entityID = en.GetUID();
                AddHomeEntity(en.GetUID(), info);
            }
        }
    }