Ejemplo n.º 1
0
    SyncFrame LocalFrameRecord(Player TPlayer)
    {
        var moving = ControlDirecton(TPlayer);

        var rotation = RotMove();

        var syncFrame = new SyncFrame(0, TPlayer.get_area_id());

        //var InputSyncMsg = new InputMessage(player_id, moving); //TODO :改为发送位置!

        // syncFrame.dump_actions(InputSyncMsg);

        //         var RotateSyncMsg = new RotateMessage(player_id, rotation);
        //         syncFrame.dump_actions(RotateSyncMsg);
        TPlayer.move(moving);//本地move,获取新的位置

        sysTime++;
        if (sysTime > 3)
        {
            var thePos = TPlayer.get_position();

            var Tmsg = new PositionMessage(player_id, new Vector2(thePos.x, thePos.z));
            Console.Write("LocalFrameRecord posioin" + thePos.x, "," + thePos.z);
            syncFrame.dump_actions(Tmsg);
            sysTime = 0;
        }


        if (bSYN)
        {
            Dictionary <int, Vector2> TPlayers = new Dictionary <int, Vector2>();

            for (int n = 0; n < areaManager.areas.Count; ++n)
            {
                Area TArea = areaManager.areas[n];

                for (int np = 0; np < TArea.logic_mgr.player_list.Count; ++np)
                {
                    var Tlogic_mgr = TArea.logic_mgr.player_list[np];

                    if (!TPlayers.ContainsKey(Tlogic_mgr.get_id()))
                    {
                        TPlayers[Tlogic_mgr.get_id()] = new Vector2(Tlogic_mgr.position.x, Tlogic_mgr.position.z);
                    }
                    else
                    {
                    }
                }
            }

            var Tms = new SYNMessage(player_id, TPlayers);

            syncFrame.dump_actions(Tms);
        }



        return(syncFrame);
    }
Ejemplo n.º 2
0
    void AreaCheck(Player TPlayer)
    {
        //Console.WriteLine("in gameID: " + gameID + "curplayer pos is: " + currentPlayer.get_position());
        if (switchingArea)
        {
            if (TPlayer.get_area_id() == targetAreaID)
            {
                switchingArea = false;
            }
        }
        else
        {
            int newAreaID = areaManager.get_id_by_pos(TPlayer.get_position());

            int currentAreaID = TPlayer.get_area_id();

            if (newAreaID != currentAreaID)
            {
                //  Console.WriteLine("area switch, newAreaID != currentAreaID: newAreaID " + newAreaID + " currentAreaID " + currentAreaID);
                if (newAreaID >= areaLength)
                {
                    return;
                }
                switchingArea = true;

                var customSyncMsg = new LeaveAreaMessage(currentPlayer.get_id());
                var syncFrame     = new SyncFrame(0, currentAreaID);
                syncFrame.dump_actions(customSyncMsg);

                NetworkMsg networkMsg = new Frame(0, syncFrame);
                sendBuffer.Enqueue(networkMsg);

                targetAreaID = newAreaID;

                //Debug.Log ("area changed!");

                var EnterAreaSyncMsg = new EnterAreaMessage(currentPlayer.get_id(),
                                                            100,
                                                            currentPlayer.get_axis(),
                                                            currentPlayer.get_direction(),
                                                            currentPlayer.get_position());

                syncFrame = new SyncFrame(0, newAreaID);
                syncFrame.dump_actions(EnterAreaSyncMsg);

                networkMsg = new Frame(0, syncFrame);
                sendBuffer.Enqueue(networkMsg);
            }
            else
            {
            }
        }
    }