* Add a plasma effect on the cards back
This commit is contained in:
jean.chalard
2009-05-30 14:06:52 +00:00
parent 5de26cc509
commit b4d040b263
13 changed files with 145 additions and 51 deletions
+1 -1
View File
@@ -1,4 +1,4 @@
OBJS = objs/ActionElement.o objs/ActionLayer.o objs/ActionStack.o objs/AIMomirPlayer.o objs/AIPlayer.o objs/AIStats.o objs/Blocker.o objs/CardGui.o objs/CardDescriptor.o objs/CardDisplay.o objs/ConstraintResolver.o objs/Counters.o objs/Credits.o objs/Damage.o objs/DamagerDamaged.o objs/DamageResolverLayer.o objs/DeckDataWrapper.o objs/DeckStats.o objs/DuelLayers.o objs/ExtraCost.o objs/GameApp.o objs/GameLauncher.o objs/GameObserver.o objs/GameOptions.o objs/GameStateDuel.o objs/GameStateMenu.o objs/GameStateOptions.o objs/GameStateShop.o objs/GuiCardsController.o objs/GuiLayers.o objs/Logger.o objs/ManaCost.o objs/ManaCostHybrid.o objs/MenuItem.o objs/MTGAbility.o objs/MTGCardInstance.o objs/MTGCard.o objs/MTGDeck.o objs/MTGDefinitions.o objs/MTGGamePhase.o objs/MTGGameZones.o objs/MTGGuiHand.o objs/MTGGuiPlay.o objs/MTGRules.o objs/OptionItem.o objs/PhaseRing.o objs/Player.o objs/PlayerData.o objs/PlayGuiObjectController.o objs/PlayGuiObject.o objs/PriceList.o objs/ShopItem.o objs/SimpleMenu.o objs/SimpleMenuItem.o objs/Subtypes.o objs/TargetChooser.o objs/TargetsList.o objs/TextScroller.o objs/TexturesCache.o objs/Token.o objs/Translate.o objs/utils.o objs/WEvent.o OBJS = objs/ActionElement.o objs/ActionLayer.o objs/ActionStack.o objs/AIMomirPlayer.o objs/AIPlayer.o objs/AIStats.o objs/Blocker.o objs/CardGui.o objs/CardDescriptor.o objs/CardDisplay.o objs/CardEffect.o objs/ConstraintResolver.o objs/Counters.o objs/Credits.o objs/Damage.o objs/DamagerDamaged.o objs/DamageResolverLayer.o objs/DeckDataWrapper.o objs/DeckStats.o objs/DuelLayers.o objs/ExtraCost.o objs/GameApp.o objs/GameLauncher.o objs/GameObserver.o objs/GameOptions.o objs/GameStateDuel.o objs/GameStateMenu.o objs/GameStateOptions.o objs/GameStateShop.o objs/GuiCardsController.o objs/GuiLayers.o objs/Logger.o objs/ManaCost.o objs/ManaCostHybrid.o objs/MenuItem.o objs/MTGAbility.o objs/MTGCardInstance.o objs/MTGCard.o objs/MTGDeck.o objs/MTGDefinitions.o objs/MTGGamePhase.o objs/MTGGameZones.o objs/MTGGuiHand.o objs/MTGGuiPlay.o objs/MTGRules.o objs/OptionItem.o objs/PhaseRing.o objs/Player.o objs/PlayerData.o objs/PlayGuiObjectController.o objs/PlayGuiObject.o objs/PriceList.o objs/ShopItem.o objs/SimpleMenu.o objs/SimpleMenuItem.o objs/Subtypes.o objs/TargetChooser.o objs/TargetsList.o objs/TextScroller.o objs/TexturesCache.o objs/Token.o objs/Translate.o objs/utils.o objs/WEvent.o
DEPS = $(patsubst objs/%.o, deps/%.d, $(OBJS)) DEPS = $(patsubst objs/%.o, deps/%.d, $(OBJS))
RESULT = $(shell psp-config --psp-prefix 2> Makefile.cache) RESULT = $(shell psp-config --psp-prefix 2> Makefile.cache)
+26
View File
@@ -0,0 +1,26 @@
#ifndef _CARDEFFECT_H_
#define _CARDEFFECT_H_
#include <JGE.h>
#include "Effects.h"
class CardEffect : public Effect
{
public:
CardEffect();
~CardEffect();
private:
static PIXEL_TYPE surface[MTG_IMAGE_WIDTH*MTG_IMAGE_HEIGHT];
unsigned char sineTable1[256];
unsigned char sineTable2[256];
PIXEL_TYPE palette[256];
JTexture * backTexture;
JTexture * backThumbTexture;
public:
void UpdateSmall(float dt);
void UpdateBig(float dt);
};
#endif // _CARDEFFECT_H_
+9
View File
@@ -0,0 +1,9 @@
#ifndef _EFFECTS_H_
#define _EFFECTS_H_
class Effect
{
};
#endif // _EFFECTS_H_
+4 -1
View File
@@ -33,6 +33,8 @@
#include "../include/TexturesCache.h" #include "../include/TexturesCache.h"
#include "../include/CardEffect.h"
#define MAX_STATE 6 #define MAX_STATE 6
@@ -62,12 +64,13 @@ class GameApp: public JApp
GameState* mNextState; GameState* mNextState;
GameState* mGameStates[MAX_STATE]; GameState* mGameStates[MAX_STATE];
public: public:
int players[2]; int players[2];
MTGAllCards * collection; MTGAllCards * collection;
int gameType; int gameType;
TexturesCache * cache; TexturesCache * cache;
CardEffect *effect;
GameApp(); GameApp();
virtual ~GameApp(); virtual ~GameApp();
+2 -6
View File
@@ -56,7 +56,6 @@ class GameStateDeckViewer: public GameState, public JGuiListener
int colorFilter; int colorFilter;
JMusic * bgMusic; JMusic * bgMusic;
JTexture * backTex;
JQuad * backQuad; JQuad * backQuad;
SimpleMenu * welcome_menu; SimpleMenu * welcome_menu;
JLBFont * mFont; JLBFont * mFont;
@@ -182,9 +181,7 @@ class GameStateDeckViewer: public GameState, public JGuiListener
pspIcons[i]->SetHotSpot(16,16); pspIcons[i]->SetHotSpot(16,16);
} }
backQuad = GameApp::CommonRes->GetQuad("back");
backTex = JRenderer::GetInstance()->LoadTexture("sets/back.jpg", TEX_TYPE_USE_VRAM);
backQuad = NEW JQuad(backTex, 0, 0, 200, 285); // Create quad for rendering.
//menuFont = NEW JLBFont("graphics/f3",16); //menuFont = NEW JLBFont("graphics/f3",16);
menuFont = GameApp::CommonRes->GetJLBFont("graphics/f3"); menuFont = GameApp::CommonRes->GetJLBFont("graphics/f3");
@@ -238,8 +235,6 @@ class GameStateDeckViewer: public GameState, public JGuiListener
JSoundSystem::GetInstance()->StopMusic(GameApp::music); JSoundSystem::GetInstance()->StopMusic(GameApp::music);
SAFE_DELETE(GameApp::music); SAFE_DELETE(GameApp::music);
} }
SAFE_DELETE(backTex);
SAFE_DELETE(backQuad);
SAFE_DELETE(welcome_menu); SAFE_DELETE(welcome_menu);
SAFE_DELETE(menu); SAFE_DELETE(menu);
SAFE_DELETE(pspIconsTexture); SAFE_DELETE(pspIconsTexture);
@@ -275,6 +270,7 @@ class GameStateDeckViewer: public GameState, public JGuiListener
virtual void Update(float dt) virtual void Update(float dt)
{ {
mParent->effect->UpdateBig(dt);
hudAlpha = 255-(last_user_activity * 500); hudAlpha = 255-(last_user_activity * 500);
if (hudAlpha < 0) hudAlpha = 0; if (hudAlpha < 0) hudAlpha = 0;
if (sellMenu){ if (sellMenu){
-1
View File
@@ -24,7 +24,6 @@ class GameStateShop: public GameState, public JGuiListener
JQuad * mBg; JQuad * mBg;
JTexture * bgTexture; JTexture * bgTexture;
JQuad * mBack; JQuad * mBack;
JTexture * backTexture;
SimpleMenu * menu; SimpleMenu * menu;
int mStage; int mStage;
char starterBuffer[128], boosterBuffer[128]; char starterBuffer[128], boosterBuffer[128];
+3
View File
@@ -7,6 +7,9 @@
#define MTG_IMAGE_WIDTH 200 #define MTG_IMAGE_WIDTH 200
#define MTG_IMAGE_HEIGHT 285 #define MTG_IMAGE_HEIGHT 285
#define MTG_MINIIMAGE_WIDTH 45
#define MTG_MINIIMAGE_HEIGHT 64
#define MAX_TYPES_PER_CARD 10 #define MAX_TYPES_PER_CARD 10
+1 -3
View File
@@ -84,7 +84,6 @@ GameObserver * g = GameObserver::GetInstance();
//No mana, try to get some //No mana, try to get some
getPotentialMana(); getPotentialMana();
switch(currentGamePhase){ switch(currentGamePhase){
case Constants::MTG_PHASE_FIRSTMAIN: case Constants::MTG_PHASE_FIRSTMAIN:
if (canPutLandsIntoPlay && (potentialMana->getConvertedCost() <8 || game->hand->nb_cards > 1) ){ if (canPutLandsIntoPlay && (potentialMana->getConvertedCost() <8 || game->hand->nb_cards > 1) ){
@@ -110,9 +109,8 @@ GameObserver * g = GameObserver::GetInstance();
return AIPlayerBaka::computeActions(); return AIPlayerBaka::computeActions();
break; break;
} }
}else{
return AIPlayerBaka::computeActions();
} }
return AIPlayerBaka::computeActions();
} }
/* /*
+58
View File
@@ -0,0 +1,58 @@
#include "../include/GameApp.h"
#include "../include/MTGCard.h"
#include "../include/CardEffect.h"
PIXEL_TYPE CardEffect::surface[] = {};
CardEffect::CardEffect()
{
backTexture = GameApp::CommonRes->GetQuad("back")->mTex;
backThumbTexture = GameApp::CommonRes->GetQuad("back_thumb")->mTex;
for (int i = sizeof(palette)/sizeof(palette[0]) - 1; i >= 0; --i)
{
sineTable1[i] = 127 + 127 * sinf(2*M_PI*((float)i)/256.0) * sinf(2*M_PI*((float)i)/256.0);
sineTable2[i] = 127 + 127 * sinf(M_PI * sinf(2*M_PI*((float)i)/256.0));
palette[i] = ARGB(((unsigned char)(191 + 64 * (sinf(M_PI*sinf(2*M_PI*((float)i)/256.0)/2)))),
0,
((unsigned char)(64 + 64 * (cosf(M_PI*sinf(2*M_PI*((float)i)/256.0)/2)))),
(unsigned char)(255 * (0.5 + sinf(2*M_PI*((float)i)/256.0)/2) * (0.5 + sinf(2*M_PI*((float)i)/256.0)/2))
);
}
}
CardEffect::~CardEffect()
{
}
void CardEffect::UpdateSmall(float dt)
{
static float t = 0;
t += 3*dt;
unsigned char c = (unsigned char)(5*t);
for (int j = MTG_MINIIMAGE_HEIGHT - 1; j >= 0; --j)
for (int i = MTG_MINIIMAGE_WIDTH - 1; i >= 0; --i)
{
unsigned int r = c + sineTable1[0xFF & (c + i*2)] + sineTable1[0xFF & ((j+i)*sineTable1[c]/128)];
r %= 255;
surface[MTG_MINIIMAGE_WIDTH*j+i] = palette[r];
}
backThumbTexture->UpdateBits(0, 0, MTG_MINIIMAGE_WIDTH, MTG_MINIIMAGE_HEIGHT, surface);
}
void CardEffect::UpdateBig(float dt)
{
static float t = 0;
t += 3*dt;
unsigned char c = (unsigned char)(9*t);
for (int j = MTG_IMAGE_HEIGHT - 1; j >= 0; --j)
for (int i = MTG_IMAGE_WIDTH - 1; i >= 0; --i)
{
unsigned int r = 2*c + sineTable2[0xFF & (i/2+j/2)] + sineTable1[0xFF & (j/2*(j/3+sineTable2[c])/256)];
r %= 255;
surface[MTG_IMAGE_WIDTH*j+i] = palette[r];
}
backTexture->UpdateBits(0, 0, MTG_IMAGE_WIDTH, MTG_IMAGE_HEIGHT, surface);
}
+3 -3
View File
@@ -92,7 +92,7 @@ void GameApp::Create()
CommonRes->CreateTexture("sets/back.jpg"); CommonRes->CreateTexture("sets/back.jpg");
CommonRes->CreateQuad("back", "sets/back.jpg", 0, 0, 200, 285); CommonRes->CreateQuad("back", "sets/back.jpg", 0, 0, 200, 285);
CommonRes->CreateTexture("sets/back_thumb.jpg"); CommonRes->CreateTexture("sets/back_thumb.jpg");
CommonRes->CreateQuad("back_thumb", "sets/back_thumb.jpg", 0, 0, 45, 64); CommonRes->CreateQuad("back_thumb", "sets/back_thumb.jpg", 0, 0, MTG_MINIIMAGE_WIDTH, MTG_MINIIMAGE_HEIGHT);
CommonRes->CreateTexture("graphics/particles.png"); CommonRes->CreateTexture("graphics/particles.png");
CommonRes->CreateQuad("particles", "graphics/particles.png", 0, 0, 32, 32); CommonRes->CreateQuad("particles", "graphics/particles.png", 0, 0, 32, 32);
@@ -145,6 +145,8 @@ void GameApp::Create()
mCurrentState = NULL; mCurrentState = NULL;
mNextState = mGameStates[GAME_STATE_MENU]; mNextState = mGameStates[GAME_STATE_MENU];
effect = new CardEffect();
char buf[512]; char buf[512];
sprintf(buf, "size of MTGCardInstance : %i\n" , sizeof(MTGCardInstance)); sprintf(buf, "size of MTGCardInstance : %i\n" , sizeof(MTGCardInstance));
OutputDebugString(buf); OutputDebugString(buf);
@@ -219,8 +221,6 @@ void GameApp::Update()
return; return;
} }
float dt = mEngine->GetDelta(); float dt = mEngine->GetDelta();
if (dt > 35.0f) // min 30 FPS ;) if (dt > 35.0f) // min 30 FPS ;)
dt = 35.0f; dt = 35.0f;
+4
View File
@@ -328,6 +328,7 @@ void GameStateDuel::Update(float dt)
} }
} }
} }
mParent->effect->UpdateSmall(dt);
game->Update(dt); game->Update(dt);
if (game->gameOver){ if (game->gameOver){
credits->compute(mPlayers[0],mPlayers[1], mParent); credits->compute(mPlayers[0],mPlayers[1], mParent);
@@ -354,14 +355,17 @@ void GameStateDuel::Update(float dt)
} }
break; break;
case DUEL_STATE_MENU: case DUEL_STATE_MENU:
mParent->effect->UpdateSmall(dt);
menu->Update(dt); menu->Update(dt);
break; break;
case DUEL_STATE_CANCEL: case DUEL_STATE_CANCEL:
mParent->effect->UpdateSmall(dt);
menu->Update(dt); menu->Update(dt);
if (menu->closed) if (menu->closed)
mGamePhase = DUEL_STATE_PLAY; mGamePhase = DUEL_STATE_PLAY;
break; break;
case DUEL_STATE_BACK_TO_MAIN_MENU: case DUEL_STATE_BACK_TO_MAIN_MENU:
mParent->effect->UpdateSmall(dt);
menu->Update(dt); menu->Update(dt);
if (menu->closed) if (menu->closed)
mParent->SetNextState(GAME_STATE_MENU); mParent->SetNextState(GAME_STATE_MENU);
+3 -4
View File
@@ -34,8 +34,7 @@ void GameStateShop::Start()
bgTexture = JRenderer::GetInstance()->LoadTexture("graphics/shop.jpg", TEX_TYPE_USE_VRAM); bgTexture = JRenderer::GetInstance()->LoadTexture("graphics/shop.jpg", TEX_TYPE_USE_VRAM);
mBg = NEW JQuad(bgTexture, 0, 0, 400, 280); // Create background quad for rendering. mBg = NEW JQuad(bgTexture, 0, 0, 400, 280); // Create background quad for rendering.
backTexture = JRenderer::GetInstance()->LoadTexture("sets/back.jpg", TEX_TYPE_USE_VRAM); mBack = GameApp::CommonRes->GetQuad("back");
mBack = NEW JQuad(backTexture, 0, 0, 200, 285); // Create background quad for rendering.
JRenderer::GetInstance()->ResetPrivateVRAM(); JRenderer::GetInstance()->ResetPrivateVRAM();
JRenderer::GetInstance()->EnableVSync(true); JRenderer::GetInstance()->EnableVSync(true);
@@ -79,8 +78,6 @@ void GameStateShop::End()
{ {
JRenderer::GetInstance()->EnableVSync(false); JRenderer::GetInstance()->EnableVSync(false);
SAFE_DELETE(shop); SAFE_DELETE(shop);
SAFE_DELETE(mBack);
SAFE_DELETE(backTexture);
SAFE_DELETE(bgTexture); SAFE_DELETE(bgTexture);
SAFE_DELETE(mBg); SAFE_DELETE(mBg);
SAFE_DELETE(menu); SAFE_DELETE(menu);
@@ -92,6 +89,8 @@ void GameStateShop::Destroy(){
void GameStateShop::Update(float dt) void GameStateShop::Update(float dt)
{ {
mParent->effect->UpdateSmall(dt);
mParent->effect->UpdateBig(dt);
if (mStage == STAGE_SHOP_MENU){ if (mStage == STAGE_SHOP_MENU){
if (menu){ if (menu){
menu->Update(dt); menu->Update(dt);
+2 -3
View File
@@ -2,6 +2,7 @@
cards in play, graveyard, library, games phases, Players avatars cards in play, graveyard, library, games phases, Players avatars
*/ */
#include <math.h>
#include "../include/config.h" #include "../include/config.h"
#include "../include/MTGGuiPlay.h" #include "../include/MTGGuiPlay.h"
#include "../include/MTGCardInstance.h" #include "../include/MTGCardInstance.h"
@@ -66,6 +67,7 @@ MTGGuiPlay::MTGGuiPlay(int id, GameObserver * _game):PlayGuiObjectController(id,
mBg2 = NULL; mBg2 = NULL;
GameApp::systemError = "error Loading Texture mBgTex2 in MTGGuiPlay intialization"; GameApp::systemError = "error Loading Texture mBgTex2 in MTGGuiPlay intialization";
} }
alphaBg[0] = 0; alphaBg[0] = 0;
AddPlayersGuiInfo(); AddPlayersGuiInfo();
} }
@@ -250,11 +252,8 @@ void MTGGuiPlay::updateCards(){
setTargettingCardPosition(cardGui, 1, !player0Mode); setTargettingCardPosition(cardGui, 1, !player0Mode);
} }
} }
void MTGGuiPlay::AddPlayersGuiInfo(){ void MTGGuiPlay::AddPlayersGuiInfo(){
//init with the players objects //init with the players objects
if (mCount == 0){ if (mCount == 0){