public static GameLevel_VictoryProto ToProto(byte[] buffer) { using (MMO_MemoryStream ms = new MMO_MemoryStream(buffer)) { GameLevel_VictoryProto proto = new GameLevel_VictoryProto(); proto.GameLevelId = ms.ReadInt(); proto.Grade = (byte)ms.ReadByte(); proto.Star = (byte)ms.ReadByte(); proto.Exp = ms.ReadInt(); proto.Gold = ms.ReadInt(); proto.KillMonsterCount = ms.ReadInt(); for (int i = 0; i < proto.KillMonsterCount; i++) { MonsterItem monsterItem = new MonsterItem(); monsterItem.MonsterId = ms.ReadInt(); monsterItem.MonsterCount = ms.ReadInt(); proto.KillMonsterList.Add(monsterItem); } proto.ReceiveGoodsCount = ms.ReadInt(); for (int i = 0; i < proto.ReceiveGoodsCount; i++) { ReceiveGoodsItem goodsItem = new ReceiveGoodsItem(); goodsItem.GoodsType = (byte)ms.ReadByte(); goodsItem.GoodsId = ms.ReadInt(); goodsItem.GoodsCount = ms.ReadInt(); proto.ReceiveGoodsList.Add(goodsItem); } return(proto); } }
public static GameLevel_VictoryProto GetProto(byte[] buffer) { GameLevel_VictoryProto proto = new GameLevel_VictoryProto(); using (MMO_MemoryStream ms = new MMO_MemoryStream(buffer)) { proto.GameLevelId = ms.ReadInt(); proto.Grade = (byte)ms.ReadByte(); proto.Star = (byte)ms.ReadByte(); proto.Exp = ms.ReadInt(); proto.Gold = ms.ReadInt(); proto.KillTotalMonsterCount = ms.ReadInt(); proto.KillMonsterList = new List <MonsterItem>(); for (int i = 0; i < proto.KillTotalMonsterCount; i++) { MonsterItem _KillMonster = new MonsterItem(); _KillMonster.MonsterId = ms.ReadInt(); _KillMonster.MonsterCount = ms.ReadInt(); proto.KillMonsterList.Add(_KillMonster); } proto.GoodsTotalCount = ms.ReadInt(); proto.GetGoodsList = new List <GoodsItem>(); for (int i = 0; i < proto.GoodsTotalCount; i++) { GoodsItem _GetGoods = new GoodsItem(); _GetGoods.GoodsType = (byte)ms.ReadByte(); _GetGoods.GoodsId = ms.ReadInt(); _GetGoods.GoodsCount = ms.ReadInt(); proto.GetGoodsList.Add(_GetGoods); } } return(proto); }
/// <summary> /// 打开关卡胜利页面 /// </summary> private void OpenGameLevelVictoryView() { m_GameLevelVictoryView = UIViewUtil.Instance.OpenWindow(UIViewType.GameLevelVictory).GetComponent <UIGameLevelVictoryView>(); m_GameLevelVictoryView.OnReturnWorldScene = OnClickGameLevelVictoryViewReturnWorldSceneButton; GameLevelEntity levelEnitiy = GameLevelDBModel.Instance.Get(m_GameLevelSceneId); GameLevelGradeEntity gradeEnitiy = GameLevelGradeDBModel.Instance.GetEnityByLevelIdAndGrade(m_GameLevelSceneId, m_Garade); if (levelEnitiy == null || gradeEnitiy == null) { return; } DataTransfer data = new DataTransfer(); data.SetData(ConstDefine.GameLevelRewardGold, gradeEnitiy.Gold); data.SetData(ConstDefine.GameLevelRewardExp, gradeEnitiy.Exp); data.SetData(ConstDefine.GameLevelPassTime, CurPassTime); int star = 1; if (CurPassTime < gradeEnitiy.Star2) { star = 3; } else if (CurPassTime < gradeEnitiy.Star1) { star = 2; } data.SetData(ConstDefine.GameLevelStarCount, star); List <GoodsEntity> rewards = new List <GoodsEntity>(); //可以放在服务器里面计算,为了简单就直接在这计算了 //装备 rewards.Clear(); int ranmdom01 = UnityEngine.Random.Range(0, 100); DataTransfer equipData = new DataTransfer(); List <GoodsEntity> equipEnitys = gradeEnitiy.RewardEquipList; for (int i = 0; i < equipEnitys.Count; i++) { if (ranmdom01 < equipEnitys[i].GoodsProbability) { rewards.Add(equipEnitys[i]); } } GoodsEntity equipEnity = equipEnitys[UnityEngine.Random.Range(0, rewards.Count)]; if (equipEnity != null) { equipData.SetData(ConstDefine.GameLevelGoodsId, equipEnity.GoodsId); equipData.SetData(ConstDefine.GameLevelGoodsName, equipEnity.GoodsName); equipData.SetData(ConstDefine.GameLevelGoodsProbability, equipEnity.GoodsProbability); equipData.SetData(ConstDefine.GameLevelGoodsCount, equipEnity.GoodsCount); data.SetData(ConstDefine.GameLevelRewardEquip, equipData); CurGameLevelGetGoodsList.Add(new GetGoodsEntity() { GoodsId = equipEnity.GoodsId, GoodsCount = 1, GoodsType = 0 }); } //道具 rewards.Clear(); int ranmdom02 = UnityEngine.Random.Range(0, 100); DataTransfer itemData = new DataTransfer(); List <GoodsEntity> itemEnitys = gradeEnitiy.RewardItemList; for (int i = 0; i < itemEnitys.Count; i++) { if (ranmdom02 < itemEnitys[i].GoodsProbability) { rewards.Add(itemEnitys[i]); } } GoodsEntity itemEnity = itemEnitys[UnityEngine.Random.Range(0, rewards.Count)]; if (itemEnity != null) { itemData.SetData(ConstDefine.GameLevelGoodsId, itemEnity.GoodsId); itemData.SetData(ConstDefine.GameLevelGoodsName, itemEnity.GoodsName); itemData.SetData(ConstDefine.GameLevelGoodsProbability, itemEnity.GoodsProbability); itemData.SetData(ConstDefine.GameLevelGoodsCount, itemEnity.GoodsCount); data.SetData(ConstDefine.GameLevelRewardItem, itemData); CurGameLevelGetGoodsList.Add(new GetGoodsEntity() { GoodsId = itemEnity.GoodsId, GoodsCount = 1, GoodsType = 1 }); } //材料 rewards.Clear(); int ranmdom03 = UnityEngine.Random.Range(0, 100); DataTransfer materiaData = new DataTransfer(); List <GoodsEntity> materiaEnitys = gradeEnitiy.RewardMateriaList; for (int i = 0; i < materiaEnitys.Count; i++) { if (ranmdom03 < materiaEnitys[i].GoodsProbability) { rewards.Add(materiaEnitys[i]); } } GoodsEntity materiaEnity = materiaEnitys[UnityEngine.Random.Range(0, rewards.Count)]; if (materiaEnity != null) { materiaData.SetData(ConstDefine.GameLevelGoodsId, materiaEnity.GoodsId); materiaData.SetData(ConstDefine.GameLevelGoodsName, materiaEnity.GoodsName); materiaData.SetData(ConstDefine.GameLevelGoodsProbability, materiaEnity.GoodsProbability); materiaData.SetData(ConstDefine.GameLevelGoodsCount, materiaEnity.GoodsCount); data.SetData(ConstDefine.GameLevelRewardMaterial, materiaData); CurGameLevelGetGoodsList.Add(new GetGoodsEntity() { GoodsId = materiaEnity.GoodsId, GoodsCount = 1, GoodsType = 2 }); } m_GameLevelVictoryView.SetUI(data); CurGameLevelTotalExp += gradeEnitiy.Exp; CurGameLevelTotalGold += gradeEnitiy.Gold; GameLevel_VictoryProto proto = new GameLevel_VictoryProto(); proto.GameLevelId = m_GameLevelSceneId; proto.Grade = (byte)m_Garade; proto.Star = (byte)star; proto.Exp = CurGameLevelTotalExp; proto.Gold = CurGameLevelTotalGold; foreach (var item in CurGameLevelKillMonsterDic) { GameLevel_VictoryProto.MonsterItem monster = new GameLevel_VictoryProto.MonsterItem(); monster.MonsterId = item.Key; monster.MonsterCount = item.Value; proto.KillMonsterList.Add(monster); } foreach (var item in CurGameLevelGetGoodsList) { GameLevel_VictoryProto.ReceiveGoodsItem goods = new GameLevel_VictoryProto.ReceiveGoodsItem(); goods.GoodsType = item.GoodsType; goods.GoodsId = item.GoodsId; goods.GoodsCount = item.GoodsCount; proto.ReceiveGoodsList.Add(goods); } NetWorkSocket.Instance.SendMsg(proto.ToArray()); }