Package com.prineside.tdi2
Interface EntityFactory
- All Known Subinterfaces:
 Gate.Factory<T>,Item.Factory<T>,Tile.Factory<T>,Unit.Factory<T>
- All Known Implementing Classes:
 Ability.Factory,AbilityItem.AbilityItemFactory,AbilityTokenItem.AbilityTokenItemFactory,AcceleratorItem.AcceleratorItemFactory,AirFallExplosion.AirFallExplosionFactory,AirProjectile.AirProjectileFactory,AirTower.AirTowerFactory,ArmorBuff.ArmorBuffFactory,ArmoredEnemy.ArmoredEnemyFactory,AttackSpeedModifier.AttackSpeedModifierFactory,BalanceModifier.BalanceModifierFactory,BallLightningAbility.BallLightningAbilityFactory,BallLightningUnit.BallLightningUnitFactory,BarrierHealthGate.BarrierHealthGateFactory,BarrierTypeGate.BarrierTypeGateFactory,BasicProjectile.BasicProjectileFactory,BasicTower.BasicTowerFactory,BitDustItem.BitDustItemFactory,BlastTower.BlastTowerFactory,BlizzardAbility.BlizzardAbilityFactory,BlizzardBuff.BlizzardBuffFactory,BlueprintItem.BlueprintItemFactory,BonusCoinsBuff.BonusCoinsBuffFactory,BonusXpBuff.BonusXpBuffFactory,BossEnemy.BossEnemyFactory,BossTile.BossTileFactory,BountyModifier.BountyModifierFactory,BrootEnemy.BrootEnemyFactory,Buff.Factory,BuffProjectile.BuffProjectileFactory,BulletWallAbility.BulletWallAbilityFactory,BulletWallProjectile.MultishotProjectileFactory,BurnBuff.BurnBuffFactory,CannonExplosion.CannonExplosionFactory,CannonProjectile.CannonProjectileFactory,CannonTower.CannonTowerFactory,CaseItem.CaseItemFactory,CaseKeyItem.CaseKeyItemFactory,ChainLightningProjectile.ChainLightningProjectileFactory,ChainReactionBuff.ChainReactionBuffFactory,ConstructorBossEnemy.ConstructorBossBodyEnemyFactory,CoreTile.CoreTileFactory,CrusherTower.CrusherTowerFactory,DamageModifier.DamageModifierFactory,DatPaperItem.DatPaperItemFactory,DeathExplosionBuff.ExplosionChargeBuffFactory,DisorientedUnit.DisorientedUnitFactory,DoubleGainShardItem.DoubleGainShardItemFactory,DummyTile.DummyTileFactory,Enemy.Factory,EqualizerTile.EqualizerTileFactory,ExperienceModifier.ExperienceModifierFactory,Explosion.Factory,FastEnemy.FastEnemyFactory,FighterEnemy.FighterEnemyFactory,FireballAbility.FireballAbilityFactory,FireballExplosion.FireballExplosionFactory,FirestormAbility.FirestormAbilityFactory,FlamethrowerTower.FlamethrowerTowerFactory,FreezingBuff.FreezingBuffFactory,FreezingTower.FreezingTowerFactory,GameValueGlobalItem.GameValueGlobalItemFactory,GameValueLevelItem.GameValueLevelItemFactory,GameValueTile.GameValueTileFactory,Gate.Factory.AbstractFactory,GateItem.GateItemFactory,GaussTower.GaussTowerFactory,GenericEnemy.GenericEnemyFactory,GenericExplosion.GenericExplosionFactory,GreenPaperItem.GreenPaperItemFactory,HealerEnemy.HealerEnemyFactory,HeliEnemy.HeliEnemyFactory,IceFieldUnit.IceFieldUnitFactory,IcyEnemy.IcyEnemyFactory,InvulnerabilityBuff.InvulnerabilityBuffFactory,Item.Factory.AbstractFactory,JetEnemy.JetEnemyFactory,LaserProjectile.LaserProjectileFactory,LaserTower.LaserTowerFactory,LightEnemy.LightEnemyFactory,LoicAbility.LoicAbilityFactory,LoopAbility.RepeatAbilityFactory,LootBoostItem.LootBoostItemFactory,LuckyShotTokenItem.LuckyShotTokenItemFactory,MagnetAbility.MagnetAbilityFactory,MetaphorBossCreepEnemy.MetaphorBossCreepEnemyFactory,MetaphorBossEnemy.MetaphorBossEnemyFactory,MicrogunUnit.MicrogunUnitFactory,MineUnit.MineUnitFactory,MinigunTower.MinigunTowerFactory,MiningSpeedModifier.MiningSpeedModifierFactory,MissileExplosion.MissileExplosionFactory,MissileProjectile.MissileProjectileFactory,MissileTower.MissileTowerFactory,MobchainBossBodyEnemy.MobchainBossBodyEnemyFactory,MobchainBossCreepEnemy.MobchainBossCreepEnemyFactory,MobchainBossHeadEnemy.MobchainBossHeadEnemyFactory,Modifier.Factory,MultishotProjectile.MultishotProjectileFactory,MultishotTower.MultishotTowerFactory,NoBonusSystemPointsBuff.NoBonusSystemPointsBuffFactory,NoDamageBuff.NoDamageBuffFactory,NukeAbility.NukeAbilityFactory,OpenedResearchItem.OpenedResearchItemFactory,OverloadAbility.OverloadAbilityFactory,PlatformTile.SpaceTileFactory,PoisonBuff.PoisonBuffFactory,PowerModifier.PowerModifierFactory,PrestigeDustItem.PrestigeDustItemFactory,PrestigeTokenItem.PrestigeTokenItemFactory,Projectile.Factory,QuadTile.QuadTileFactory,RandomBarrierItem.RandomBarrierItemFactory,RandomTeleportItem.RandomTeleportItemFactory,RandomTileItem.RandomTileItemFactory,RarityBoostItem.RarityBoostItemFactory,RegenerationBuff.RegenerationBuffFactory,RegularEnemy.RegularEnemyFactory,ResearchTokenItem.ResearchTokenItemFactory,ResearchTokenUsedItem.ResearchTokenUsedItemFactory,ResourceItem.ResourceItemFactory,RoadTile.RoadTileFactory,ScriptTile.ScriptTileFactory,SearchModifier.SearchModifierFactory,SkillPointItem.SkillPointItemFactory,SlippingBuff.SlippingBuffFactory,SmokeBombAbility.SmokeBombAbilityFactory,SnakeBossBodyEnemy.SnakeBossBodyEnemyFactory,SnakeBossHeadEnemy.SnakeBossHeadEnemyFactory,SnakeBossTailEnemy.SnakeBossTailEnemyFactory,SniperTower.SniperTowerFactory,SnowballBuff.SnowballBuffFactory,SnowballUnit.SnowballUnitFactory,SourceTile.SourceTileFactory,SpawnTile.SpawnTileFactory,SplashProjectile.SplashProjectileFactory,SplashTower.SplashTowerFactory,SplinterProjectile.SplinterProjectileFactory,StarItem.StarItemFactory,StrongEnemy.StrongEnemyFactory,StunBuff.StunBuffFactory,TargetTile.TargetTileFactory,TeleportGate.TeleportGateFactory,TeslaTower.TeslaTowerFactory,ThrowBackBuff.BlastThrowBackBuffFactory,ThunderAbility.ThunderAbilityFactory,Tile.Factory.AbstractFactory,TileItem.TileItemFactory,Tower.Factory,ToxicEnemy.ToxicEnemyFactory,TrophyItem.TrophyItemFactory,Unit.Factory.BasicAbstractFactory,VenomProjectile.VenomProjectileFactory,VenomTower.VenomTowerFactory,VulnerabilityBuff.VulnerabilityBuffFactory,WindstormAbility.WindstormAbilityFactory,XmMusicTrackTile.XmMusicTrackTileFactory
public interface EntityFactory
Factories provide type-specific info and manage creation / destruction of entities
 Game (globally) can use them to show info about specific entity types (TowerType / EnemyType / AbilityType etc)
 Game state (single instance of one game) can also do that but can be modified with scripts
 - I don't like the fact Enums are used, they don't allow new types of entities
 - How do we handle global / local factories? We need 2 of them this way
 - Keeping factories in managers (global only) does not allow to modify them with scripts and makes it more difficult for multithreading / separation of headful and headless modes