diff --git a/Client.cs b/Client.cs index bdd4d50..cf33efa 100644 --- a/Client.cs +++ b/Client.cs @@ -78,8 +78,53 @@ namespace BattleServer // Console.WriteLine("接收到战斗消息 4 |{0}",ts); socket.Send(_msg); break; - case "GetInfo": //创建战斗场景 - // Console.WriteLine("处理GetInfoPVP !"); + case "Run": //运行战斗 + BattleRunReq runreq = ProtoDeSerialize(msg.data.value); + BattleReport[] reports = new BattleReport[runreq.info.Count]; + for (int i = 0; i < runreq.info.Count; i++) + { + + var respaction = () => + { + bool isfinsh = true; + for (int i = 0; i < reports.Length; i++) + { + if (reports[i] == null) + { + isfinsh = false; + } + } + if (isfinsh) + { + msg.data = new Google.Protobuf.WellKnownTypes.Any + { + type_url = "type.googleapis.com/BattleRunResp", + value = ProtoSerialize(new BattleRunResp { reports = reports.ToList() }), + }; + _msg = ProtoSerialize(msg); + socket.Send(_msg); + } + }; + + HotUpdateScripts.FightRunnerMgr.Instance.RunOnceFight(runreq.info[i], (issucc) => + { + int index = i; + reports[index] = new BattleReport() + { + info = runreq.info[index], + winSide = 2, + }; + respaction(); + }, (report) => + { + int index = i; + reports[index] = report; + respaction(); + }); + } + break; + case "GetInfo": //获取战斗场景 + // Console.WriteLine("处理GetInfoPVP !"); BattleGetInfoReq req = ProtoDeSerialize(msg.data.value); BattleStateInfo info = HotUpdateScripts.FightRunnerMgr.Instance.GetPvpStateInfo(req.battleid); msg.data = new Google.Protobuf.WellKnownTypes.Any @@ -92,7 +137,7 @@ namespace BattleServer // Console.WriteLine("处理GetInfo end !"); break; case "Create": //创建战斗场景 - // Console.WriteLine("处理CreatePVP !"); + // Console.WriteLine("处理CreatePVP !"); BattleCreateServerReq CreateReq = ProtoDeSerialize(msg.data.value); HotUpdateScripts.FightRunnerMgr.Instance.StartPvp(CreateReq.info, this.OnOutCmd, this.OnFinish, (issucc) => { @@ -107,7 +152,7 @@ namespace BattleServer }); break; case "InCmd": //向战斗场景输入指令 - // Console.WriteLine("处理InCmd !"); + // Console.WriteLine("处理InCmd !"); BattleInCmdReq InCmdReq = ProtoDeSerialize(msg.data.value); HotUpdateScripts.FightRunnerMgr.Instance.PvpInput(InCmdReq.battleid, InCmdReq.side, InCmdReq.@in, (issucc) => { @@ -124,7 +169,7 @@ namespace BattleServer break; case "Concede": //向战斗场景输入指令 - // Console.WriteLine("处理 Concede !"); + // Console.WriteLine("处理 Concede !"); BattleConcedeReq ConcedeReq = ProtoDeSerialize(msg.data.value); HotUpdateScripts.FightRunnerMgr.Instance.InitiativeFail(ConcedeReq.battleid, ConcedeReq.side, (issucc) => {