Android Open Source - killingspree Server Fly






From Project

Back to project page killingspree.

License

The source code is released under:

MIT License

If you think the Android project killingspree 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.sillygames.killingSpree.serverEntities;
/*  w ww . j  a v a  2  s .  co m*/
import java.util.ArrayList;

import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.math.MathUtils;
import com.badlogic.gdx.math.Vector2;
import com.sillygames.killingSpree.categories.EnemyCategory;
import com.sillygames.killingSpree.categories.LivingCategory;
import com.sillygames.killingSpree.helpers.Utils;
import com.sillygames.killingSpree.helpers.EntityUtils.ActorType;
import com.sillygames.killingSpree.managers.WorldBodyUtils;
import com.sillygames.killingSpree.managers.physics.Body;
import com.sillygames.killingSpree.managers.physics.Ray;
import com.sillygames.killingSpree.managers.physics.Body.BodyType;
import com.sillygames.killingSpree.managers.physics.Body.CollisionCategory;
import com.sillygames.killingSpree.networking.messages.EntityState;

public class ServerFly extends ServerEntity implements EnemyCategory, LivingCategory {

    public static final float WIDTH = 15f;
    public static final float HEIGHT = 10f;
    public static final float YOFFSET = 1f;
    private float randomTime;
    private float spawnTime;
    
    public ServerFly(short id, float x, float y, WorldBodyUtils world) {
        super(id, x, y, world);
        actorType = ActorType.FLY;
        body = world.addBox(WIDTH, HEIGHT - YOFFSET * 2, position.x, position.y,
                BodyType.StaticBody);
        body.setGravityScale(0f);
        body.setUserData(this);
        randomTime = 0;
        body.category = CollisionCategory.NONE;
        spawnTime = 0.1f;
    }

    @Override
    public void update(float delta) {
        if (spawnTime > 0) {
            spawnTime += delta;
            if (spawnTime > 4) {
                body.category = CollisionCategory.ENEMY;
                body.bodyType = BodyType.DynamicBody;
                spawnTime = -1f;
            }
            return;
        }
        boolean targetAcquired = false;
        position.set(body.getPosition());
        ArrayList<Vector2> playersPositions = world.getPlayers(position, 100);
        if (playersPositions.size() != 0) {
            for (Vector2 playerPosition: playersPositions) {
                playerPosition.sub(position);
                float max = Math.max(Math.abs(playerPosition.x), Math.abs(playerPosition.y));
                playerPosition.scl(5 / max);
//                Body targetBody = Ray.findBody(world.worldManager.getWorld(),
//                        body, playerPosition, 150f);
//                if (targetBody != null && targetBody.getUserData() instanceof ServerPlayer) {
//                    Gdx.app.log(body.getPosition().toString(), playerPosition.toString());
                    body.setLinearVelocity(playerPosition.x * 20, playerPosition.y * 20);
                    targetAcquired = true;
                    break;
//                }
            }
        } 
        if (!targetAcquired) {
            randomTime += delta;
            Vector2 currentVelocity = body.getLinearVelocity();
            float max = Math.max(Math.abs(currentVelocity.x), Math.abs(currentVelocity.y));
            currentVelocity.scl(5 / max);
            Body targetBody = Ray.findBody(world.worldManager.getWorld(),
                    body, currentVelocity, 30f);
            if ((Math.abs(body.getLinearVelocity().x) < 20
                  && Math.abs(body.getLinearVelocity().y) < 20)
                  || (targetBody != null && targetBody.bodyType == BodyType.StaticBody) || randomTime > 4) {
                do {
                    currentVelocity = body.getLinearVelocity();
                    currentVelocity.set((MathUtils.random(20, 30)) *
                            (MathUtils.random(-1, 1) < 0? -1 : 1),
                            (MathUtils.random(20, 30)) *
                            (MathUtils.random(-1, 1) < 0? -1 : 1));
                    body.setLinearVelocity(currentVelocity);
                    randomTime = 0;
                    targetBody = Ray.findBody(world.worldManager.getWorld(),
                            body, currentVelocity, 30f);
                } while ((Math.abs(body.getLinearVelocity().x) < 20
                        && Math.abs(body.getLinearVelocity().y) < 20) ||
                        (targetBody != null && targetBody.bodyType == BodyType.StaticBody));
            }
            
        }
        
        Vector2 currentVelocity = body.getLinearVelocity();
        float max = Math.max(Math.abs(currentVelocity.x), Math.abs(currentVelocity.y));
        if (max > 50)
            currentVelocity.scl(50 / max);
        body.setLinearVelocity(currentVelocity);
        position.set(body.getPosition());
        if (Utils.wrapBody(position)) {
            body.setTransform(position, 0);
        }
    }

    @Override
    public void dispose() {
        world.destroyBody(body);
    }

    @Override
    public float getWidth() {
        return WIDTH;
    }

