package_74 alternativa.tanks.game.weapons

This commit is contained in:
Pyogenics
2025-01-29 18:28:12 +00:00
parent 265c7f1cea
commit dd3607c71e
40 changed files with 256 additions and 255 deletions

View File

@@ -15,4 +15,5 @@ package_17 platform.clients.fp10.libraries.alternativaprotocol
package_20 alternativa.tanks.game.subsystems.eventsystem
package_22 alternativa.tanks.game.subsystems.inputsystem
package_26 alternativa.tanks.game.utils.objectpool
package_74 alternativa.tanks.game.weapons
package_100 alternativa.tanks.game.weapons.ammunition.plasma

View File

@@ -58,13 +58,13 @@ package alternativa.tanks
import package_72.name_264;
import package_72.name_295;
import package_73.name_293;
import package_74.class_14;
import package_74.name_240;
import package_74.name_263;
import package_74.name_283;
import package_74.name_286;
import package_74.name_307;
import package_74.name_327;
import alternativa.tanks.game.weapons.IGenericAmmunition;
import alternativa.tanks.game.weapons.SimpleTargetEvaluator;
import alternativa.tanks.game.weapons.InstantShotWeaponComponent;
import alternativa.tanks.game.weapons.EnergyShotWeaponComponent;
import alternativa.tanks.game.weapons.ContinuousActionGunPlatformComponent;
import alternativa.tanks.game.weapons.WeaponConst;
import alternativa.tanks.game.weapons.IWeaponDistanceWeakening;
import package_75.name_236;
import package_75.name_309;
import package_76.name_256;
@@ -739,10 +739,10 @@ package alternativa.tanks
var _loc18_:class_5 = null;
var _loc3_:Number = 10000000 / 3;
var _loc4_:name_256 = this.gameKernel.method_112().name_246().collisionDetector;
var _loc5_:name_240 = new name_240();
var _loc5_:SimpleTargetEvaluator = new SimpleTargetEvaluator();
var _loc6_:name_261 = new name_261(Math.PI / 9,20,Math.PI / 9,20,_loc4_,_loc5_);
_loc6_.name_310(this.gameKernel.method_112().name_246().collisionDetector);
_loc6_.name_303(new name_240());
_loc6_.name_303(new SimpleTargetEvaluator());
var _loc7_:Vector.<name_129> = this.var_64.getFrames("thunder/explosion");
var _loc8_:name_44 = this.gameKernel.name_5();
for each(_loc9_ in _loc7_)
@@ -763,8 +763,8 @@ package alternativa.tanks
_loc8_.method_29(_loc12_);
_loc8_.method_29(_loc13_);
name_270.init(_loc12_,_loc13_);
var _loc14_:class_14 = new name_269(this.gameKernel,1000,10000000,200,100,0.5,null,_loc10_);
var _loc15_:name_263 = new name_263(1000,_loc3_,_loc6_,_loc14_,new name_274(this.config.soundsLibrary.name_297("smoky/shot")),true);
var _loc14_:IGenericAmmunition = new name_269(this.gameKernel,1000,10000000,200,100,0.5,null,_loc10_);
var _loc15_:InstantShotWeaponComponent = new InstantShotWeaponComponent(1000,_loc3_,_loc6_,_loc14_,new name_274(this.config.soundsLibrary.name_297("smoky/shot")),true);
_loc15_.name_308 = true;
param1.name_60(_loc15_);
var _loc16_:BitmapData = new BitmapData(20,20,false,0);
@@ -781,10 +781,10 @@ package alternativa.tanks
var _loc11_:int = 0;
var _loc18_:class_5 = null;
var _loc4_:name_256 = this.gameKernel.method_112().name_246().collisionDetector;
var _loc5_:name_240 = new name_240();
var _loc5_:SimpleTargetEvaluator = new SimpleTargetEvaluator();
var _loc6_:name_261 = new name_261(Math.PI / 9,20,Math.PI / 9,20,_loc4_,_loc5_);
_loc6_.name_310(this.gameKernel.method_112().name_246().collisionDetector);
_loc6_.name_303(new name_240());
_loc6_.name_303(new SimpleTargetEvaluator());
var _loc7_:Vector.<name_129> = this.var_64.getFrames("thunder/explosion");
var _loc8_:name_44 = this.gameKernel.name_5();
for each(_loc9_ in _loc7_)
@@ -805,8 +805,8 @@ package alternativa.tanks
_loc8_.method_29(_loc12_);
_loc8_.method_29(_loc13_);
name_270.init(_loc12_,_loc13_);
var _loc14_:class_14 = new name_269(this.gameKernel,1000,10000000,200,100,0.5,null,_loc10_);
var _loc15_:name_263 = new name_263(1000,3333333.3333333335,_loc6_,_loc14_,new name_274(this.config.soundsLibrary.name_297("thunder/shot")),true);
var _loc14_:IGenericAmmunition = new name_269(this.gameKernel,1000,10000000,200,100,0.5,null,_loc10_);
var _loc15_:InstantShotWeaponComponent = new InstantShotWeaponComponent(1000,3333333.3333333335,_loc6_,_loc14_,new name_274(this.config.soundsLibrary.name_297("thunder/shot")),true);
_loc15_.name_308 = true;
param1.name_60(_loc15_);
var _loc16_:BitmapData = new BitmapData(20,20,false,0);
@@ -826,10 +826,10 @@ package alternativa.tanks
private function createEnergyGun(param1:Entity) : void
{
var _loc9_:name_256 = this.gameKernel.method_112().name_246().collisionDetector;
var _loc10_:name_240 = new name_240();
var _loc10_:SimpleTargetEvaluator = new SimpleTargetEvaluator();
var _loc11_:name_280 = new name_280(Math.PI / 4,20,Math.PI / 4,20,100,_loc9_,_loc10_);
var _loc13_:Number = name_307.BASE_FORCE;
var _loc14_:name_327 = new name_267(2000,4000,0.5);
var _loc13_:Number = WeaponConst.BASE_FORCE;
var _loc14_:IWeaponDistanceWeakening = new name_267(2000,4000,0.5);
var _loc15_:BitmapData = this.config.var_37.name_244("plasma/charge") as BitmapData;
var _loc16_:Vector.<BitmapData> = name_251.name_272(_loc15_,_loc15_.height);
var _loc17_:Vector.<class_4> = this.getMaterialStrip(_loc16_);
@@ -840,7 +840,7 @@ package alternativa.tanks
var _loc22_:name_349 = new PlasmaRoundEffectsFactory(this.gameKernel,_loc17_,_loc19_,_loc20_);
var _loc23_:name_296 = new name_296(50,2000,100,_loc13_,_loc14_,_loc22_,null);
param1.name_60(_loc23_);
var _loc24_:name_283 = new name_283(1000,1000,1000,1000,0,8000,_loc11_,null,true);
var _loc24_:EnergyShotWeaponComponent = new EnergyShotWeaponComponent(1000,1000,1000,1000,0,8000,_loc11_,null,true);
param1.name_60(_loc24_);
var _loc25_:BitmapData = new BitmapData(20,20,false,0);
_loc25_.perlinNoise(20,20,3,13,false,true);
@@ -851,7 +851,7 @@ package alternativa.tanks
private function createContinuousActionGun(param1:Entity) : void
{
var _loc5_:name_286 = new name_286(1000,1,15,true);
var _loc5_:ContinuousActionGunPlatformComponent = new ContinuousActionGunPlatformComponent(1000,1,15,true);
param1.name_60(_loc5_);
var _loc7_:Number = 30 * Math.PI / 180;
var _loc10_:name_262 = this.getFlamethrowerSFXData();
@@ -864,7 +864,7 @@ package alternativa.tanks
_loc16_.method_29(_loc18_);
name_265.init(_loc17_,_loc18_);
var _loc19_:name_256 = this.gameKernel.method_112().name_246().collisionDetector;
var _loc20_:name_326 = name_240.INSTANCE;
var _loc20_:name_326 = SimpleTargetEvaluator.INSTANCE;
var _loc21_:name_282 = new name_282(3000,_loc7_,10,10,_loc19_,_loc20_);
var _loc22_:name_287 = new name_287(this.config.soundsLibrary.name_297("flamethrower/shot"));
var _loc23_:name_281 = new name_281(1000,100,_loc21_,_loc22_,true,false);
@@ -1181,8 +1181,8 @@ import package_71.name_234;
import package_72.class_12;
import package_72.name_239;
import package_73.class_13;
import package_74.class_14;
import package_74.name_233;
import alternativa.tanks.game.weapons.IGenericAmmunition;
import alternativa.tanks.game.weapons.IGenericRound;
import package_75.class_15;
import package_76.name_235;
import package_87.name_267;
@@ -1229,7 +1229,7 @@ class DummyTurretCallback implements class_10
}
}
class PointHitRoundAmmo implements class_14
class PointHitRoundAmmo implements IGenericAmmunition
{
private var impactForce:Number;
@@ -1254,7 +1254,7 @@ class PointHitRoundAmmo implements class_14
this.weaponHitEffects = new WeaponHitEffects(null,_loc2_,param1);
}
public function getRound() : name_233
public function getRound() : IGenericRound
{
return new name_304(this.impactForce,this.weaponDistanceWeakening,this.weaponHitEffects);
}

