//扫描请求发送 void Scan() { TowerChange st = new TowerChange(); st.OptType = OptionType.SCAN; LoginRequist.ucl.rpcCall("combat.get_tower_num", JsonConvert.SerializeObject(st), null); }
void ExitGame() { TowerChange eg = new TowerChange(); eg.OptType = OptionType.GAME_OVER; eg.result = "false"; LoginRequist.ucl.rpcCall("combat.get_tower_num", JsonConvert.SerializeObject(eg), null); }
//自爆塔 public static void DestoryOwnTower(TowerShape towershape) { TowerChange dot = new TowerChange(); dot.ti = new TowerInfo(towershape.ShapeId, towershape.transform.localPosition.x, towershape.transform.localPosition.y, towershape.transform.localPosition.z); dot.OptType = OptionType.DESTORY_TOWER; LoginRequist.ucl.rpcCall("combat.get_tower_num", JsonConvert.SerializeObject(dot), null); }
//塔固化时调用,发送固化塔的类型与位置 public static void TowerChange(TowerShape towershape) { TowerChange tch = new TowerChange(); tch.ti = new TowerInfo(towershape.ShapeId, towershape.transform.localPosition.x, towershape.transform.localPosition.y, towershape.transform.localPosition.z); tch.OptType = OptionType.TOWER_CHANGE; LoginRequist.ucl.rpcCall("combat.get_tower_num", JsonConvert.SerializeObject(tch), null); }
//塔创建或删除时调用,发送塔数量计算势力比 public static void TowerNum(List <TowerShape> towershapes) { TowerChange tn = new TowerChange(); tn.towernum = towershapes.Count; tn.OptType = OptionType.UPDATE_TOWER; LoginRequist.ucl.rpcCall("combat.get_tower_num", JsonConvert.SerializeObject(tn), null); }
//游戏结束 public static void GameOver() { if (TimeManager.timeManager.allTime >= 10f) { if (GameManager.gm.towerShapes.Count == 0 /*|| GameManager.gm.CheckPower() == false*/) { TowerChange gg = new TowerChange(); gg.result = "false"; gg.OptType = OptionType.GAME_OVER; LoginRequist.ucl.rpcCall("combat.get_tower_num", JsonConvert.SerializeObject(gg), null); //SceneManager.LoadScene("EndScene"); GameManager.gm.sceneSwitch.ToScene("EndScene"); } } }
private void powerShow(Message msg) { if (msg.OpCode == OPCODE.NotifyInfo) { var seq = msg.NotifyInfo.Sequence; if (seq > 0) { object retParam = MessagePackDecoder <object>(msg.NotifyInfo.RpcParams); TowerChange tc = JsonConvert.DeserializeObject <TowerChange>(retParam.ToString()); switch (tc.OptType) { case OptionType.UPDATE_TOWER: if (tc.towernum >= 0) { GameManager.gm.setEnemyTowerCount(tc.towernum); } //TODO:与UI势力条绑定 break; case OptionType.TOWER_CHANGE: if (tc.ti != null) { Vector3 createEnemyPosition = new Vector3(); createEnemyPosition.x = tc.ti.x; createEnemyPosition.y = tc.ti.y; createEnemyPosition.z = tc.ti.z; var a = new GameObject(); a.AddComponent <MonsterMake>().SetData(tc.ti.shapeid, createEnemyPosition, OptionType.TOWER_CHANGE); } break; case OptionType.DESTORY_TOWER: if (tc.ti != null) { Vector3 CreateEnemyPosition = new Vector3(); CreateEnemyPosition.x = tc.ti.x; CreateEnemyPosition.y = tc.ti.y; CreateEnemyPosition.z = tc.ti.z; var a = new GameObject(); a.AddComponent <MonsterMake>().SetData(tc.ti.shapeid, CreateEnemyPosition, OptionType.DESTORY_TOWER); } break; case OptionType.SCAN: TowerChange st = new TowerChange(); foreach (TowerShape towerShape in GameManager.gm.towerShapes) { TowerInfo temp = new TowerInfo(towerShape.ShapeId, towerShape.transform.localPosition.x, towerShape.transform.localPosition.y, towerShape.transform.localPosition.z); st.a.Add(temp); } st.OptType = OptionType.SCAN_MAKE; rpcCall("combat.get_tower_num", JsonConvert.SerializeObject(st), null); break; case OptionType.SCAN_MAKE: //fetch行为 if (tc.a.Count > 0) { foreach (TowerInfo tif in tc.a) { Vector3 v = new Vector3(); v.x = tif.x; v.y = tif.y; v.z = tif.z; v.x += 1200f; TowerShape ts = Instantiate(TowerShapeFactory.tsf.prefabs[tif.shapeid], v, Quaternion.identity); TowerEntity te = ts.gameObject.GetComponent <TowerEntity>(); Destroy(te); Destroy(ts.gameObject, 4f); } } break; case OptionType.GAME_OVER: if (tc.result == "false") { Debug.Log("Game Over"); TowerChange uw = new TowerChange(); uw.result = "true"; uw.OptType = OptionType.GAME_OVER; rpcCall("combat.get_tower_num", JsonConvert.SerializeObject(uw), null); //SceneManager.LoadScene("LoseScene"); sceneLoader.LoadScene("WinScene"); } else if (tc.result == "true") { //Debug.Log("You Win"); //SceneManager.LoadScene("WinScene"); sceneLoader.LoadScene("LoseScene"); } break; } } } }