//处理请求 public void HandleRequest(ControllerCode controllerCode, RequestCode requestCode, string data, Client client) { //TODO根据这里添加需求即可 BaseCtrlService service; bool isGet = serviceDict.TryGetValue(controllerCode, out service); if (!isGet) { Console.WriteLine("Cant Get " + requestCode + " Handler"); return; } //使用反射获取方法 string methodName = Enum.GetName(typeof(RequestCode), requestCode); MethodInfo mi = service.GetType().GetMethod(methodName); if (mi == null) { Console.WriteLine("[warning]no method:<" + service.GetType() + "." + methodName + ">"); } Console.WriteLine(data); object[] parameters = new object[] { data, client, server }; object o = mi.Invoke(service, parameters); if (o == null || string.IsNullOrEmpty(o as string)) { return; } server.SendResponse(client, requestCode, o as string); }
public void ReadMessage(int newDataAmount, Action <ControllerCode, RequestCode, string> processDataCallBack) { dynamicLength += newDataAmount; while (true) { if (dynamicLength <= 4) { return; } int count = BitConverter.ToInt32(data, 0); if (dynamicLength - 4 >= count) { ControllerCode controllerCode = (ControllerCode)BitConverter.ToInt32(data, 4); RequestCode requestCode = (RequestCode)BitConverter.ToInt32(data, 8); string s = Encoding.UTF8.GetString(data, 12, count - 8); processDataCallBack(controllerCode, requestCode, s); Array.Copy(data, count + 4, data, 0, dynamicLength - 4 - count); dynamicLength -= count + 4; } else { return; } } }
public bool GetControllerButton(ControllerCode buttonCode, int gamePadIndex, ButtonStateType buttonState = ButtonStateType.Down) { string buttonName = GetGamePadControllerCodeName(buttonCode, gamePadIndex); if (ControllerMap.ContainsKey(buttonName)) { ControllerMappedInput mappedInput = ControllerMap[buttonName]; if (!mappedInput.IsAxis) { if (mappedInput.Key != KeyCode.None) { switch (buttonState) { case ButtonStateType.Down: return(Input.GetKeyDown(mappedInput.Key)); case ButtonStateType.Up: return(Input.GetKeyUp(mappedInput.Key)); case ButtonStateType.Constant: return(Input.GetKey(mappedInput.Key)); } } } } return(false); }
/// <summary> /// 保存数据验证 /// </summary> /// <returns></returns> protected override bool SaveValidation() { bool valResult = base.SaveValidation(); if (!valResult) { return(valResult); } if (group.CurrentValue?.IdentityValueIsNone() ?? true) { throw new Exception($"请设置操作功能:{Name} 的分组"); } if (!operationGroupService.Exist(group.CurrentValue.Id)) { throw new Exception("操作功能设置的分组: {group.CurrentValue.Id} 不存在"); } ActionCode = ActionCode?.ToUpper() ?? string.Empty; ControllerCode = ControllerCode?.ToUpper() ?? string.Empty; return(true); }
/// <summary> /// 保存数据验证 /// </summary> /// <returns></returns> protected override bool SaveValidation() { bool valResult = base.SaveValidation(); if (!valResult) { return(valResult); } ControllerCode = ControllerCode?.ToUpper() ?? string.Empty; ActionCode = ActionCode?.ToUpper() ?? string.Empty; if (group.CurrentValue == null || group.CurrentValue.SysNo <= 0) { throw new Exception("请设置操作所属分组"); } IQuery groupQuery = QueryManager.Create <AuthorityOperationGroupQuery>(c => c.SysNo == group.CurrentValue.SysNo); if (!this.Instance <IAuthorityOperationGroupRepository>().Exist(groupQuery)) { throw new Exception("请设置正确的分组"); } return(true); }
public void HandleRequest(ControllerCode controllerCode, RequestCode requestCode, string data, Client client) { controllerManager.HandleRequest(controllerCode, requestCode, data, client); }
private void OnProcessMessage(ControllerCode controllerCode, RequestCode requestCode, string data) { server.HandleRequest(controllerCode, requestCode, data, this); }
private string GetGamePadControllerCodeName(ControllerCode genericControllerCode, int gamePadIndex) { return(string.Format("{0}_{1}", genericControllerCode, gamePadIndex + 1)); }
public float GetControllerAxis(ControllerCode axisCode, int gamePadIndex) { string axisName = GetGamePadControllerCodeName(axisCode, gamePadIndex); if (ControllerMap.ContainsKey(axisName)) { ControllerMappedInput mappedInput = ControllerMap[axisName]; if (mappedInput.IsAxis) { if (!string.IsNullOrEmpty(mappedInput.Axis)) { if (currentOS == OS.Mac) { if (axisCode == ControllerCode.LeftTriggerAxis) { float leftTriggerAxisValue = Input.GetAxis(mappedInput.Axis); if (LeftTriggerPressed) { leftTriggerAxisValue = MapMacTriggerAxisToPercent(leftTriggerAxisValue); } else { if (leftTriggerAxisValue != 0) { LeftTriggerPressed = true; leftTriggerAxisValue = MapMacTriggerAxisToPercent(leftTriggerAxisValue); } } return(leftTriggerAxisValue); } else if (axisCode == ControllerCode.RightTriggerAxis) { float rightTriggerAxisValue = Input.GetAxis(mappedInput.Axis); if (RightTriggerPressed) { rightTriggerAxisValue = MapMacTriggerAxisToPercent(rightTriggerAxisValue); } else { if (rightTriggerAxisValue != 0) { RightTriggerPressed = true; rightTriggerAxisValue = MapMacTriggerAxisToPercent(rightTriggerAxisValue); } } return(rightTriggerAxisValue); } else { return(Input.GetAxis(mappedInput.Axis)); } } else { return(Input.GetAxis(mappedInput.Axis)); } } } } return(0f); }