public Landblock(LandblockId id) { this.id = id; // initialize adjacency array this.adjacencies.Add(Adjacency.North, null); this.adjacencies.Add(Adjacency.NorthEast, null); this.adjacencies.Add(Adjacency.East, null); this.adjacencies.Add(Adjacency.SouthEast, null); this.adjacencies.Add(Adjacency.South, null); this.adjacencies.Add(Adjacency.SouthWest, null); this.adjacencies.Add(Adjacency.West, null); this.adjacencies.Add(Adjacency.NorthWest, null); // TODO: Load cell.dat contents // 1. landblock cell structure // 2. terrain data // TODO: Load portal.dat contents (as/if needed) // TODO: Load spawn data // TODO: load objects from world database such as lifestones, doors, player corpses, NPCs, Vendors var objects = DatabaseManager.World.GetObjectsByLandblock(this.id.Landblock); var factoryObjects = GenericObjectFactory.CreateWorldObjects(objects); factoryObjects.ForEach(fo => worldObjects.Add(fo.Guid, fo)); var creatures = DatabaseManager.World.GetCreaturesByLandblock(this.id.Landblock); foreach (var c in creatures) { Creature cwo = new Creature(c); worldObjects.Add(cwo.Guid, cwo); } }
public Landblock(LandblockId id) { this.id = id; UpdateStatus(LandBlockStatusFlag.IdleUnloaded); // initialize adjacency array adjacencies.Add(Adjacency.North, null); adjacencies.Add(Adjacency.NorthEast, null); adjacencies.Add(Adjacency.East, null); adjacencies.Add(Adjacency.SouthEast, null); adjacencies.Add(Adjacency.South, null); adjacencies.Add(Adjacency.SouthWest, null); adjacencies.Add(Adjacency.West, null); adjacencies.Add(Adjacency.NorthWest, null); UpdateStatus(LandBlockStatusFlag.IdleLoading); // TODO: Load cell.dat contents // 1. landblock cell structure // 2. terrain data // TODO: Load portal.dat contents (as/if needed) // TODO: Load spawn data // TODO: load objects from world database such as lifestones, doors, player corpses, NPCs, Vendors var objects = DatabaseManager.World.GetObjectsByLandblock(this.id.Landblock); var factoryObjects = GenericObjectFactory.CreateWorldObjects(objects); factoryObjects.ForEach(fo => worldObjects.Add(fo.Guid, fo)); // Load static creature spawns from DB var creatures = DatabaseManager.World.GetCreaturesByLandblock(this.id.Landblock); foreach (var c in creatures) { Creature cwo = new Creature(c); worldObjects.Add(cwo.Guid, cwo); } // Load generator creature spawns from DB var creatureGenerators = DatabaseManager.World.GetCreatureGeneratorsByLandblock(this.id.Landblock); foreach (var cg in creatureGenerators) { List <Creature> creatureList = MonsterFactory.SpawnCreaturesFromGenerator(cg); foreach (var c in creatureList) { worldObjects.Add(c.Guid, c); } } UpdateStatus(LandBlockStatusFlag.IdleLoaded); }