- [CHG] Retocat el mòdul JAudio per a adaptar-se a les necesitats del joc.
- [NEW] audio::getCurrentMusic() - [NEW] audio::stopAllChannels() - [FIX] El JAudio i JInput han de inicialitzarse abans de entrar al Init del joc - Afegides músiques i alguns sons - Comence a fer que sone cada musica i so en el seu lloc - [TOFIX] LAG EN EL AUDIO!
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+15
-8
@@ -30,8 +30,8 @@ namespace actor
|
|||||||
int current_tag = 0;
|
int current_tag = 0;
|
||||||
bool floating_editing = false;
|
bool floating_editing = false;
|
||||||
|
|
||||||
audio::sound *walk = nullptr;
|
|
||||||
int walk_channel = -1;
|
int walk_channel = -1;
|
||||||
|
int falling_sound = -1;
|
||||||
|
|
||||||
void resetTag()
|
void resetTag()
|
||||||
{
|
{
|
||||||
@@ -811,6 +811,8 @@ namespace actor
|
|||||||
actor::actor_t *future_below = any_below_me(act);
|
actor::actor_t *future_below = any_below_me(act);
|
||||||
if ((input::keyDown(SDL_SCANCODE_SPACE) || input::keyDown(config::getKey(KEY_JUMP))) && (hero::getSkills() & SKILL_SHOES) && (act->pos.y + act->size.y) <= max.y && act->pos.y >= min.y && (act->pos.x + act->size.x) <= max.x && act->pos.x >= min.x && act->react_mask == 0 && ((act->pos.z == 0 && room::getFloor() != 11) || (act->below || future_below)))
|
if ((input::keyDown(SDL_SCANCODE_SPACE) || input::keyDown(config::getKey(KEY_JUMP))) && (hero::getSkills() & SKILL_SHOES) && (act->pos.y + act->size.y) <= max.y && act->pos.y >= min.y && (act->pos.x + act->size.x) <= max.x && act->pos.x >= min.x && act->react_mask == 0 && ((act->pos.z == 0 && room::getFloor() != 11) || (act->below || future_below)))
|
||||||
{
|
{
|
||||||
|
audio::pauseChannel(walk_channel);
|
||||||
|
audio::playSound("snd_jump.wav", SOUND_ALL);
|
||||||
// [RZC 01/10/2024] Hack per a que al aterrar sobre els que desapareixen puga botar sobre ells, i a més ells desapareguen
|
// [RZC 01/10/2024] Hack per a que al aterrar sobre els que desapareixen puga botar sobre ells, i a més ells desapareguen
|
||||||
if (!act->below && future_below && future_below->flags & FLAG_DISAPPEAR)
|
if (!act->below && future_below && future_below->flags & FLAG_DISAPPEAR)
|
||||||
actor::push(act, future_below, PUSH_ZN);
|
actor::push(act, future_below, PUSH_ZN);
|
||||||
@@ -852,6 +854,9 @@ namespace actor
|
|||||||
{
|
{
|
||||||
act->react_mask = 0; // desactivem la guarda (react_mask=0)
|
act->react_mask = 0; // desactivem la guarda (react_mask=0)
|
||||||
act->flags |= FLAG_GRAVITY; // i reactivem el flag de gravetat
|
act->flags |= FLAG_GRAVITY; // i reactivem el flag de gravetat
|
||||||
|
|
||||||
|
if (falling_sound!=-1) { audio::stopChannel(falling_sound); falling_sound = -1; }
|
||||||
|
falling_sound = audio::playSound("snd_fall.wav", SOUND_ALL, -1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -859,13 +864,12 @@ namespace actor
|
|||||||
if (moving)
|
if (moving)
|
||||||
{
|
{
|
||||||
act->flags |= FLAG_ANIMATED;
|
act->flags |= FLAG_ANIMATED;
|
||||||
//if (audio::getChannelState(walk_channel) == audio::CHANNEL_PAUSED) audio::resumeChannel(walk_channel);
|
if (act->react_mask==0 && !(act->flags&FLAG_GRAVITY)) audio::resumeChannel(walk_channel);
|
||||||
if ( (config::getSoundMode()==SOUND_ALL) && (act->anim_frame==0)) walk_channel = audio::playSound(walk, 0);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
act->flags &= uint8_t(~FLAG_ANIMATED);
|
act->flags &= uint8_t(~FLAG_ANIMATED);
|
||||||
//if (audio::getChannelState(walk_channel) == audio::CHANNEL_PLAYING) audio::pauseChannel(walk_channel);
|
audio::pauseChannel(walk_channel);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1252,6 +1256,8 @@ namespace actor
|
|||||||
// Si estic sobre el piso, no faig res
|
// Si estic sobre el piso, no faig res
|
||||||
if (act->pos.z == 0)
|
if (act->pos.z == 0)
|
||||||
{
|
{
|
||||||
|
if (act->flags&FLAG_HERO && falling_sound!=-1) { audio::stopChannel(falling_sound); falling_sound = -1; }
|
||||||
|
|
||||||
if ((act->flags & FLAG_MOVING) && (act->movement == MOV_Z))
|
if ((act->flags & FLAG_MOVING) && (act->movement == MOV_Z))
|
||||||
changeMoving(act);
|
changeMoving(act);
|
||||||
act->push &= ~PUSH_ZN;
|
act->push &= ~PUSH_ZN;
|
||||||
@@ -1292,6 +1298,7 @@ namespace actor
|
|||||||
// Si sí que hi ha...
|
// Si sí que hi ha...
|
||||||
if (below)
|
if (below)
|
||||||
{
|
{
|
||||||
|
if (act->flags&FLAG_HERO && falling_sound!=-1) { audio::stopChannel(falling_sound); falling_sound = -1; }
|
||||||
// ...el asociem...
|
// ...el asociem...
|
||||||
act->below = below;
|
act->below = below;
|
||||||
below->above = act;
|
below->above = act;
|
||||||
@@ -1889,10 +1896,10 @@ namespace actor
|
|||||||
for (int i = 0; i < 100; ++i)
|
for (int i = 0; i < 100; ++i)
|
||||||
boosters_collected[i] = false;
|
boosters_collected[i] = false;
|
||||||
brilli = draw::getSurface("objectes.gif");
|
brilli = draw::getSurface("objectes.gif");
|
||||||
|
if ( (config::getSoundMode()==SOUND_ALL) ) {
|
||||||
if (config::getSoundMode()==SOUND_ALL) walk = audio::loadSound("walk.wav");
|
walk_channel = audio::playSound("snd_walk.wav", SOUND_ALL, -1);
|
||||||
//walk_channel = audio::playSound(walk, -1);
|
audio::pauseChannel(walk_channel);
|
||||||
//audio::pauseChannel(walk_channel);
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ namespace config
|
|||||||
#define SOUND_ALL 0
|
#define SOUND_ALL 0
|
||||||
#define SOUND_BASIC 1
|
#define SOUND_BASIC 1
|
||||||
#define SOUND_NONE 2
|
#define SOUND_NONE 2
|
||||||
|
#define SOUND_MUSIC 2
|
||||||
|
|
||||||
#define KEY_UP 0
|
#define KEY_UP 0
|
||||||
#define KEY_DOWN 1
|
#define KEY_DOWN 1
|
||||||
|
|||||||
+48
-31
@@ -3,51 +3,53 @@
|
|||||||
#include <SDL2/SDL_mixer.h>
|
#include <SDL2/SDL_mixer.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include "jfile.h"
|
#include "jfile.h"
|
||||||
|
#include <vector>
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
namespace audio
|
namespace audio
|
||||||
{
|
{
|
||||||
// Açò son estructures de mentires, per a usar estructures de SDL_Mixer de forma opaca.
|
struct sound_cache_t
|
||||||
// Al final es un punter, així que és irrelevant el tipus del punter,
|
|
||||||
// però si amague que son estructures de SDL_Mixer, no fa falta ficar el include a SDL_mixer fora de este arxiu
|
|
||||||
struct sound
|
|
||||||
{
|
|
||||||
}; // Dummy structs
|
|
||||||
struct music
|
|
||||||
{
|
{
|
||||||
|
std::string name;
|
||||||
|
Mix_Chunk *chunk;
|
||||||
};
|
};
|
||||||
|
|
||||||
char *music_buffer = nullptr;
|
char *music_buffer = nullptr;
|
||||||
|
Mix_Music *music = nullptr;
|
||||||
|
std::vector<sound_cache_t> sounds;
|
||||||
|
std::string musica_actual = "";
|
||||||
|
|
||||||
// Inicialitza el sistema de só
|
// Inicialitza el sistema de só
|
||||||
void init()
|
void init()
|
||||||
{
|
{
|
||||||
int result = Mix_Init(MIX_INIT_OGG | MIX_INIT_WAVPACK);
|
int result = Mix_Init(MIX_INIT_OGG | MIX_INIT_WAVPACK);
|
||||||
// Al final he ficat la configuració automàtica i au. Si en el futur necesitem canviar-ho pos se canvia
|
// Al final he ficat la configuració automàtica i au. Si en el futur necesitem canviar-ho pos se canvia
|
||||||
result = Mix_OpenAudio(48000, AUDIO_S16, 2, 1024);
|
result = Mix_OpenAudio(48000, AUDIO_S16, 2, 512);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Tanca el sistema de só (no shit, sherlock)
|
// Tanca el sistema de só (no shit, sherlock)
|
||||||
void quit()
|
void quit()
|
||||||
{
|
{
|
||||||
|
for (auto sound : sounds) Mix_FreeChunk(sound.chunk);
|
||||||
|
sounds.clear();
|
||||||
Mix_CloseAudio();
|
Mix_CloseAudio();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Carrega un arxiu de música en format OGG
|
// Comença a reproduïr la música en questió
|
||||||
const music *loadMusic(const std::string filename)
|
void playMusic(const std::string filename, const int loop)
|
||||||
{
|
{
|
||||||
int size;
|
if (!config::isMusicEnabled()) return;
|
||||||
|
// Si hi havia musica carregada, alliberem memòria
|
||||||
if (music_buffer) free(music_buffer);
|
if (music_buffer) free(music_buffer);
|
||||||
|
if (music) Mix_FreeMusic(music);
|
||||||
|
|
||||||
|
int size;
|
||||||
music_buffer = file::getFileBuffer(filename, size);
|
music_buffer = file::getFileBuffer(filename, size);
|
||||||
auto rwops = SDL_RWFromMem(music_buffer, size);
|
auto rwops = SDL_RWFromMem(music_buffer, size);
|
||||||
auto mus = Mix_LoadMUS_RW(rwops, 1);
|
auto mus = Mix_LoadMUS_RW(rwops, 1);
|
||||||
//free(buffer);
|
//free(music_buffer); // [RZC 03/10/2024] Si allibere el buffer, no funciona la música. Porca miseria! Per aixó l'allibere abans de carregar si ja estava usat.
|
||||||
return (music *)mus;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Comença a reproduïr la música en questió
|
|
||||||
void playMusic(const music *mus, const int loop)
|
|
||||||
{
|
|
||||||
Mix_PlayMusic((Mix_Music *)mus, loop);
|
Mix_PlayMusic((Mix_Music *)mus, loop);
|
||||||
|
musica_actual = filename;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Pausa la música que està sonant ara
|
// Pausa la música que està sonant ara
|
||||||
@@ -59,6 +61,7 @@ namespace audio
|
|||||||
// Continua la música pausada
|
// Continua la música pausada
|
||||||
void resumeMusic()
|
void resumeMusic()
|
||||||
{
|
{
|
||||||
|
if (!config::isMusicEnabled()) return;
|
||||||
Mix_ResumeMusic();
|
Mix_ResumeMusic();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -66,6 +69,7 @@ namespace audio
|
|||||||
void stopMusic()
|
void stopMusic()
|
||||||
{
|
{
|
||||||
Mix_HaltMusic();
|
Mix_HaltMusic();
|
||||||
|
musica_actual = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
// Obté el estat actual de la música
|
// Obté el estat actual de la música
|
||||||
@@ -85,50 +89,63 @@ namespace audio
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Allibera una música
|
// Obté el nom de la música actual
|
||||||
void deleteMusic(music *mus)
|
const std::string getCurrentMusic()
|
||||||
{
|
{
|
||||||
Mix_FreeMusic((Mix_Music *)mus);
|
return musica_actual;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Carrega un só des d'un arxiu WAV
|
// Carrega un só des d'un arxiu WAV
|
||||||
sound *loadSound(const std::string filename)
|
void loadSound(const std::string filename)
|
||||||
{
|
{
|
||||||
int size;
|
int size;
|
||||||
char *buffer = file::getFileBuffer(filename, size);
|
char *buffer = file::getFileBuffer(filename, size);
|
||||||
return (sound *)Mix_LoadWAV_RW(SDL_RWFromMem(buffer, size), 1);
|
auto chunk = Mix_LoadWAV_RW(SDL_RWFromMem(buffer, size), 1);
|
||||||
|
if (!chunk) printf("ERROR: %s\n", SDL_GetError());
|
||||||
|
sound_cache_t sound = { filename, chunk };
|
||||||
|
sounds.push_back(sound);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Comença a reproduïr el só especificat
|
// Comença a reproduïr el só especificat
|
||||||
const int playSound(sound *snd, const int loop)
|
const int playSound(const std::string name, const int priority, const int loop)
|
||||||
{
|
{
|
||||||
return Mix_PlayChannel(-1, (Mix_Chunk *)snd, loop);
|
if (priority < config::getSoundMode()) return -1;
|
||||||
}
|
for (auto sound : sounds)
|
||||||
|
{
|
||||||
// Allibera un só
|
if (sound.name == name) return Mix_PlayChannel(-1, sound.chunk, loop);
|
||||||
void deleteSound(sound *snd)
|
}
|
||||||
{
|
return -1;
|
||||||
Mix_FreeChunk((Mix_Chunk *)snd);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Pausa un canal en el que s'estava reproduïnt un só
|
// Pausa un canal en el que s'estava reproduïnt un só
|
||||||
void pauseChannel(const int channel)
|
void pauseChannel(const int channel)
|
||||||
{
|
{
|
||||||
|
if (channel == -1) return;
|
||||||
Mix_Pause(channel);
|
Mix_Pause(channel);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Continua un canal pausat
|
// Continua un canal pausat
|
||||||
void resumeChannel(const int channel)
|
void resumeChannel(const int channel)
|
||||||
{
|
{
|
||||||
|
if (channel == -1) return;
|
||||||
Mix_Resume(channel);
|
Mix_Resume(channel);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Para un canal que estava reproduïnt un só
|
// Para un canal que estava reproduïnt un só
|
||||||
void stopChannel(const int channel)
|
void stopChannel(const int channel)
|
||||||
{
|
{
|
||||||
|
if (channel == -1) return;
|
||||||
Mix_HaltChannel(channel);
|
Mix_HaltChannel(channel);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Para tots els canals
|
||||||
|
void stopAllChannel()
|
||||||
|
{
|
||||||
|
Mix_HaltChannel(-1);
|
||||||
|
}
|
||||||
|
|
||||||
// Obté l'estat d'un canal
|
// Obté l'estat d'un canal
|
||||||
const channel_state getChannelState(const int channel)
|
const channel_state getChannelState(const int channel)
|
||||||
{
|
{
|
||||||
|
|||||||
+11
-22
@@ -21,25 +21,16 @@ namespace audio
|
|||||||
MUSIC_STOPPED
|
MUSIC_STOPPED
|
||||||
};
|
};
|
||||||
|
|
||||||
// Estructures per a gestionar música i só
|
|
||||||
struct sound;
|
|
||||||
struct music;
|
|
||||||
|
|
||||||
/// @brief Inicialitza el sistema de só
|
/// @brief Inicialitza el sistema de só
|
||||||
void init();
|
void init();
|
||||||
|
|
||||||
/// @brief Tanca el sistema de só
|
/// @brief Tanca el sistema de só
|
||||||
void quit();
|
void quit();
|
||||||
|
|
||||||
/// @brief Carrega un arxiu de música en format OGG
|
/// @brief Comença a reproduïr la música des d'un arxiu
|
||||||
/// @param filename nom de l'arxiu
|
/// @param filename nom de l'arxiu
|
||||||
/// @return punter a la música
|
|
||||||
const music *loadMusic(const std::string filename);
|
|
||||||
|
|
||||||
/// @brief Comença a reproduïr la música en questió
|
|
||||||
/// @param mus punter a la música
|
|
||||||
/// @param loop quants bucles farà (-1=infinit, 0=no repeteix, 1=repeteix 1 vegada...)
|
/// @param loop quants bucles farà (-1=infinit, 0=no repeteix, 1=repeteix 1 vegada...)
|
||||||
void playMusic(const music *mus, const int loop = -1);
|
void playMusic(const std::string filename, const int loop = -1);
|
||||||
|
|
||||||
/// @brief Pausa la música que està sonant ara
|
/// @brief Pausa la música que està sonant ara
|
||||||
void pauseMusic();
|
void pauseMusic();
|
||||||
@@ -54,20 +45,19 @@ namespace audio
|
|||||||
/// @return estat actual de la música (MUSIC_INVALID, MUSIC_PLAYING, MUSIC_PAUSED o MUSIC_STOPPED)
|
/// @return estat actual de la música (MUSIC_INVALID, MUSIC_PLAYING, MUSIC_PAUSED o MUSIC_STOPPED)
|
||||||
const music_state getMusicState();
|
const music_state getMusicState();
|
||||||
|
|
||||||
/// @brief Allibera una música
|
/// @brief Obté el nom de la música actual
|
||||||
/// @param mus punter a la música a alliberar
|
/// @return nom de la cançò
|
||||||
void deleteMusic(music *mus);
|
const std::string getCurrentMusic();
|
||||||
|
|
||||||
/// @brief Carrega un só des d'un arxiu WAV
|
/// @brief Precarrega un só des d'un arxiu WAV
|
||||||
/// @param filename nom de l'arxiu
|
/// @param filename nom de l'arxiu
|
||||||
/// @return un punter al só
|
void loadSound(const std::string filename);
|
||||||
sound *loadSound(const std::string filename);
|
|
||||||
|
|
||||||
/// @brief Comença a reproduïr el só especificat
|
/// @brief Comença a reproduïr el só especificat
|
||||||
/// @param snd punter al só a reproduïr
|
/// @param snd punter al só a reproduïr
|
||||||
/// @param loop si es fa bucle (-1=infinit, 0=no repeteix, 1=repeteix 1 vegada...)
|
/// @param loop si es fa bucle (-1=infinit, 0=no repeteix, 1=repeteix 1 vegada...)
|
||||||
/// @return número del canal en que està sonant el só
|
/// @return número del canal en que està sonant el só
|
||||||
const int playSound(sound *snd, const int loop = 0);
|
const int playSound(const std::string name, const int priority, const int loop = 0);
|
||||||
|
|
||||||
/// @brief Pausa un canal en el que s'estava reproduïnt un só
|
/// @brief Pausa un canal en el que s'estava reproduïnt un só
|
||||||
/// @param channel número del canal a pausar
|
/// @param channel número del canal a pausar
|
||||||
@@ -81,15 +71,14 @@ namespace audio
|
|||||||
/// @param channel número del canal a parar
|
/// @param channel número del canal a parar
|
||||||
void stopChannel(const int channel);
|
void stopChannel(const int channel);
|
||||||
|
|
||||||
|
/// @brief Para tots els canals
|
||||||
|
void stopAllChannel();
|
||||||
|
|
||||||
/// @brief Obté l'estat d'un canal
|
/// @brief Obté l'estat d'un canal
|
||||||
/// @param channel canal del que es vol obtindre l'estat
|
/// @param channel canal del que es vol obtindre l'estat
|
||||||
/// @return estat del canal (CHANNEL_INVALID, CHANNEL_FREE, CHANNEL_PLAYING o CHANNEL_PAUSED)
|
/// @return estat del canal (CHANNEL_INVALID, CHANNEL_FREE, CHANNEL_PLAYING o CHANNEL_PAUSED)
|
||||||
const channel_state getChannelState(const int channel);
|
const channel_state getChannelState(const int channel);
|
||||||
|
|
||||||
/// @brief Allibera un só
|
|
||||||
/// @param snd punter al só
|
|
||||||
void deleteSound(sound *snd);
|
|
||||||
|
|
||||||
/// @brief Estableix el volum general
|
/// @brief Estableix el volum general
|
||||||
/// @param volume valor a establir com a volum (128 màxim)
|
/// @param volume valor a establir com a volum (128 màxim)
|
||||||
/// @return el volum anterior
|
/// @return el volum anterior
|
||||||
|
|||||||
+1
-1
@@ -34,9 +34,9 @@ int main(int argc, char *argv[])
|
|||||||
game::param_count = argc;
|
game::param_count = argc;
|
||||||
game::params = argv;
|
game::params = argv;
|
||||||
|
|
||||||
game::init();
|
|
||||||
input::init();
|
input::init();
|
||||||
audio::init();
|
audio::init();
|
||||||
|
game::init();
|
||||||
|
|
||||||
static unsigned int current_ticks = SDL_GetTicks();
|
static unsigned int current_ticks = SDL_GetTicks();
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
#include "jgame.h"
|
#include "jgame.h"
|
||||||
#include "jinput.h"
|
#include "jinput.h"
|
||||||
#include "jdraw.h"
|
#include "jdraw.h"
|
||||||
|
#include "jaudio.h"
|
||||||
#include "actor.h"
|
#include "actor.h"
|
||||||
#include "room.h"
|
#include "room.h"
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
@@ -15,6 +16,7 @@ namespace modules
|
|||||||
|
|
||||||
void init()
|
void init()
|
||||||
{
|
{
|
||||||
|
audio::playMusic("mus_gameover.ogg");
|
||||||
if (gat == nullptr) gat = actor::createFromTemplate("GAT-NEGRE");
|
if (gat == nullptr) gat = actor::createFromTemplate("GAT-NEGRE");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-5
@@ -42,11 +42,7 @@ namespace modules
|
|||||||
}
|
}
|
||||||
fclose(f);
|
fclose(f);
|
||||||
} else {
|
} else {
|
||||||
if (config::isMusicEnabled())
|
audio::playMusic("ingame.ogg");
|
||||||
{
|
|
||||||
auto musica = audio::loadMusic("ingame.ogg");
|
|
||||||
audio::playMusic(musica);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
actor::hero::init();
|
actor::hero::init();
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
#include "jgame.h"
|
#include "jgame.h"
|
||||||
#include "jinput.h"
|
#include "jinput.h"
|
||||||
#include "jdraw.h"
|
#include "jdraw.h"
|
||||||
|
#include "jaudio.h"
|
||||||
#include "actor.h"
|
#include "actor.h"
|
||||||
#include "room.h"
|
#include "room.h"
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
@@ -16,6 +17,8 @@ namespace modules
|
|||||||
|
|
||||||
void init()
|
void init()
|
||||||
{
|
{
|
||||||
|
audio::playMusic("mus_gameover.ogg");
|
||||||
|
|
||||||
if (heroi == nullptr) heroi = actor::create("HERO", {16,32,8}, {6,6,12}, "test.gif", {0,32,20,32}, {-6,38});
|
if (heroi == nullptr) heroi = actor::create("HERO", {16,32,8}, {6,6,12}, "test.gif", {0,32,20,32}, {-6,38});
|
||||||
heroi->flags = FLAG_ANIMATED;
|
heroi->flags = FLAG_ANIMATED;
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
#include "m_logo.h"
|
#include "m_logo.h"
|
||||||
#include "jdraw.h"
|
#include "jdraw.h"
|
||||||
#include "jinput.h"
|
#include "jinput.h"
|
||||||
|
#include "jaudio.h"
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
#include <SDL2/SDL.h>
|
#include <SDL2/SDL.h>
|
||||||
|
|
||||||
@@ -49,6 +50,8 @@ namespace modules
|
|||||||
}
|
}
|
||||||
num_pixels++;
|
num_pixels++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
audio::playMusic("mus_logo.ogg");
|
||||||
}
|
}
|
||||||
|
|
||||||
int steps=0;
|
int steps=0;
|
||||||
|
|||||||
+1
-4
@@ -17,10 +17,7 @@ namespace modules
|
|||||||
|
|
||||||
void init()
|
void init()
|
||||||
{
|
{
|
||||||
if (config::isMusicEnabled())
|
if (audio::getCurrentMusic() != "mus_menu.ogg") audio::playMusic("mus_menu.ogg");
|
||||||
{
|
|
||||||
audio::stopMusic();
|
|
||||||
}
|
|
||||||
selected_option = OPTION_JUGAR;
|
selected_option = OPTION_JUGAR;
|
||||||
::game::setUpdateTicks(64);
|
::game::setUpdateTicks(64);
|
||||||
draw::loadPalette("test.gif");
|
draw::loadPalette("test.gif");
|
||||||
|
|||||||
+15
-3
@@ -2,6 +2,7 @@
|
|||||||
#include "jgame.h"
|
#include "jgame.h"
|
||||||
#include "jinput.h"
|
#include "jinput.h"
|
||||||
#include "jdraw.h"
|
#include "jdraw.h"
|
||||||
|
#include "jaudio.h"
|
||||||
#include <SDL2/SDL.h>
|
#include <SDL2/SDL.h>
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
@@ -22,16 +23,27 @@ namespace modules
|
|||||||
return MENU_AUDIO_TORNAR;
|
return MENU_AUDIO_TORNAR;
|
||||||
}
|
}
|
||||||
if (input::keyPressed(SDL_SCANCODE_DOWN) || input::keyPressed(config::getKey(KEY_DOWN)))
|
if (input::keyPressed(SDL_SCANCODE_DOWN) || input::keyPressed(config::getKey(KEY_DOWN)))
|
||||||
|
{
|
||||||
selected_option = (selected_option==2)?0:selected_option+1;
|
selected_option = (selected_option==2)?0:selected_option+1;
|
||||||
|
audio::playSound("snd_push.wav", SOUND_BASIC);
|
||||||
|
}
|
||||||
if (input::keyPressed(SDL_SCANCODE_UP) || input::keyPressed(config::getKey(KEY_UP)))
|
if (input::keyPressed(SDL_SCANCODE_UP) || input::keyPressed(config::getKey(KEY_UP)))
|
||||||
|
{
|
||||||
selected_option = (selected_option==0)?2:selected_option-1;
|
selected_option = (selected_option==0)?2:selected_option-1;
|
||||||
|
audio::playSound("snd_push.wav", SOUND_BASIC);
|
||||||
|
}
|
||||||
if (input::keyPressed(SDL_SCANCODE_SPACE) || input::keyPressed(SDL_SCANCODE_RETURN) ||
|
if (input::keyPressed(SDL_SCANCODE_SPACE) || input::keyPressed(SDL_SCANCODE_RETURN) ||
|
||||||
input::keyPressed(config::getKey(KEY_JUMP)) || input::keyPressed(config::getKey(KEY_PICK))) {
|
input::keyPressed(config::getKey(KEY_JUMP)) || input::keyPressed(config::getKey(KEY_PICK))) {
|
||||||
if (selected_option==MENU_AUDIO_MUSICA) config::toggleMusic();
|
if (selected_option==MENU_AUDIO_MUSICA) {
|
||||||
|
config::toggleMusic();
|
||||||
|
if (config::isMusicEnabled())
|
||||||
|
audio::playMusic("mus_menu.ogg");
|
||||||
|
else
|
||||||
|
audio::stopMusic();
|
||||||
|
}
|
||||||
if (selected_option==MENU_AUDIO_SO) config::toggleSound();
|
if (selected_option==MENU_AUDIO_SO) config::toggleSound();
|
||||||
if (selected_option==MENU_AUDIO_TORNAR) return MENU_AUDIO_TORNAR;
|
if (selected_option==MENU_AUDIO_TORNAR) return MENU_AUDIO_TORNAR;
|
||||||
|
audio::playSound("snd_push.wav", SOUND_BASIC);
|
||||||
}
|
}
|
||||||
|
|
||||||
draw::cls(2);
|
draw::cls(2);
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
#include "jdraw.h"
|
#include "jdraw.h"
|
||||||
#include "jfile.h"
|
#include "jfile.h"
|
||||||
#include "jinput.h"
|
#include "jinput.h"
|
||||||
|
#include "jaudio.h"
|
||||||
#include "editor.h"
|
#include "editor.h"
|
||||||
#include "console.h"
|
#include "console.h"
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
@@ -90,6 +91,13 @@ void game::init()
|
|||||||
loadConfig();
|
loadConfig();
|
||||||
draw::init("The Pool", 320, 240, zoom, fullscreen);
|
draw::init("The Pool", 320, 240, zoom, fullscreen);
|
||||||
console::init();
|
console::init();
|
||||||
|
|
||||||
|
audio::loadSound("snd_walk.wav");
|
||||||
|
audio::loadSound("snd_push.wav");
|
||||||
|
audio::loadSound("snd_pick.wav");
|
||||||
|
audio::loadSound("snd_jump.wav");
|
||||||
|
audio::loadSound("snd_disappear.wav");
|
||||||
|
audio::loadSound("snd_fall.wav");
|
||||||
}
|
}
|
||||||
|
|
||||||
draw::loadPalette("test.gif");
|
draw::loadPalette("test.gif");
|
||||||
|
|||||||
Reference in New Issue
Block a user