public ClassSelectionMenu(BaseClass clss, ArchetypeSelectionHandler handler, uint textId) : base(textId) { Class = clss; foreach (var archetype in ArchetypeMgr.Archetypes[(int)clss.Id]) { if (archetype != null) { var arche = archetype; // local reference AddItem(new GossipMenuItem(archetype.ToString(), convo => handler(convo, arche))); } } }
private static void AddClass(BaseClass clss) { BaseClasses[(int)clss.Id] = clss; }
public void FinalizeDataHolder() { Race = ArchetypeMgr.GetRace(RaceId); Class = ArchetypeMgr.GetClass(ClassId); if (Class == null || Race == null) { throw new ContentException("Could not load Archetype \"{0}\" - Invalid Class or race.", this); } var races = ArchetypeMgr.Archetypes[(uint)ClassId]; if (races == null) { ArchetypeMgr.Archetypes[(uint)ClassId] = races = new Archetype[WCellDef.RaceTypeLength]; } StartLocation = new WorldZoneLocation(StartMapId, StartPosition, StartZoneId); if (StartLocation.Map == null) { LogManager.GetCurrentClassLogger().Warn("Failed to initialize Archetype \"" + this + "\" - StartMap does not exist: " + StartMapId); //ArrayUtil.Set(ref RaceClassMgr.BaseRaces, (uint)Id, null); } else { if (StartLocation.ZoneTemplate == null) { LogManager.GetCurrentClassLogger().Warn("Failed to initialize Archetype \"" + this + "\" - StartZone \"" + StartZoneId + "\" does not exist in StartMap \"" + StartMapId + "\""); //ArrayUtil.Set(ref RaceClassMgr.BaseRaces, (uint)Id, null); } else { races[(uint)RaceId] = this; } } //get levelstats }