View File

@@ -11,7 +11,7 @@ package alternativa.tanks.game.usertitle.component
import package_45.name_182;
import package_46.name_194;
import package_71.name_252;
import package_74.class_25;
import alternativa.tanks.game.weapons.IWeapon;
import package_75.name_236;
public class name_245 extends EntityComponent implements name_82
@@ -24,7 +24,7 @@ package alternativa.tanks.game.usertitle.component
private var chassisComponent:name_236;
private var var_442:class_25;
private var var_442:IWeapon;
private var localPlayer:Boolean;
@@ -76,7 +76,7 @@ package alternativa.tanks.game.usertitle.component
override public function initComponent() : void
{
this.chassisComponent = name_236(entity.getComponentStrict(name_236));
this.var_442 = class_25(entity.getComponent(class_25));
this.var_442 = IWeapon(entity.getComponent(IWeapon));
this.var_424 = new name_488();
this.var_506 = new name_609(this);
this.var_424.name_486(entity,name_252.SET_ACTIVATING_STATE,this.var_506);

View File

@@ -1,4 +1,4 @@
package package_74
package alternativa.tanks.game.weapons
{
import alternativa.tanks.game.EntityComponent;
import alternativa.tanks.game.GameKernel;
@@ -10,7 +10,7 @@ package package_74
import alternativa.osgi.OSGi;
import package_71.name_252;
public class name_286 extends EntityComponent implements class_25, class_24, name_477
public class ContinuousActionGunPlatformComponent extends EntityComponent implements IWeapon, IBasicWeapon, name_477
{
private var energyCapacity:Number;
@@ -18,7 +18,7 @@ package package_74
private var energyRecoveryRate:Number;
private var var_442:name_508;
private var var_442:IContinuousActionWeapon;
private var baseTime:Number;
@@ -36,7 +36,7 @@ package package_74
private var var_440:name_184;
public function name_286(energyCapacity:Number, energyDrainRate:Number, energyRecoveryRate:Number, isLocal:Boolean)
public function ContinuousActionGunPlatformComponent(energyCapacity:Number, energyDrainRate:Number, energyRecoveryRate:Number, isLocal:Boolean)
{
super();
this.energyCapacity = energyCapacity;
@@ -60,30 +60,30 @@ package package_74
{
if(this.var_438)
{
this.method_397().log("gun","ContinuousActionGunPlatformComponent::enabled() activating");
this.method_402();
this.method_403();
this.getLogger().log("gun","ContinuousActionGunPlatformComponent::enabled() activating");
this.activate();
this.enableLogic();
}
}
else
{
this.method_397().log("gun","ContinuousActionGunPlatformComponent::enabled() deactivating");
this.method_399();
this.method_401();
this.getLogger().log("gun","ContinuousActionGunPlatformComponent::enabled() deactivating");
this.deactivate();
this.disableLogic();
}
}
}
override public function initComponent() : void
{
this.var_442 = name_508(entity.getComponentStrict(name_508));
this.var_442 = IContinuousActionWeapon(entity.getComponentStrict(IContinuousActionWeapon));
if(this.isLocal)
{
entity.addEventHandler(name_252.SET_ACTIVE_STATE,this.setActiveState);
entity.addEventHandler(name_252.SET_ACTIVATING_STATE,this.setActivatingState);
entity.addEventHandler(name_252.SET_DEAD_STATE,this.method_400);
entity.addEventHandler(name_252.SET_RESPAWN_STATE,this.method_400);
entity.addEventHandler(GameEvents.BATTLE_FINISHED,this.method_400);
entity.addEventHandler(name_252.SET_DEAD_STATE,this.setInactiveState);
entity.addEventHandler(name_252.SET_RESPAWN_STATE,this.setInactiveState);
entity.addEventHandler(GameEvents.BATTLE_FINISHED,this.setInactiveState);
}
}
@@ -101,17 +101,17 @@ package package_74
public function method_396() : Number
{
return this.method_398(name_182.timeSeconds,this.var_437) / this.energyCapacity;
return this.getCurrentEnergy(name_182.timeSeconds,this.var_437) / this.energyCapacity;
}
public function method_394() : void
{
if(!this.var_438)
{
this.method_397().log("gun","ContinuousActionGunPlatformComponent::pullTrigger()");
this.getLogger().log("gun","ContinuousActionGunPlatformComponent::pullTrigger()");
this.var_438 = true;
this.method_402();
this.method_403();
this.activate();
this.enableLogic();
}
}
@@ -119,14 +119,14 @@ package package_74
{
if(this.var_438)
{
this.method_397().log("gun","ContinuousActionGunPlatformComponent::releaseTrigger()");
this.getLogger().log("gun","ContinuousActionGunPlatformComponent::releaseTrigger()");
this.var_438 = false;
this.method_399();
this.method_401();
this.deactivate();
this.disableLogic();
}
}
private function method_397() : name_160
private function getLogger() : name_160
{
return name_160(OSGi.name_8().name_30(name_160));
}
@@ -137,19 +137,19 @@ package package_74
public function runLogic() : void
{
var currentEnergy:Number = this.method_398(name_182.timeSeconds,this.var_437);
var currentEnergy:Number = this.getCurrentEnergy(name_182.timeSeconds,this.var_437);
if(currentEnergy > 0)
{
this.var_442.update();
}
else
{
this.method_399();
this.method_401();
this.deactivate();
this.disableLogic();
}
}
private function method_398(time:Number, active:Boolean) : Number
private function getCurrentEnergy(time:Number, active:Boolean) : Number
{
var energy:Number = NaN;
if(active)
@@ -171,7 +171,7 @@ package package_74
return energy;
}
private function method_403() : void
private function enableLogic() : void
{
if(!this.var_441 && this.var_439)
{
@@ -180,7 +180,7 @@ package package_74
}
}
private function method_401() : void
private function disableLogic() : void
{
if(this.var_441)
{
@@ -189,7 +189,7 @@ package package_74
}
}
private function method_402() : void
private function activate() : void
{
var now:Number = NaN;
var currentEnergy:Number = NaN;
@@ -198,12 +198,12 @@ package package_74
this.var_437 = true;
this.var_442.start();
now = name_182.timeSeconds;
currentEnergy = this.method_398(now,false);
currentEnergy = this.getCurrentEnergy(now,false);
this.baseTime = now - (this.energyCapacity - currentEnergy) / this.energyDrainRate;
}
}
private function method_399() : void
private function deactivate() : void
{
var now:Number = NaN;
if(this.var_437)
@@ -211,7 +211,7 @@ package package_74
this.var_437 = false;
this.var_442.stop();
now = name_182.timeSeconds;
this.baseTime = now - this.method_398(now,true) / this.energyRecoveryRate;
this.baseTime = now - this.getCurrentEnergy(now,true) / this.energyRecoveryRate;
}
}
@@ -220,7 +220,7 @@ package package_74
this.name_308 = true;
}
private function method_400(eventType:String, eventData:*) : void
private function setInactiveState(eventType:String, eventData:*) : void
{
this.name_308 = false;
}

