/// <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; } } } }
/// <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()); } }
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); } } }
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); } } }
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); } } }
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(); }
void AddHomeEntity(long uid, HomeEntityInfo state) { if (entityStateDic.ContainsKey(uid)) { entityStateDic[uid] = state; } else { entityStateDic.Add(uid, state); } }
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); } }
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); }
/// <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; } } } }
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); } }
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); }
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(); }
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); }); } } } }
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); } } }