package org.test.crazyjumpergles;
public class BouncePad extends Entity
{
protected EBounceDirection m_BounceDir = EBounceDirection.values()[0];
protected int m_iBlockQuartersFromGround;
protected int m_iSizeBlocks;
protected int m_iStartPosAtBlock;
protected int m_iStartPosDeltaBlockQuarters;
public BouncePad()
{
super();
}
public final boolean CanBounce(GamePlayer pPlayer)
{
float positionX = pPlayer.GetPositionX();
float positionY = pPlayer.GetPositionY();
if ((positionX < (super.GetPositionX() - super.GetHalfSizeX())) || (positionX > (super.GetPositionX() + super.GetHalfSizeX())))
{
return false;
}
if ((this.m_BounceDir == EBounceDirection.Bounce_Up) && (positionY > super.GetPositionY()))
{
return false;
}
if ((this.m_BounceDir == EBounceDirection.Bounce_Down) && (positionY < super.GetPositionY()))
{
return false;
}
return true;
}
public final void Create(int iAtBlock, int iDeltaQuarters, int iQuartersFromGround)
{
this.Reset();
this.m_iStartPosAtBlock = iAtBlock;
this.m_iStartPosDeltaBlockQuarters = iDeltaQuarters;
this.m_iSizeBlocks = 2;
this.m_iBlockQuartersFromGround = iQuartersFromGround;
super.SetSize(this.m_iSizeBlocks * m_game.GetUnitBlockSize(),m_game.GetUnitBlockSize(), false);
super.SetCollSize(super.GetSizeX(), super.GetSizeY() * 0.5f);
}
public final EBounceDirection GetBounceDirection()
{
return this.m_BounceDir;
}
private int GetEndPosAtBlock()
{
int num = (int) Math.ceil((double)((this.m_iStartPosDeltaBlockQuarters + (this.m_iSizeBlocks * 4)) * 0.25f));
return (this.m_iStartPosAtBlock + (num - 1));
}
public final float GetPositionFromGround()
{
return (super.GetHalfSizeY() + (this.m_iBlockQuartersFromGround * m_game.GetUnitBlockQuarterSize()));
}
@Override
public boolean Init()
{
this.CreateSpriteAnim(1, 0, true);
this.CreateSpriteFrame("bounce_pad");
return true;
}
@Override
public void Reset()
{
super.Reset();
}
public final void SetBounceDirection(EBounceDirection bounceDir)
{
this.m_BounceDir = bounceDir;
}
@Override
public boolean Tick(int deltaMS)
{
if (!super.Tick(deltaMS))
{
return false;
}
Ground ground = m_game.GetGround();
if (ground.IsBlockVisible(this.m_iStartPosAtBlock) || ground.IsBlockVisible(this.GetEndPosAtBlock()))
{
super.m_bVisible = true;
float num = (ground.GetBlockPosOnScreen(this.m_iStartPosAtBlock) - m_game.GetUnitBlockHalfSize()) + (this.m_iStartPosDeltaBlockQuarters * m_game.GetUnitBlockQuarterSize());
float num2 = this.m_iBlockQuartersFromGround * m_game.GetUnitBlockQuarterSize();
super.SetPositionX(num + super.GetHalfSizeX(), false);
super.SetPositionY((m_game.GetGroundPosY() - num2) - super.GetHalfSizeY(), false);
}
else
{
super.m_bVisible = false;
}
return true;
}
public enum EBounceDirection
{
Bounce_Up,
Bounce_Down;
public int getValue()
{
return this.ordinal();
}
public static EBounceDirection forValue(int value)
{
return values()[value];
}
}
}