Android Open Source - nahwc-g Check Collision






From Project

Back to project page nahwc-g.

License

The source code is released under:

Apache License

If you think the Android project nahwc-g 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

/*
 *   Copyright 2013 oddlydrawn/*  www  .jav a  2 s. c  o m*/
 *
 *   Licensed under the Apache License, Version 2.0 (the "License");
 *   you may not use this file except in compliance with the License.
 *   You may obtain a copy of the License at
 *
 *       http://www.apache.org/licenses/LICENSE-2.0
 *
 *   Unless required by applicable law or agreed to in writing, software
 *   distributed under the License is distributed on an "AS IS" BASIS,
 *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *   See the License for the specific language governing permissions and
 *   limitations under the License.
 */

package com.tumblr.oddlydrawn.stupidworm;

import java.util.ArrayList;

import com.badlogic.gdx.math.Rectangle;

/** @author oddlydrawn */
public class CheckCollision {
  ArrayList<Rectangle> foodList;
  Vector2Marked bodySegment;
  Rectangle headRect;
  Rectangle bodyRect;
  Rectangle foodRect;
  Level level;
  Worm worm;
  Food food;
  int[][] levelArray;
  int bodyLength;
  int levelTile;
  int numFood;
  int tmpX;
  int tmpY;

  public CheckCollision (Food food, Worm worm, Level level) {
    this.food = food;
    this.worm = worm;
    this.level = level;
    bodyRect = new Rectangle();
    foodRect = new Rectangle();
    foodList = food.getRectangles();
    setWorm(worm);
    setLevel(level);
  }

  public boolean wormAndWorm () {
    updateHead();
    bodyLength = worm.getBodyLength();
    // headRect is zero
    for (int i = 1; i < bodyLength; i++) {
      bodySegment = worm.getBodySegment(i);
      bodyRect.x = bodySegment.x;
      bodyRect.y = bodySegment.y;
      bodyRect.width = Level.SIZE;
      bodyRect.height = Level.SIZE;
      if (headRect.overlaps(bodyRect)) return true;
    }
    return false;
  }

  public boolean wormAndWall () {
    tmpX = worm.getHeadIntX();
    tmpY = worm.getHeadIntY();
    return wallCollidesWith(tmpX, tmpY);
  }

  public boolean wormAndFood () {
    updateHead();
    numFood = food.getNum();
    for (int i = 0; i < numFood; i++) {
      foodRect = foodList.get(i);
      if (foodRect.overlaps(headRect)) {
        food.removeOne(i);
        return true;
      }
    }
    return false;
  }

  public boolean thisAndAll (Rectangle testRect) {
    numFood = food.getNum();
    for (int i = 0; i < numFood; i++) {
      foodRect = foodList.get(i);
      if (foodRect.overlaps(testRect)) return true;
    }

    tmpX = (int)testRect.x;
    tmpY = (int)testRect.y;
    if (wallCollidesWith(tmpX, tmpY)) return true;

    bodyLength = worm.getBodyLength();
    for (int i = 0; i < bodyLength; i++) {
      bodySegment = worm.getBodySegment(i);
      bodyRect.x = bodySegment.x;
      bodyRect.y = bodySegment.y;
      bodyRect.width = Level.SIZE;
      bodyRect.height = Level.SIZE;
      if (testRect.overlaps(bodyRect)) return true;
    }
    return false;
  }

  private boolean wallCollidesWith (float x, float y) {
    tmpX = (int)x / Level.SIZE;
    tmpY = (int)y / Level.SIZE;

    levelTile = levelArray[tmpX][tmpY];
    return (levelTile == Level.WALL);
  }

  private void updateHead () {
    headRect.x = worm.getHeadIntX();
    headRect.y = worm.getHeadIntY();
  }

  public void setWorm (Worm w) {
    tmpX = w.getHeadIntX();
    tmpY = w.getHeadIntY();
    headRect = new Rectangle(tmpX, tmpY, Level.SIZE, Level.SIZE);
  }

  public void setLevel (Level level) {
    levelArray = level.getLevelArray();
  }
}




Java Source Code List

com.tumblr.oddlydrawn.nahwc.IOSLauncher.java
com.tumblr.oddlydrawn.nahwc.client.GwtLauncher.java
com.tumblr.oddlydrawn.nahwc.client.HtmlLauncher.java
com.tumblr.oddlydrawn.nahwc.desktop.DesktopLauncher.java
com.tumblr.oddlydrawn.stupidworm.AndroidLauncher.java
com.tumblr.oddlydrawn.stupidworm.Assets.java
com.tumblr.oddlydrawn.stupidworm.CheckCollision.java
com.tumblr.oddlydrawn.stupidworm.Controller.java
com.tumblr.oddlydrawn.stupidworm.Food.java
com.tumblr.oddlydrawn.stupidworm.Level.java
com.tumblr.oddlydrawn.stupidworm.MainMenuInterface.java
com.tumblr.oddlydrawn.stupidworm.MyGdxGame.java
com.tumblr.oddlydrawn.stupidworm.MyMusic.java
com.tumblr.oddlydrawn.stupidworm.NahwcGame.java
com.tumblr.oddlydrawn.stupidworm.Renderer.java
com.tumblr.oddlydrawn.stupidworm.SavedStuff.java
com.tumblr.oddlydrawn.stupidworm.Vector2Marked.java
com.tumblr.oddlydrawn.stupidworm.Worm.java
com.tumblr.oddlydrawn.stupidworm.screens.GameScreen.java
com.tumblr.oddlydrawn.stupidworm.screens.LicenseScreen.java
com.tumblr.oddlydrawn.stupidworm.screens.LoadingScreen.java
com.tumblr.oddlydrawn.stupidworm.screens.MainMenuScreen.java