View File

@@ -0,0 +1,15 @@
package alternativa.tanks.game.weapons
{
public class EnergyShotType
{
public static const NORMAL_SHOT:EnergyShotType = new EnergyShotType();
public static const CLOSE_SHOT:EnergyShotType = new EnergyShotType();
public function EnergyShotType()
{
super();
}
}
}

View File

@@ -1,4 +1,4 @@
package package_74
package alternativa.tanks.game.weapons
{
import alternativa.tanks.game.EntityComponent;
import alternativa.tanks.game.GameKernel;
@@ -18,7 +18,7 @@ package package_74
import package_90.name_273;
import package_92.name_271;
public class name_283 extends EntityComponent implements class_24, class_25, name_477
public class EnergyShotWeaponComponent extends EntityComponent implements IBasicWeapon, IWeapon, name_477
{
private static const COLLISION_MASK:int = name_257.STATIC | name_257.WEAPON;
@@ -50,9 +50,9 @@ package package_74
private var targetingSystem:name_622;
private var ammunition:class_23;
private var ammunition:IEnergyAmmunition;
private var callback:name_621;
private var callback:IEnergyShotWeaponCallback;
private var isActive:Boolean;
@@ -82,7 +82,7 @@ package package_74
private var barrelIndex:int;
public function name_283(energyCapacity:Number, energyPerShot:Number, energyRechargeRate:Number, reloadTime:int, recoilForce:Number, maxRange:Number, targetingSystem:name_622, callback:name_621, isActive:Boolean)
public function EnergyShotWeaponComponent(energyCapacity:Number, energyPerShot:Number, energyRechargeRate:Number, reloadTime:int, recoilForce:Number, maxRange:Number, targetingSystem:name_622, callback:IEnergyShotWeaponCallback, isActive:Boolean)
{
super();
this.energyCapacity = energyCapacity;
@@ -96,7 +96,7 @@ package package_74
this.isActive = isActive;
}
public function method_383(callback:name_621) : void
public function method_383(callback:IEnergyShotWeaponCallback) : void
{
this.callback = callback;
}
@@ -111,14 +111,14 @@ package package_74
this.var_445 = class_15(entity.getComponentStrict(class_15));
this.chassisComponent = name_236(entity.getComponentStrict(name_236));
this.var_447 = class_26(entity.getComponentStrict(class_26));
this.ammunition = class_23(entity.getComponentStrict(class_23));
this.ammunition = IEnergyAmmunition(entity.getComponentStrict(IEnergyAmmunition));
if(this.isActive)
{
entity.addEventHandler(name_252.SET_ACTIVE_STATE,this.setActiveState);
entity.addEventHandler(name_252.SET_ACTIVATING_STATE,this.method_400);
entity.addEventHandler(name_252.SET_DEAD_STATE,this.method_400);
entity.addEventHandler(name_252.SET_RESPAWN_STATE,this.method_400);
entity.addEventHandler(GameEvents.BATTLE_FINISHED,this.method_400);
entity.addEventHandler(name_252.SET_ACTIVATING_STATE,this.setInactiveState);
entity.addEventHandler(name_252.SET_DEAD_STATE,this.setInactiveState);
entity.addEventHandler(name_252.SET_RESPAWN_STATE,this.setInactiveState);
entity.addEventHandler(GameEvents.BATTLE_FINISHED,this.setInactiveState);
}
}
@@ -141,7 +141,7 @@ package package_74
this.var_438 = true;
if(this.var_439)
{
this.method_403();
this.enableLogic();
}
}
}
@@ -151,7 +151,7 @@ package package_74
if(this.var_438)
{
this.var_438 = false;
this.method_401();
this.disableLogic();
}
}
@@ -162,7 +162,7 @@ package package_74
public function method_396() : Number
{
return this.method_398(name_182.time,this.baseTime) / this.energyCapacity;
return this.getCurrentEnergy(name_182.time,this.baseTime) / this.energyCapacity;
}
public function runLogic() : void
@@ -171,10 +171,10 @@ package package_74
var shotId:int = 0;
var shooterBody:name_271 = null;
var collisionDetector:name_256 = null;
var shotType:name_496 = null;
var round:name_233 = null;
var shotType:EnergyShotType = null;
var round:IGenericRound = null;
var now:int = name_182.time;
var currentEnergy:Number = this.method_398(now,this.baseTime);
var currentEnergy:Number = this.getCurrentEnergy(now,this.baseTime);
if(now >= this.var_446 && currentEnergy >= this.energyPerShot)
{
this.var_446 = now + this.reloadTime;
@@ -188,16 +188,16 @@ package package_74
filter.body = shooterBody;
if(collisionDetector.raycast(barrelOrigin,gunDirection,COLLISION_MASK,barrelLength + 0.01,filter,rayHit))
{
shotType = name_496.CLOSE_SHOT;
shotType = EnergyShotType.CLOSE_SHOT;
shotDirection.copy(gunDirection);
}
else
{
shotType = name_496.NORMAL_SHOT;
shotType = EnergyShotType.NORMAL_SHOT;
this.targetingSystem.name_624(shooterBody,muzzlePosition,gunDirection,gunElevationAxis,this.maxRange,shotDirection);
}
filter.body = null;
this.method_415(shotType,this.barrelIndex,barrelOrigin,muzzlePosition,gunDirection,gunElevationAxis);
this.doShowShotEffects(shotType,this.barrelIndex,barrelOrigin,muzzlePosition,gunDirection,gunElevationAxis);
if(this.callback != null)
{
this.callback.name_623(shotId,shotType,shotDirection,this.barrelIndex);
@@ -208,14 +208,14 @@ package package_74
}
}
public function method_372(shotId:int, shotType:name_496, shotDirection:name_194, barrelIndex:int) : void
public function method_372(shotId:int, shotType:EnergyShotType, shotDirection:name_194, barrelIndex:int) : void
{
var shooterBody:name_271 = this.chassisComponent.getBody();
var barrelLength:Number = Number(this.var_445.getBarrelLength(barrelIndex));
this.var_445.getGunData(barrelIndex,barrelOrigin,gunDirection,gunElevationAxis);
muzzlePosition.copy(barrelOrigin).method_362(barrelLength,gunDirection);
this.method_415(shotType,barrelIndex,barrelOrigin,muzzlePosition,gunDirection,gunElevationAxis);
var round:name_233 = this.ammunition.getRound(shotType,this.maxRange);
this.doShowShotEffects(shotType,barrelIndex,barrelOrigin,muzzlePosition,gunDirection,gunElevationAxis);
var round:IGenericRound = this.ammunition.getRound(shotType,this.maxRange);
round.method_372(this.gameKernel,shotId,shooterBody,barrelOrigin,barrelLength,shotDirection,muzzlePosition);
}
@@ -233,21 +233,21 @@ package package_74
{
if(this.var_438)
{
this.method_403();
this.enableLogic();
}
}
else
{
this.method_401();
this.disableLogic();
}
}
}
private function method_415(shotType:name_496, barrelIndex:int, barrelOrigin:name_194, muzzlePosition:name_194, gunDirection:name_194, gunElevationAxis:name_194) : void
private function doShowShotEffects(shotType:EnergyShotType, barrelIndex:int, barrelOrigin:name_194, muzzlePosition:name_194, gunDirection:name_194, gunElevationAxis:name_194) : void
{
recoilForceVector.copy(gunDirection).scale(-this.recoilForce);
this.chassisComponent.getBody().name_525(barrelOrigin,recoilForceVector);
if(shotType == name_496.NORMAL_SHOT)
if(shotType == EnergyShotType.NORMAL_SHOT)
{
this.var_447.method_411(barrelIndex,barrelOrigin,muzzlePosition,gunDirection,gunElevationAxis);
}
@@ -258,12 +258,12 @@ package package_74
this.name_308 = true;
}
private function method_400(eventType:String, eventData:*) : void
private function setInactiveState(eventType:String, eventData:*) : void
{
this.name_308 = false;
}
private function method_403() : void
private function enableLogic() : void
{
if(!this.var_441)
{
@@ -272,7 +272,7 @@ package package_74
}
}
private function method_401() : void
private function disableLogic() : void
{
if(this.var_441)
{
@@ -281,7 +281,7 @@ package package_74
}
}
private function method_398(time:int, baseTime:int) : Number
private function getCurrentEnergy(time:int, baseTime:int) : Number
{
var energy:Number = 0.001 * (time - baseTime) * this.energyRechargeRate;
if(energy < 0)

View File

@@ -1,6 +1,6 @@
package package_74
package alternativa.tanks.game.weapons
{
public interface class_24
public interface IBasicWeapon
{
function method_394() : void;

View File

@@ -1,6 +1,6 @@
package package_74
package alternativa.tanks.game.weapons
{
public interface name_508
public interface IContinuousActionWeapon
{
function start() : void;

View File

@@ -0,0 +1,8 @@
package alternativa.tanks.game.weapons
{
public interface IEnergyAmmunition
{
function getRound(param1:EnergyShotType, param2:Number) : IGenericRound;
}
}

View File

@@ -0,0 +1,10 @@
package alternativa.tanks.game.weapons
{
import package_46.name_194;
public interface IEnergyShotWeaponCallback
{
function name_623(param1:int, param2:EnergyShotType, param3:name_194, param4:int) : void;
}
}

View File

@@ -0,0 +1,8 @@
package alternativa.tanks.game.weapons
{
public interface IGenericAmmunition
{
function getRound() : IGenericRound;
}
}

View File

@@ -1,10 +1,10 @@
package package_74
package alternativa.tanks.game.weapons
{
import alternativa.tanks.game.GameKernel;
import package_46.name_194;
import package_92.name_271;
public interface name_233
public interface IGenericRound
{
function method_372(param1:GameKernel, param2:int, param3:name_271, param4:name_194, param5:Number, param6:name_194, param7:name_194) : void;
}

View File

@@ -1,9 +1,9 @@
package package_74
package alternativa.tanks.game.weapons
{
import package_46.name_194;
import package_92.name_271;
public interface name_524
public interface IGenericTargetingSystem
{
function name_527(param1:name_271, param2:name_194, param3:name_194, param4:name_194, param5:Number, param6:name_194, param7:Number, param8:name_194) : void;
}

View File

@@ -0,0 +1,8 @@
package alternativa.tanks.game.weapons
{
public interface IInstantShotWeaponCallback
{
function name_526() : void;
}
}

View File

@@ -0,0 +1,8 @@
package alternativa.tanks.game.weapons
{
public interface IWeapon
{
function method_396() : Number;
}
}

View File

@@ -1,6 +1,6 @@
package package_74
package alternativa.tanks.game.weapons
{
public interface name_327
public interface IWeaponDistanceWeakening
{
function name_554(param1:Number) : Number;

View File

@@ -1,4 +1,4 @@
package package_74
package alternativa.tanks.game.weapons
{
import alternativa.tanks.game.EntityComponent;
import alternativa.tanks.game.GameKernel;
@@ -14,7 +14,7 @@ package package_74
import package_75.name_236;
import package_92.name_271;
public class name_263 extends EntityComponent implements class_25, class_24, name_477
public class InstantShotWeaponComponent extends EntityComponent implements IWeapon, IBasicWeapon, name_477
{
private static var barrelOrigin:name_194 = new name_194();
@@ -34,11 +34,11 @@ package package_74
private var recoilForce:Number;
private var targetingSystem:name_524;
private var targetingSystem:IGenericTargetingSystem;
private var ammunition:class_14;
private var ammunition:IGenericAmmunition;
private var callback:name_523;
private var callback:IInstantShotWeaponCallback;
private var var_446:int;
@@ -62,7 +62,7 @@ package package_74
private var isActive:Boolean;
public function name_263(reloadTime:int, recoilForce:Number, targetingSystem:name_524, ammunition:class_14, callback:name_523, isActive:Boolean)
public function InstantShotWeaponComponent(reloadTime:int, recoilForce:Number, targetingSystem:IGenericTargetingSystem, ammunition:IGenericAmmunition, callback:IInstantShotWeaponCallback, isActive:Boolean)
{
super();
this.reloadTime = reloadTime;
@@ -81,10 +81,10 @@ package package_74
if(this.isActive)
{
entity.addEventHandler(name_252.SET_ACTIVE_STATE,this.setActiveState);
entity.addEventHandler(name_252.SET_ACTIVATING_STATE,this.method_400);
entity.addEventHandler(name_252.SET_DEAD_STATE,this.method_400);
entity.addEventHandler(name_252.SET_RESPAWN_STATE,this.method_400);
entity.addEventHandler(GameEvents.BATTLE_FINISHED,this.method_400);
entity.addEventHandler(name_252.SET_ACTIVATING_STATE,this.setInactiveState);
entity.addEventHandler(name_252.SET_DEAD_STATE,this.setInactiveState);
entity.addEventHandler(name_252.SET_RESPAWN_STATE,this.setInactiveState);
entity.addEventHandler(GameEvents.BATTLE_FINISHED,this.setInactiveState);
}
}
@@ -93,7 +93,7 @@ package package_74
this.name_308 = true;
}
private function method_400(eventType:String, eventData:*) : void
private function setInactiveState(eventType:String, eventData:*) : void
{
this.name_308 = false;
}
@@ -123,7 +123,7 @@ package package_74
this.var_438 = true;
if(this.var_439)
{
this.method_403();
this.enableLogic();
}
}
}
@@ -133,7 +133,7 @@ package package_74
if(this.var_438)
{
this.var_438 = false;
this.method_401();
this.disableLogic();
}
}
@@ -156,11 +156,11 @@ package package_74
this.var_445.getGunData(BARREL_INDEX,barrelOrigin,gunDirection,gunElevationAxis);
var barrelLength:Number = Number(this.var_445.getBarrelLength(BARREL_INDEX));
muzzlePosition.copy(barrelOrigin).method_362(barrelLength,gunDirection);
this.method_415(barrelOrigin,muzzlePosition,gunDirection,gunElevationAxis);
this.doShowShotEffects(barrelOrigin,muzzlePosition,gunDirection,gunElevationAxis);
var shotId:int = this.var_448++;
var shooterBody:name_271 = this.chassisComponent.getBody();
this.targetingSystem.name_527(shooterBody,muzzlePosition,barrelOrigin,gunDirection,barrelLength,gunElevationAxis,name_501.BIG_VALUE,shotDirection);
var round:name_233 = this.ammunition.getRound();
var round:IGenericRound = this.ammunition.getRound();
round.method_372(this.gameKernel,shotId,shooterBody,barrelOrigin,barrelLength,shotDirection,muzzlePosition);
}
@@ -178,12 +178,12 @@ package package_74
{
if(this.var_438)
{
this.method_403();
this.enableLogic();
}
}
else
{
this.method_401();
this.disableLogic();
}
}
}
@@ -192,17 +192,17 @@ package package_74
{
this.var_445.getGunData(BARREL_INDEX,barrelOrigin,gunDirection,gunElevationAxis);
muzzlePosition.copy(barrelOrigin).method_362(this.var_445.getBarrelLength(BARREL_INDEX),gunDirection);
this.method_415(barrelOrigin,muzzlePosition,gunDirection,gunElevationAxis);
this.doShowShotEffects(barrelOrigin,muzzlePosition,gunDirection,gunElevationAxis);
}
private function method_415(barrelOrigin:name_194, muzzlePosition:name_194, gunDirection:name_194, gunElevationAxis:name_194) : void
private function doShowShotEffects(barrelOrigin:name_194, muzzlePosition:name_194, gunDirection:name_194, gunElevationAxis:name_194) : void
{
recoilForceVector.copy(gunDirection).scale(-this.recoilForce);
this.chassisComponent.getBody().name_525(barrelOrigin,recoilForceVector);
this.var_447.method_411(BARREL_INDEX,barrelOrigin,muzzlePosition,gunDirection,gunElevationAxis);
}
private function method_403() : void
private function enableLogic() : void
{
if(!this.var_441)
{
@@ -211,7 +211,7 @@ package package_74
}
}
private function method_401() : void
private function disableLogic() : void
{
if(this.var_441)
{

View File

@@ -1,13 +1,13 @@
package package_74
package alternativa.tanks.game.weapons
{
import package_79.name_326;
import package_92.name_271;
public class name_240 implements name_326
public class SimpleTargetEvaluator implements name_326
{
public static const INSTANCE:name_240 = new name_240();
public static const INSTANCE:SimpleTargetEvaluator = new SimpleTargetEvaluator();
public function name_240()
public function SimpleTargetEvaluator()
{
super();
}

View File

@@ -0,0 +1,13 @@
package alternativa.tanks.game.weapons
{
public class WeaponConst
{
public static const BASE_FORCE:Number = 5000000;
public function WeaponConst()
{
super();
}
}
}

View File

@@ -1,9 +1,9 @@
package package_74
package alternativa.tanks.game.weapons
{
import package_46.name_194;
import package_92.name_271;
public class name_553
public class WeaponHit
{
public var distance:Number;
@@ -15,7 +15,7 @@ package package_74
public var normal:name_194 = new name_194();
public function name_553()
public function WeaponHit()
{
super();
}

View File

@@ -5,16 +5,16 @@ package package_101
import package_27.name_501;
import package_46.name_194;
import package_72.class_12;
import package_74.name_233;
import package_74.name_327;
import package_74.name_553;
import alternativa.tanks.game.weapons.IGenericRound;
import alternativa.tanks.game.weapons.IWeaponDistanceWeakening;
import alternativa.tanks.game.weapons.WeaponHit;
import package_76.name_256;
import package_86.name_257;
import package_86.name_540;
import package_90.name_273;
import package_92.name_271;
public class name_304 implements name_233
public class name_304 implements IGenericRound
{
private static const COLLISION_MASK:int = name_257.STATIC | name_257.WEAPON;
@@ -24,17 +24,17 @@ package package_101
private static var rayHit:name_273 = new name_273();
private static var hitInfo:name_553 = new name_553();
private static var hitInfo:WeaponHit = new WeaponHit();
private var impactForce:Number;
private var weakening:name_327;
private var weakening:IWeaponDistanceWeakening;
private var effects:class_12;
private var callback:name_552;
public function name_304(impactForce:Number, weakening:name_327, effects:class_12)
public function name_304(impactForce:Number, weakening:IWeaponDistanceWeakening, effects:class_12)
{
super();
this.impactForce = impactForce;

View File

@@ -5,9 +5,9 @@ package package_118
import package_27.name_501;
import package_46.name_194;
import package_72.class_12;
import package_74.name_233;
import package_74.name_327;
import package_74.name_553;
import alternativa.tanks.game.weapons.IGenericRound;
import alternativa.tanks.game.weapons.IWeaponDistanceWeakening;
import alternativa.tanks.game.weapons.WeaponHit;
import package_86.name_257;
import package_86.name_468;
import package_86.name_540;
@@ -15,7 +15,7 @@ package package_118
import package_90.name_273;
import package_92.name_271;
public class name_550 implements name_233
public class name_550 implements IGenericRound
{
private static const HIT_POINT_CORRECTION:Number = 1;
@@ -23,17 +23,17 @@ package package_118
private static var force:name_194 = new name_194();
private static var splashHits:Vector.<name_553> = new Vector.<name_553>();
private static var splashHits:Vector.<WeaponHit> = new Vector.<WeaponHit>();
private static var rayHit:name_273 = new name_273();
private static var filter:name_540 = new name_540();
private static var hitInfo:name_553 = new name_553();
private static var hitInfo:WeaponHit = new WeaponHit();
private var directImpactForce:Number;
private var weakening:name_327;
private var weakening:IWeaponDistanceWeakening;
private var splashDamage:class_37;
@@ -45,7 +45,7 @@ package package_118
private var callback:name_552;
public function name_550(directImpactForce:Number, weakening:name_327, splashDamage:class_37, effects:class_12, collisionDetector:name_468, splashTargetFilter:class_38)
public function name_550(directImpactForce:Number, weakening:IWeaponDistanceWeakening, splashDamage:class_37, effects:class_12, collisionDetector:name_468, splashTargetFilter:class_38)
{
super();
this.directImpactForce = directImpactForce;
@@ -114,12 +114,12 @@ package package_118
this.effects.createEffects(hitPosition,weakeningCoefficient,this.splashDamage.radius);
}
private function method_760(hitPosition:name_194, primaryTarget:name_271, impactForce:Number, splashHits:Vector.<name_553>) : void
private function method_760(hitPosition:name_194, primaryTarget:name_271, impactForce:Number, splashHits:Vector.<WeaponHit>) : void
{
var bodyDistance:name_654 = null;
var targetBody:name_271 = null;
var splashImpactForce:Number = NaN;
var weaponHit:name_553 = null;
var weaponHit:WeaponHit = null;
this.splashTargetFilter.method_759(primaryTarget);
var objectsInRadius:Vector.<name_654> = this.collisionDetector.method_651(hitPosition,this.splashDamage.radius,this.splashTargetFilter);
this.splashTargetFilter.method_759(null);
@@ -133,7 +133,7 @@ package package_118
targetBody.name_585(force);
if(splashHits != null)
{
weaponHit = new name_553();
weaponHit = new WeaponHit();
weaponHit.distance = bodyDistance.distance;
weaponHit.body = targetBody;
splashHits.push(weaponHit);

View File

@@ -1,10 +1,10 @@
package package_119
{
import package_74.name_553;
import alternativa.tanks.game.weapons.WeaponHit;
public interface name_552
{
function name_555(param1:int, param2:name_553, param3:Vector.<name_553>) : void;
function name_555(param1:int, param2:WeaponHit, param3:Vector.<WeaponHit>) : void;
}
}

View File

@@ -7,7 +7,7 @@ package package_71
import alternativa.tanks.game.subsystems.inputsystem.KeyboardEventType;
import alternativa.tanks.game.subsystems.inputsystem.IInput;
import package_42.name_477;
import package_74.class_24;
import alternativa.tanks.game.weapons.IBasicWeapon;
public class name_315 extends EntityComponent implements name_477
{
@@ -17,7 +17,7 @@ package package_71
private var name_308:Boolean;
private var var_442:class_24;
private var var_442:IBasicWeapon;
private var var_508:Boolean;
@@ -30,7 +30,7 @@ package package_71
override public function initComponent() : void
{
this.var_442 = class_24(entity.getComponentStrict(class_24));
this.var_442 = IBasicWeapon(entity.getComponentStrict(IBasicWeapon));
entity.addEventHandler(name_252.SET_ACTIVATING_STATE,this.method_408);
entity.addEventHandler(name_252.SET_DEAD_STATE,this.method_408);
entity.addEventHandler(name_252.SET_RESPAWN_STATE,this.method_408);

View File

@@ -1,8 +0,0 @@
package package_74
{
public interface class_14
{
function getRound() : name_233;
}
}

View File

@@ -1,8 +0,0 @@
package package_74
{
public interface class_23
{
function getRound(param1:name_496, param2:Number) : name_233;
}
}

View File

@@ -1,8 +0,0 @@
package package_74
{
public interface class_25
{
function method_396() : Number;
}
}

View File

@@ -1,13 +0,0 @@
package package_74
{
public class name_307
{
public static const BASE_FORCE:Number = 5000000;
public function name_307()
{
super();
}
}
}

View File

@@ -1,15 +0,0 @@
package package_74
{
public class name_496
{
public static const NORMAL_SHOT:name_496 = new name_496();
public static const CLOSE_SHOT:name_496 = new name_496();
public function name_496()
{
super();
}
}
}

View File

@@ -1,8 +0,0 @@
package package_74
{
public interface name_523
{
function name_526() : void;
}
}

View File

@@ -1,10 +0,0 @@
package package_74
{
import package_46.name_194;
public interface name_621
{
function name_623(param1:int, param2:name_496, param3:name_194, param4:int) : void;
}
}

View File

@@ -2,14 +2,14 @@ package package_79
{
import package_46.Matrix3;
import package_46.name_194;
import package_74.name_524;
import alternativa.tanks.game.weapons.IGenericTargetingSystem;
import package_76.name_256;
import package_86.name_257;
import package_86.name_540;
import package_90.name_273;
import package_92.name_271;
public class name_261 implements name_524
public class name_261 implements IGenericTargetingSystem
{
private static var collisionMask:int = name_257.STATIC | name_257.WEAPON;

View File

@@ -5,13 +5,13 @@ package package_79
import package_120.name_606;
import package_46.Matrix3;
import package_46.name_194;
import package_74.name_524;
import alternativa.tanks.game.weapons.IGenericTargetingSystem;
import package_76.name_256;
import package_86.name_257;
import package_90.name_273;
import package_92.name_271;
public class name_291 implements name_524
public class name_291 implements IGenericTargetingSystem
{
private const COLLISION_MASK:int = name_257.WEAPON | name_257.STATIC;

View File

@@ -1,9 +1,9 @@
package package_80
{
import flash.media.Sound;
import package_74.name_523;
import alternativa.tanks.game.weapons.IInstantShotWeaponCallback;
public class name_274 implements name_523
public class name_274 implements IInstantShotWeaponCallback
{
private var shotSound:Sound;

View File

@@ -4,12 +4,12 @@ package package_83
import package_118.name_550;
import package_119.name_552;
import package_4.class_4;
import package_74.class_14;
import package_74.name_233;
import alternativa.tanks.game.weapons.IGenericAmmunition;
import alternativa.tanks.game.weapons.IGenericRound;
import package_86.name_468;
import package_87.name_267;
public class name_269 implements class_14
public class name_269 implements IGenericAmmunition
{
private var var_468:name_550;
@@ -25,7 +25,7 @@ package package_83
this.var_468.method_383(callback);
}
public function getRound() : name_233
public function getRound() : IGenericRound
{
return this.var_468;
}

View File

@@ -1,8 +1,8 @@
package package_87
{
import package_74.name_327;
import alternativa.tanks.game.weapons.IWeaponDistanceWeakening;
public class name_267 implements name_327
public class name_267 implements IWeaponDistanceWeakening
{
private var maximumDamageRadius:Number;

View File

@@ -2,12 +2,12 @@ package package_91
{
import alternativa.tanks.game.EntityComponent;
import alternativa.tanks.game.Entity;
import package_74.class_23;
import package_74.name_233;
import package_74.name_327;
import package_74.name_496;
import alternativa.tanks.game.weapons.IEnergyAmmunition;
import alternativa.tanks.game.weapons.IGenericRound;
import alternativa.tanks.game.weapons.IWeaponDistanceWeakening;
import alternativa.tanks.game.weapons.EnergyShotType;
public class name_296 extends EntityComponent implements class_23
public class name_296 extends EntityComponent implements IEnergyAmmunition
{
private static var poolSize:int;
@@ -19,7 +19,7 @@ package package_91
private var effectsFactory:name_349;
public function name_296(radius:Number, roundSpeed:Number, maxRicochets:uint, impactForce:Number, weakening:name_327, effectsFactory:name_349, callback:name_499)
public function name_296(radius:Number, roundSpeed:Number, maxRicochets:uint, impactForce:Number, weakening:IWeaponDistanceWeakening, effectsFactory:name_349, callback:name_499)
{
super();
this.roundData = new name_498(radius,roundSpeed,maxRicochets,impactForce,weakening);
@@ -33,7 +33,7 @@ package package_91
pool[_loc2_] = entity;
}
public function getRound(shotType:name_496, maxRange:Number) : name_233
public function getRound(shotType:EnergyShotType, maxRange:Number) : IGenericRound
{
var roundEntity:Entity = null;
if(poolSize == 0)

View File

@@ -8,8 +8,8 @@ package package_91
import package_45.name_182;
import package_46.Matrix3;
import package_46.name_194;
import package_74.name_233;
import package_74.name_496;
import alternativa.tanks.game.weapons.IGenericRound;
import alternativa.tanks.game.weapons.EnergyShotType;
import package_76.name_235;
import package_76.name_256;
import package_76.name_631;
@@ -17,7 +17,7 @@ package package_91
import package_90.name_273;
import package_92.name_271;
public class name_497 extends EntityComponent implements name_465, name_233, name_631
public class name_497 extends EntityComponent implements name_465, IGenericRound, name_631
{
private static const NUM_PERIPHERAL_RAYS:int = 8;
@@ -55,7 +55,7 @@ package package_91
private var effect:name_522;
private var shotType:name_496;
private var shotType:EnergyShotType;
private var ricochetCount:int;
@@ -73,7 +73,7 @@ package package_91
}
}
public function init(shotType:name_496, roundData:name_498, maxRange:Number, effectsFactory:name_349, callback:name_499) : void
public function init(shotType:EnergyShotType, roundData:name_498, maxRange:Number, effectsFactory:name_349, callback:name_499) : void
{
this.shotType = shotType;
this.roundData = roundData;
@@ -93,7 +93,7 @@ package package_91
var physicsSystem:name_178 = gameKernel.method_112();
this.collisionDetector = physicsSystem.name_246().collisionDetector;
physicsSystem.addControllerBefore(this);
if(this.shotType == name_496.NORMAL_SHOT)
if(this.shotType == EnergyShotType.NORMAL_SHOT)
{
physicsSystem.method_330(this);
this.effect = this.effectsFactory.method_414();
@@ -232,10 +232,10 @@ package package_91
this.var_621 = 0;
switch(this.shotType)
{
case name_496.CLOSE_SHOT:
case EnergyShotType.CLOSE_SHOT:
this.var_620.copy(barrelOrigin);
break;
case name_496.NORMAL_SHOT:
case EnergyShotType.NORMAL_SHOT:
this.var_620.copy(muzzlePosition);
}
this.method_705(this.var_620,shotDirection,this.roundData.radius);

View File

@@ -1,6 +1,6 @@
package package_91
{
import package_74.name_327;
import alternativa.tanks.game.weapons.IWeaponDistanceWeakening;
public class name_498
{
@@ -12,9 +12,9 @@ package package_91
public var impactForce:Number;
public var weakening:name_327;
public var weakening:IWeaponDistanceWeakening;
public function name_498(radius:Number, speed:Number, maxRicochets:uint, impactForce:Number, weakening:name_327)
public function name_498(radius:Number, speed:Number, maxRicochets:uint, impactForce:Number, weakening:IWeaponDistanceWeakening)
{
super();
this.radius = radius;

View File

@@ -4,12 +4,12 @@ package package_95
import alternativa.tanks.game.EntityComponent;
import alternativa.tanks.game.GameKernel;
import package_46.name_194;
import package_74.name_508;
import alternativa.tanks.game.weapons.IContinuousActionWeapon;
import package_75.class_15;
import package_75.name_236;
import package_79.name_282;
public class name_281 extends EntityComponent implements name_508
public class name_281 extends EntityComponent implements IContinuousActionWeapon
{
private static var barrelOrigin:name_194 = new name_194();