Android Open Source - Station42 Faction Sentry System From Project Back to project page Station42 .
License The source code is released under:
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUC...
If you think the Android project Station42 listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
Java Source Code package com.station42.sentries;
/ * w w w . j a v a 2 s . c o m * /
import com.badlogic.gdx.math.Vector2;
import com.station42.base.Engine;
import com.station42.base.EngineUpdateListener;
import com.station42.base.Entity;
import com.station42.basic.EntityFacing;
import com.station42.basic.EntityLocation;
import com.station42.bullet.BulletSpawner;
import com.station42.faction.EntityFaction;
import com.station42.game.ScoringPortal;
import com.station42.optimizations.RoomResident;
import com.station42.world.World;
public class FactionSentrySystem implements EngineUpdateListener {
@Override
public void update(Engine engine, float delta) {
for (Entity sentryEntity : engine.getEntitiesWithComponent(Sentry.class)) {
Sentry sentry = sentryEntity.getComponent(Sentry.class);
sentry.lastFire += delta;
if (sentry.lastFire >= sentry.fireSpeed) {
Vector2 target = getNearestEnemy(engine, sentryEntity);
if (target != null) {
Entity bullet = BulletSpawner.spawnBullet(sentryEntity, target, 256, 1);
engine.spawnEntity(bullet);
sentry.lastFire = 0;
EntityFacing facing = sentryEntity.getComponent(EntityFacing.class);
if (facing != null) {
EntityLocation sentryLocation = sentryEntity.getComponent(EntityLocation.class);
facing.setRotation((float ) (Math.atan2(-target.y + sentryLocation.getCenterY(),
-target.x + sentryLocation.getCenterX()) / Math.PI * 180));
}
}
}
}
}
// private Entity getNearestEnemy(Engine engine, Entity sentryEntity) {
private Vector2 getNearestEnemy(Engine engine, Entity sentryEntity) {
Sentry sentry = sentryEntity.getComponent(Sentry.class);
EntityFaction sentryFaction = sentryEntity.getComponent(EntityFaction.class);
EntityLocation sentryLocation = sentryEntity.getComponent(EntityLocation.class);
if (sentryLocation == null)
return null;
// Entity nearestTarget = null;
Vector2 nearestTarget = null;
float distanceToNearest = sentry.trackingDistance;
Iterable<Entity> possibleTargets;
if (sentryEntity.getComponent(RoomResident.class) != null)
possibleTargets = sentryEntity.getComponent(RoomResident.class).getNeighboringResidentsWithComponent(EntityFaction.class);
else
possibleTargets = engine.getEntitiesWithComponent(EntityFaction.class);
for (Entity possibleTarget : possibleTargets) {
if (sentryEntity == possibleTarget || possibleTarget.getComponent(Sentry.class) != null || possibleTarget.getComponent(ScoringPortal.class) != null)
continue ;
EntityFaction targetFaction = possibleTarget.getComponent(EntityFaction.class);
if (targetFaction != sentryFaction && World.visible(sentryEntity, possibleTarget)) {
EntityLocation targetLocation = possibleTarget.getComponent(EntityLocation.class);
if (targetLocation != null) {
float distance = targetLocation.getDistance(sentryLocation);
if (distance < distanceToNearest) {
// nearestTarget = possibleTarget;
nearestTarget = targetLocation.getCenter();
distanceToNearest = distance;
}
}
}
}
return nearestTarget;
}
}
Java Source Code List com.station40.game.IOSLauncher.java com.station40.game.android.AndroidLauncher.java com.station40.game.android.OuyaMenuScreen.java com.station40.game.android.OuyaPlayerJoiner.java com.station40.game.client.HtmlLauncher.java com.station40.game.desktop.DesktopLauncher.java com.station42.base.EngineMessageListener.java com.station42.base.EngineRenderer.java com.station42.base.EngineUpdateListener.java com.station42.base.Engine.java com.station42.base.Entity.java com.station42.basic.EntityFacing.java com.station42.basic.EntityLocation.java com.station42.basic.EntityRenderer.java com.station42.basic.EntitySprite.java com.station42.bullet.BulletCollisionSystem.java com.station42.bullet.BulletRenderer.java com.station42.bullet.BulletSpawner.java com.station42.bullet.BulletUpdateSystem.java com.station42.bullet.Bullet.java com.station42.death.BulletDamageMessage.java com.station42.death.BulletDamageSystem.java com.station42.death.DeathMessage.java com.station42.death.HealthRenderer.java com.station42.death.Health.java com.station42.death.PlayerRespawnSystem.java com.station42.death.SpawnRoom.java com.station42.faction.EntityFaction.java com.station42.game.GameScreen.java com.station42.game.Levels.java com.station42.game.MainMenuScreen.java com.station42.game.MatchSystem.java com.station42.game.ScoringPortalHackingSystem.java com.station42.game.ScoringPortalRenderer.java com.station42.game.ScoringPortal.java com.station42.game.Station40Game.java com.station42.hacking.Hackable.java com.station42.hacking.HackingActionParticles.java com.station42.hacking.HackingActionRenderer.java com.station42.hacking.HackingActionUpdater.java com.station42.hacking.HackingAction.java com.station42.hacking.HackingSystem.java com.station42.hacking.HackingUI.java com.station42.hacking.PlayerHacker.java com.station42.hopping.HoppingAction.java com.station42.hopping.HoppingSystem.java com.station42.hopping.HoppingUI.java com.station42.hopping.OffensiveHackingSystem.java com.station42.hopping.PlayerHopper.java com.station42.input.MouseAndKeyboardController.java com.station42.loot.HealthBoost.java com.station42.loot.LootDropSystem.java com.station42.loot.LootDrop.java com.station42.loot.LootPickupSystem.java com.station42.loot.Loot.java com.station42.loot.Looter.java com.station42.loot.PointBoost.java com.station42.loot.SpeedBoost.java com.station42.loot.WorldSwap.java com.station42.optimizations.CroppingHelper.java com.station42.optimizations.RoomResidentSystem.java com.station42.optimizations.RoomResident.java com.station42.player.PlayerTrackingCameraSystem.java com.station42.player.mouse.EntityMouseState.java com.station42.player.mouse.PlayerActionStateSetter.java com.station42.player.mouse.PlayerClientGunSystem.java com.station42.player.mouse.PlayerControllerMouseStateSetter.java com.station42.player.mouse.PlayerGunSystem.java com.station42.player.mouse.PlayerMouseStateSetter.java com.station42.player.move.EntityMoveState.java com.station42.player.move.PlayerControllerMoveStateSetter.java com.station42.player.move.PlayerMoveStateSetter.java com.station42.player.move.PlayerWalker.java com.station42.sentries.FactionSentrySystem.java com.station42.sentries.SentryHackingSystem.java com.station42.sentries.SentrySpawner.java com.station42.sentries.Sentry.java com.station42.server.BulletRequest.java com.station42.server.ProtocolSetup.java com.station42.server.Station40Client.java com.station42.server.Station40Server.java com.station42.server.serializers.EntitySerializer.java com.station42.world.RoomRenderer.java com.station42.world.Room.java com.station42.world.WallCollisionSystem.java com.station42.world.WallRenderer.java com.station42.world.Wall.java com.station42.world.WorldUI.java com.station42.world.World.java