예제 #1
0
        public override void OnAfterDelete()
        {
            try{
                ForSaleSign.ClearHouse();

                Doors.Clear();

                base.OnAfterDelete();
            }catch { Errors.Report(String.Format("TownHouse-> OnAfterDelete()-> {0}", Owner)); }
        }
예제 #2
0
        private async void FetchDoorsAsync()
        {
            var doors = await Task.Run(() => DoorManagementServiceAccess.FetchDoorsAsync());

            var doorsBOList = doors.Select(d => new DoorBusinessObject(d.Id,
                                                                       d.Name,
                                                                       d.LockStatus == 1 ? LockStatus.Locked : LockStatus.UnLocked,
                                                                       d.OpenStatus == 1 ? OpenStatus.Opened : OpenStatus.Closed))
                              .ToList();

            Doors.Clear();
            foreach (var door in doorsBOList)
            {
                Doors.Add(door);
            }
        }
예제 #3
0
        public override void OnDelete()
        {
            foreach (Item item in Sign.GetItemsInRange(0))
            {
                if (item != Sign)
                {
                    item.Visible = true;
                }
            }

            c_Sign.ClearHouse();
            Doors.Clear();

            s_TownHouses.Remove(this);

            base.OnDelete();
        }
예제 #4
0
파일: Map.cs 프로젝트: Teles1/Cookie
        private void HandleMapComplementaryInformationsDataMessage(IAccount account,
                                                                   MapComplementaryInformationsDataMessage message)
        {
            lock (CheckLock)
            {
                SubAreaId = message.SubAreaId;
                Data      = MapsManager.FromId(message.MapId);
                var subArea = ObjectDataManager.Instance.Get <SubArea>(SubAreaId);
                var mapName =
                    FastD2IReader.Instance.GetText(ObjectDataManager.Instance.Get <Area>(subArea.AreaId).NameId);
                var subAreaName = FastD2IReader.Instance.GetText(subArea.NameId);
                Position = $"[{X}, {Y}]";
                Zone     = $"{mapName} ({subAreaName})";
                Entities.Clear();
                Monsters.Clear();
                Npcs.Clear();
                Players.Clear();
                Resources.Clear();
                AddActors(message.Actors);
                StatedElements.Clear();
                //Populate the StateElements with new ones received.
                //StatesElements are the elements which our current bot in theory can harvest.
                foreach (var statedElement in message.StatedElements)
                {
                    if (!StatedElements.ContainsKey(statedElement.ElementId))
                    {
                        StatedElements.Add(statedElement.ElementId, new StatedElement(statedElement.ElementCellId, (uint)statedElement.ElementId, statedElement.ElementState));
                    }
                }
                InteractiveElements.Clear();
                Doors.Clear();
                //populate the interactiveElements which are essencially items that we can interact with. Their location is hardcoded into the map.layer
                foreach (var interactiveElement in message.InteractiveElements)
                {
                    if (!InteractiveElements.ContainsKey(interactiveElement.ElementId))
                    {
                        InteractiveElements.Add(interactiveElement.ElementId, new InteractiveElement((uint)interactiveElement.ElementId, interactiveElement.ElementTypeId, interactiveElement.EnabledSkills, interactiveElement.DisabledSkills));
                    }
                }
            }

            UpdateMapControl();

            OnMapChanged();
        }
예제 #5
0
파일: LoadSave.cs 프로젝트: DJuttmann/SM3E
        public void Close()
        {
            if (!ProjectLoaded)
            {
                return;
            }

            Rooms.Clear();
            DoorSets.Clear();
            Doors.Clear();
            ScrollSets.Clear();
            PlmSets.Clear();
            ScrollPlmDatas.Clear();
            Backgrounds.Clear();
            Fxs.Clear();
            SaveStations.Clear();
            LevelDatas.Clear();
            EnemySets.Clear();
            EnemyGfxs.Clear();
            ScrollAsms.Clear();
            DoorAsms.Clear();
            SetupAsms.Clear();
            MainAsms.Clear();
            TileSets.Clear();
            TileTables.Clear();
            TileSheets.Clear();
            Palettes.Clear();
            AreaMaps.Clear();
            PlmTypes.Clear();
            EnemyTypes.Clear();

            CurrentRom      = null;
            ProjectPath     = String.Empty;
            RomFileName     = String.Empty;
            ProjectFileName = String.Empty;

            RoomTiles.Clear();
            MapTiles.Clear();
            BackgroundImage = null;

            ChangesMade   = false;
            ProjectLoaded = false;
            ProjectClosed?.Invoke(this, null);
        }
예제 #6
0
        public override void OnDelete()
        {
            if (c_Hanger != null)
            {
                c_Hanger.Delete();
            }

            foreach (Item item in Sign.GetItemsInRange(0).OfType <Item>().Where(item => item != null && item != Sign))
            {
                item.Visible = true;
            }

            ForSaleSign.ClearHouse();
            Doors.Clear();

            s_TownHouses.Remove(this);

            base.OnDelete();
        }
예제 #7
0
        public override void OnDelete()
        {
            if (_Hanger != null)
            {
                _Hanger.Delete();
            }

            foreach (var item in Sign.GetItemsInRange(0).Where(item => item != Sign))
            {
                item.Visible = true;
            }

            ForSaleSign.ClearHouse();
            Doors.Clear();

            AllTownHouses.Remove(this);

            base.OnDelete();
        }
예제 #8
0
파일: LoadSave.cs 프로젝트: DJuttmann/SM3E
        // Read all doors from ROM.
        private void ReadDoors(Rom rom)
        {
            List <int> addressesPC = new List <int> ();

            foreach (DoorSet d in DoorSets)
            {
                for (int i = 0; i < d.DoorCount; i++)
                {
                    int ad_PC = Tools.LRtoPC(d.DoorPtrs [i]);
                    addressesPC.Add(ad_PC);
                }
            }
            Tools.RemoveDuplicates(addressesPC);
            Doors.Clear();
            for (int n = 0; n < addressesPC.Count; n++)
            {
                Doors.Add(new Door());
                Doors [n].ReadFromROM(rom, addressesPC [n]);
            }
        }
예제 #9
0
        public override void LoadFromStream(BinaryReader stream, FileVersion version)
        {
            try {
                fID  = (BuildingID)StreamUtils.ReadInt(stream);
                Area = StreamUtils.ReadRect(stream);

                Doors.Clear();
                sbyte count = (sbyte)StreamUtils.ReadByte(stream);
                for (int i = 0; i < count; i++)
                {
                    int       dx  = StreamUtils.ReadInt(stream);
                    int       dy  = StreamUtils.ReadInt(stream);
                    int       dir = StreamUtils.ReadByte(stream);
                    DoorState st  = (DoorState)StreamUtils.ReadByte(stream);
                    AddDoor(dx, dy, dir, st);
                }

                int idx = StreamUtils.ReadInt(stream);
                Holder = ((idx == -1) ? null : (CreatureEntity)((NWField)Owner).Creatures.GetItem(idx));
            } catch (Exception ex) {
                Logger.Write("Building.loadFromStream(): " + ex.Message);
                throw ex;
            }
        }
예제 #10
0
        private void HandleMapComplementaryInformationsDataMessage(IAccount account,
                                                                   MapComplementaryInformationsDataMessage message)
        {
            lock (CheckLock)
            {
                SubAreaId = message.SubAreaId;
                Data      = MapsManager.FromId(message.MapId);

                var subArea = ObjectDataManager.Instance.Get <SubArea>(SubAreaId);
                var mapName =
                    FastD2IReader.Instance.GetText(ObjectDataManager.Instance.Get <Area>(subArea.AreaId).NameId);
                var subAreaName = FastD2IReader.Instance.GetText(subArea.NameId);
                Position = $"[{X}, {Y}]";
                Zone     = $"{mapName} ({subAreaName})";
                Entities.Clear();
                Monsters.Clear();
                Npcs.Clear();
                Players.Clear();
                AddActors(message.Actors);
                StatedElements.Clear();
                foreach (var statedElementDofus in message.StatedElements)
                {
                    if (!StatedElements.ContainsKey(statedElementDofus.ElementId) && statedElementDofus.OnCurrentMap)
                    {
                        StatedElements.Add(statedElementDofus.ElementId,
                                           new StatedElement(statedElementDofus.ElementCellId, (uint)statedElementDofus.ElementId,
                                                             statedElementDofus.ElementState));
                    }
                }
                InteractiveElements.Clear();
                Doors.Clear();
                foreach (var element in message.InteractiveElements)
                {
                    if (!element.OnCurrentMap)
                    {
                        continue;
                    }
                    InteractiveElements.Add(element.ElementId,
                                            new InteractiveElement((uint)element.ElementId, element.ElementTypeId,
                                                                   element.EnabledSkills.ToList(), element.DisabledSkills.ToList()));
                    var interactiveElement = element;
                    var listDoorSkillId    = new List <int>(new[] { 184, 183, 187, 198, 114 });
                    var listDoorTypeId     = new List <int>(new[] { -1, 128, 168, 16 });
                    if (!listDoorTypeId.Contains(interactiveElement.ElementTypeId) ||
                        interactiveElement.EnabledSkills.Count <= 0 ||
                        !listDoorSkillId.Contains((int)interactiveElement.EnabledSkills[0].SkillId))
                    {
                        continue;
                    }
                    foreach (var layer in ((API.Gamedata.D2p.Map)Data).Layers)
                    {
                        foreach (var cell in layer.Cells)
                        {
                            foreach (var layerElement in cell.Elements)
                            {
                                if (layerElement is GraphicalElement graphicalElement)
                                {
                                    if (graphicalElement.Identifier == interactiveElement.ElementId &&
                                        !Doors.ContainsKey(cell.CellId))
                                    {
                                        Doors.Add(cell.CellId,
                                                  new InteractiveElement((uint)element.ElementId, element.ElementTypeId,
                                                                         element.EnabledSkills.ToList(), element.DisabledSkills.ToList()));
                                    }
                                }
                            }
                        }
                    }
                }
            }

            UpdateMapControl();

            OnMapChanged();
        }