    @Override
    public void updateState(EntityState state) {
        super.updateState(state);
        state.vX = body.getLinearVelocity().x;
        state.vY = body.getLinearVelocity().y;
        state.extra |= (short) (spawnTime > 0.01f ? 0 : 1);
    }
    
    @Override
    public boolean kill() {
        if (spawnTime < 0 && !body.toDestroy) {
            world.audio.jumpedOn();
            dispose();
            return true;
        }
        return false;
    }
    
}




Java Source Code List

com.sillygames.killingSpree.AndroidLauncher.java
com.sillygames.killingSpree.KillingSpree.java
com.sillygames.killingSpree.PlatformServices.java
com.sillygames.killingSpree.categories.EnemyCategory.java
com.sillygames.killingSpree.categories.ExplodingWeaponCategory.java
com.sillygames.killingSpree.categories.LivingCategory.java
com.sillygames.killingSpree.categories.NonExplodingWeaponCategory.java
com.sillygames.killingSpree.clientEntities.ClientArrow.java
com.sillygames.killingSpree.clientEntities.ClientBlob.java
com.sillygames.killingSpree.clientEntities.ClientBomb.java
com.sillygames.killingSpree.clientEntities.ClientBullet.java
com.sillygames.killingSpree.clientEntities.ClientEntity.java
com.sillygames.killingSpree.clientEntities.ClientFly.java
com.sillygames.killingSpree.clientEntities.ClientFrog.java
com.sillygames.killingSpree.clientEntities.ClientPlayer.java
com.sillygames.killingSpree.clientEntities.ClientTestPlayer.java
com.sillygames.killingSpree.controls.InputController.java
com.sillygames.killingSpree.controls.onScreenControls.java
com.sillygames.killingSpree.desktop.DesktopLauncher.java
com.sillygames.killingSpree.desktop.DesktopServices.java
com.sillygames.killingSpree.helpers.EntityUtils.java
com.sillygames.killingSpree.helpers.Event.java
com.sillygames.killingSpree.helpers.MyButton.java
com.sillygames.killingSpree.helpers.MyConnection.java
com.sillygames.killingSpree.helpers.Utils.java
com.sillygames.killingSpree.managers.LevelLoader.java
com.sillygames.killingSpree.managers.WorldBodyUtils.java
com.sillygames.killingSpree.managers.WorldManager.java
com.sillygames.killingSpree.managers.WorldRenderer.java
com.sillygames.killingSpree.managers.physics.Body.java
com.sillygames.killingSpree.managers.physics.CollisionProcessor.java
com.sillygames.killingSpree.managers.physics.Ray.java
com.sillygames.killingSpree.managers.physics.WorldDebugRenderer.java
com.sillygames.killingSpree.managers.physics.World.java
com.sillygames.killingSpree.networking.ControlsSender.java
com.sillygames.killingSpree.networking.NetworkRegisterer.java
com.sillygames.killingSpree.networking.StateProcessor.java
com.sillygames.killingSpree.networking.messages.AudioMessage.java
com.sillygames.killingSpree.networking.messages.ClientDetailsMessage.java
com.sillygames.killingSpree.networking.messages.ConnectMessage.java
com.sillygames.killingSpree.networking.messages.ControlsMessage.java
com.sillygames.killingSpree.networking.messages.EntityState.java
com.sillygames.killingSpree.networking.messages.GameStateMessage.java
com.sillygames.killingSpree.networking.messages.PlayerNamesMessage.java
com.sillygames.killingSpree.networking.messages.ServerStatusMessage.java
com.sillygames.killingSpree.pool.AssetLoader.java
com.sillygames.killingSpree.pool.EntityPool.java
com.sillygames.killingSpree.pool.MessageObjectPool.java
com.sillygames.killingSpree.pool.Pool.java
com.sillygames.killingSpree.pool.Poolable.java
com.sillygames.killingSpree.renderers.HUDRenderer.java
com.sillygames.killingSpree.screens.AbstractScreen.java
com.sillygames.killingSpree.screens.ClientDiscoveryScreen.java
com.sillygames.killingSpree.screens.GameScreen.java
com.sillygames.killingSpree.screens.LobbyScreen.java
com.sillygames.killingSpree.screens.MainMenuScreen.java
com.sillygames.killingSpree.screens.OptionsScreen.java
com.sillygames.killingSpree.screens.SplashScreen.java
com.sillygames.killingSpree.screens.settings.Constants.java
com.sillygames.killingSpree.serverEntities.ServerArrow.java
com.sillygames.killingSpree.serverEntities.ServerBlob.java
com.sillygames.killingSpree.serverEntities.ServerBomb.java
com.sillygames.killingSpree.serverEntities.ServerBullet.java
com.sillygames.killingSpree.serverEntities.ServerEntity.java
com.sillygames.killingSpree.serverEntities.ServerFly.java
com.sillygames.killingSpree.serverEntities.ServerFrog.java
com.sillygames.killingSpree.serverEntities.ServerPlayer.java
com.sillygames.killingSpree.sound.SFXPlayer.java