예제 #1
0
        // Called first time when starting a new session
        public void InitPlayer(Player player)
        {
            Debug.Assert(FieldPlayer == null, "Not allowed to reinitialize player.");
            FieldManager = FieldManagerFactory.GetManager(player);
            FieldPlayer  = FieldManager.RequestFieldObject(player);
            GameServer.Storage.AddPlayer(player);
            GameServer.BuddyManager.SetFriendSessions(player);

            Party party = GameServer.PartyManager.GetPartyByMember(player.CharacterId);

            if (party != null)
            {
                party.BroadcastPacketParty(PartyPacket.LoginNotice(player), this);
            }

            player.BuddyList.ForEach(buddy =>
            {
                if (buddy.Friend?.Session?.Connected() ?? false)
                {
                    Buddy myBuddy = GameServer.BuddyManager.GetBuddyByPlayerAndId(buddy.Friend, buddy.SharedId);
                    buddy.Friend.Session.Send(BuddyPacket.LoginLogoutNotification(myBuddy));
                    buddy.Friend.Session.Send(BuddyPacket.UpdateBuddy(myBuddy));
                }
            });
        }
예제 #2
0
    // Called first time when starting a new session
    public void InitPlayer(Player player)
    {
        Debug.Assert(player.FieldPlayer == null, "Not allowed to reinitialize player.");

        Player             = player;
        FieldManager       = FieldManagerFactory.GetManager(player);
        player.FieldPlayer = FieldManager.RequestCharacter(player);
    }
예제 #3
0
    public void EnterField(Player player)
    {
        // If moving maps, need to get the FieldManager for new map
        if (player.MapId != FieldManager.MapId || player.InstanceId != FieldManager.InstanceId)
        {
            // Initialize for new Map
            FieldManager       = FieldManagerFactory.GetManager(player);
            player.FieldPlayer = FieldManager.RequestCharacter(player);
        }

        FieldManager.AddPlayer(this);
    }