private void BuildWeapon(Entity tank, ThunderNode weaponNode)
        {
            Entity entity = weaponNode.Entity;

            entity.AddComponent <CooldownTimerComponent>();
            entity.AddComponent <DiscreteWeaponControllerComponent>();
            entity.AddComponent <WeaponShotComponent>();
            entity.AddComponent <VerticalSectorsTargetingComponent>();
            entity.AddComponent <DirectionEvaluatorComponent>();
            entity.AddComponent <DistanceAndAngleTargetEvaluatorComponent>();
            entity.AddComponent(new TargetCollectorComponent(new TargetCollector(tank), new TargetValidator(tank)));
        }
 public void BuildBot(NodeAddedEvent evt, AutopilotTankNode botTank, [Context, JoinByUser] ThunderNode weaponNode, [Context, JoinByUser] SingleNode <UserComponent> userNode)
 {
     this.BuildWeapon(botTank.Entity, weaponNode);
 }
 public void BuildSelf(NodeAddedEvent evt, SelfTankNode selfTank, [Context, JoinByUser] ThunderNode weaponNode, [JoinByUser] SingleNode <UserComponent> userNode)
 {
     this.BuildWeapon(selfTank.Entity, weaponNode);
 }
 public void AddTeamEvaluator(NodeAddedEvent evt, ThunderNode weaponNode, [JoinByBattle] SingleNode <TeamBattleComponent> battle)
 {
     weaponNode.Entity.AddComponent <TeamTargetEvaluatorComponent>();
 }