Skip to content

Commit

Permalink
splash, attract, credits implemented and working ok. Needs start game…
Browse files Browse the repository at this point in the history
…/title screen.
  • Loading branch information
mschwartz committed Nov 4, 2020
1 parent c06eac5 commit 1a5c6aa
Show file tree
Hide file tree
Showing 37 changed files with 727 additions and 532 deletions.
6 changes: 3 additions & 3 deletions Evade2/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ SET(EVADE2_INCLUDE_DIRS
${CMAKE_SOURCE_DIR}/src/resources
${CMAKE_SOURCE_DIR}/src/common
# ${CMAKE_SOURCE_DIR}/src/LoadGameState
# ${CMAKE_SOURCE_DIR}/src/GameState
${CMAKE_SOURCE_DIR}/src/GameState
# ${CMAKE_SOURCE_DIR}/src/GameState/environment
# ${CMAKE_SOURCE_DIR}/src/GameState/player
# ${CMAKE_SOURCE_DIR}/src/GameState/inventory
Expand All @@ -46,7 +46,7 @@ SET(EVADE2_INCLUDE_DIRS
# ${CMAKE_SOURCE_DIR}/src/VictoryState
# ${CMAKE_SOURCE_DIR}/src/MainMenuState
# ${CMAKE_SOURCE_DIR}/src/MainOptionsState
# ${CMAKE_SOURCE_DIR}/src/SplashState
${CMAKE_SOURCE_DIR}/src/SplashState
# ${CMAKE_SOURCE_DIR}/src/CreditsState
# ${CMAKE_SOURCE_DIR}/src/ResetState
${CMAKE_BINARY_DIR}/usr/local/include
Expand All @@ -65,7 +65,7 @@ ADD_EXECUTABLE(
Resources.bin
${CREATIVE_ENGINE_SOURCE_FILES}
${EVADE2_SRC}
src/GameState/GGameState.cpp src/GameState/GGameState.h src/GameState/GGamePlayfield.cpp src/GameState/GGamePlayfield.h src/GameState/GPlayerBulletProcess.cpp src/GameState/GPlayerBulletProcess.h src/main.cpp src/GameState/GEnemyProcess.cpp src/GameState/GEnemyProcess.h src/GameState/GEnemyBulletProcess.cpp src/GameState/GEnemyBulletProcess.h)
src/GameState/GGameState.cpp src/GameState/GGameState.h src/common/GStarfield.cpp src/common/GStarfield.h src/GameState/GPlayerBulletProcess.cpp src/GameState/GPlayerBulletProcess.h src/main.cpp src/GameState/GEnemyProcess.cpp src/GameState/GEnemyProcess.h src/GameState/GEnemyBulletProcess.cpp src/GameState/GEnemyBulletProcess.h src/AttractState/GAttractState.cpp src/AttractState/GAttractState.h src/AttractState/GAttractProcess.cpp src/AttractState/GAttractProcess.h src/MainMenuState/GMainMenu.cpp src/MainMenuState/GMainMenu.h src/MainMenuState/GMainMenuProcess.cpp src/MainMenuState/GMainMenuProcess.h)

ProcessorCount(N)
if (NOT N EQUAL 0)
Expand Down
2 changes: 1 addition & 1 deletion Evade2/old/GameState/enemies/GBossSprite.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
#include "GResources.h"
#include "GBossSprite.h"
#include "GPlayer.h"
#include "GameState/GCamera.h"
#include "common/GCamera.h"

static const TFloat z_dist = 256;
static const TFloat frames = 32;
Expand Down
2 changes: 1 addition & 1 deletion Evade2/old/GameState/enemies/GEnemySprite.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
#include "GResources.h"
#include "GEnemySprite.h"
#include "GPlayer.h"
#include "GameState/GCamera.h"
#include "common/GCamera.h"


const TInt8 *enemy_graphic(TInt16 n) {
Expand Down
2 changes: 1 addition & 1 deletion Evade2/old/GameState/player/GPlayerProcess.cpp
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#include "GPlayerProcess.h"
#include "GPlayer.h"
#include "GPlayerSprite.h"
#include "GGamePlayfield.h"
#include "GStarfield.h"
#include "GStatProcess.h"
#include "GResources.h"
#include "GPlayerBulletProcess.h"
Expand Down
66 changes: 0 additions & 66 deletions Evade2/old/SplashState/Splash.cpp

This file was deleted.

20 changes: 0 additions & 20 deletions Evade2/old/SplashState/Splash.h

This file was deleted.

226 changes: 226 additions & 0 deletions Evade2/src/AttractState/GAttractProcess.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,226 @@
//
// Created by Michael Schwartz on 11/4/20.
//

#include "GAttractProcess.h"
#include "GEnemyProcess.h"


static const TInt8 TYPEWRITER_SPEED = 10;
static const TInt8 LINE_HEIGHT = 26;

static const char scout_text[] = "SCOUT";
static const char bomber_text[] = "BOMBER";
static const char assault_text[] = "ASSAULT";

static const char credits1[] = "CRAFTED BY:\nMODUS CREATE\nDECEMBER 2017";
static const char credits2[] = "MUSIC and SFX:\nJ. GARCIA";
static const char credits3[] =
"ART:\nM. TINTIUC\nJV DALEN\nJD JONES\nJ. GARCIA";
static const char credits4[] =
"PROGRAMMING:\nM. SCHWARTZ\nJ. GARCIA\nM. TINTIUC\n";
static const char credits5[] =
"PROGRAMMING:\nD. BRIGNOLI\nS. LEMMONS\nA. DENNIS";
static const char credits6[] = "PROGRAMMING:\nV. POPA\nL. STILL\nG. GRISOGONO";

const TInt8 MAX_SCREEN = 2;
const TInt8 MAX_CREDITS = 5;

enum {
STATE_TYPEWRITER,
STATE_NEXT,
};

GAttractProcess::GAttractProcess() : BProcess() {
// mSprite = new GVectorSprite();
// gGameEngine->AddSprite(mSprite);
auto *ad = (TAttractData *) &mData;
ad->screen = 0;
InitScreen();
// Sound::play_sound(SFX_NEXT_ATTRACT_SCREEN);
mState = STATE_TYPEWRITER;
}

GAttractProcess::~GAttractProcess() {
//
}

TBool GAttractProcess::RunBefore() {
return ETrue;
}

TBool GAttractProcess::RunAfter() {
switch (mState) {
case STATE_TYPEWRITER:
return TypewriterState();
case STATE_NEXT:
return NextState();
default:
Panic("invalid state: mState(%d)", mState);
}

return ETrue;
}

void GAttractProcess::InitScreen(TInt16 x, TInt16 y) {
auto *ad = &mData;
if (gGame->GetState() == GAME_STATE_ATTRACT_MODE) {
switch (ad->screen) {
case 0:
ad->enemy = ENEMY_SCOUT;
ad->text = scout_text;
x = 125;
y = 60;
break;
case 1:
ad->enemy = ENEMY_BOMBER;
ad->text = bomber_text;
x = 117;
y = 60;
break;
case 2:
ad->enemy = ENEMY_ASSAULT;
ad->text = assault_text;
x = 110;
y = 60;
break;
}
} else {
ad->enemy = -1;
switch (ad->screen) {
case 0:
ad->text = credits1;
break;
case 1:
ad->text = credits2;
break;
case 2:
ad->text = credits3;
break;
case 3:
ad->text = credits4;
break;
case 4:
ad->text = credits5;
break;
case 5:
ad->text = credits6;
break;
}
}

ad->offset = 1;
ad->x = x;
ad->y = y;
ad->timer = TYPEWRITER_SPEED;
ad->done = EFalse;
}

TBool GAttractProcess::NextState() {
auto *ad = (TAttractData *) &mData;
TInt game_mode = gGame->GetState();

ad->timer--;
if (ad->timer < 0) {
ad->screen++;
if ((game_mode == GAME_STATE_ATTRACT_MODE && ad->screen > MAX_SCREEN) ||
(game_mode == GAME_STATE_CREDITS && ad->screen > MAX_CREDITS)) {
gGame->SetState(GAME_STATE_CREDITS);
return EFalse;
} else {
// Sound::play_sound(SFX_NEXT_ATTRACT_SCREEN);
InitScreen();
mState = STATE_TYPEWRITER;
return ETrue;
}
} else {
return ETrue;
}
}

TBool GAttractProcess::TypewriterState() {
auto *ad = (TAttractData *) &mData;
TInt game_mode = gGame->GetState();

ad->timer--;

if (gControls.WasPressed(CONTROL_FIRE)) {
gGame->SetState(GAME_STATE_GAME);
return EFalse;
}
if (gControls.WasPressed(BUTTON_START)) {
ad->timer = -1;
// me->sleep(1, next);
return EFalse;
}

if (ad->timer < 0) {
if (ad->done) {
ad->timer = 50;
// me->sleep(1, next);
mState = STATE_NEXT;
return ETrue;
}
ad->timer = TYPEWRITER_SPEED;
ad->offset++;
// Sound::play_sound(SFX_NEXT_ATTRACT_CHAR);
}

switch (ad->enemy) {
case ENEMY_ASSAULT:
GVectorSprite::DrawVectorGraphic(GEnemyProcess::Graphic(ad->enemy),
TFloat(SCREEN_WIDTH) / 2, TFloat(SCREEN_HEIGHT) / 2, 0.0,
.75, // Originally 2.0
ASSAULT_COLOR);
break;
case ENEMY_BOMBER:
GVectorSprite::DrawVectorGraphic(GEnemyProcess::Graphic(ad->enemy),
TFloat(SCREEN_WIDTH) / 2, TFloat(SCREEN_HEIGHT) / 2, 0.0,
.75, // Originally 2.0
BOMBER_COLOR);
break;
case ENEMY_SCOUT:
GVectorSprite::DrawVectorGraphic(GEnemyProcess::Graphic(ad->enemy),
TFloat(SCREEN_WIDTH) / 2, TFloat(SCREEN_HEIGHT) / 2, 0.0,
.75, // Originally 2.0
SCOUT_COLOR);
break;
}
if (game_mode == GAME_STATE_CREDITS) {
gVectorFont->scale = 2.0;
}

const char *p = ad->text;
TInt16 x = ad->x,
y = ad->y;

for (TInt8 i = 0; i < ad->offset;) {
char c = *p++;
if (c == '\0') {
if (!ad->done) {
ad->timer = 60; // 2 seconds
ad->done = ETrue;
}
break;
} else if (c == '\n') {
x = 20;
y += LINE_HEIGHT;
} else {
x += gVectorFont->write(x, y, c);
i++;
}
}
// if (game_mode == MODE_CREDITS) {
gVectorFont->scale = 2;
// }
return ETrue;
}

//void Attract::entry() {
// TAttractData *ad = (TAttractData *) &mData;
// ad->screen = 0;
// InitScreen();
// Sound::play_sound(SFX_NEXT_ATTRACT_SCREEN);
//
// me->sleep(1, typewriter);
//}
Loading

0 comments on commit 1a5c6aa

Please sign in to comment.