protected override ServerFrameMsg createServerFrameMsg() { ServerFrameMsg serverEvent = new ServerFrameMsg(); serverEvent.frameNum = serverCurrentFrameNum; events.Clear(); List <ClientFrameMsg> clientMsgs = InputEventTranslator.instance.translateInputToEvent(); if (clientMsgs != null) { for (int i = 0; i < clientMsgs.Count; ++i) { ServerFrameInputEvent sie = new ServerFrameInputEvent(); sie.angle = clientMsgs[i].angle; sie.keys[0] = clientMsgs[i].keys[0]; sie.keys[1] = clientMsgs[i].keys[1]; sie.objectID = 1; events.Add(sie); } } serverEvent.events = events; ++serverCurrentFrameNum; return(serverEvent); }
public void runLogic(float time) { // for (int i = 0; i < logicUpdators.Count; ++i) { logicUpdators[i].preUpdate(); } ServerFrameMsg currentFrameInputEvent = popFrameInputEvent(); if (frameSyncEventHandler != null) { for (int i = 0; i < currentFrameInputEvent.events.Count; ++i) { ServerFrameInputEvent playerInputEvent = currentFrameInputEvent.events[i]; frameSyncEventHandler.handleFrameInputEvent(playerInputEvent); } } //Debuger.Log("current frame num " + currentFrameInputEvent.frameNum); //丢帧???? if (currentFrameInputEvent.frameNum != 0 && currentFrameInputEvent.frameNum != (currentLogicFrameNum + 1)) { Debuger.LogError("!!!!!!!!!!!!!!!!LostFrame: " + (currentLogicFrameNum + 1) + " ,currentFrameNum " + currentFrameInputEvent.frameNum); } currentLogicFrameNum = currentFrameInputEvent.frameNum; for (int i = 0; i < logicUpdators.Count; ++i) { logicUpdators[i].update(time); } }
public void handleFrameInputEvent(ServerFrameInputEvent inputEvent) { if (!gamePlayers.ContainsKey(inputEvent.objectID)) { Debuger.LogError("No FBPlayer:" + inputEvent.objectID); return; } gamePlayers[inputEvent.objectID].onServerFrameInputEvent(inputEvent); }
public override bool unMarshal(BytesStream stream) { frameNum = stream.ReadUInt16(); uint count = stream.ReadByte(); for (uint i = 0; i < count; ++i) { ServerFrameInputEvent evt = new ServerFrameInputEvent(); evt.unMarshal(stream); events.Add(evt); } return(true); }
public void onServerFrameInputEvent(ServerFrameInputEvent inputEvent) { FBActor logicActor = actor; //aiTakeOver(inputEvent.isAITakeOver); //处于接球状态或者AI状态下不做任何处理 if (inputEvent.isAITakeOver) { return; } FixVector2 moveDirection = FixVector2.kZero; if (inputEvent.angle != short.MinValue) { Fix64 radian = (Fix64)inputEvent.angle * Fix64.Pi / (Fix64)180; moveDirection.x = Fix64.Cos(radian); moveDirection.y = Fix64.Sin(radian); logicActor.move(moveDirection); } else { logicActor.stop(); } if (inputEvent.keys[0] == 1) { if (world.ball.hasOwner) { if (logicActor.isCtrlBall()) { //自己控球,进行射门 world.beginCheckShootBall(moveDirection); } else if (logicActor.isMateCtrlBall()) { //队友控球,进行铲球? world.doSliding(logicActor); } else { //对手控球,进行铲球 //logicActor.doSliding(); world.doSliding(logicActor); } } else { //没有人控球,进行铲球 if (ConstTable.DebugStateAction == 0) { //logicActor.doSliding(); world.doSliding(logicActor); } else if (ConstTable.DebugStateAction == 1) { logicActor.doTigerCatchingBall(); } else if (ConstTable.DebugStateAction == 3) { world.doSkill(logicActor, 0); } } } else if (inputEvent.keys[0] == 2) { if (world.ball.hasOwner) { if (logicActor.isCtrlBall()) { world.endCheckShootBall(); } } else { } } else { } if (inputEvent.keys[1] == 1) { if (world.ball.hasOwner) { if (logicActor.isCtrlBall()) { //自己控球,进行传球 logicActor.beginCheckPassBall(); } } } else if (inputEvent.keys[1] == 2)//j//传球弹起 { if (world.ball.hasOwner) { if (logicActor.isCtrlBall()) { logicActor.endCheckPassBall(moveDirection); } else if (logicActor.isMateCtrlBall()) { //队友控球,进行要球 world.onAskBall(logicActor); } else { //对手控球,进行嘲讽 world.onRidicule(logicActor); } } else { if (world.ball.kicker == null) { //没有人控球 world.onShowOff(logicActor); } else if (logicActor.isMateCtrlBall()) { //队友控球,进行要球 world.onAskBall(logicActor); } else { //对手控球,进行嘲讽 world.onRidicule(logicActor); } } } else { } }