mirror of
https://github.com/MapMakersAndProgrammers/TankiOnline2.0DemoClient.git
synced 2025-10-26 09:59:07 -07:00
package_74 alternativa.tanks.game.weapons
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -0,0 +1,235 @@
|
||||
package alternativa.tanks.game.weapons
|
||||
{
|
||||
import alternativa.tanks.game.EntityComponent;
|
||||
import alternativa.tanks.game.GameKernel;
|
||||
import alternativa.tanks.game.GameEvents;
|
||||
import package_39.name_160;
|
||||
import package_42.name_184;
|
||||
import package_42.name_477;
|
||||
import package_45.name_182;
|
||||
import alternativa.osgi.OSGi;
|
||||
import package_71.name_252;
|
||||
|
||||
public class ContinuousActionGunPlatformComponent extends EntityComponent implements IWeapon, IBasicWeapon, name_477
|
||||
{
|
||||
private var energyCapacity:Number;
|
||||
|
||||
private var energyDrainRate:Number;
|
||||
|
||||
private var energyRecoveryRate:Number;
|
||||
|
||||
private var var_442:IContinuousActionWeapon;
|
||||
|
||||
private var baseTime:Number;
|
||||
|
||||
private var var_437:Boolean;
|
||||
|
||||
private var var_438:Boolean;
|
||||
|
||||
private var var_439:Boolean;
|
||||
|
||||
private var var_441:Boolean;
|
||||
|
||||
private var isLocal:Boolean;
|
||||
|
||||
private var gameKernel:GameKernel;
|
||||
|
||||
private var var_440:name_184;
|
||||
|
||||
public function ContinuousActionGunPlatformComponent(energyCapacity:Number, energyDrainRate:Number, energyRecoveryRate:Number, isLocal:Boolean)
|
||||
{
|
||||
super();
|
||||
this.energyCapacity = energyCapacity;
|
||||
this.energyDrainRate = energyDrainRate;
|
||||
this.energyRecoveryRate = energyRecoveryRate;
|
||||
this.isLocal = isLocal;
|
||||
this.baseTime = -1000;
|
||||
}
|
||||
|
||||
public function get name_308() : Boolean
|
||||
{
|
||||
return this.var_439;
|
||||
}
|
||||
|
||||
public function set name_308(value:Boolean) : void
|
||||
{
|
||||
if(this.var_439 != value)
|
||||
{
|
||||
this.var_439 = value;
|
||||
if(value)
|
||||
{
|
||||
if(this.var_438)
|
||||
{
|
||||
this.getLogger().log("gun","ContinuousActionGunPlatformComponent::enabled() activating");
|
||||
this.activate();
|
||||
this.enableLogic();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
this.getLogger().log("gun","ContinuousActionGunPlatformComponent::enabled() deactivating");
|
||||
this.deactivate();
|
||||
this.disableLogic();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override public function initComponent() : void
|
||||
{
|
||||
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.setInactiveState);
|
||||
entity.addEventHandler(name_252.SET_RESPAWN_STATE,this.setInactiveState);
|
||||
entity.addEventHandler(GameEvents.BATTLE_FINISHED,this.setInactiveState);
|
||||
}
|
||||
}
|
||||
|
||||
override public function addToGame(gameKernel:GameKernel) : void
|
||||
{
|
||||
this.gameKernel = gameKernel;
|
||||
this.var_440 = gameKernel.getLogicSystem2();
|
||||
}
|
||||
|
||||
override public function removeFromGame(gameKernel:GameKernel) : void
|
||||
{
|
||||
this.var_440 = null;
|
||||
this.gameKernel = null;
|
||||
}
|
||||
|
||||
public function method_396() : Number
|
||||
{
|
||||
return this.getCurrentEnergy(name_182.timeSeconds,this.var_437) / this.energyCapacity;
|
||||
}
|
||||
|
||||
public function method_394() : void
|
||||
{
|
||||
if(!this.var_438)
|
||||
{
|
||||
this.getLogger().log("gun","ContinuousActionGunPlatformComponent::pullTrigger()");
|
||||
this.var_438 = true;
|
||||
this.activate();
|
||||
this.enableLogic();
|
||||
}
|
||||
}
|
||||
|
||||
public function method_393() : void
|
||||
{
|
||||
if(this.var_438)
|
||||
{
|
||||
this.getLogger().log("gun","ContinuousActionGunPlatformComponent::releaseTrigger()");
|
||||
this.var_438 = false;
|
||||
this.deactivate();
|
||||
this.disableLogic();
|
||||
}
|
||||
}
|
||||
|
||||
private function getLogger() : name_160
|
||||
{
|
||||
return name_160(OSGi.name_8().name_30(name_160));
|
||||
}
|
||||
|
||||
public function method_395() : void
|
||||
{
|
||||
}
|
||||
|
||||
public function runLogic() : void
|
||||
{
|
||||
var currentEnergy:Number = this.getCurrentEnergy(name_182.timeSeconds,this.var_437);
|
||||
if(currentEnergy > 0)
|
||||
{
|
||||
this.var_442.update();
|
||||
}
|
||||
else
|
||||
{
|
||||
this.deactivate();
|
||||
this.disableLogic();
|
||||
}
|
||||
}
|
||||
|
||||
private function getCurrentEnergy(time:Number, active:Boolean) : Number
|
||||
{
|
||||
var energy:Number = NaN;
|
||||
if(active)
|
||||
{
|
||||
energy = this.energyCapacity - (time - this.baseTime) * this.energyDrainRate;
|
||||
}
|
||||
else
|
||||
{
|
||||
energy = (time - this.baseTime) * this.energyRecoveryRate;
|
||||
}
|
||||
if(energy < 0)
|
||||
{
|
||||
energy = 0;
|
||||
}
|
||||
else if(energy > this.energyCapacity)
|
||||
{
|
||||
energy = this.energyCapacity;
|
||||
}
|
||||
return energy;
|
||||
}
|
||||
|
||||
private function enableLogic() : void
|
||||
{
|
||||
if(!this.var_441 && this.var_439)
|
||||
{
|
||||
this.var_441 = true;
|
||||
this.var_440.addLogicUnit(this);
|
||||
}
|
||||
}
|
||||
|
||||
private function disableLogic() : void
|
||||
{
|
||||
if(this.var_441)
|
||||
{
|
||||
this.var_441 = false;
|
||||
this.var_440.removeLogicUnit(this);
|
||||
}
|
||||
}
|
||||
|
||||
private function activate() : void
|
||||
{
|
||||
var now:Number = NaN;
|
||||
var currentEnergy:Number = NaN;
|
||||
if(!this.var_437 && this.var_439)
|
||||
{
|
||||
this.var_437 = true;
|
||||
this.var_442.start();
|
||||
now = name_182.timeSeconds;
|
||||
currentEnergy = this.getCurrentEnergy(now,false);
|
||||
this.baseTime = now - (this.energyCapacity - currentEnergy) / this.energyDrainRate;
|
||||
}
|
||||
}
|
||||
|
||||
private function deactivate() : void
|
||||
{
|
||||
var now:Number = NaN;
|
||||
if(this.var_437)
|
||||
{
|
||||
this.var_437 = false;
|
||||
this.var_442.stop();
|
||||
now = name_182.timeSeconds;
|
||||
this.baseTime = now - this.getCurrentEnergy(now,true) / this.energyRecoveryRate;
|
||||
}
|
||||
}
|
||||
|
||||
private function setActiveState(eventType:String, eventData:*) : void
|
||||
{
|
||||
this.name_308 = true;
|
||||
}
|
||||
|
||||
private function setInactiveState(eventType:String, eventData:*) : void
|
||||
{
|
||||
this.name_308 = false;
|
||||
}
|
||||
|
||||
private function setActivatingState(eventType:String, eventData:*) : void
|
||||
{
|
||||
this.name_308 = false;
|
||||
this.baseTime = -100000;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
15
src/alternativa/tanks/game/weapons/EnergyShotType.as
Normal file
15
src/alternativa/tanks/game/weapons/EnergyShotType.as
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
299
src/alternativa/tanks/game/weapons/EnergyShotWeaponComponent.as
Normal file
299
src/alternativa/tanks/game/weapons/EnergyShotWeaponComponent.as
Normal file
@@ -0,0 +1,299 @@
|
||||
package alternativa.tanks.game.weapons
|
||||
{
|
||||
import alternativa.tanks.game.EntityComponent;
|
||||
import alternativa.tanks.game.GameKernel;
|
||||
import alternativa.tanks.game.GameEvents;
|
||||
import package_115.class_26;
|
||||
import package_42.name_184;
|
||||
import package_42.name_477;
|
||||
import package_45.name_182;
|
||||
import package_46.name_194;
|
||||
import package_71.name_252;
|
||||
import package_75.class_15;
|
||||
import package_75.name_236;
|
||||
import package_76.name_256;
|
||||
import package_79.name_622;
|
||||
import package_86.name_257;
|
||||
import package_86.name_540;
|
||||
import package_90.name_273;
|
||||
import package_92.name_271;
|
||||
|
||||
public class EnergyShotWeaponComponent extends EntityComponent implements IBasicWeapon, IWeapon, name_477
|
||||
{
|
||||
private static const COLLISION_MASK:int = name_257.STATIC | name_257.WEAPON;
|
||||
|
||||
private static var rayHit:name_273 = new name_273();
|
||||
|
||||
private static var filter:name_540 = new name_540();
|
||||
|
||||
private static var barrelOrigin:name_194 = new name_194();
|
||||
|
||||
private static var muzzlePosition:name_194 = new name_194();
|
||||
|
||||
private static var gunDirection:name_194 = new name_194();
|
||||
|
||||
private static var gunElevationAxis:name_194 = new name_194();
|
||||
|
||||
private static var shotDirection:name_194 = new name_194();
|
||||
|
||||
private static var recoilForceVector:name_194 = new name_194();
|
||||
|
||||
private var energyCapacity:Number;
|
||||
|
||||
private var energyPerShot:Number;
|
||||
|
||||
private var energyRechargeRate:Number;
|
||||
|
||||
private var reloadTime:int;
|
||||
|
||||
private var recoilForce:Number;
|
||||
|
||||
private var targetingSystem:name_622;
|
||||
|
||||
private var ammunition:IEnergyAmmunition;
|
||||
|
||||
private var callback:IEnergyShotWeaponCallback;
|
||||
|
||||
private var isActive:Boolean;
|
||||
|
||||
private var var_439:Boolean;
|
||||
|
||||
private var var_438:Boolean;
|
||||
|
||||
private var var_441:Boolean;
|
||||
|
||||
private var var_440:name_184;
|
||||
|
||||
private var gameKernel:GameKernel;
|
||||
|
||||
private var baseTime:int;
|
||||
|
||||
private var var_446:int;
|
||||
|
||||
private var var_445:class_15;
|
||||
|
||||
private var chassisComponent:name_236;
|
||||
|
||||
private var var_447:class_26;
|
||||
|
||||
private var var_448:int;
|
||||
|
||||
private var maxRange:Number;
|
||||
|
||||
private var barrelIndex:int;
|
||||
|
||||
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;
|
||||
this.energyPerShot = energyPerShot;
|
||||
this.energyRechargeRate = energyRechargeRate;
|
||||
this.reloadTime = reloadTime;
|
||||
this.recoilForce = recoilForce;
|
||||
this.maxRange = maxRange;
|
||||
this.targetingSystem = targetingSystem;
|
||||
this.callback = callback;
|
||||
this.isActive = isActive;
|
||||
}
|
||||
|
||||
public function method_383(callback:IEnergyShotWeaponCallback) : void
|
||||
{
|
||||
this.callback = callback;
|
||||
}
|
||||
|
||||
public function method_528(targetingSystem:name_622) : void
|
||||
{
|
||||
this.targetingSystem = targetingSystem;
|
||||
}
|
||||
|
||||
override public function initComponent() : void
|
||||
{
|
||||
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 = IEnergyAmmunition(entity.getComponentStrict(IEnergyAmmunition));
|
||||
if(this.isActive)
|
||||
{
|
||||
entity.addEventHandler(name_252.SET_ACTIVE_STATE,this.setActiveState);
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
override public function addToGame(gameKernel:GameKernel) : void
|
||||
{
|
||||
this.gameKernel = gameKernel;
|
||||
this.var_440 = gameKernel.getLogicSystem2();
|
||||
}
|
||||
|
||||
override public function removeFromGame(gameKernel:GameKernel) : void
|
||||
{
|
||||
this.var_440 = null;
|
||||
this.gameKernel = null;
|
||||
}
|
||||
|
||||
public function method_394() : void
|
||||
{
|
||||
if(!this.var_438)
|
||||
{
|
||||
this.var_438 = true;
|
||||
if(this.var_439)
|
||||
{
|
||||
this.enableLogic();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function method_393() : void
|
||||
{
|
||||
if(this.var_438)
|
||||
{
|
||||
this.var_438 = false;
|
||||
this.disableLogic();
|
||||
}
|
||||
}
|
||||
|
||||
public function method_395() : void
|
||||
{
|
||||
this.runLogic();
|
||||
}
|
||||
|
||||
public function method_396() : Number
|
||||
{
|
||||
return this.getCurrentEnergy(name_182.time,this.baseTime) / this.energyCapacity;
|
||||
}
|
||||
|
||||
public function runLogic() : void
|
||||
{
|
||||
var barrelLength:Number = NaN;
|
||||
var shotId:int = 0;
|
||||
var shooterBody:name_271 = null;
|
||||
var collisionDetector:name_256 = null;
|
||||
var shotType:EnergyShotType = null;
|
||||
var round:IGenericRound = null;
|
||||
var now:int = name_182.time;
|
||||
var currentEnergy:Number = this.getCurrentEnergy(now,this.baseTime);
|
||||
if(now >= this.var_446 && currentEnergy >= this.energyPerShot)
|
||||
{
|
||||
this.var_446 = now + this.reloadTime;
|
||||
this.baseTime = now - 1000 * (currentEnergy - this.energyPerShot) / this.energyRechargeRate;
|
||||
this.var_445.getGunData(this.barrelIndex,barrelOrigin,gunDirection,gunElevationAxis);
|
||||
barrelLength = Number(this.var_445.getBarrelLength(this.barrelIndex));
|
||||
muzzlePosition.copy(barrelOrigin).method_362(barrelLength,gunDirection);
|
||||
shotId = this.var_448++;
|
||||
shooterBody = this.chassisComponent.getBody();
|
||||
collisionDetector = this.gameKernel.method_112().name_246().collisionDetector;
|
||||
filter.body = shooterBody;
|
||||
if(collisionDetector.raycast(barrelOrigin,gunDirection,COLLISION_MASK,barrelLength + 0.01,filter,rayHit))
|
||||
{
|
||||
shotType = EnergyShotType.CLOSE_SHOT;
|
||||
shotDirection.copy(gunDirection);
|
||||
}
|
||||
else
|
||||
{
|
||||
shotType = EnergyShotType.NORMAL_SHOT;
|
||||
this.targetingSystem.name_624(shooterBody,muzzlePosition,gunDirection,gunElevationAxis,this.maxRange,shotDirection);
|
||||
}
|
||||
filter.body = null;
|
||||
this.doShowShotEffects(shotType,this.barrelIndex,barrelOrigin,muzzlePosition,gunDirection,gunElevationAxis);
|
||||
if(this.callback != null)
|
||||
{
|
||||
this.callback.name_623(shotId,shotType,shotDirection,this.barrelIndex);
|
||||
}
|
||||
round = this.ammunition.getRound(shotType,this.maxRange);
|
||||
round.method_372(this.gameKernel,shotId,shooterBody,barrelOrigin,barrelLength,shotDirection,muzzlePosition);
|
||||
this.barrelIndex = (this.barrelIndex + 1) % this.var_445.getBarrelCount();
|
||||
}
|
||||
}
|
||||
|
||||
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.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);
|
||||
}
|
||||
|
||||
public function get name_308() : Boolean
|
||||
{
|
||||
return this.var_439;
|
||||
}
|
||||
|
||||
public function set name_308(value:Boolean) : void
|
||||
{
|
||||
if(this.var_439 != value)
|
||||
{
|
||||
this.var_439 = value;
|
||||
if(this.var_439)
|
||||
{
|
||||
if(this.var_438)
|
||||
{
|
||||
this.enableLogic();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
this.disableLogic();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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 == EnergyShotType.NORMAL_SHOT)
|
||||
{
|
||||
this.var_447.method_411(barrelIndex,barrelOrigin,muzzlePosition,gunDirection,gunElevationAxis);
|
||||
}
|
||||
}
|
||||
|
||||
private function setActiveState(eventType:String, eventData:*) : void
|
||||
{
|
||||
this.name_308 = true;
|
||||
}
|
||||
|
||||
private function setInactiveState(eventType:String, eventData:*) : void
|
||||
{
|
||||
this.name_308 = false;
|
||||
}
|
||||
|
||||
private function enableLogic() : void
|
||||
{
|
||||
if(!this.var_441)
|
||||
{
|
||||
this.var_441 = true;
|
||||
this.var_440.addLogicUnit(this);
|
||||
}
|
||||
}
|
||||
|
||||
private function disableLogic() : void
|
||||
{
|
||||
if(this.var_441)
|
||||
{
|
||||
this.var_441 = false;
|
||||
this.var_440.removeLogicUnit(this);
|
||||
}
|
||||
}
|
||||
|
||||
private function getCurrentEnergy(time:int, baseTime:int) : Number
|
||||
{
|
||||
var energy:Number = 0.001 * (time - baseTime) * this.energyRechargeRate;
|
||||
if(energy < 0)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
if(energy > this.energyCapacity)
|
||||
{
|
||||
return this.energyCapacity;
|
||||
}
|
||||
return energy;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
12
src/alternativa/tanks/game/weapons/IBasicWeapon.as
Normal file
12
src/alternativa/tanks/game/weapons/IBasicWeapon.as
Normal file
@@ -0,0 +1,12 @@
|
||||
package alternativa.tanks.game.weapons
|
||||
{
|
||||
public interface IBasicWeapon
|
||||
{
|
||||
function method_394() : void;
|
||||
|
||||
function method_393() : void;
|
||||
|
||||
function method_395() : void;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
package alternativa.tanks.game.weapons
|
||||
{
|
||||
public interface IContinuousActionWeapon
|
||||
{
|
||||
function start() : void;
|
||||
|
||||
function stop() : void;
|
||||
|
||||
function update() : void;
|
||||
}
|
||||
}
|
||||
|
||||
8
src/alternativa/tanks/game/weapons/IEnergyAmmunition.as
Normal file
8
src/alternativa/tanks/game/weapons/IEnergyAmmunition.as
Normal file
@@ -0,0 +1,8 @@
|
||||
package alternativa.tanks.game.weapons
|
||||
{
|
||||
public interface IEnergyAmmunition
|
||||
{
|
||||
function getRound(param1:EnergyShotType, param2:Number) : IGenericRound;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
8
src/alternativa/tanks/game/weapons/IGenericAmmunition.as
Normal file
8
src/alternativa/tanks/game/weapons/IGenericAmmunition.as
Normal file
@@ -0,0 +1,8 @@
|
||||
package alternativa.tanks.game.weapons
|
||||
{
|
||||
public interface IGenericAmmunition
|
||||
{
|
||||
function getRound() : IGenericRound;
|
||||
}
|
||||
}
|
||||
|
||||
12
src/alternativa/tanks/game/weapons/IGenericRound.as
Normal file
12
src/alternativa/tanks/game/weapons/IGenericRound.as
Normal file
@@ -0,0 +1,12 @@
|
||||
package alternativa.tanks.game.weapons
|
||||
{
|
||||
import alternativa.tanks.game.GameKernel;
|
||||
import package_46.name_194;
|
||||
import package_92.name_271;
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
package alternativa.tanks.game.weapons
|
||||
{
|
||||
import package_46.name_194;
|
||||
import package_92.name_271;
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
package alternativa.tanks.game.weapons
|
||||
{
|
||||
public interface IInstantShotWeaponCallback
|
||||
{
|
||||
function name_526() : void;
|
||||
}
|
||||
}
|
||||
|
||||
8
src/alternativa/tanks/game/weapons/IWeapon.as
Normal file
8
src/alternativa/tanks/game/weapons/IWeapon.as
Normal file
@@ -0,0 +1,8 @@
|
||||
package alternativa.tanks.game.weapons
|
||||
{
|
||||
public interface IWeapon
|
||||
{
|
||||
function method_396() : Number;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
package alternativa.tanks.game.weapons
|
||||
{
|
||||
public interface IWeaponDistanceWeakening
|
||||
{
|
||||
function name_554(param1:Number) : Number;
|
||||
|
||||
function method_467() : Number;
|
||||
|
||||
function method_468() : Number;
|
||||
}
|
||||
}
|
||||
|
||||
224
src/alternativa/tanks/game/weapons/InstantShotWeaponComponent.as
Normal file
224
src/alternativa/tanks/game/weapons/InstantShotWeaponComponent.as
Normal file
@@ -0,0 +1,224 @@
|
||||
package alternativa.tanks.game.weapons
|
||||
{
|
||||
import alternativa.tanks.game.EntityComponent;
|
||||
import alternativa.tanks.game.GameKernel;
|
||||
import alternativa.tanks.game.GameEvents;
|
||||
import package_115.class_26;
|
||||
import package_27.name_501;
|
||||
import package_42.name_184;
|
||||
import package_42.name_477;
|
||||
import package_45.name_182;
|
||||
import package_46.name_194;
|
||||
import package_71.name_252;
|
||||
import package_75.class_15;
|
||||
import package_75.name_236;
|
||||
import package_92.name_271;
|
||||
|
||||
public class InstantShotWeaponComponent extends EntityComponent implements IWeapon, IBasicWeapon, name_477
|
||||
{
|
||||
private static var barrelOrigin:name_194 = new name_194();
|
||||
|
||||
private static var muzzlePosition:name_194 = new name_194();
|
||||
|
||||
private static var gunDirection:name_194 = new name_194();
|
||||
|
||||
private static var gunElevationAxis:name_194 = new name_194();
|
||||
|
||||
private static var shotDirection:name_194 = new name_194();
|
||||
|
||||
private static var recoilForceVector:name_194 = new name_194();
|
||||
|
||||
private static const BARREL_INDEX:int = 0;
|
||||
|
||||
private var reloadTime:int;
|
||||
|
||||
private var recoilForce:Number;
|
||||
|
||||
private var targetingSystem:IGenericTargetingSystem;
|
||||
|
||||
private var ammunition:IGenericAmmunition;
|
||||
|
||||
private var callback:IInstantShotWeaponCallback;
|
||||
|
||||
private var var_446:int;
|
||||
|
||||
private var var_445:class_15;
|
||||
|
||||
private var chassisComponent:name_236;
|
||||
|
||||
private var var_447:class_26;
|
||||
|
||||
private var var_440:name_184;
|
||||
|
||||
private var var_439:Boolean;
|
||||
|
||||
private var var_438:Boolean;
|
||||
|
||||
private var var_441:Boolean;
|
||||
|
||||
private var var_448:int;
|
||||
|
||||
private var gameKernel:GameKernel;
|
||||
|
||||
private var isActive:Boolean;
|
||||
|
||||
public function InstantShotWeaponComponent(reloadTime:int, recoilForce:Number, targetingSystem:IGenericTargetingSystem, ammunition:IGenericAmmunition, callback:IInstantShotWeaponCallback, isActive:Boolean)
|
||||
{
|
||||
super();
|
||||
this.reloadTime = reloadTime;
|
||||
this.recoilForce = recoilForce;
|
||||
this.targetingSystem = targetingSystem;
|
||||
this.ammunition = ammunition;
|
||||
this.callback = callback;
|
||||
this.isActive = isActive;
|
||||
}
|
||||
|
||||
override public function initComponent() : void
|
||||
{
|
||||
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));
|
||||
if(this.isActive)
|
||||
{
|
||||
entity.addEventHandler(name_252.SET_ACTIVE_STATE,this.setActiveState);
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
private function setActiveState(eventType:String, eventData:*) : void
|
||||
{
|
||||
this.name_308 = true;
|
||||
}
|
||||
|
||||
private function setInactiveState(eventType:String, eventData:*) : void
|
||||
{
|
||||
this.name_308 = false;
|
||||
}
|
||||
|
||||
override public function addToGame(gameKernel:GameKernel) : void
|
||||
{
|
||||
this.gameKernel = gameKernel;
|
||||
this.var_440 = gameKernel.getLogicSystem2();
|
||||
}
|
||||
|
||||
override public function removeFromGame(gameKernel:GameKernel) : void
|
||||
{
|
||||
this.var_440 = null;
|
||||
this.gameKernel = null;
|
||||
}
|
||||
|
||||
public function method_396() : Number
|
||||
{
|
||||
var readiness:Number = 1 + (name_182.time - this.var_446) / this.reloadTime;
|
||||
return readiness > 1 ? 1 : readiness;
|
||||
}
|
||||
|
||||
public function method_394() : void
|
||||
{
|
||||
if(!this.var_438)
|
||||
{
|
||||
this.var_438 = true;
|
||||
if(this.var_439)
|
||||
{
|
||||
this.enableLogic();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function method_393() : void
|
||||
{
|
||||
if(this.var_438)
|
||||
{
|
||||
this.var_438 = false;
|
||||
this.disableLogic();
|
||||
}
|
||||
}
|
||||
|
||||
public function method_395() : void
|
||||
{
|
||||
this.runLogic();
|
||||
}
|
||||
|
||||
public function runLogic() : void
|
||||
{
|
||||
if(name_182.time < this.var_446)
|
||||
{
|
||||
return;
|
||||
}
|
||||
this.var_446 = name_182.time + this.reloadTime;
|
||||
if(this.callback != null)
|
||||
{
|
||||
this.callback.name_526();
|
||||
}
|
||||
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.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:IGenericRound = this.ammunition.getRound();
|
||||
round.method_372(this.gameKernel,shotId,shooterBody,barrelOrigin,barrelLength,shotDirection,muzzlePosition);
|
||||
}
|
||||
|
||||
public function get name_308() : Boolean
|
||||
{
|
||||
return this.var_439;
|
||||
}
|
||||
|
||||
public function set name_308(value:Boolean) : void
|
||||
{
|
||||
if(this.var_439 != value)
|
||||
{
|
||||
this.var_439 = value;
|
||||
if(this.var_439)
|
||||
{
|
||||
if(this.var_438)
|
||||
{
|
||||
this.enableLogic();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
this.disableLogic();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function method_416() : void
|
||||
{
|
||||
this.var_445.getGunData(BARREL_INDEX,barrelOrigin,gunDirection,gunElevationAxis);
|
||||
muzzlePosition.copy(barrelOrigin).method_362(this.var_445.getBarrelLength(BARREL_INDEX),gunDirection);
|
||||
this.doShowShotEffects(barrelOrigin,muzzlePosition,gunDirection,gunElevationAxis);
|
||||
}
|
||||
|
||||
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 enableLogic() : void
|
||||
{
|
||||
if(!this.var_441)
|
||||
{
|
||||
this.var_441 = true;
|
||||
this.var_440.addLogicUnit(this);
|
||||
}
|
||||
}
|
||||
|
||||
private function disableLogic() : void
|
||||
{
|
||||
if(this.var_441)
|
||||
{
|
||||
this.var_441 = false;
|
||||
this.var_440.removeLogicUnit(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
21
src/alternativa/tanks/game/weapons/SimpleTargetEvaluator.as
Normal file
21
src/alternativa/tanks/game/weapons/SimpleTargetEvaluator.as
Normal file
@@ -0,0 +1,21 @@
|
||||
package alternativa.tanks.game.weapons
|
||||
{
|
||||
import package_79.name_326;
|
||||
import package_92.name_271;
|
||||
|
||||
public class SimpleTargetEvaluator implements name_326
|
||||
{
|
||||
public static const INSTANCE:SimpleTargetEvaluator = new SimpleTargetEvaluator();
|
||||
|
||||
public function SimpleTargetEvaluator()
|
||||
{
|
||||
super();
|
||||
}
|
||||
|
||||
public function name_541(shooter:name_271, target:name_271, distance:Number, angle:Number) : Number
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
13
src/alternativa/tanks/game/weapons/WeaponConst.as
Normal file
13
src/alternativa/tanks/game/weapons/WeaponConst.as
Normal file
@@ -0,0 +1,13 @@
|
||||
package alternativa.tanks.game.weapons
|
||||
{
|
||||
public class WeaponConst
|
||||
{
|
||||
public static const BASE_FORCE:Number = 5000000;
|
||||
|
||||
public function WeaponConst()
|
||||
{
|
||||
super();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
29
src/alternativa/tanks/game/weapons/WeaponHit.as
Normal file
29
src/alternativa/tanks/game/weapons/WeaponHit.as
Normal file
@@ -0,0 +1,29 @@
|
||||
package alternativa.tanks.game.weapons
|
||||
{
|
||||
import package_46.name_194;
|
||||
import package_92.name_271;
|
||||
|
||||
public class WeaponHit
|
||||
{
|
||||
public var distance:Number;
|
||||
|
||||
public var body:name_271;
|
||||
|
||||
public var position:name_194 = new name_194();
|
||||
|
||||
public var direction:name_194 = new name_194();
|
||||
|
||||
public var normal:name_194 = new name_194();
|
||||
|
||||
public function WeaponHit()
|
||||
{
|
||||
super();
|
||||
}
|
||||
|
||||
public function toString() : String
|
||||
{
|
||||
return "[WeaponHit distance=" + this.distance + ", body=" + this.body + ", position=" + this.position + ", direction=" + this.direction + ", normal=" + this.normal + "]";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user