Example #1
0
    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);
    }
Example #2
0
    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);
        }
    }
Example #3
0
 public void handleFrameInputEvent(ServerFrameInputEvent inputEvent)
 {
     if (!gamePlayers.ContainsKey(inputEvent.objectID))
     {
         Debuger.LogError("No FBPlayer:" + inputEvent.objectID);
         return;
     }
     gamePlayers[inputEvent.objectID].onServerFrameInputEvent(inputEvent);
 }
Example #4
0
    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);
    }
Example #5
0
    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
        {
        }
    }