private void HandleUpdateShipModelEvent(IEventData eventData) { var updateShipModel = new UpdateShipModelEvent(this.Protocol, eventData); if (false == updateShipModel.IsValid) { string msg = updateShipModel.GetErrorMessage(); log.ErrorFormat("UpdateShipModel contract error: {0}", msg); return; } application.Players.UpdateShipModule( updateShipModel.GameRefId, updateShipModel.CharacterId, (ShipModelSlotType)updateShipModel.SlotType, updateShipModel.TemplateId ); }
protected override void OnOperationRequest(OperationRequest operationRequest, SendParameters sendParameters) { try { if (log.IsDebugEnabled) { log.DebugFormat("OnOperationRequest: pid={0}, op={1}", this.ConnectionId, operationRequest.OperationCode); } OperationResponse response = null; switch ((ServerToServerOperationCode)operationRequest.OperationCode) { default: response = new OperationResponse(operationRequest.OperationCode) { ReturnCode = -1, DebugMessage = "Unknown operation code" }; break; case ServerToServerOperationCode.RegisterGameServer: { response = this.ServerId.HasValue ? new OperationResponse(operationRequest.OperationCode) { ReturnCode = -1, DebugMessage = "Already registered" } : this.HandleRegisterGameServerRequest(operationRequest); break; } case ServerToServerOperationCode.UpdateShipModel: { UpdateShipModel operation = new UpdateShipModel(this.Protocol, operationRequest); if (!operation.IsValid) { response = new OperationResponse(operationRequest.OperationCode) { ReturnCode = (short)ReturnCode.InvalidOperationParameter, DebugMessage = "InvalidOperationParameter" }; } else { UpdateShipModelEvent evtData = new UpdateShipModelEvent { CharacterId = operation.CharacterId, GameRefId = operation.GameRefId, SlotType = operation.SlotType, TemplateId = operation.TemplateId }; EventData evt = new EventData((byte)S2SEventCode.UpdateShipModel, evtData); application.GameServers.SendEvent(evt, new SendParameters(), ServerType.SelectCharacter); } break; } case ServerToServerOperationCode.UpdateCharacter: { UpdateCharacter operation = new UpdateCharacter(this.Protocol, operationRequest); UpdateCharacterEvent evtData = new UpdateCharacterEvent { CharacterId = operation.CharacterId, Deleted = operation.Deleted, GameRefId = operation.GameRefId, Model = operation.Model, Race = operation.Race, Workshop = operation.Workshop, Exp = operation.Exp, WorldId = operation.WorldId }; EventData evt = new EventData((byte)S2SEventCode.UpdateCharacter, evtData); application.GameServers.SendEvent(evt, new SendParameters(), ServerType.SelectCharacter); break; } } if (response != null) { this.SendOperationResponse(response, sendParameters); } } catch (Exception ex) { log.Error(ex); } }