111 lines
4.6 KiB
Java
111 lines
4.6 KiB
Java
package com.hkri.HoppyGirl;
|
|
|
|
import org.andengine.engine.Engine;
|
|
import org.andengine.entity.primitive.Rectangle;
|
|
import org.andengine.entity.scene.Scene;
|
|
import org.andengine.entity.sprite.Sprite;
|
|
import org.andengine.opengl.texture.region.ITextureRegion;
|
|
|
|
/**
|
|
* (c) 2014 John Espiritu
|
|
* (c) 2014 hkri studios
|
|
*
|
|
* @author John Espiritu
|
|
* @since December 30, 2014
|
|
*
|
|
*/
|
|
|
|
public class CrystalObstacles {
|
|
|
|
//Crystal Regions
|
|
ITextureRegion crystalRegion1, crystalRegion2, crystalRegion3;
|
|
Sprite crystalSprite;
|
|
int currentCrystalType = -1;
|
|
|
|
//Passed flag
|
|
public boolean obstacleChecked = false;
|
|
|
|
//Game settings
|
|
Engine mEngine;
|
|
|
|
//Hit area
|
|
Rectangle[] hitArea = new Rectangle[4];
|
|
|
|
public CrystalObstacles(ITextureRegion c1, ITextureRegion c2, ITextureRegion c3, Engine ngn){
|
|
crystalRegion1 = c1; crystalRegion2 = c2; crystalRegion3 = c3;
|
|
mEngine = ngn;
|
|
}
|
|
|
|
public void disposeObject(Scene scn){
|
|
scn.detachChild(crystalSprite);
|
|
for(Rectangle rt : hitArea)
|
|
if(rt.isDisposed() == false )rt.dispose();
|
|
if(crystalSprite.isDisposed() == false )crystalSprite.dispose();
|
|
}
|
|
|
|
public void attachCrystal(Scene scn, float pX, float pYBottom, int crystalType){
|
|
hitArea = new Rectangle[4];
|
|
currentCrystalType = crystalType;
|
|
if(crystalType == 0) {
|
|
crystalSprite = new Sprite(pX, pYBottom, crystalRegion1, mEngine.getVertexBufferObjectManager());
|
|
hitArea[0] = new Rectangle(getX(), getY() + 19, 22, 64, mEngine.getVertexBufferObjectManager());
|
|
hitArea[1] = new Rectangle(getX() + 9, getY(), 6, 18, mEngine.getVertexBufferObjectManager());
|
|
hitArea[2] = new Rectangle(getX() + 5, getY() + 10, 14, 9, mEngine.getVertexBufferObjectManager());
|
|
hitArea[3] = new Rectangle(getX() + 2, getY() + 14, 18, 4, mEngine.getVertexBufferObjectManager());
|
|
}
|
|
else if(crystalType == 1) {
|
|
crystalSprite = new Sprite(pX, pYBottom, crystalRegion2, mEngine.getVertexBufferObjectManager());
|
|
hitArea[0] = new Rectangle(getX(), getY() + 18, 22, 34, mEngine.getVertexBufferObjectManager());
|
|
hitArea[1] = new Rectangle(getX() + 9, getY() + 1, 6, 18, mEngine.getVertexBufferObjectManager());
|
|
hitArea[2] = new Rectangle(getX() + 4, getY() + 10, 14, 8, mEngine.getVertexBufferObjectManager());
|
|
hitArea[3] = new Rectangle(getX() + 2, getY() + 14, 18, 4, mEngine.getVertexBufferObjectManager());
|
|
}
|
|
else if(crystalType == 2) {
|
|
crystalSprite = new Sprite(pX, pYBottom, crystalRegion3, mEngine.getVertexBufferObjectManager());
|
|
hitArea[0] = new Rectangle(getX() + 10, getY() + 30, 34, 46, mEngine.getVertexBufferObjectManager());
|
|
hitArea[1] = new Rectangle(getX() + 1, getY() + 44, 10, 32, mEngine.getVertexBufferObjectManager());
|
|
hitArea[2] = new Rectangle(getX() + 30, getY() + 0, 6, 35, mEngine.getVertexBufferObjectManager());
|
|
hitArea[3] = new Rectangle(getX() + 22, getY() + 14, 22, 20, mEngine.getVertexBufferObjectManager());
|
|
}
|
|
crystalSprite.setY(crystalSprite.getY() - crystalSprite.getHeight());
|
|
scn.attachChild(crystalSprite);
|
|
}
|
|
|
|
public Rectangle[] getCollidingRectangles(){
|
|
return hitArea;
|
|
}
|
|
|
|
private void updateColliderPosition(){
|
|
if(currentCrystalType == 0) {
|
|
hitArea[0].setPosition(getX(), getY() + 19);
|
|
hitArea[1].setPosition(getX() + 9, getY());
|
|
hitArea[2].setPosition(getX() + 5, getY() + 10);
|
|
hitArea[3].setPosition(getX() + 2, getY() + 14);
|
|
}
|
|
else if(currentCrystalType == 1) {
|
|
hitArea[0].setPosition(getX(), getY() + 18);
|
|
hitArea[1].setPosition(getX() + 9, getY() + 1);
|
|
hitArea[2].setPosition(getX() + 4, getY() + 10);
|
|
hitArea[3].setPosition(getX() + 2, getY() + 14);
|
|
}
|
|
else if(currentCrystalType == 2) {
|
|
hitArea[0].setPosition(getX() + 10, getY() + 30);
|
|
hitArea[1].setPosition(getX() + 1, getY() + 44);
|
|
hitArea[2].setPosition(getX() + 30, getY() + 0);
|
|
hitArea[3].setPosition(getX() + 22, getY() + 14);
|
|
}
|
|
}
|
|
|
|
public Sprite getSprite(){
|
|
return crystalSprite;
|
|
}
|
|
|
|
public void setX(float nval) { crystalSprite.setX(nval); updateColliderPosition(); }
|
|
public void setY(float nval) { crystalSprite.setY(nval); updateColliderPosition(); }
|
|
public float getX() { return crystalSprite.getX();}
|
|
public float getY() { return crystalSprite.getY();}
|
|
public float getW() { return crystalSprite.getWidth();}
|
|
public float getH() { return crystalSprite.getHeight();}
|
|
|
|
}
|