Beispiel #1
0
        /// <summary>
        /// Called when an unit is removed from UnitList dictionary.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="args"></param>
        private void UnitList_onRemove(object sender, EventArgs args)
        {
            try
            {
                KeyValuePair <int, RoomUnit> removedPair = (KeyValuePair <int, RoomUnit>)sender;
                RoomUnit unit = removedPair.Value;

                RoomUser user = unit as RoomUser;

                if (user == null)
                {
                    return;
                }
                GameClient session = user.GetClient();

                int key = removedPair.Key;
                //freeIDs[key] = null;

                // make sure to bring any pets the user might have left
                List <PetBot> petsToRemove = new List <PetBot>();
                foreach (RoomUnit unit2 in UnitList.Values)
                {
                    RoomAI bot = unit2 as RoomAI;
                    if (bot == null)
                    {
                        continue;
                    }

                    bot.BaseAI.OnUserLeaveRoom(session);

                    PetBot pet = bot as PetBot;
                    if (pet != null && pet.OwnerID == user.ID)
                    {
                        petsToRemove.Add(pet);
                    }
                }

                foreach (PetBot toRemove in petsToRemove)
                {
                    if (user.GetClient() == null || user.GetClient().GetHabbo() == null || user.GetClient().GetHabbo().GetInventoryComponent() == null)
                    {
                        continue;
                    }

                    user.GetClient().GetHabbo().GetInventoryComponent().AddPet(toRemove.PetData);
                    RemoveRoomUnit(toRemove);
                }
            }
            catch (Exception e)
            {
                Logging.LogCriticalException(e.ToString());
            }
        }
Beispiel #2
0
        //internal void AddUnitToRoom(RoomUnit unit)
        //{
        //    UnitList.Add(unit.VirtualID, unit);
        //}

        internal void AddBotToRoom(RoomAI unit)
        {
            unit.VirtualID = primaryPrivateUserID++;
            unit.BaseAI    = new BartenderAI(unit);
            UnitList.Add(unit.VirtualID, unit);

            //ServerMessage message = new ServerMessage(Outgoing.PlaceBot);
            //message.AppendInt32(1);
            //unit.Serialize(message);
            //room.SendMessage(message);
            //TODO
        }
Beispiel #3
0
        internal void OnUserSay(RoomUser User, string Message, bool Shout)
        {
            foreach (RoomUnit unit in roomUserManager.UnitList.Values)
            {
                RoomAI bot = unit as RoomAI;
                if (bot == null)
                {
                    continue;
                }

                bot.BaseAI.OnUserChat(User, Message, Shout);
            }
        }
Beispiel #4
0
 internal SpyAI(RoomAI unit)
     : base(unit)
 {
 }
Beispiel #5
0
 internal AIBase(RoomAI unit)
 {
     this._unit = unit;
 }
Beispiel #6
0
 internal GenericAI(RoomAI unit)
     : base(unit)
 {
 }
Beispiel #7
0
 internal BartenderAI(RoomAI unit)
     : base(unit)
 {
     _customers = new List<int>();
 }
Beispiel #8
0
 internal AIBase(RoomAI unit)
 {
     this._unit = unit;
 }
Beispiel #9
0
 internal SpyAI(RoomAI unit)
     : base(unit)
 {
 }
Beispiel #10
0
        private void UnitList_onAdd(object sender, EventArgs args)
        {
            try
            {
                KeyValuePair <int, RoomUnit> userPair = (KeyValuePair <int, RoomUnit>)sender;
                RoomUser user = userPair.Value as RoomUser;

                if (user == null || user.GetClient() == null || user.GetClient().GetHabbo() == null)
                {
                    return;
                }

                GameClient session = user.GetClient();

                if (session == null || session.GetHabbo() == null)
                {
                    return;
                }

                DynamicRoomModel Model = room.GetGameMap().Model;
                user.SetPos(Model.DoorX, Model.DoorY, Model.DoorZ);
                user.SetRot(Model.DoorOrientation, false);

                user.CurrentItemEffect = ItemEffectType.None;

                if (user.GetClient().GetHabbo().IsTeleporting)
                {
                    RoomItem Item = room.GetRoomItemHandler().GetItem(user.GetClient().GetHabbo().TeleporterId);

                    if (Item != null)
                    {
                        user.SetPos(Item.GetX, Item.GetY, Item.GetZ);
                        user.SetRot(Item.Rot, false);

                        Item.InteractingUser2        = session.GetHabbo().Id;
                        ((StringData)Item.data).Data = "2";
                        Item.UpdateState(false, true);
                    }
                }

                user.GetClient().GetHabbo().IsTeleporting = false;
                user.GetClient().GetHabbo().TeleporterId  = 0;

                ServerMessage EnterMessage = new ServerMessage(Outgoing.SetRoomUser);
                EnterMessage.AppendInt32(1);
                user.Serialize(EnterMessage);
                room.SendMessage(EnterMessage);


                if (room.Owner != session.GetHabbo().Username)
                {
                    FirewindEnvironment.GetGame().GetQuestManager().ProgressUserQuest(user.GetClient(), HabboHotel.Quests.QuestType.SOCIAL_VISIT);
                }

                if (session.GetHabbo().GetMessenger() != null)
                {
                    session.GetHabbo().GetMessenger().OnStatusChanged(true);
                }

                foreach (RoomUnit unit in UnitList.Values)
                {
                    RoomAI ai = unit as RoomAI;
                    if (ai == null)
                    {
                        continue;
                    }

                    ai.BaseAI.OnUserEnterRoom(user);
                }

                user.GetClient().GetMessageHandler().OnRoomUserAdd();

                if (OnUserEnter != null)
                {
                    OnUserEnter(user, null);
                }

                if (room.GotMusicController())
                {
                    room.GetRoomMusicController().OnNewUserEnter(user);
                }
            }
            catch (Exception e)
            {
                Logging.LogCriticalException(e.ToString());
            }
        }
Beispiel #11
0
 internal PetAI(RoomAI unit)
     : base(unit)
 {
 }
Beispiel #12
0
 internal GenericAI(RoomAI unit)
     : base(unit)
 {
 }
Beispiel #13
0
 internal BartenderAI(RoomAI unit) : base(unit)
 {
     _customers = new List <int>();
 }
Beispiel #14
0
 internal PetAI(RoomAI unit)
     : base(unit)
 {
 }