예제 #11
0
 public void RefreshDoors()
 {
     Doors.Clear();
     FetchDoorsAsync();
 }
예제 #12
0
 public void ResetRooms()
 {
     Rooms.Clear();
     Doors.Clear();
 }
예제 #13
0
        public void LoadRoom(string roomName)
        {
            Enemies.Clear();
            Blocks.Clear();
            Items.Clear();
            NPCs.Clear();
            Doors.Clear();
            Walls.Clear();
            HiddenItems.Clear();
            Dialogue = "";

            CurrentRoom = roomName;

            //moves Link to the bottom of the map to avoid issues where blocks would spawn on top of him
            //mygame.player.Position = new Vector2(6 * XSCALE + XOFFSET, 7 * YSCALE + YOFFSET);

            addWalls();

            XElement roomFile = XElement.Load("../../../../Content/Rooms/" + roomName + ".xml");

            if (roomFile.Descendants("Background").Count() > 0)
            {
                Console.WriteLine(roomFile.Descendants("Background").Count());
                if (roomFile.Element("Asset").Element("Background").Value == "RoomBowBackground")
                {
                    Background = BlockSpriteFactory.Instance.RoomBowBackground;
                }
                else if (roomFile.Element("Asset").Element("Background").Value == "BlackWithWallBackground")
                {
                    Background = BlockSpriteFactory.Instance.BlackWithWallBackground;
                }
            }
            else
            {
                Background = floorBaseWithWalls;
            }

            IEnumerable <XElement> loadedEnvironmentObjects = from item in roomFile.Descendants("Item")
                                                              where (string)item.Element("ObjectType") == "Environment"
                                                              select item;

            foreach (XElement environmentObject in loadedEnvironmentObjects)
            {
                AddEnvironmentObject(environmentObject);
            }
            IEnumerable <XElement> loadedEnemies = from item in roomFile.Descendants("Item")
                                                   where (string)item.Element("ObjectType") == "Enemy"
                                                   select item;

            foreach (XElement enemyObject in loadedEnemies)
            {
                AddEnemy(enemyObject);
                Thread.Sleep(20); //used so the random number generator for enemies don't have the same seed. It's time based and without this they have the same seed.
            }
            IEnumerable <XElement> loadedItems = from item in roomFile.Descendants("Item")
                                                 where (string)item.Element("ObjectType") == "Item"
                                                 select item;

            foreach (XElement itemObject in loadedItems)
            {
                AddItem(itemObject, Items);
            }

            IEnumerable <XElement> loadedHiddenItems = from item in roomFile.Descendants("Item")
                                                       where (string)item.Element("ObjectType") == "HiddenItem"
                                                       select item;

            foreach (XElement itemObject in loadedHiddenItems)
            {
                AddItem(itemObject, HiddenItems);
            }

            IEnumerable <XElement> loadedNPCs = from item in roomFile.Descendants("Item")
                                                where (string)item.Element("ObjectType") == "NPC"
                                                select item;

            foreach (XElement NPCObject in loadedNPCs)
            {
                AddNPC(NPCObject);
            }
            IEnumerable <XElement> loadedDoors = from item in roomFile.Descendants("Door")
                                                 select item;

            foreach (XElement DoorObject in loadedDoors)
            {
                AddDoor(DoorObject);
            }
        }