/* * Copyright (c) Thomas Parker, 2009. * * This program is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. * * You should have received a copy of the GNU Lesser General Public License * along with this library; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA */ package pcgen.cdom.facet; import pcgen.cdom.facet.analysis.ChangeProfFacet; import pcgen.cdom.facet.analysis.LevelFacet; import pcgen.cdom.facet.input.ClassSkillListFacet; import pcgen.cdom.facet.input.DynamicFacet; import pcgen.cdom.facet.input.MasterUsableSkillFacet; import pcgen.cdom.facet.model.ActiveEqModFacet; import pcgen.cdom.facet.model.AlignmentFacet; import pcgen.cdom.facet.model.BioSetFacet; import pcgen.cdom.facet.model.CheckFacet; import pcgen.cdom.facet.model.ClassFacet; import pcgen.cdom.facet.model.ClassLevelFacet; import pcgen.cdom.facet.model.CompanionModFacet; import pcgen.cdom.facet.model.DeityFacet; import pcgen.cdom.facet.model.DomainFacet; import pcgen.cdom.facet.model.DynamicConsolidationFacet; import pcgen.cdom.facet.model.ExpandedCampaignFacet; import pcgen.cdom.facet.model.RaceFacet; import pcgen.cdom.facet.model.SimpleAbilityFacet; import pcgen.cdom.facet.model.SizeFacet; import pcgen.cdom.facet.model.SkillFacet; import pcgen.cdom.facet.model.StatFacet; import pcgen.cdom.facet.model.TemplateFacet; import pcgen.cdom.facet.model.VarScopedFacet; import pcgen.output.factory.CodeControlModelFactory; import pcgen.output.publish.OutputDB; public final class FacetInitialization { private FacetInitialization() { //Do not instantiate } private static boolean isInitialized = false; public static synchronized void initialize() { if (!isInitialized) { doInitialization(); isInitialized = true; } } private static void doInitialization() { doOtherInitialization(); doBridges(); TemplateFacet templateFacet = FacetLibrary.getFacet(TemplateFacet.class); ConditionalTemplateFacet conditionalTemplateFacet = FacetLibrary.getFacet(ConditionalTemplateFacet.class); RaceFacet raceFacet = FacetLibrary.getFacet(RaceFacet.class); ClassFacet classFacet = FacetLibrary.getFacet(ClassFacet.class); ClassLevelFacet classLevelFacet = FacetLibrary.getFacet(ClassLevelFacet.class); ExpandedCampaignFacet expandedCampaignFacet = FacetLibrary.getFacet(ExpandedCampaignFacet.class); EquipmentFacet equipmentFacet = FacetLibrary.getFacet(EquipmentFacet.class); EquippedEquipmentFacet equippedFacet = FacetLibrary.getFacet(EquippedEquipmentFacet.class); NaturalEquipmentFacet naturalEquipmentFacet = FacetLibrary.getFacet(NaturalEquipmentFacet.class); SourcedEquipmentFacet activeEquipmentFacet = FacetLibrary.getFacet(SourcedEquipmentFacet.class); ActiveEqModFacet activeEqModFacet = FacetLibrary.getFacet(ActiveEqModFacet.class); GlobalModifierFacet globalModifierFacet = FacetLibrary.getFacet(GlobalModifierFacet.class); AlignmentFacet alignmentFacet = FacetLibrary.getFacet(AlignmentFacet.class); BioSetFacet bioSetFacet = FacetLibrary.getFacet(BioSetFacet.class); BioSetTrackingFacet bioSetTrackingFacet = FacetLibrary.getFacet(BioSetTrackingFacet.class); CheckFacet checkFacet = FacetLibrary.getFacet(CheckFacet.class); DynamicFacet dynamicFacet = FacetLibrary.getFacet(DynamicFacet.class); DynamicConsolidationFacet dynamicConsolidationFacet = FacetLibrary.getFacet(DynamicConsolidationFacet.class); VarScopedFacet varScopedFacet = FacetLibrary.getFacet(VarScopedFacet.class); AutoLanguageFacet autoLangFacet = FacetLibrary.getFacet(AutoLanguageFacet.class); WeaponProfFacet weaponProfFacet = FacetLibrary.getFacet(WeaponProfFacet.class); LevelFacet levelFacet = FacetLibrary.getFacet(LevelFacet.class); SizeFacet sizeFacet = FacetLibrary.getFacet(SizeFacet.class); BonusChangeFacet bonusChangeFacet = FacetLibrary.getFacet(BonusChangeFacet.class); DeityFacet deityFacet = FacetLibrary.getFacet(DeityFacet.class); DomainFacet domainFacet = FacetLibrary.getFacet(DomainFacet.class); CompanionModFacet companionModFacet = FacetLibrary.getFacet(CompanionModFacet.class); StatFacet statFacet = FacetLibrary.getFacet(StatFacet.class); SkillFacet skillFacet = FacetLibrary.getFacet(SkillFacet.class); NaturalWeaponProfFacet nwpFacet = FacetLibrary.getFacet(NaturalWeaponProfFacet.class); UserEquipmentFacet userEquipmentFacet = FacetLibrary.getFacet(UserEquipmentFacet.class); NaturalWeaponFacet naturalWeaponFacet = FacetLibrary.getFacet(NaturalWeaponFacet.class); EquipSetFacet equipSetFacet = FacetLibrary.getFacet(EquipSetFacet.class); CDOMObjectConsolidationFacet cdomObjectFacet = FacetLibrary.getFacet(CDOMObjectConsolidationFacet.class); CDOMObjectSourceFacet cdomSourceFacet = FacetLibrary.getFacet(CDOMObjectSourceFacet.class); CharacterConsolidationFacet charObjectFacet = FacetLibrary.getFacet(CharacterConsolidationFacet.class); EquipmentConsolidationFacet eqObjectFacet = FacetLibrary.getFacet(EquipmentConsolidationFacet.class); GrantedAbilityFacet grantedAbilityFacet = FacetLibrary.getFacet(GrantedAbilityFacet.class); DirectAbilityFacet directAbilityFacet = FacetLibrary.getFacet(DirectAbilityFacet.class); DirectAbilityInputFacet directAbilityInputFacet = FacetLibrary.getFacet(DirectAbilityInputFacet.class); ConditionallyGrantedAbilityFacet cabFacet = FacetLibrary.getFacet(ConditionallyGrantedAbilityFacet.class); SimpleAbilityFacet simpleAbilityFacet = FacetLibrary.getFacet(SimpleAbilityFacet.class); AbilitySelectionApplication abilitySelectionApplication = FacetLibrary.getFacet(AbilitySelectionApplication.class); equipmentFacet.addDataFacetChangeListener(naturalEquipmentFacet); equippedFacet.addDataFacetChangeListener(activeEquipmentFacet); naturalEquipmentFacet.addDataFacetChangeListener(activeEquipmentFacet); activeEquipmentFacet.addDataFacetChangeListener(activeEqModFacet); nwpFacet.addDataFacetChangeListener(weaponProfFacet); dynamicFacet.addScopeFacetChangeListener(dynamicConsolidationFacet); charObjectFacet.addDataFacetChangeListener(naturalWeaponFacet); naturalWeaponFacet.addDataFacetChangeListener(equipmentFacet); naturalWeaponFacet.addDataFacetChangeListener(userEquipmentFacet); naturalWeaponFacet.addDataFacetChangeListener(equipSetFacet); classFacet.addLevelChangeListener(levelFacet); levelFacet.addLevelChangeListener(conditionalTemplateFacet); levelFacet.addLevelChangeListener(sizeFacet); grantedAbilityFacet.addDataFacetChangeListener(abilitySelectionApplication); grantedAbilityFacet.addDataFacetChangeListener(simpleAbilityFacet); directAbilityFacet.addDataFacetChangeListener(grantedAbilityFacet); directAbilityInputFacet.addDataFacetChangeListener(grantedAbilityFacet); cabFacet.addDataFacetChangeListener(grantedAbilityFacet); raceFacet.addDataFacetChangeListener(bioSetTrackingFacet); bonusChangeFacet.addBonusChangeListener(sizeFacet, "SIZEMOD", "NUMBER"); expandedCampaignFacet.addDataFacetChangeListener(charObjectFacet); //model done globalModifierFacet.addDataFacetChangeListener(charObjectFacet); //model done alignmentFacet.addDataFacetChangeListener(charObjectFacet); //model done bioSetFacet.addDataFacetChangeListener(charObjectFacet); //model done checkFacet.addDataFacetChangeListener(charObjectFacet); //model done classFacet.addDataFacetChangeListener(charObjectFacet); //model done deityFacet.addDataFacetChangeListener(charObjectFacet); //model done domainFacet.addDataFacetChangeListener(charObjectFacet); //model done raceFacet.addDataFacetChangeListener(charObjectFacet); //model done sizeFacet.addDataFacetChangeListener(charObjectFacet); skillFacet.addDataFacetChangeListener(charObjectFacet); //model done statFacet.addDataFacetChangeListener(charObjectFacet); //model done templateFacet.addDataFacetChangeListener(charObjectFacet); //model done // weaponProfList is still just a list of Strings // results.addAll(getWeaponProfList()); classLevelFacet.addDataFacetChangeListener(charObjectFacet); //model done simpleAbilityFacet.addDataFacetChangeListener(charObjectFacet); //model done companionModFacet.addDataFacetChangeListener(charObjectFacet); //model done activeEquipmentFacet.addDataFacetChangeListener(eqObjectFacet); activeEqModFacet.addDataFacetChangeListener(eqObjectFacet); eqObjectFacet.addDataFacetChangeListener(cdomObjectFacet); charObjectFacet.addDataFacetChangeListener(cdomObjectFacet); cdomObjectFacet.addDataFacetChangeListener(nwpFacet); cdomSourceFacet.addDataFacetChangeListener(autoLangFacet); charObjectFacet.addDataFacetChangeListener(varScopedFacet); dynamicConsolidationFacet.addDataFacetChangeListener(varScopedFacet); //model done } private static void doOtherInitialization() { OutputDB.registerMode("cc", new CodeControlModelFactory()); } private static void doBridges() { /* * Do dataset-level facets */ FacetLibrary.getFacet(CDOMWrapperInfoFacet.class); FacetLibrary.getFacet(ObjectWrapperFacet.class); FacetLibrary.getFacet(MasterSkillFacet.class); FacetLibrary.getFacet(MasterAvailableSpellFacet.class); FacetLibrary.getFacet(MasterUsableSkillFacet.class); FacetLibrary.getFacet(EquipmentTypeFacet.class); FacetLibrary.getFacet(ObjectWrapperFacet.class); FacetLibrary.getFacet(CDOMWrapperInfoFacet.class); FacetLibrary.getFacet(HiddenTypeFacet.class); FacetLibrary.getFacet(VariableLibraryFacet.class); FacetLibrary.getFacet(SolverFactoryFacet.class); FacetLibrary.getFacet(FormulaSetupFacet.class); /* * TODO These are required because they are "bridges" - meaning they * refer to others, but no one refers to them. Need to consider if these * need to be redesigned... */ FacetLibrary.getFacet(AgeSetKitFacet.class); FacetLibrary.getFacet(DomainSpellListFacet.class); FacetLibrary.getFacet(NaturalEquipSetFacet.class); FacetLibrary.getFacet(ShieldProfFacet.class); FacetLibrary.getFacet(ArmorProfFacet.class); FacetLibrary.getFacet(MonsterClassFacet.class); FacetLibrary.getFacet(KitChoiceFacet.class); FacetLibrary.getFacet(RegionChoiceFacet.class); FacetLibrary.getFacet(AddFacet.class); FacetLibrary.getFacet(RemoveFacet.class); FacetLibrary.getFacet(ModifierFacet.class); FacetLibrary.getFacet(RemoteModifierFacet.class); FacetLibrary.getFacet(CalcBonusFacet.class); FacetLibrary.getFacet(DomainSpellsFacet.class); FacetLibrary.getFacet(ObjectAdditionFacet.class); FacetLibrary.getFacet(AddLevelFacet.class); FacetLibrary.getFacet(ChooseDriverFacet.class); FacetLibrary.getFacet(AvailableSpellInputFacet.class); FacetLibrary.getFacet(KnownSpellInputFacet.class); FacetLibrary.getFacet(ClassSkillListFacet.class); FacetLibrary.getFacet(SpellListToAvailableSpellFacet.class); //This one is a just in case FacetLibrary.getFacet(ChangeProfFacet.class); //and others just in case... FacetLibrary.getFacet(ClassLevelChangeFacet.class); FacetLibrary.getFacet(UnconditionalTemplateFacet.class); } }