Esempio n. 1
0
        /// <summary>
        /// Spawn house or lotmarker on this lot
        /// </summary>
        /// <param name="house"></param>
        private static eLotSpawnType SpawnLot(DBHouse house, Dictionary <int, House> housesForRegion)
        {
            eLotSpawnType spawnType = eLotSpawnType.Marker;

            if (string.IsNullOrEmpty(house.OwnerID) == false)
            {
                var newHouse = new House(house)
                {
                    UniqueID = house.HouseNumber
                };

                newHouse.LoadFromDatabase();

                // store the house
                housesForRegion.Add(newHouse.HouseNumber, newHouse);

                if (newHouse.Model > 0)
                {
                    spawnType = eLotSpawnType.House;
                }
            }

            if (spawnType == eLotSpawnType.Marker)
            {
                // this is either an available lot or a purchased lot without a house
                GameLotMarker.SpawnLotMarker(house);
            }

            return(spawnType);
        }
Esempio n. 2
0
        public static void RemoveHouse(House house)
        {
            // try and get the houses for the given region
            Dictionary <int, House> housesByRegion;

            _houseList.TryGetValue(house.RegionID, out housesByRegion);

            if (housesByRegion == null)
            {
                return;
            }

            // remove all players from the house
            foreach (GamePlayer player in house.GetAllPlayersInHouse())
            {
                player.LeaveHouse();
            }

            // remove the house for all nearby players
            foreach (GamePlayer player in WorldMgr.GetPlayersCloseToSpot(house, WorldMgr.OBJ_UPDATE_DISTANCE))
            {
                player.Out.SendRemoveHouse(house);
                player.Out.SendGarden(house);
            }

            if (house.Model > 0)
            {
                log.WarnFormat("Removing house #{0} owned by {1}!", house.HouseNumber, house.DatabaseItem.Name);
            }
            else
            {
                log.WarnFormat("Lotmarker #{0} owned by {1} had rent due, lot now for sale!", house.HouseNumber, house.DatabaseItem.Name);
            }

            RemoveHouseItems(house);
            RemoveHousePermissions(house);
            ResetHouseData(house);

            house.OwnerID   = "";
            house.KeptMoney = 0;
            house.Name      = "";        // not null !
            house.DatabaseItem.CreationTime = DateTime.Now;
            house.DatabaseItem.LastPaid     = DateTime.MinValue;

            // saved the cleared house in the database
            house.SaveIntoDatabase();

            // remove the house from the list of houses in the region
            housesByRegion.Remove(house.HouseNumber);

            // spawn a lot marker for the now-empty lot
            GameLotMarker.SpawnLotMarker(house.DatabaseItem);
        }