Android Open Source - mobius Movement System






From Project

Back to project page mobius.

License

The source code is released under:

MIT License

If you think the Android project mobius 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.sgtcodfish.mobiusListing.systems;
/*from  w w w  . j a va2 s  . c  om*/
import com.artemis.ComponentMapper;
import com.artemis.Entity;
import com.artemis.Filter;
import com.artemis.systems.EntityProcessingSystem;
import com.sgtcodfish.mobiusListing.components.PlayerState;
import com.sgtcodfish.mobiusListing.components.Position;
import com.sgtcodfish.mobiusListing.components.Velocity;
import com.sgtcodfish.mobiusListing.player.HumanoidAnimationState;

/**
 * @author Ashley Davis (SgtCoDFish)
 */
public class MovementSystem extends EntityProcessingSystem {
  public static final float        FRICTION    = 0.75f;
  // TODO: Implement friction and air resistance
  public static final float        AIR_RESISTANCE  = 0.75f;

  private ComponentMapper<Position>    positionMapper  = null;
  private ComponentMapper<Velocity>    velocityMapper  = null;

  private ComponentMapper<PlayerState>  stateMapper    = null;

  private float              xBound      = 0.0f;

  @SuppressWarnings("unchecked")
  public MovementSystem(float xBound) {
    this(Filter.allComponents(Position.class, Velocity.class), xBound);
  }

  protected MovementSystem(Filter filter, float xBound) {
    super(filter);

    this.xBound = xBound;
  }

  @Override
  public void initialize() {
    positionMapper = world.getMapper(Position.class);
    velocityMapper = world.getMapper(Velocity.class);
    stateMapper = world.getMapper(PlayerState.class);
  }

  public void doNextLevel(float xBound) {
    this.xBound = xBound;
  }

  @Override
  protected void process(Entity e) {
    Position p = positionMapper.get(e);
    Velocity v = velocityMapper.get(e);
    PlayerState ps = stateMapper.get(e);

    if (ps != null) {
      if (ps.state != HumanoidAnimationState.JUMPING) {
        v.velocity.x *= FRICTION; // friction, doesn't apply in the air.
      } else {
        v.velocity.x *= AIR_RESISTANCE; // air resistance when jumping
      }
    } else {
      v.velocity.x *= FRICTION; // not player so we'll just apply friction
    }

    // if (v.velocity.y > 0.0f) {
    // v.velocity.y -= WorldConstants.GRAVITY;
    // }

    v.velocity.x = (Math.abs(v.velocity.x) < 0.1f ? 0.0f : v.velocity.x);
    v.velocity.y = (Math.abs(v.velocity.y) < 0.1f ? 0.0f : v.velocity.y);

    p.position.add(v.velocity);

    if (p.position.x < 0.0f) {
      p.position.x = 0.0f;
      v.velocity.x = 0.0f;
    }

    if (p.position.y < 0.0f) {
      p.position.y = 0.0f;
      v.velocity.y = 0.0f;
    }

    if (p.position.x > xBound) {
      p.position.x = 0.0f;
    }

    if (ps != null) {
      if (v.velocity.x == 0.0f && (v.velocity.y == 0.0f && ps.state != HumanoidAnimationState.JUMPING)) {
        ps.state = HumanoidAnimationState.STANDING;
      }
    }
  }
}




Java Source Code List

com.sgtcodfish.mobiusListing.Item.java
com.sgtcodfish.mobiusListing.MobiusListingGame.java
com.sgtcodfish.mobiusListing.TerrainCollisionMap.java
com.sgtcodfish.mobiusListing.WorldConstants.java
com.sgtcodfish.mobiusListing.android.AndroidLauncher.java
com.sgtcodfish.mobiusListing.components.ChildLinked.java
com.sgtcodfish.mobiusListing.components.Collectable.java
com.sgtcodfish.mobiusListing.components.DxLayer.java
com.sgtcodfish.mobiusListing.components.DyLayer.java
com.sgtcodfish.mobiusListing.components.FadableLayer.java
com.sgtcodfish.mobiusListing.components.FocusTaker.java
com.sgtcodfish.mobiusListing.components.InteractableLayer.java
com.sgtcodfish.mobiusListing.components.Interactable.java
com.sgtcodfish.mobiusListing.components.Inventory.java
com.sgtcodfish.mobiusListing.components.Linked.java
com.sgtcodfish.mobiusListing.components.MobiusSprite.java
com.sgtcodfish.mobiusListing.components.MovingLayer.java
com.sgtcodfish.mobiusListing.components.Opacity.java
com.sgtcodfish.mobiusListing.components.PlatformInputListener.java
com.sgtcodfish.mobiusListing.components.PlatformSprite.java
com.sgtcodfish.mobiusListing.components.PlayerInputListener.java
com.sgtcodfish.mobiusListing.components.PlayerSprite.java
com.sgtcodfish.mobiusListing.components.PlayerState.java
com.sgtcodfish.mobiusListing.components.Position.java
com.sgtcodfish.mobiusListing.components.Solid.java
com.sgtcodfish.mobiusListing.components.StaticSprite.java
com.sgtcodfish.mobiusListing.components.TiledRenderable.java
com.sgtcodfish.mobiusListing.components.Velocity.java
com.sgtcodfish.mobiusListing.desktop.DesktopLauncher.java
com.sgtcodfish.mobiusListing.levels.LevelEntityFactory.java
com.sgtcodfish.mobiusListing.player.HumanoidAnimationState.java
com.sgtcodfish.mobiusListing.player.PlayerConstants.java
com.sgtcodfish.mobiusListing.player.PlayerEntityFactory.java
com.sgtcodfish.mobiusListing.systems.AudioSystem.java
com.sgtcodfish.mobiusListing.systems.CollisionBoxRenderingDebugSystem.java
com.sgtcodfish.mobiusListing.systems.FocusTakerSystem.java
com.sgtcodfish.mobiusListing.systems.LevelAdvanceSystem.java
com.sgtcodfish.mobiusListing.systems.LinkingSystem.java
com.sgtcodfish.mobiusListing.systems.MovementSystem.java
com.sgtcodfish.mobiusListing.systems.PlatformInputSystem.java
com.sgtcodfish.mobiusListing.systems.PlayerInputSystem.java
com.sgtcodfish.mobiusListing.systems.SolidProcessingSystem.java
com.sgtcodfish.mobiusListing.systems.SpriteRenderingSystem.java
com.sgtcodfish.mobiusListing.systems.TerrainCollisionBoxRenderingDebugSystem.java
com.sgtcodfish.mobiusListing.systems.TerrainCollisionSystem.java
com.sgtcodfish.mobiusListing.systems.TiledRenderingSystem.java