Apply LF line endings as an SVN property, this time on the JGE source files.
This commit is contained in:
@@ -1,334 +1,334 @@
|
||||
//-------------------------------------------------------------------------------------
|
||||
//
|
||||
// JGE++ is a hardware accelerated 2D game SDK for PSP/Windows.
|
||||
//
|
||||
// Licensed under the BSD license, see LICENSE in JGE root for details.
|
||||
//
|
||||
// Copyright (c) 2007 James Hui (a.k.a. Dr.Watson) <jhkhui@gmail.com>
|
||||
//
|
||||
//-------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
#include "../include/JGE.h"
|
||||
#include "../include/JApp.h"
|
||||
|
||||
#include "../include/JGameObject.h"
|
||||
|
||||
|
||||
//JRenderer* JGameObject::mRenderer = NULL;
|
||||
|
||||
|
||||
|
||||
JGameObject::JGameObject(JTexture *tex, float x, float y, float width, float height)
|
||||
:JSprite(tex, x, y, width, height)
|
||||
{
|
||||
//mRenderer = JRenderer::GetInstance();
|
||||
|
||||
//mX = 0.0f;
|
||||
//mY = 0.0f;
|
||||
|
||||
mRenderFlags = 0;
|
||||
//mSize = 1.0f;
|
||||
//mAngle = 0.0f;
|
||||
|
||||
mOriginalBlood = 1;
|
||||
mBlood = 1;
|
||||
mHitPoint = 1;
|
||||
|
||||
mCollided = false;
|
||||
mCollisionTarget = NULL;
|
||||
mFlashing = false;
|
||||
|
||||
//mActive = false;
|
||||
|
||||
mRotationDelta = 0.0f;
|
||||
mDoRotation = false;
|
||||
|
||||
mAlphaDelta = 0.0f;
|
||||
mDoAlpha = false;
|
||||
|
||||
mDoScaling = false;
|
||||
mScaleDelta = 0.0f;
|
||||
|
||||
SetBBox(x, y, width, height);
|
||||
|
||||
}
|
||||
|
||||
|
||||
JGameObject::~JGameObject()
|
||||
{
|
||||
// JGERelease();
|
||||
}
|
||||
|
||||
|
||||
void JGameObject::Update(float dt)
|
||||
{
|
||||
JSprite::Update(dt);
|
||||
|
||||
if (mFlashing)
|
||||
{
|
||||
mFlashTimer += dt;
|
||||
if (mFlashTimer > FLASH_TIME)
|
||||
{
|
||||
mFlashTimer = 0;
|
||||
mFlashCounter++;
|
||||
if (mFlashCounter > FLASHING_COUNT)
|
||||
mFlashing = false;
|
||||
}
|
||||
}
|
||||
|
||||
if (mDoAlpha)
|
||||
{
|
||||
mAlpha += mAlphaDelta*dt;
|
||||
if (mAlpha < 0.0f)
|
||||
{
|
||||
mAlpha = 0.0f;
|
||||
if (mAnimationType == ANIMATION_TYPE_ONCE_AND_GONE)
|
||||
mActive = false;
|
||||
}
|
||||
else if (mAlpha > 255.0f)
|
||||
{
|
||||
mAlpha = 255.0f;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (mDoRotation || mDoScaling)
|
||||
{
|
||||
mRotation += mRotationDelta*dt;
|
||||
mHScale += mScaleDelta*dt;
|
||||
mVScale += mScaleDelta*dt;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
void JGameObject::Render()
|
||||
{
|
||||
/*
|
||||
if (mQuad != NULL)
|
||||
{
|
||||
//mEngine->RenderQuad(mQuad, mX, mY);
|
||||
if (mFlashing && (mFlashCounter&1)==0)
|
||||
{
|
||||
mRenderer->SetTexBlend(BLEND_SRC_ALPHA, BLEND_ONE);
|
||||
}
|
||||
|
||||
float angle = 0.0f;
|
||||
if ((mRenderFlags & RENDER_FLAG_ANGLE)==RENDER_FLAG_ANGLE)
|
||||
angle = mAngle;
|
||||
if ((mRenderFlags & RENDER_FLAG_ROTATION)==RENDER_FLAG_ROTATION)
|
||||
angle = mRotation;
|
||||
float scale = 1.0f;
|
||||
if ((mRenderFlags & RENDER_FLAG_SIZE)==RENDER_FLAG_SIZE)
|
||||
scale = mSize;
|
||||
|
||||
mRenderer->RenderQuad(mQuad, mX, mY, angle, scale, scale);
|
||||
|
||||
mRenderer->SetTexBlend(BLEND_SRC_ALPHA, BLEND_ONE_MINUS_SRC_ALPHA);
|
||||
}
|
||||
*/
|
||||
|
||||
if (!mActive) return;
|
||||
|
||||
if ((mRenderFlags & RENDER_FLAG_ANGLE)==RENDER_FLAG_ANGLE)
|
||||
mRotation = mDirection;
|
||||
|
||||
if (mFlashing && (mFlashCounter&1)==0)
|
||||
mRenderer->SetTexBlend(BLEND_SRC_ALPHA, BLEND_ONE);
|
||||
|
||||
// if ((mRenderFlags & RENDER_FLAG_SIZE)==RENDER_FLAG_SIZE)
|
||||
// {
|
||||
// mHScale = mSize;
|
||||
// mVScale = mSize;
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// mHScale = 1.0f;
|
||||
// mVScale = 1.0f;
|
||||
// }
|
||||
|
||||
JSprite::Render();
|
||||
|
||||
if (mFlashing)
|
||||
mRenderer->SetTexBlend(BLEND_SRC_ALPHA, BLEND_ONE_MINUS_SRC_ALPHA);
|
||||
|
||||
}
|
||||
|
||||
|
||||
// void JGameObject::SetPosition(float x, float y)
|
||||
// {
|
||||
// // mPos = Vector2D(x, y);
|
||||
// mX = x;
|
||||
// mY = y;
|
||||
// }
|
||||
|
||||
|
||||
//void JGameObject::SetQuad(JQuad *quad) { mQuad = quad; }
|
||||
|
||||
|
||||
|
||||
|
||||
//void JParticle::ResetVelocity()
|
||||
//{
|
||||
// float xx = mSpeed * cosf(mAngle);
|
||||
// float yy = mSpeed * sinf(mAngle);
|
||||
// mVelocity = Vector2D(xx, yy);
|
||||
//}
|
||||
|
||||
|
||||
void JGameObject::SetBBox(float x, float y, float width, float height)
|
||||
{
|
||||
mUseBoundingBox = true;
|
||||
|
||||
mBBoxX = x;
|
||||
mBBoxY = y;
|
||||
mBBoxWidth = width;
|
||||
mBBoxHeight = height;
|
||||
}
|
||||
|
||||
void JGameObject::GetBBox(float x, float y, float* xNow, float* yNow, float* width, float *height)
|
||||
{
|
||||
*xNow = x + mBBoxX;
|
||||
*yNow = y + mBBoxY;
|
||||
*width = mBBoxWidth;
|
||||
*height = mBBoxHeight;
|
||||
}
|
||||
|
||||
|
||||
bool JGameObject::Collide(JGameObject *target)
|
||||
{
|
||||
if (mUseBoundingBox)
|
||||
{
|
||||
// bounding box collision detection
|
||||
if ((target->mX+target->mBBoxX)-(mX+mBBoxX) < -target->mBBoxWidth) return false;
|
||||
if ((target->mX+target->mBBoxX)-(mX+mBBoxX) > mBBoxWidth) return false;
|
||||
if ((target->mY+target->mBBoxY)-(mY+mBBoxY) < -target->mBBoxHeight) return false;
|
||||
if ((target->mY+target->mBBoxY)-(mY+mBBoxY) > mBBoxHeight) return false;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
// Circle-Circle collision detection
|
||||
float dx = (mX+mCenterX)-(target->mX+target->mCenterX);
|
||||
float dy = (mY+mCenterY)-(target->mY+target->mCenterY);
|
||||
float dr = mRadius+target->mRadius;
|
||||
if (dx*dx + dy*dy > dr*dr)
|
||||
return false;
|
||||
}
|
||||
|
||||
//mCollided = true;
|
||||
//mCollisionTarget = target;
|
||||
SetCollisionTarget(target);
|
||||
target->SetCollisionTarget(this);
|
||||
|
||||
return true; // collision!!!
|
||||
}
|
||||
|
||||
|
||||
void JGameObject::SetCollisionTarget(JGameObject *target)
|
||||
{
|
||||
mBlood -= target->GetHitPoint();
|
||||
if (mBlood < 0)
|
||||
{
|
||||
// mActive = false;
|
||||
mBlood = 0;
|
||||
}
|
||||
|
||||
mCollided = true;
|
||||
mCollisionTarget = target;
|
||||
}
|
||||
|
||||
|
||||
|
||||
int JGameObject::GetHitPoint()
|
||||
{
|
||||
return mHitPoint;
|
||||
}
|
||||
|
||||
|
||||
void JGameObject::SetHitPoint(int pt)
|
||||
{
|
||||
mHitPoint = pt;
|
||||
}
|
||||
|
||||
|
||||
void JGameObject::SetBlood(int pt)
|
||||
{
|
||||
mOriginalBlood = pt;
|
||||
mBlood = pt;
|
||||
}
|
||||
|
||||
int JGameObject::GetBlood()
|
||||
{
|
||||
return mBlood;
|
||||
}
|
||||
|
||||
|
||||
void JGameObject::OnCollide()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
void JGameObject::StartFlashing()
|
||||
{
|
||||
mFlashing = true;
|
||||
mFlashTimer = 0.0f;
|
||||
mFlashCounter = 0;
|
||||
}
|
||||
|
||||
|
||||
void JGameObject::StopFlashing()
|
||||
{
|
||||
mFlashing = false;
|
||||
}
|
||||
|
||||
|
||||
bool JGameObject::IsFlashing()
|
||||
{
|
||||
return mFlashing;
|
||||
}
|
||||
|
||||
void JGameObject::SetRenderFlags(int flags)
|
||||
{
|
||||
mRenderFlags = flags;
|
||||
}
|
||||
|
||||
// void JGameObject::SetSize(float size)
|
||||
// {
|
||||
// mSize = size;
|
||||
// }
|
||||
//
|
||||
//
|
||||
// void JGameObject::SetAngle(float angle)
|
||||
// {
|
||||
// mAngle = angle;
|
||||
// }
|
||||
|
||||
void JGameObject::EnableAlpha(bool flag, float delta) { mDoAlpha = flag; mAlphaDelta = delta; }
|
||||
void JGameObject::EnableScaling(bool flag, float delta) { mDoScaling = flag; mScaleDelta = delta; }
|
||||
void JGameObject::EnableRotation(bool flag, float delta) { mDoRotation = flag; mRotationDelta = delta; }
|
||||
|
||||
|
||||
|
||||
void JGameObject::SetCollisionCircle(float cx, float cy, float radius)
|
||||
{
|
||||
mUseBoundingBox = false;
|
||||
|
||||
mCenterX = cx;
|
||||
mCenterY = cy;
|
||||
mRadius = radius;
|
||||
}
|
||||
|
||||
JGameObject *JGameObject::GetCollisionTarget()
|
||||
{
|
||||
return mCollisionTarget;
|
||||
}
|
||||
|
||||
// void JGameObject::SetSize(float size)
|
||||
// {
|
||||
// mSize = size;
|
||||
// //mHScale = size;
|
||||
// //mVScale = size;
|
||||
// }
|
||||
//-------------------------------------------------------------------------------------
|
||||
//
|
||||
// JGE++ is a hardware accelerated 2D game SDK for PSP/Windows.
|
||||
//
|
||||
// Licensed under the BSD license, see LICENSE in JGE root for details.
|
||||
//
|
||||
// Copyright (c) 2007 James Hui (a.k.a. Dr.Watson) <jhkhui@gmail.com>
|
||||
//
|
||||
//-------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
#include "../include/JGE.h"
|
||||
#include "../include/JApp.h"
|
||||
|
||||
#include "../include/JGameObject.h"
|
||||
|
||||
|
||||
//JRenderer* JGameObject::mRenderer = NULL;
|
||||
|
||||
|
||||
|
||||
JGameObject::JGameObject(JTexture *tex, float x, float y, float width, float height)
|
||||
:JSprite(tex, x, y, width, height)
|
||||
{
|
||||
//mRenderer = JRenderer::GetInstance();
|
||||
|
||||
//mX = 0.0f;
|
||||
//mY = 0.0f;
|
||||
|
||||
mRenderFlags = 0;
|
||||
//mSize = 1.0f;
|
||||
//mAngle = 0.0f;
|
||||
|
||||
mOriginalBlood = 1;
|
||||
mBlood = 1;
|
||||
mHitPoint = 1;
|
||||
|
||||
mCollided = false;
|
||||
mCollisionTarget = NULL;
|
||||
mFlashing = false;
|
||||
|
||||
//mActive = false;
|
||||
|
||||
mRotationDelta = 0.0f;
|
||||
mDoRotation = false;
|
||||
|
||||
mAlphaDelta = 0.0f;
|
||||
mDoAlpha = false;
|
||||
|
||||
mDoScaling = false;
|
||||
mScaleDelta = 0.0f;
|
||||
|
||||
SetBBox(x, y, width, height);
|
||||
|
||||
}
|
||||
|
||||
|
||||
JGameObject::~JGameObject()
|
||||
{
|
||||
// JGERelease();
|
||||
}
|
||||
|
||||
|
||||
void JGameObject::Update(float dt)
|
||||
{
|
||||
JSprite::Update(dt);
|
||||
|
||||
if (mFlashing)
|
||||
{
|
||||
mFlashTimer += dt;
|
||||
if (mFlashTimer > FLASH_TIME)
|
||||
{
|
||||
mFlashTimer = 0;
|
||||
mFlashCounter++;
|
||||
if (mFlashCounter > FLASHING_COUNT)
|
||||
mFlashing = false;
|
||||
}
|
||||
}
|
||||
|
||||
if (mDoAlpha)
|
||||
{
|
||||
mAlpha += mAlphaDelta*dt;
|
||||
if (mAlpha < 0.0f)
|
||||
{
|
||||
mAlpha = 0.0f;
|
||||
if (mAnimationType == ANIMATION_TYPE_ONCE_AND_GONE)
|
||||
mActive = false;
|
||||
}
|
||||
else if (mAlpha > 255.0f)
|
||||
{
|
||||
mAlpha = 255.0f;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (mDoRotation || mDoScaling)
|
||||
{
|
||||
mRotation += mRotationDelta*dt;
|
||||
mHScale += mScaleDelta*dt;
|
||||
mVScale += mScaleDelta*dt;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
void JGameObject::Render()
|
||||
{
|
||||
/*
|
||||
if (mQuad != NULL)
|
||||
{
|
||||
//mEngine->RenderQuad(mQuad, mX, mY);
|
||||
if (mFlashing && (mFlashCounter&1)==0)
|
||||
{
|
||||
mRenderer->SetTexBlend(BLEND_SRC_ALPHA, BLEND_ONE);
|
||||
}
|
||||
|
||||
float angle = 0.0f;
|
||||
if ((mRenderFlags & RENDER_FLAG_ANGLE)==RENDER_FLAG_ANGLE)
|
||||
angle = mAngle;
|
||||
if ((mRenderFlags & RENDER_FLAG_ROTATION)==RENDER_FLAG_ROTATION)
|
||||
angle = mRotation;
|
||||
float scale = 1.0f;
|
||||
if ((mRenderFlags & RENDER_FLAG_SIZE)==RENDER_FLAG_SIZE)
|
||||
scale = mSize;
|
||||
|
||||
mRenderer->RenderQuad(mQuad, mX, mY, angle, scale, scale);
|
||||
|
||||
mRenderer->SetTexBlend(BLEND_SRC_ALPHA, BLEND_ONE_MINUS_SRC_ALPHA);
|
||||
}
|
||||
*/
|
||||
|
||||
if (!mActive) return;
|
||||
|
||||
if ((mRenderFlags & RENDER_FLAG_ANGLE)==RENDER_FLAG_ANGLE)
|
||||
mRotation = mDirection;
|
||||
|
||||
if (mFlashing && (mFlashCounter&1)==0)
|
||||
mRenderer->SetTexBlend(BLEND_SRC_ALPHA, BLEND_ONE);
|
||||
|
||||
// if ((mRenderFlags & RENDER_FLAG_SIZE)==RENDER_FLAG_SIZE)
|
||||
// {
|
||||
// mHScale = mSize;
|
||||
// mVScale = mSize;
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// mHScale = 1.0f;
|
||||
// mVScale = 1.0f;
|
||||
// }
|
||||
|
||||
JSprite::Render();
|
||||
|
||||
if (mFlashing)
|
||||
mRenderer->SetTexBlend(BLEND_SRC_ALPHA, BLEND_ONE_MINUS_SRC_ALPHA);
|
||||
|
||||
}
|
||||
|
||||
|
||||
// void JGameObject::SetPosition(float x, float y)
|
||||
// {
|
||||
// // mPos = Vector2D(x, y);
|
||||
// mX = x;
|
||||
// mY = y;
|
||||
// }
|
||||
|
||||
|
||||
//void JGameObject::SetQuad(JQuad *quad) { mQuad = quad; }
|
||||
|
||||
|
||||
|
||||
|
||||
//void JParticle::ResetVelocity()
|
||||
//{
|
||||
// float xx = mSpeed * cosf(mAngle);
|
||||
// float yy = mSpeed * sinf(mAngle);
|
||||
// mVelocity = Vector2D(xx, yy);
|
||||
//}
|
||||
|
||||
|
||||
void JGameObject::SetBBox(float x, float y, float width, float height)
|
||||
{
|
||||
mUseBoundingBox = true;
|
||||
|
||||
mBBoxX = x;
|
||||
mBBoxY = y;
|
||||
mBBoxWidth = width;
|
||||
mBBoxHeight = height;
|
||||
}
|
||||
|
||||
void JGameObject::GetBBox(float x, float y, float* xNow, float* yNow, float* width, float *height)
|
||||
{
|
||||
*xNow = x + mBBoxX;
|
||||
*yNow = y + mBBoxY;
|
||||
*width = mBBoxWidth;
|
||||
*height = mBBoxHeight;
|
||||
}
|
||||
|
||||
|
||||
bool JGameObject::Collide(JGameObject *target)
|
||||
{
|
||||
if (mUseBoundingBox)
|
||||
{
|
||||
// bounding box collision detection
|
||||
if ((target->mX+target->mBBoxX)-(mX+mBBoxX) < -target->mBBoxWidth) return false;
|
||||
if ((target->mX+target->mBBoxX)-(mX+mBBoxX) > mBBoxWidth) return false;
|
||||
if ((target->mY+target->mBBoxY)-(mY+mBBoxY) < -target->mBBoxHeight) return false;
|
||||
if ((target->mY+target->mBBoxY)-(mY+mBBoxY) > mBBoxHeight) return false;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
// Circle-Circle collision detection
|
||||
float dx = (mX+mCenterX)-(target->mX+target->mCenterX);
|
||||
float dy = (mY+mCenterY)-(target->mY+target->mCenterY);
|
||||
float dr = mRadius+target->mRadius;
|
||||
if (dx*dx + dy*dy > dr*dr)
|
||||
return false;
|
||||
}
|
||||
|
||||
//mCollided = true;
|
||||
//mCollisionTarget = target;
|
||||
SetCollisionTarget(target);
|
||||
target->SetCollisionTarget(this);
|
||||
|
||||
return true; // collision!!!
|
||||
}
|
||||
|
||||
|
||||
void JGameObject::SetCollisionTarget(JGameObject *target)
|
||||
{
|
||||
mBlood -= target->GetHitPoint();
|
||||
if (mBlood < 0)
|
||||
{
|
||||
// mActive = false;
|
||||
mBlood = 0;
|
||||
}
|
||||
|
||||
mCollided = true;
|
||||
mCollisionTarget = target;
|
||||
}
|
||||
|
||||
|
||||
|
||||
int JGameObject::GetHitPoint()
|
||||
{
|
||||
return mHitPoint;
|
||||
}
|
||||
|
||||
|
||||
void JGameObject::SetHitPoint(int pt)
|
||||
{
|
||||
mHitPoint = pt;
|
||||
}
|
||||
|
||||
|
||||
void JGameObject::SetBlood(int pt)
|
||||
{
|
||||
mOriginalBlood = pt;
|
||||
mBlood = pt;
|
||||
}
|
||||
|
||||
int JGameObject::GetBlood()
|
||||
{
|
||||
return mBlood;
|
||||
}
|
||||
|
||||
|
||||
void JGameObject::OnCollide()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
void JGameObject::StartFlashing()
|
||||
{
|
||||
mFlashing = true;
|
||||
mFlashTimer = 0.0f;
|
||||
mFlashCounter = 0;
|
||||
}
|
||||
|
||||
|
||||
void JGameObject::StopFlashing()
|
||||
{
|
||||
mFlashing = false;
|
||||
}
|
||||
|
||||
|
||||
bool JGameObject::IsFlashing()
|
||||
{
|
||||
return mFlashing;
|
||||
}
|
||||
|
||||
void JGameObject::SetRenderFlags(int flags)
|
||||
{
|
||||
mRenderFlags = flags;
|
||||
}
|
||||
|
||||
// void JGameObject::SetSize(float size)
|
||||
// {
|
||||
// mSize = size;
|
||||
// }
|
||||
//
|
||||
//
|
||||
// void JGameObject::SetAngle(float angle)
|
||||
// {
|
||||
// mAngle = angle;
|
||||
// }
|
||||
|
||||
void JGameObject::EnableAlpha(bool flag, float delta) { mDoAlpha = flag; mAlphaDelta = delta; }
|
||||
void JGameObject::EnableScaling(bool flag, float delta) { mDoScaling = flag; mScaleDelta = delta; }
|
||||
void JGameObject::EnableRotation(bool flag, float delta) { mDoRotation = flag; mRotationDelta = delta; }
|
||||
|
||||
|
||||
|
||||
void JGameObject::SetCollisionCircle(float cx, float cy, float radius)
|
||||
{
|
||||
mUseBoundingBox = false;
|
||||
|
||||
mCenterX = cx;
|
||||
mCenterY = cy;
|
||||
mRadius = radius;
|
||||
}
|
||||
|
||||
JGameObject *JGameObject::GetCollisionTarget()
|
||||
{
|
||||
return mCollisionTarget;
|
||||
}
|
||||
|
||||
// void JGameObject::SetSize(float size)
|
||||
// {
|
||||
// mSize = size;
|
||||
// //mHScale = size;
|
||||
// //mVScale = size;
|
||||
// }
|
||||
|
||||
Reference in New Issue
Block a user