Commit 0faba79b authored by alistert's avatar alistert

Added Alireza Nejati's menu plasma effect.

parent 588abf12
...@@ -16,7 +16,7 @@ objects = src/bonus/bonus.o \ ...@@ -16,7 +16,7 @@ objects = src/bonus/bonus.o \
src/level/bullet.o src/level/demolevel.o src/level/level.o \ src/level/bullet.o src/level/demolevel.o src/level/level.o \
src/level/levelframe.o src/level/levelload.o src/level/movable.o \ src/level/levelframe.o src/level/levelload.o src/level/movable.o \
src/menu/gamemenu.o src/menu/mainmenu.o src/menu/menu.o \ src/menu/gamemenu.o src/menu/mainmenu.o src/menu/menu.o \
src/menu/setupmenu.o \ src/menu/plasma.o src/menu/setupmenu.o \
src/planet/planet.o \ src/planet/planet.o \
src/player/bird.o src/player/bonusplayer.o src/player/jj2levelplayer.o \ src/player/bird.o src/player/bonusplayer.o src/player/jj2levelplayer.o \
src/player/jj2levelplayerframe.o src/player/levelplayer.o \ src/player/jj2levelplayerframe.o src/player/levelplayer.o \
......
...@@ -40,7 +40,7 @@ OBJS = src/bonus/bonus.o \ ...@@ -40,7 +40,7 @@ OBJS = src/bonus/bonus.o \
src/level/bullet.o src/level/demolevel.o src/level/level.o \ src/level/bullet.o src/level/demolevel.o src/level/level.o \
src/level/levelframe.o src/level/levelload.o src/level/movable.o \ src/level/levelframe.o src/level/levelload.o src/level/movable.o \
src/menu/gamemenu.o src/menu/mainmenu.o src/menu/menu.o \ src/menu/gamemenu.o src/menu/mainmenu.o src/menu/menu.o \
src/menu/setupmenu.o \ src/menu/plasma.o src/menu/setupmenu.o \
src/planet/planet.o \ src/planet/planet.o \
src/player/bird.o src/player/bonusplayer.o src/player/jj2levelplayer.o \ src/player/bird.o src/player/bonusplayer.o src/player/jj2levelplayer.o \
src/player/jj2levelplayerframe.o src/player/levelplayer.o \ src/player/jj2levelplayerframe.o src/player/levelplayer.o \
......
...@@ -16,7 +16,7 @@ objects = src/bonus/bonus.o \ ...@@ -16,7 +16,7 @@ objects = src/bonus/bonus.o \
src/level/bullet.o src/level/demolevel.o src/level/level.o \ src/level/bullet.o src/level/demolevel.o src/level/level.o \
src/level/levelframe.o src/level/levelload.o src/level/movable.o \ src/level/levelframe.o src/level/levelload.o src/level/movable.o \
src/menu/gamemenu.o src/menu/mainmenu.o src/menu/menu.o \ src/menu/gamemenu.o src/menu/mainmenu.o src/menu/menu.o \
src/menu/setupmenu.o \ src/menu/plasma.o src/menu/setupmenu.o \
src/planet/planet.o \ src/planet/planet.o \
src/player/bird.o src/player/bonusplayer.o src/player/jj2levelplayer.o \ src/player/bird.o src/player/bonusplayer.o src/player/jj2levelplayer.o \
src/player/jj2levelplayerframe.o src/player/levelplayer.o \ src/player/jj2levelplayerframe.o src/player/levelplayer.o \
......
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
#include "menu.h" #include "menu.h"
#include "plasma.h"
#include "game/game.h" #include "game/game.h"
#include "game/gamemode.h" #include "game/gamemode.h"
...@@ -116,6 +117,7 @@ MainMenu::MainMenu () { ...@@ -116,6 +117,7 @@ MainMenu::MainMenu () {
SDL_SetColorKey(background, SDL_SRCCOLORKEY, 0); SDL_SetColorKey(background, SDL_SRCCOLORKEY, 0);
SDL_SetColorKey(highlight, SDL_SRCCOLORKEY, 0); SDL_SetColorKey(highlight, SDL_SRCCOLORKEY, 0);
SDL_SetColorKey(logo, SDL_SRCCOLORKEY, 28);
gameMenu = new GameMenu(file); gameMenu = new GameMenu(file);
...@@ -142,6 +144,7 @@ MainMenu::~MainMenu () { ...@@ -142,6 +144,7 @@ MainMenu::~MainMenu () {
int MainMenu::main () { int MainMenu::main () {
Scene *scene; Scene *scene;
Plasma plasma;
SetupMenu setupMenu; SetupMenu setupMenu;
SDL_Rect src, dst; SDL_Rect src, dst;
int option; int option;
...@@ -310,7 +313,12 @@ int MainMenu::main () { ...@@ -310,7 +313,12 @@ int MainMenu::main () {
SDL_Delay(T_FRAME); SDL_Delay(T_FRAME);
clearScreen(28);
//as long as we're drawing plasma, we don't need to clear the screen.
//clearScreen(28);
plasma.draw();
dst.x = (canvasW >> 2) - 72; dst.x = (canvasW >> 2) - 72;
dst.y = canvasH - (canvasH >> 2); dst.y = canvasH - (canvasH >> 2);
......
/*
*
* plasma.cpp
*
* 23rd June 2010: Created plasma.c
*
* Part of the OpenJazz project
*
*
* Copyright (c) 2010 Alireza Nejati
*
* OpenJazz is distributed under the terms of
* the GNU General Public License, version 2.0
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*
*/
/*
* Cool plasma effects for the main menu.
*/
#include "plasma.h"
#include "baselevel.h"
#include "util.h"
#include "io/gfx/video.h"
#include <SDL/SDL.h>
#ifdef SCALE
#include "io/gfx/scale2x/scalebit.h"
#endif
// Precalculate buffers
Plasma::Plasma(){
p0=0;
p1=0;
p2=0;
p3=0;
//fSin, fCos: pi = 512
// -1024 < out < 1024
}
// TODO: this code is awful in so many ways
// Draws plasma onto canvas
int Plasma::draw(){
int x,y;
int t1,t2,t3,t4;
int w,h,pitch;
unsigned char *px;
unsigned char colour;
unsigned int colb;
// draw plasma
SDL_LockSurface(canvas);
w = canvas->w;
h = canvas->h;
pitch = canvas->pitch;
px = (unsigned char *)canvas->pixels;
t1 = p0;
t2 = p1;
for(y=0;y<h;y++){
t3 = p2;
t4 = p3;
colb = (fCos(t1*4)<<3)+(fCos(t2*4)<<3)+(32<<10);
for(x=0;x<w;x++){
colour = ((colb+(fCos(t3*4)<<3)+(fCos(t4*4)<<3))>>10) & 0xF;
t3 += 3;
t4 += 2;
px[x] = colour;
}
// go to next row
px += pitch;
t1 += 2;
t2 += 1;
}
p0 = p0 < 256 ? p0+1 : 1;
p1 = p1 < 256 ? p1+2 : 2;
p2 = p2 < 256 ? p2+3 : 3;
p3 = p3 < 256 ? p3+4 : 4;
SDL_UnlockSurface(canvas);
return E_NONE;
}
/*
*
* plasma.h
*
* 23rd June 2010: Created plasma.h
*
* Part of the OpenJazz project
*
*
* Copyright (c) 2010 Alireza Nejati
*
* OpenJazz is distributed under the terms of
* the GNU General Public License, version 2.0
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*
*/
#ifndef _PLASMA_H
#define _PLASMA_H
#include <SDL/SDL.h>
class Plasma {
private:
int p0,p1,p2,p3;
public:
Plasma ();
int draw();
};
#endif
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment