//发起创建敌人的请求 public void SendCreateEnemy(CreateEnemyModel model) { Dictionary <byte, object> parameters = new Dictionary <byte, object>(); ParameterTool.AddParmeter(parameters, ParameterCode.CreateEnemyModel, model); PhotonEngine.Instance.SendRequest(OpCode, SubCode.CreateEnemy, parameters); }
public void SyncEnemyAnimation(EnemyAnimationModel model) { Dictionary <byte, object> parameters = new Dictionary <byte, object>(); ParameterTool.AddParmeter(parameters, ParameterCode.EnemyAnimationModel, model); PhotonEngine.Instance.SendRequest(OpCode, SubCode.SyncAnimation, parameters); }
public void UpdateInventoryItemDB(InventoryItemDB itemDb) { itemDb.Role = null; Dictionary<byte, object> parameters = new Dictionary<byte, object>(); ParameterTool.AddParmeter(parameters, ParameterCode.InventoryItemDB, itemDb); PhotonEngine.Instance.SendRequest(OpCode, SubCode.UpdateInventoryItemDB, parameters); }
public override void OnHandlerMessage(OperationRequest request, OperationResponse response, ClientPeer peer, SendParameters sendParameters) { SubCode subCode = ParameterTool.GetParameter <SubCode>(request.Parameters, ParameterCode.SubCode, false); response.Parameters.Add((byte)ParameterCode.SubCode, subCode); switch (subCode) { case SubCode.AddTaskDB: TaskDB taskDB = ParameterTool.GetParameter <TaskDB>(request.Parameters, ParameterCode.TaskDB); taskDB.Role = peer.LoginRole; taskDbManager.AddTaskDB(taskDB); taskDB.Role = null; ParameterTool.AddParmeter(response.Parameters, ParameterCode.TaskDB, taskDB); response.ReturnCode = (short)ReturnCode.Success; break; case SubCode.GetTaskDB: List <TaskDB> list = taskDbManager.GeTaskDbList(peer.LoginRole); foreach (var taskDb in list) { taskDb.Role = null; } ParameterTool.AddParmeter(response.Parameters, ParameterCode.TaskDBList, list); response.ReturnCode = (short)ReturnCode.Success; break; case SubCode.UpdateTaskDB: TaskDB taskDB2 = ParameterTool.GetParameter <TaskDB>(request.Parameters, ParameterCode.TaskDB); taskDB2.Role = peer.LoginRole; taskDbManager.UpdateTaskDB(taskDB2); response.ReturnCode = (short)ReturnCode.Success; break; } }
//发送同步游戏胜利状态 public void SendGameState(GameStateModel model) { Dictionary <byte, object> parameters = new Dictionary <byte, object>(); ParameterTool.AddParmeter(parameters, ParameterCode.GameSteteModel, model); PhotonEngine.Instance.SendRequest(OpCode, SubCode.SendGameState, parameters); }
public void UpdateSkillDB(SkillDB skillDb) { Dictionary <byte, object> parameters = new Dictionary <byte, object>(); skillDb.Role = null; ParameterTool.AddParmeter(parameters, ParameterCode.SkillDB, skillDb); PhotonEngine.Instance.SendRequest(OpCode, SubCode.Update, parameters); }
public void UpdateTaskDB(TaskDB taskDB) { Dictionary <byte, object> parameters = new Dictionary <byte, object>(); taskDB.Role = null; ParameterTool.AddParmeter(parameters, ParameterCode.TaskDB, taskDB); PhotonEngine.Instance.SendRequest(OpCode, SubCode.UpdateTaskDB, parameters); }
//发起同步位置和旋转的请求 public void SyncPositionAndRotion(Vector3 position, Vector3 eulerAngles) { Dictionary <Byte, object> parameters = new Dictionary <byte, object>(); ParameterTool.AddParmeter(parameters, ParameterCode.RoleId, PhotonEngine.Instance.role.Id, false); ParameterTool.AddParmeter(parameters, ParameterCode.Position, new Vector3Obj(position)); ParameterTool.AddParmeter(parameters, ParameterCode.EulerAngles, new Vector3Obj(eulerAngles)); PhotonEngine.Instance.SendRequest(OpCode, SubCode.SyncPositionAndRotation, parameters); }
public void UpgradeEquip(InventoryItemDB itemDb) { itemDb.Role = null; Role role = PhotonEngine.Instance.role; role.User = null; Dictionary<byte,object> parameters=new Dictionary<byte, object>(); ParameterTool.AddParmeter(parameters,ParameterCode.InventoryItemDB,itemDb); ParameterTool.AddParmeter(parameters,ParameterCode.Role,role); PhotonEngine.Instance.SendRequest(OpCode,SubCode.UpgradeEquip,parameters); }
public override void OnHandlerMessage(OperationRequest request, OperationResponse response, ClientPeer peer, SendParameters sendParameters) { SubCode subCode = ParameterTool.GetParameter <SubCode>(request.Parameters, ParameterCode.SubCode, false); ParameterTool.AddParmeter(response.Parameters, ParameterCode.SubCode, subCode, false); switch (subCode) { case SubCode.GetInventoryItemDB: List <InventoryItemDB> list = inventoryItemDbManager.GetInventoryItemDB(peer.LoginRole); foreach (var item in list) { item.Role = null; } ParameterTool.AddParmeter(response.Parameters, ParameterCode.InventoryItemDBList, list); break; case SubCode.AddInventoryItemDB: InventoryItemDB itemDb = ParameterTool.GetParameter <InventoryItemDB>(request.Parameters, ParameterCode.InventoryItemDB); itemDb.Role = peer.LoginRole; inventoryItemDbManager.AddInventoryItemDB(itemDb); itemDb.Role = null; ParameterTool.AddParmeter(response.Parameters, ParameterCode.InventoryItemDB, itemDb); response.ReturnCode = (short)ReturnCode.Success; break; case SubCode.UpdateInventoryItemDB: InventoryItemDB itemDb2 = ParameterTool.GetParameter <InventoryItemDB>(request.Parameters, ParameterCode.InventoryItemDB); itemDb2.Role = peer.LoginRole; inventoryItemDbManager.UpdateInventoryItemDB(itemDb2); break; case SubCode.UpdateInventoryItemDBList: List <InventoryItemDB> list2 = ParameterTool.GetParameter <List <InventoryItemDB> >(request.Parameters, ParameterCode.InventoryItemDBList); foreach (var itemDB3 in list2) { itemDB3.Role = peer.LoginRole; } inventoryItemDbManager.UpdateInventoryItemDBList(list2); break; case SubCode.UpgradeEquip: InventoryItemDB itemDb4 = ParameterTool.GetParameter <InventoryItemDB>(request.Parameters, ParameterCode.InventoryItemDB); Role role = ParameterTool.GetParameter <Role>(request.Parameters, ParameterCode.Role); peer.LoginRole = role; role.User = peer.LoginUser; itemDb4.Role = role; inventoryItemDbManager.UpgradeEquip(itemDb4, role); break; } }
public void UpdateInventoryItemDBList(InventoryItemDB itemDB1,InventoryItemDB itemDB2) { itemDB1.Role = null; itemDB2.Role = null; List<InventoryItemDB> list = new List<InventoryItemDB>(); list.Add(itemDB1); list.Add(itemDB2); Dictionary<byte,object> parameters=new Dictionary<byte, object>(); ParameterTool.AddParmeter(parameters,ParameterCode.InventoryItemDBList,list); PhotonEngine.Instance.SendRequest(OpCode,SubCode.UpdateInventoryItemDBList,parameters); }
public override void OnHandlerMessage(OperationRequest request, OperationResponse response, ClientPeer peer, SendParameters sendParameters) { //先得到子操作代码,根据子操作代码,分别进行不同的处理 SubCode subCode = ParameterTool.GetParameter <SubCode>(request.Parameters, ParameterCode.SubCode, false); Dictionary <byte, object> parameters = response.Parameters; parameters.Add((byte)ParameterCode.SubCode, subCode); response.OperationCode = request.OperationCode; switch (subCode) { case SubCode.GetRole: List <Role> rolelList = roleManager.GetRoleListByUser(peer.LoginUser); foreach (var role1 in rolelList) { role1.User = null; } ParameterTool.AddParmeter(parameters, ParameterCode.RoleList, rolelList); break; case SubCode.AddRole: Role role = ParameterTool.GetParameter <Role>(request.Parameters, ParameterCode.Role); //request ?? response 互换实验看看 ??request正确 role.User = peer.LoginUser; roleManager.AddRole(role); role.User = null; ParameterTool.AddParmeter(response.Parameters, ParameterCode.Role, role); break; case SubCode.SelectRole: peer.LoginRole = ParameterTool.GetParameter <Role>(request.Parameters, ParameterCode.Role); break; case SubCode.UpdateRole: Role role2 = ParameterTool.GetParameter <Role>(request.Parameters, ParameterCode.Role); role2.User = peer.LoginUser; roleManager.UpdateRole(role2); role2.User = null; response.ReturnCode = (short)ReturnCode.Success; break; case SubCode.GetTumoRole: User user = ParameterTool.GetParameter <User>(request.Parameters, ParameterCode.User); log.Debug("Role63" + user.Username); User user1 = userManager.GetUserByUsernmae(user.Username); List <Role> tumoRolelList = roleManager.GetRoleListByUser(user1); foreach (var role1 in tumoRolelList) { role1.User = null; } ParameterTool.AddParmeter(parameters, ParameterCode.TumoRoleList, tumoRolelList); log.Debug("Role70" + tumoRolelList[0].Name); break; } }
//向客户端发送 位置和旋转的数据 进行同步 void SendEventByPeer(ClientPeer peer, OperationCode opCode, SubCode subCode, int roleid, object posObj, object eulerAmglesObj) { EventData data = new EventData(); data.Parameters = new Dictionary <byte, object>(); ParameterTool.AddParmeter(data.Parameters, ParameterCode.OperationCode, opCode, false); ParameterTool.AddParmeter(data.Parameters, ParameterCode.SubCode, subCode, false); data.Parameters.Add((byte)ParameterCode.RoleId, roleid); data.Parameters.Add((byte)ParameterCode.Position, posObj.ToString()); data.Parameters.Add((byte)ParameterCode.EulerAngles, eulerAmglesObj); peer.SendEvent(data, new SendParameters()); }
void SendEventByPeer(ClientPeer peer, OperationCode opCode, SubCode subCode, List <Role> rolelList, int masterRoleId) { //OperationResponse response=new OperationResponse(); //response.Parameters=new Dictionary<byte, object>(); //ParameterTool.AddSubcode(response.Parameters,subCode); //ParameterTool.AddParmeter(response.Parameters,ParameterCode.RoleList,rolelList); //response.ReturnCode = (short) ReturnCode.GetTeam; //peer.SendOperationResponse(response, sendParameters); EventData eventData = new EventData(); eventData.Parameters = new Dictionary <byte, object>(); ParameterTool.AddParmeter(eventData.Parameters, ParameterCode.OperationCode, opCode, false); ParameterTool.AddSubcode(eventData.Parameters, subCode); ParameterTool.AddParmeter(eventData.Parameters, ParameterCode.RoleList, rolelList); ParameterTool.AddParmeter(eventData.Parameters, ParameterCode.MasterRoleId, masterRoleId, false); peer.SendEvent(eventData, new SendParameters()); }
public override void OnHandlerMessage(OperationRequest request, OperationResponse response, ClientPeer peer, SendParameters sendParameters) { SubCode subCode = ParameterTool.GetSubcode(request.Parameters); ParameterTool.AddSubcode(response.Parameters, subCode); switch (subCode) { case SubCode.Add: SkillDB skillDb = ParameterTool.GetParameter <SkillDB>(request.Parameters, ParameterCode.SkillDB); skillDb.Role = peer.LoginRole; skillDbManager.Add(skillDb); skillDb.Role = null; ParameterTool.AddParmeter(request.Parameters, ParameterCode.SkillDB, skillDb); break; case SubCode.Update: SkillDB skillDb2 = ParameterTool.GetParameter <SkillDB>(request.Parameters, ParameterCode.SkillDB); skillDb2.Role = peer.LoginRole; skillDbManager.Update(skillDb2); break; case SubCode.Get: List <SkillDB> list = skillDbManager.Get(peer.LoginRole); foreach (var temp in list) { temp.Role = null; } ParameterTool.AddParmeter(response.Parameters, ParameterCode.SkillDBList, list); break; case SubCode.Upgrade: SkillDB skillDb3 = ParameterTool.GetParameter <SkillDB>(request.Parameters, ParameterCode.SkillDB); Role role = ParameterTool.GetParameter <Role>(request.Parameters, ParameterCode.Role); role.User = peer.LoginUser; skillDb3.Role = role; skillDbManager.Upgrade(skillDb3, role); skillDb3.Role = null; ParameterTool.AddParmeter(response.Parameters, ParameterCode.SkillDB, skillDb3); break; } }
public override void OnHandlerMessage(OperationRequest request, OperationResponse response, ClientPeer peer, SendParameters sendParameters) { SubCode subCode = ParameterTool.GetSubcode(request.Parameters); ParameterTool.AddSubcode(response.Parameters, subCode); switch (subCode) { case SubCode.SendTeam: if (TumoApplication.Instance.clientPeerListFotTeam.Count >= 2) { //取得list中的前二个peer 跟当前的peer进行组队 toto ClientPeer peer1 = TumoApplication.Instance.clientPeerListFotTeam[0]; ClientPeer peer2 = TumoApplication.Instance.clientPeerListFotTeam[1]; Team t = new Team(peer1, peer2, peer); TumoApplication.Instance.clientPeerListFotTeam.RemoveRange(0, 2); List <Role> roleList = new List <Role>(); foreach (var clientPeer in t.clientPeers) { roleList.Add(clientPeer.LoginRole); } ParameterTool.AddParmeter(response.Parameters, ParameterCode.RoleList, roleList); ParameterTool.AddParmeter(response.Parameters, ParameterCode.MasterRoleId, t.masterRoleId, false); response.ReturnCode = (short)ReturnCode.GetTeam; SendEventByPeer(peer1, (OperationCode)response.OperationCode, SubCode.GetTeam, roleList, t.masterRoleId); //不知道对不对? SendEventByPeer(peer2, (OperationCode)response.OperationCode, SubCode.GetTeam, roleList, t.masterRoleId); //不知道对不对? } else { //当当前的服器可供组队的客户端不足的时候,把自身加到集合中等 等组队 TumoApplication.Instance.clientPeerListFotTeam.Add(peer); response.ReturnCode = (short)ReturnCode.WartingTeam; } break; case SubCode.CancelTeam: TumoApplication.Instance.clientPeerListFotTeam.Remove(peer); response.ReturnCode = (short)ReturnCode.Success; break; case SubCode.SyncPositionAndRotation: object posObj = null; request.Parameters.TryGetValue((byte)ParameterCode.Position, out posObj); object eulerAnglesObj = null; request.Parameters.TryGetValue((byte)ParameterCode.EulerAngles, out eulerAnglesObj); foreach (ClientPeer temp in peer.Team.clientPeers) { if (temp != peer) { SendEventByPeer(temp, OpCode, SubCode.SyncPositionAndRotation, peer.LoginRole.Id, posObj, eulerAnglesObj); } } break; case SubCode.SyncMoveAnimation: foreach (ClientPeer temp in peer.Team.clientPeers) { if (temp != peer) { SendMoveAnimationEvent(temp, OpCode, SubCode.SyncMoveAnimation, peer.LoginRole.Id, request.Parameters); } } break; case SubCode.SyncAnimation: request.Parameters.Add((byte)ParameterCode.RoleId, peer.LoginRole.Id); RequestTool.TransmitRequst(peer, request, OpCode); break; case SubCode.SendGameState: RequestTool.TransmitRequst(peer, request, OpCode); peer.Team.Dismiss(); //解散队伍 break; } }