generated from sigonasr2/CPlusPlusProjectTemplate
Add Sound wave Engine
Co-authored-by: sigonasr2 <sigonasr2@gmail.com>
This commit is contained in:
parent
3df180280e
commit
5a153c60c0
@ -4,19 +4,21 @@
|
|||||||
#define OLC_PGEX_SPLASHSCREEN
|
#define OLC_PGEX_SPLASHSCREEN
|
||||||
#include "splash.h"
|
#include "splash.h"
|
||||||
#include <queue>
|
#include <queue>
|
||||||
|
#define OLC_SOUNDWAVE
|
||||||
|
#include "soundwaveEngine.h"
|
||||||
|
|
||||||
using namespace olc;
|
using namespace olc;
|
||||||
|
|
||||||
//#define TEST_MAP1 //Toggle to just play around on map 1.
|
//#define TEST_MAP1 //Toggle to just play around on map 1.
|
||||||
//#define TEST_MAP2 //Toggle on to just play around on map 2.
|
//#define TEST_MAP2 //Toggle on to just play around on map 2.
|
||||||
|
|
||||||
#define SKIP_INTRO true
|
#define SKIP_INTRO false
|
||||||
#define SKIP_CHAPTER1 true
|
#define SKIP_CHAPTER1 false
|
||||||
#define SKIP_CHAPTER2 false
|
#define SKIP_CHAPTER2 false
|
||||||
#define SKIP_CHAPTER3 false
|
#define SKIP_CHAPTER3 false
|
||||||
|
|
||||||
#define STARTING_MAP "assets/maps/map1"
|
#define STARTING_MAP "assets/maps/map1"
|
||||||
#define STARTING_STATE CUTSCENE_1
|
#define STARTING_STATE CUTSCENE_3
|
||||||
#define MOVE_SPD 0.075
|
#define MOVE_SPD 0.075
|
||||||
#define PLAYER_X 14
|
#define PLAYER_X 14
|
||||||
#define PLAYER_Y 4
|
#define PLAYER_Y 4
|
||||||
@ -368,6 +370,7 @@ public:
|
|||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
sound::WaveEngine engine;
|
||||||
GAMESTATE GAME_STATE=STARTING_STATE;
|
GAMESTATE GAME_STATE=STARTING_STATE;
|
||||||
int textInd=0;
|
int textInd=0;
|
||||||
int cursorX=0;
|
int cursorX=0;
|
||||||
@ -503,6 +506,7 @@ public:
|
|||||||
Zone*ACTIVE_ZONE=nullptr;
|
Zone*ACTIVE_ZONE=nullptr;
|
||||||
std::vector<vi2d>REPAIRED_ROVERS;
|
std::vector<vi2d>REPAIRED_ROVERS;
|
||||||
std::string CONSOLE_REF_TEXT;
|
std::string CONSOLE_REF_TEXT;
|
||||||
|
bool SOUND_IS_PLAYING=false;
|
||||||
|
|
||||||
|
|
||||||
Decal*DOME_DECAL,*FOOD_METER_DECAL,*OXYGEN_METER_DECAL,*PLANT_DECAL,
|
Decal*DOME_DECAL,*FOOD_METER_DECAL,*OXYGEN_METER_DECAL,*PLANT_DECAL,
|
||||||
@ -521,6 +525,9 @@ public:
|
|||||||
std::vector<WEATHER_POWER*>MOVESET_X_X;
|
std::vector<WEATHER_POWER*>MOVESET_X_X;
|
||||||
std::vector<WEATHER_POWER*>MOVESET_XMINION;
|
std::vector<WEATHER_POWER*>MOVESET_XMINION;
|
||||||
|
|
||||||
|
|
||||||
|
sound::Wave SONG_MAIN;
|
||||||
|
|
||||||
std::queue<int> turnOrder;
|
std::queue<int> turnOrder;
|
||||||
|
|
||||||
#define MAX_PIXELS 500
|
#define MAX_PIXELS 500
|
||||||
@ -530,6 +537,7 @@ public:
|
|||||||
{
|
{
|
||||||
SetPixelMode(Pixel::ALPHA);
|
SetPixelMode(Pixel::ALPHA);
|
||||||
ConsoleCaptureStdOut(true);
|
ConsoleCaptureStdOut(true);
|
||||||
|
engine.InitialiseAudio();
|
||||||
|
|
||||||
#define LAYERS 3 //How many layers exist.
|
#define LAYERS 3 //How many layers exist.
|
||||||
for (int i=1;i<LAYERS;i++) {
|
for (int i=1;i<LAYERS;i++) {
|
||||||
@ -554,6 +562,9 @@ public:
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SONG_MAIN = sound::Wave("./assets/SeasonsOfLoneliness.wav");
|
||||||
|
|
||||||
//ConsoleShow(F1,false);
|
//ConsoleShow(F1,false);
|
||||||
// Called once at the start, so create things here
|
// Called once at the start, so create things here
|
||||||
TILES=new Decal(new Sprite("assets/tiles.png"));
|
TILES=new Decal(new Sprite("assets/tiles.png"));
|
||||||
@ -1208,7 +1219,7 @@ public:
|
|||||||
int amountGained=rand()%4+2;
|
int amountGained=rand()%4+2;
|
||||||
HAILSTORM->playerOwnCount+=amountGained;
|
HAILSTORM->playerOwnCount+=amountGained;
|
||||||
std::cout<<"Increased HAILSTORM power inventory count by "<<amountGained<<".\n";
|
std::cout<<"Increased HAILSTORM power inventory count by "<<amountGained<<".\n";
|
||||||
COLLECTED_ITEMS.push_back({obj->x,obj->y});
|
COLLECTED_ITEMS.push_back({(int)obj->x,(int)obj->y});
|
||||||
OBJECTS.erase(OBJECTS.begin()+i--);
|
OBJECTS.erase(OBJECTS.begin()+i--);
|
||||||
delete obj;
|
delete obj;
|
||||||
performCropUpdate(8);
|
performCropUpdate(8);
|
||||||
@ -1218,7 +1229,7 @@ public:
|
|||||||
int amountGained=rand()%4+2;
|
int amountGained=rand()%4+2;
|
||||||
HURRICANE->playerOwnCount+=amountGained;
|
HURRICANE->playerOwnCount+=amountGained;
|
||||||
std::cout<<"Increased HURRICANE power inventory count by "<<amountGained<<".\n";
|
std::cout<<"Increased HURRICANE power inventory count by "<<amountGained<<".\n";
|
||||||
COLLECTED_ITEMS.push_back({obj->x,obj->y});
|
COLLECTED_ITEMS.push_back({(int)obj->x,(int)obj->y});
|
||||||
OBJECTS.erase(OBJECTS.begin()+i--);
|
OBJECTS.erase(OBJECTS.begin()+i--);
|
||||||
delete obj;
|
delete obj;
|
||||||
performCropUpdate(8);
|
performCropUpdate(8);
|
||||||
@ -1228,7 +1239,7 @@ public:
|
|||||||
int amountGained=rand()%4+2;
|
int amountGained=rand()%4+2;
|
||||||
METEOR_RAIN->playerOwnCount+=amountGained;
|
METEOR_RAIN->playerOwnCount+=amountGained;
|
||||||
std::cout<<"Increased METEORSHOWER power inventory count by "<<amountGained<<".\n";
|
std::cout<<"Increased METEORSHOWER power inventory count by "<<amountGained<<".\n";
|
||||||
COLLECTED_ITEMS.push_back({obj->x,obj->y});
|
COLLECTED_ITEMS.push_back({(int)obj->x,(int)obj->y});
|
||||||
OBJECTS.erase(OBJECTS.begin()+i--);
|
OBJECTS.erase(OBJECTS.begin()+i--);
|
||||||
delete obj;
|
delete obj;
|
||||||
performCropUpdate(8);
|
performCropUpdate(8);
|
||||||
@ -1238,7 +1249,7 @@ public:
|
|||||||
int amountGained=rand()%4+2;
|
int amountGained=rand()%4+2;
|
||||||
METEOR_STORM->playerOwnCount+=amountGained;
|
METEOR_STORM->playerOwnCount+=amountGained;
|
||||||
std::cout<<"Increased METEORSTORM power inventory count by "<<amountGained<<".\n";
|
std::cout<<"Increased METEORSTORM power inventory count by "<<amountGained<<".\n";
|
||||||
COLLECTED_ITEMS.push_back({obj->x,obj->y});
|
COLLECTED_ITEMS.push_back({(int)obj->x,(int)obj->y});
|
||||||
OBJECTS.erase(OBJECTS.begin()+i--);
|
OBJECTS.erase(OBJECTS.begin()+i--);
|
||||||
delete obj;
|
delete obj;
|
||||||
performCropUpdate(8);
|
performCropUpdate(8);
|
||||||
@ -1248,7 +1259,7 @@ public:
|
|||||||
int amountGained=rand()%4+2;
|
int amountGained=rand()%4+2;
|
||||||
SNOWSTORM->playerOwnCount+=amountGained;
|
SNOWSTORM->playerOwnCount+=amountGained;
|
||||||
std::cout<<"Increased SNOWSTORM power inventory count by "<<amountGained<<".\n";
|
std::cout<<"Increased SNOWSTORM power inventory count by "<<amountGained<<".\n";
|
||||||
COLLECTED_ITEMS.push_back({obj->x,obj->y});
|
COLLECTED_ITEMS.push_back({(int)obj->x,(int)obj->y});
|
||||||
OBJECTS.erase(OBJECTS.begin()+i--);
|
OBJECTS.erase(OBJECTS.begin()+i--);
|
||||||
delete obj;
|
delete obj;
|
||||||
performCropUpdate(8);
|
performCropUpdate(8);
|
||||||
@ -1258,7 +1269,7 @@ public:
|
|||||||
int amountGained=rand()%4+2;
|
int amountGained=rand()%4+2;
|
||||||
PETAL_STORM->playerOwnCount+=amountGained;
|
PETAL_STORM->playerOwnCount+=amountGained;
|
||||||
std::cout<<"Increased PETALSTORM power inventory count by "<<amountGained<<".\n";
|
std::cout<<"Increased PETALSTORM power inventory count by "<<amountGained<<".\n";
|
||||||
COLLECTED_ITEMS.push_back({obj->x,obj->y});
|
COLLECTED_ITEMS.push_back({(int)obj->x,(int)obj->y});
|
||||||
OBJECTS.erase(OBJECTS.begin()+i--);
|
OBJECTS.erase(OBJECTS.begin()+i--);
|
||||||
delete obj;
|
delete obj;
|
||||||
performCropUpdate(8);
|
performCropUpdate(8);
|
||||||
@ -1267,7 +1278,7 @@ public:
|
|||||||
if (obj->name.compare("SILICON_PIECE")==0&&collidesWithPlayer(obj)) {
|
if (obj->name.compare("SILICON_PIECE")==0&&collidesWithPlayer(obj)) {
|
||||||
GAME_STATE=COLLECTED_SILICON;
|
GAME_STATE=COLLECTED_SILICON;
|
||||||
DisplayMessageBox(14);
|
DisplayMessageBox(14);
|
||||||
COLLECTED_ITEMS.push_back({obj->x,obj->y});
|
COLLECTED_ITEMS.push_back({(int)obj->x,(int)obj->y});
|
||||||
OBJECTS.erase(OBJECTS.begin()+i--);
|
OBJECTS.erase(OBJECTS.begin()+i--);
|
||||||
delete obj;
|
delete obj;
|
||||||
} else
|
} else
|
||||||
@ -1694,6 +1705,12 @@ public:
|
|||||||
}break;
|
}break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (GAME_STATE==CUTSCENE_3&&!SOUND_IS_PLAYING) {
|
||||||
|
engine.SetOutputVolume(1);
|
||||||
|
engine.PlayWaveform(&SONG_MAIN,true);
|
||||||
|
SOUND_IS_PLAYING=true;
|
||||||
|
}
|
||||||
|
|
||||||
switch (GAME_STATE) {
|
switch (GAME_STATE) {
|
||||||
case CUTSCENE_1:
|
case CUTSCENE_1:
|
||||||
case CUTSCENE_3:
|
case CUTSCENE_3:
|
||||||
@ -1877,6 +1894,10 @@ public:
|
|||||||
} else {
|
} else {
|
||||||
FillRectDecal({(float)(48+(cursorX)*16%(WIDTH-32)),(float)(GetTextSize(CUTSCENE_CONSOLE_TEXT).y*2+((cursorX==28)?16:0))},{4*2,8*2},Pixel(100, 10, 255,(0.5*sin(frameCount*4/60.0)+0.5)*256));
|
FillRectDecal({(float)(48+(cursorX)*16%(WIDTH-32)),(float)(GetTextSize(CUTSCENE_CONSOLE_TEXT).y*2+((cursorX==28)?16:0))},{4*2,8*2},Pixel(100, 10, 255,(0.5*sin(frameCount*4/60.0)+0.5)*256));
|
||||||
}
|
}
|
||||||
|
DrawStringDecal({(float)(WIDTH/2-GetTextSize("NEW GAME").x*2/2),(float)(HEIGHT/2-GetTextSize("NEW GAME").y*2)},"NEW GAME",WHITE,{2,2});
|
||||||
|
DrawStringDecal({(float)(WIDTH/2-GetTextSize("CONTINUE").x*2/2),(float)(HEIGHT/2-GetTextSize("CONTINUE").y*2+32)},"CONTINUE",WHITE,{2,2});
|
||||||
|
DrawStringDecal({(float)(WIDTH/2-GetTextSize("MUTE SOUND").x*2/2),(float)(HEIGHT/2-GetTextSize("MUTE SOUND").y*2+64)},"MUTE SOUND",WHITE,{2,2});
|
||||||
|
DrawStringDecal({(float)(WIDTH/2-GetTextSize("EXIT").x*2/2),(float)(HEIGHT/2-GetTextSize("EXIT").y*2+96)},"EXIT",WHITE,{2,2});
|
||||||
GradientFillRectDecal({0,0},{WIDTH/2,HEIGHT/2},{100, 10, 255,ALPHA_SCREEN1},{100, 10, 255,ALPHA_SCREEN1},{100, 10, 255,ALPHA_SCREEN2},{100, 10, 255,ALPHA_SCREEN1});
|
GradientFillRectDecal({0,0},{WIDTH/2,HEIGHT/2},{100, 10, 255,ALPHA_SCREEN1},{100, 10, 255,ALPHA_SCREEN1},{100, 10, 255,ALPHA_SCREEN2},{100, 10, 255,ALPHA_SCREEN1});
|
||||||
GradientFillRectDecal({WIDTH/2,0},{WIDTH/2,HEIGHT/2},{100, 10, 255,ALPHA_SCREEN1},{100, 10, 255,ALPHA_SCREEN2},{100, 10, 255,ALPHA_SCREEN1},{100, 10, 255,ALPHA_SCREEN1});
|
GradientFillRectDecal({WIDTH/2,0},{WIDTH/2,HEIGHT/2},{100, 10, 255,ALPHA_SCREEN1},{100, 10, 255,ALPHA_SCREEN2},{100, 10, 255,ALPHA_SCREEN1},{100, 10, 255,ALPHA_SCREEN1});
|
||||||
GradientFillRectDecal({0,HEIGHT/2},{WIDTH/2,HEIGHT/2},{100, 10, 255,ALPHA_SCREEN1},{100, 10, 255,ALPHA_SCREEN1},{100, 10, 255,ALPHA_SCREEN1},{100, 10, 255,ALPHA_SCREEN2});
|
GradientFillRectDecal({0,HEIGHT/2},{WIDTH/2,HEIGHT/2},{100, 10, 255,ALPHA_SCREEN1},{100, 10, 255,ALPHA_SCREEN1},{100, 10, 255,ALPHA_SCREEN1},{100, 10, 255,ALPHA_SCREEN2});
|
||||||
@ -1884,7 +1905,7 @@ public:
|
|||||||
}break;
|
}break;
|
||||||
case LATER_THAT_NIGHTFADEIN:
|
case LATER_THAT_NIGHTFADEIN:
|
||||||
case LATER_THAT_NIGHTFADEOUT:{
|
case LATER_THAT_NIGHTFADEOUT:{
|
||||||
DrawDecal({WIDTH/2-LATER_THAT_NIGHT_DECAL->sprite->width/2,HEIGHT/2-LATER_THAT_NIGHT_DECAL->sprite->height/2},LATER_THAT_NIGHT_DECAL);
|
DrawDecal({(float)(WIDTH/2-LATER_THAT_NIGHT_DECAL->sprite->width/2),(float)(HEIGHT/2-LATER_THAT_NIGHT_DECAL->sprite->height/2)},LATER_THAT_NIGHT_DECAL);
|
||||||
}break;
|
}break;
|
||||||
}
|
}
|
||||||
switch (BATTLE_STATE) {
|
switch (BATTLE_STATE) {
|
||||||
|
Binary file not shown.
Binary file not shown.
Before Width: | Height: | Size: 303 KiB After Width: | Height: | Size: 10 MiB |
File diff suppressed because one or more lines are too long
Binary file not shown.
BIN
assets/SeasonsOfLoneliness.wav
Normal file
BIN
assets/SeasonsOfLoneliness.wav
Normal file
Binary file not shown.
BIN
assets/X.X.png
BIN
assets/X.X.png
Binary file not shown.
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 23 KiB |
1963
soundwaveEngine.h
Normal file
1963
soundwaveEngine.h
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user