Android Open Source - Station42 Match 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.game;
/*from  ww  w . j a v  a2  s.c  o m*/
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.audio.Sound;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
import com.badlogic.gdx.graphics.glutils.ShapeRenderer.ShapeType;
import com.badlogic.gdx.math.Rectangle;
import com.badlogic.gdx.math.Vector3;
import com.station42.base.Engine;
import com.station42.base.EngineMessageListener;
import com.station42.base.EngineRenderer;
import com.station42.base.EngineUpdateListener;
import com.station42.base.Entity;
import com.station42.base.Engine.Message;
import com.station42.death.DeathMessage;
import com.station42.faction.EntityFaction;

public class MatchSystem implements EngineMessageListener, EngineRenderer,
    EngineUpdateListener {
  BitmapFont font;
  EntityFaction winner;
  float pointInterval = 5f;
  float lastPointChange = 0f;
  float winnerDuration = 5f;
  private static final TextureRegion RED_DOT = new TextureRegion(Station40Game.manager.get("sprites.png", Texture.class), 10, 64, 5, 5);
  private static final TextureRegion BLUE_DOT = new TextureRegion(Station40Game.manager.get("sprites.png", Texture.class), 15, 64, 5, 5);
  private static final TextureRegion WHITE_DOT = new TextureRegion(Station40Game.manager.get("sprites.png", Texture.class), 20, 64, 5, 5);
  public MatchSystem(BitmapFont font) {
    this.font = font;
  }
  @Override
  public void update(Engine engine, float delta) {
    if (winner != null) {
      winnerDuration -= delta;
      if (winnerDuration <= 0) {
        Station40Game.mainMenu();
        EntityFaction.clearScores();
      }
    }
    lastPointChange += delta;
    if (lastPointChange >= pointInterval) {
      lastPointChange -= pointInterval;
      int redCount = 0;
      int blueCount = 0;
      for (Entity portal : engine.getEntitiesWithComponent(ScoringPortal.class)) {
        EntityFaction faction = portal.getComponent(EntityFaction.class);
        if (faction == EntityFaction.red)
          redCount++;
        else if (faction == EntityFaction.blue)
          blueCount++;
      }
      int redLead = redCount - blueCount;
      if (redLead > 0)
        EntityFaction.blue.losePoints(redLead);
      else if (redLead < 0)
        EntityFaction.red.losePoints(-redLead);
      checkScore();
    }
  }

  @Override
  public void render(Engine engine, SpriteBatch batch, Rectangle viewport) {
    int redCount = 0;
    int blueCount = 0;
    int whiteCount = 0;
    float ouyaBorder = 0.05f * viewport.height;
    for (Entity portal : engine.getEntitiesWithComponent(ScoringPortal.class)) {
      EntityFaction faction = portal.getComponent(EntityFaction.class);
      if (faction == EntityFaction.red)
        redCount++;
      else if (faction == EntityFaction.blue)
        blueCount++;
      else
        whiteCount++;
    }
    batch.end();
    engine.shapeRenderer.begin(ShapeType.Filled);
    engine.shapeRenderer.setColor(Color.GRAY);
    engine.shapeRenderer.rect(-35, viewport.height / 2 - ouyaBorder - 40, 70, 40);
    engine.shapeRenderer.end();
    batch.begin();
    if (winner == null) {
      font.setColor(Color.RED);
      font.draw(batch, "" + EntityFaction.red.getScore(), -30, viewport.height / 2 - ouyaBorder);
      font.setColor(Color.BLUE);
      font.draw(batch, "" + EntityFaction.blue.getScore(), 20, viewport.height / 2 - ouyaBorder);
      font.setColor(Color.WHITE);
      font.draw(batch, "Portals", -20, viewport.height / 2 - 15 - ouyaBorder);
      font.setColor(Color.BLACK);
//      font.draw(batch, "" + Gdx.graphics.getFramesPerSecond(), -viewport.width / 2, viewport.height / 2 - ouyaBorder);
      for (int i = 0;i < whiteCount;i++) {
        batch.draw(WHITE_DOT, (i * WHITE_DOT.getRegionWidth()) - (whiteCount * WHITE_DOT.getRegionWidth()) / 2, viewport.height / 2 - ouyaBorder - 40);
      }
      for (int i = 0;i < redCount;i++) {
        batch.draw(RED_DOT, -(i * RED_DOT.getRegionWidth()) - ((whiteCount + 4) * WHITE_DOT.getRegionWidth()) / 2, viewport.height / 2 - ouyaBorder - 40);
      }
      for (int i = 0;i < blueCount;i++) {
        batch.draw(BLUE_DOT, (i * BLUE_DOT.getRegionWidth()) + ((whiteCount + 2) * WHITE_DOT.getRegionWidth()) / 2, viewport.height / 2 - ouyaBorder - 40);
      }
    } else {
      font.setColor(winner.getColor());
      font.draw(batch, winner.getName() + " WINS!", -20, -15);
    }
  }

  @Override
  public void receiveMessage(Engine engine, Message message) {
    if (message instanceof DeathMessage) {
      DeathMessage death = (DeathMessage) message;
      if (death.deceased.getComponent(EntityFaction.class) != null) {
        death.deceased.getComponent(EntityFaction.class).losePoints(5);
      }
    }
    checkScore();
  }
  
  private void checkScore() {
    if (winner == null) {
      winner = EntityFaction.getWinner();
      if (winner != null) {
        Station40Game.mainTheme.stop();
        Station40Game.manager.get("sounds/win_tune.wav", Sound.class).play(0.5f);
      }
    }
  }

}




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