diff --git a/.clang-format b/.clang-format new file mode 100644 index 0000000..e148dad --- /dev/null +++ b/.clang-format @@ -0,0 +1,22 @@ +BasedOnStyle: Google +IndentWidth: 4 +NamespaceIndentation: All +IndentAccessModifiers: false +ColumnLimit: 0 # Sin límite de longitud de línea +BreakBeforeBraces: Attach # Llaves en la misma línea +AllowShortIfStatementsOnASingleLine: true +AllowShortBlocksOnASingleLine: true +AllowShortFunctionsOnASingleLine: All +AlignOperands: DontAlign +AlignAfterOpenBracket: DontAlign +BinPackArguments: false +BinPackParameters: false +ContinuationIndentWidth: 4 +ConstructorInitializerIndentWidth: 4 +IndentWrappedFunctionNames: false +Cpp11BracedListStyle: true +BreakConstructorInitializers: BeforeColon +AllowAllConstructorInitializersOnNextLine: false +PackConstructorInitializers: Never +AllowAllArgumentsOnNextLine: false +AllowAllParametersOfDeclarationOnNextLine: false diff --git a/CMakeLists.txt b/CMakeLists.txt index 9f98d29..f3f9aef 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -66,3 +66,35 @@ endif() # Ejecutable en la raíz del proyecto set_target_properties(${PROJECT_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}) + +# --- CLANG-FORMAT TARGETS --- +find_program(CLANG_FORMAT_EXE NAMES clang-format) + +# Recopilar todos los archivos fuente para formateo (excluir external/) +file(GLOB_RECURSE ALL_SOURCE_FILES + "${CMAKE_SOURCE_DIR}/source/*.cpp" + "${CMAKE_SOURCE_DIR}/source/*.hpp" + "${CMAKE_SOURCE_DIR}/source/*.h" +) +list(FILTER ALL_SOURCE_FILES EXCLUDE REGEX ".*/external/.*") + +if(CLANG_FORMAT_EXE) + add_custom_target(format + COMMAND ${CLANG_FORMAT_EXE} + -i + ${ALL_SOURCE_FILES} + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + COMMENT "Running clang-format..." + ) + + add_custom_target(format-check + COMMAND ${CLANG_FORMAT_EXE} + --dry-run + --Werror + ${ALL_SOURCE_FILES} + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + COMMENT "Checking clang-format..." + ) +else() + message(STATUS "clang-format no encontrado - targets 'format' y 'format-check' no disponibles") +endif() diff --git a/source/core/jail_audio.cpp b/source/core/jail_audio.cpp index 9d3a7b3..092ea7f 100644 --- a/source/core/jail_audio.cpp +++ b/source/core/jail_audio.cpp @@ -1,50 +1,49 @@ #ifndef JA_USESDLMIXER #include "core/jail_audio.hpp" -#include "external/stb_vorbis.h" + #include #include +#include "external/stb_vorbis.h" + #define JA_MAX_SIMULTANEOUS_CHANNELS 5 -struct JA_Sound_t -{ - SDL_AudioSpec spec { SDL_AUDIO_S16, 2, 48000 }; - Uint32 length { 0 }; - Uint8 *buffer { NULL }; +struct JA_Sound_t { + SDL_AudioSpec spec{SDL_AUDIO_S16, 2, 48000}; + Uint32 length{0}; + Uint8 *buffer{NULL}; }; -struct JA_Channel_t -{ - JA_Sound_t *sound { nullptr }; - int pos { 0 }; - int times { 0 }; - SDL_AudioStream *stream { nullptr }; - JA_Channel_state state { JA_CHANNEL_FREE }; +struct JA_Channel_t { + JA_Sound_t *sound{nullptr}; + int pos{0}; + int times{0}; + SDL_AudioStream *stream{nullptr}; + JA_Channel_state state{JA_CHANNEL_FREE}; }; -struct JA_Music_t -{ - SDL_AudioSpec spec { SDL_AUDIO_S16, 2, 48000 }; - Uint32 length { 0 }; - Uint8 *buffer { nullptr }; - char *filename { nullptr }; +struct JA_Music_t { + SDL_AudioSpec spec{SDL_AUDIO_S16, 2, 48000}; + Uint32 length{0}; + Uint8 *buffer{nullptr}; + char *filename{nullptr}; - int pos { 0 }; - int times { 0 }; - SDL_AudioStream *stream { nullptr }; - JA_Music_state state { JA_MUSIC_INVALID }; + int pos{0}; + int times{0}; + SDL_AudioStream *stream{nullptr}; + JA_Music_state state{JA_MUSIC_INVALID}; }; -JA_Music_t *current_music { nullptr }; -JA_Channel_t channels[JA_MAX_SIMULTANEOUS_CHANNELS]; +JA_Music_t *current_music{nullptr}; +JA_Channel_t channels[JA_MAX_SIMULTANEOUS_CHANNELS]; -SDL_AudioSpec JA_audioSpec { SDL_AUDIO_S16, 2, 48000 }; -float JA_musicVolume { 1.0f }; -float JA_soundVolume { 0.5f }; -bool JA_musicEnabled { true }; -bool JA_soundEnabled { true }; -SDL_AudioDeviceID sdlAudioDevice { 0 }; -SDL_TimerID JA_timerID { 0 }; +SDL_AudioSpec JA_audioSpec{SDL_AUDIO_S16, 2, 48000}; +float JA_musicVolume{1.0f}; +float JA_soundVolume{0.5f}; +bool JA_musicEnabled{true}; +bool JA_soundEnabled{true}; +SDL_AudioDeviceID sdlAudioDevice{0}; +SDL_TimerID JA_timerID{0}; bool fading = false; int fade_start_time; @@ -89,85 +88,71 @@ void audioCallback(void * userdata, uint8_t * stream, int len) { } */ -Uint32 JA_UpdateCallback(void *userdata, SDL_TimerID timerID, Uint32 interval) -{ - if (JA_musicEnabled && current_music && current_music->state == JA_MUSIC_PLAYING) - { +Uint32 JA_UpdateCallback(void *userdata, SDL_TimerID timerID, Uint32 interval) { + if (JA_musicEnabled && current_music && current_music->state == JA_MUSIC_PLAYING) { if (fading) { int time = SDL_GetTicks(); - if (time > (fade_start_time+fade_duration)) { + if (time > (fade_start_time + fade_duration)) { fading = false; JA_StopMusic(); return 30; } else { const int time_passed = time - fade_start_time; const float percent = (float)time_passed / (float)fade_duration; - SDL_SetAudioStreamGain(current_music->stream, JA_musicVolume*(1.0 - percent)); + SDL_SetAudioStreamGain(current_music->stream, JA_musicVolume * (1.0 - percent)); } } - if (current_music->times != 0) - { - if (SDL_GetAudioStreamAvailable(current_music->stream) < int(current_music->length/2)) { + if (current_music->times != 0) { + if (SDL_GetAudioStreamAvailable(current_music->stream) < int(current_music->length / 2)) { SDL_PutAudioStreamData(current_music->stream, current_music->buffer, current_music->length); } - if (current_music->times>0) current_music->times--; - } - else - { + if (current_music->times > 0) current_music->times--; + } else { if (SDL_GetAudioStreamAvailable(current_music->stream) == 0) JA_StopMusic(); } } - if (JA_soundEnabled) - { - for (int i=0; i < JA_MAX_SIMULTANEOUS_CHANNELS; ++i) - if (channels[i].state == JA_CHANNEL_PLAYING) - { - if (channels[i].times != 0) - { - if (SDL_GetAudioStreamAvailable(channels[i].stream) < int(channels[i].sound->length/2)) { + if (JA_soundEnabled) { + for (int i = 0; i < JA_MAX_SIMULTANEOUS_CHANNELS; ++i) + if (channels[i].state == JA_CHANNEL_PLAYING) { + if (channels[i].times != 0) { + if (SDL_GetAudioStreamAvailable(channels[i].stream) < int(channels[i].sound->length / 2)) { SDL_PutAudioStreamData(channels[i].stream, channels[i].sound->buffer, channels[i].sound->length); - if (channels[i].times>0) channels[i].times--; + if (channels[i].times > 0) channels[i].times--; } - } - else - { + } else { if (SDL_GetAudioStreamAvailable(channels[i].stream) == 0) JA_StopChannel(i); } } - } return 30; } -void JA_Init(const int freq, const SDL_AudioFormat format, const int num_channels) -{ - #ifdef DEBUG +void JA_Init(const int freq, const SDL_AudioFormat format, const int num_channels) { +#ifdef DEBUG SDL_SetLogPriority(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_DEBUG); - #endif - +#endif + SDL_Log("Iniciant JailAudio..."); - JA_audioSpec = {format, num_channels, freq }; + JA_audioSpec = {format, num_channels, freq}; if (!sdlAudioDevice) SDL_CloseAudioDevice(sdlAudioDevice); sdlAudioDevice = SDL_OpenAudioDevice(SDL_AUDIO_DEVICE_DEFAULT_PLAYBACK, &JA_audioSpec); - SDL_Log( (sdlAudioDevice==0) ? "Failed to initialize SDL audio!\n" : "OK!\n"); - for (int i=0;ispec.channels = chan; music->spec.freq = samplerate; music->spec.format = SDL_AUDIO_S16; - music->buffer = (Uint8*)SDL_malloc(music->length); + music->buffer = (Uint8 *)SDL_malloc(music->length); SDL_memcpy(music->buffer, output, music->length); free(output); music->pos = 0; music->state = JA_MUSIC_STOPPED; if (filename) { - music->filename = (char*)malloc(strlen(filename)+1); + music->filename = (char *)malloc(strlen(filename) + 1); strcpy(music->filename, filename); } return music; } -JA_Music_t *JA_LoadMusic(const char* filename) -{ +JA_Music_t *JA_LoadMusic(const char *filename) { // [RZC 28/08/22] Carreguem primer el arxiu en memòria i després el descomprimim. Es algo més rapid. FILE *f = fopen(filename, "rb"); fseek(f, 0, SEEK_END); long fsize = ftell(f); fseek(f, 0, SEEK_SET); - Uint8 *buffer = (Uint8*)malloc(fsize + 1); - if (fread(buffer, fsize, 1, f)!=1) return NULL; + Uint8 *buffer = (Uint8 *)malloc(fsize + 1); + if (fread(buffer, fsize, 1, f) != 1) return NULL; fclose(f); JA_Music_t *music = JA_LoadMusic(buffer, fsize, filename); @@ -208,8 +192,7 @@ JA_Music_t *JA_LoadMusic(const char* filename) return music; } -void JA_PlayMusic(JA_Music_t *music, const int loop) -{ +void JA_PlayMusic(JA_Music_t *music, const int loop) { if (!JA_musicEnabled) return; JA_StopMusic(); @@ -223,51 +206,46 @@ void JA_PlayMusic(JA_Music_t *music, const int loop) if (!SDL_PutAudioStreamData(current_music->stream, current_music->buffer, current_music->length)) printf("[ERROR] SDL_PutAudioStreamData failed!\n"); SDL_SetAudioStreamGain(current_music->stream, JA_musicVolume); if (!SDL_BindAudioStream(sdlAudioDevice, current_music->stream)) printf("[ERROR] SDL_BindAudioStream failed!\n"); - //SDL_ResumeAudioStreamDevice(current_music->stream); + // SDL_ResumeAudioStreamDevice(current_music->stream); } -char *JA_GetMusicFilename(JA_Music_t *music) -{ +char *JA_GetMusicFilename(JA_Music_t *music) { if (!music) music = current_music; return music->filename; } -void JA_PauseMusic() -{ +void JA_PauseMusic() { if (!JA_musicEnabled) return; if (!current_music || current_music->state == JA_MUSIC_INVALID) return; current_music->state = JA_MUSIC_PAUSED; - //SDL_PauseAudioStreamDevice(current_music->stream); + // SDL_PauseAudioStreamDevice(current_music->stream); SDL_UnbindAudioStream(current_music->stream); } -void JA_ResumeMusic() -{ +void JA_ResumeMusic() { if (!JA_musicEnabled) return; if (!current_music || current_music->state == JA_MUSIC_INVALID) return; current_music->state = JA_MUSIC_PLAYING; - //SDL_ResumeAudioStreamDevice(current_music->stream); + // SDL_ResumeAudioStreamDevice(current_music->stream); SDL_BindAudioStream(sdlAudioDevice, current_music->stream); } -void JA_StopMusic() -{ +void JA_StopMusic() { if (!JA_musicEnabled) return; if (!current_music || current_music->state == JA_MUSIC_INVALID) return; current_music->pos = 0; current_music->state = JA_MUSIC_STOPPED; - //SDL_PauseAudioStreamDevice(current_music->stream); + // SDL_PauseAudioStreamDevice(current_music->stream); SDL_DestroyAudioStream(current_music->stream); current_music->stream = nullptr; free(current_music->filename); current_music->filename = nullptr; } -void JA_FadeOutMusic(const int milliseconds) -{ +void JA_FadeOutMusic(const int milliseconds) { if (!JA_musicEnabled) return; if (current_music == NULL || current_music->state == JA_MUSIC_INVALID) return; @@ -277,78 +255,64 @@ void JA_FadeOutMusic(const int milliseconds) fade_initial_volume = JA_musicVolume; } -JA_Music_state JA_GetMusicState() -{ +JA_Music_state JA_GetMusicState() { if (!JA_musicEnabled) return JA_MUSIC_DISABLED; if (!current_music) return JA_MUSIC_INVALID; return current_music->state; } -void JA_DeleteMusic(JA_Music_t *music) -{ +void JA_DeleteMusic(JA_Music_t *music) { if (current_music == music) current_music = nullptr; SDL_free(music->buffer); if (music->stream) SDL_DestroyAudioStream(music->stream); delete music; } -float JA_SetMusicVolume(float volume) -{ - JA_musicVolume = SDL_clamp( volume, 0.0f, 1.0f ); +float JA_SetMusicVolume(float volume) { + JA_musicVolume = SDL_clamp(volume, 0.0f, 1.0f); if (current_music) SDL_SetAudioStreamGain(current_music->stream, JA_musicVolume); return JA_musicVolume; } -void JA_SetMusicPosition(float value) -{ +void JA_SetMusicPosition(float value) { if (!current_music) return; current_music->pos = value * current_music->spec.freq; } -float JA_GetMusicPosition() -{ +float JA_GetMusicPosition() { if (!current_music) return 0; - return float(current_music->pos)/float(current_music->spec.freq); + return float(current_music->pos) / float(current_music->spec.freq); } -void JA_EnableMusic(const bool value) -{ - if ( !value && current_music && (current_music->state==JA_MUSIC_PLAYING) ) JA_StopMusic(); +void JA_EnableMusic(const bool value) { + if (!value && current_music && (current_music->state == JA_MUSIC_PLAYING)) JA_StopMusic(); JA_musicEnabled = value; } - - - - -JA_Sound_t *JA_NewSound(Uint8* buffer, Uint32 length) -{ +JA_Sound_t *JA_NewSound(Uint8 *buffer, Uint32 length) { JA_Sound_t *sound = new JA_Sound_t(); sound->buffer = buffer; sound->length = length; return sound; } -JA_Sound_t *JA_LoadSound(uint8_t* buffer, uint32_t size) -{ +JA_Sound_t *JA_LoadSound(uint8_t *buffer, uint32_t size) { JA_Sound_t *sound = new JA_Sound_t(); - SDL_LoadWAV_IO(SDL_IOFromMem(buffer, size),1, &sound->spec, &sound->buffer, &sound->length); + SDL_LoadWAV_IO(SDL_IOFromMem(buffer, size), 1, &sound->spec, &sound->buffer, &sound->length); return sound; } -JA_Sound_t *JA_LoadSound(const char* filename) -{ +JA_Sound_t *JA_LoadSound(const char *filename) { JA_Sound_t *sound = new JA_Sound_t(); SDL_LoadWAV(filename, &sound->spec, &sound->buffer, &sound->length); return sound; } -int JA_PlaySound(JA_Sound_t *sound, const int loop) -{ +int JA_PlaySound(JA_Sound_t *sound, const int loop) { if (!JA_soundEnabled) return -1; int channel = 0; @@ -368,8 +332,7 @@ int JA_PlaySound(JA_Sound_t *sound, const int loop) return channel; } -int JA_PlaySoundOnChannel(JA_Sound_t *sound, const int channel, const int loop) -{ +int JA_PlaySoundOnChannel(JA_Sound_t *sound, const int channel, const int loop) { if (!JA_soundEnabled) return -1; if (channel < 0 || channel >= JA_MAX_SIMULTANEOUS_CHANNELS) return -1; @@ -387,8 +350,7 @@ int JA_PlaySoundOnChannel(JA_Sound_t *sound, const int channel, const int loop) return channel; } -void JA_DeleteSound(JA_Sound_t *sound) -{ +void JA_DeleteSound(JA_Sound_t *sound) { for (int i = 0; i < JA_MAX_SIMULTANEOUS_CHANNELS; i++) { if (channels[i].sound == sound) JA_StopChannel(i); } @@ -396,62 +358,48 @@ void JA_DeleteSound(JA_Sound_t *sound) delete sound; } -void JA_PauseChannel(const int channel) -{ +void JA_PauseChannel(const int channel) { if (!JA_soundEnabled) return; - if (channel == -1) - { + if (channel == -1) { for (int i = 0; i < JA_MAX_SIMULTANEOUS_CHANNELS; i++) - if (channels[i].state == JA_CHANNEL_PLAYING) - { + if (channels[i].state == JA_CHANNEL_PLAYING) { channels[i].state = JA_CHANNEL_PAUSED; - //SDL_PauseAudioStreamDevice(channels[i].stream); + // SDL_PauseAudioStreamDevice(channels[i].stream); SDL_UnbindAudioStream(channels[i].stream); } - } - else if (channel >= 0 && channel < JA_MAX_SIMULTANEOUS_CHANNELS) - { - if (channels[channel].state == JA_CHANNEL_PLAYING) - { + } else if (channel >= 0 && channel < JA_MAX_SIMULTANEOUS_CHANNELS) { + if (channels[channel].state == JA_CHANNEL_PLAYING) { channels[channel].state = JA_CHANNEL_PAUSED; - //SDL_PauseAudioStreamDevice(channels[channel].stream); + // SDL_PauseAudioStreamDevice(channels[channel].stream); SDL_UnbindAudioStream(channels[channel].stream); } } } -void JA_ResumeChannel(const int channel) -{ +void JA_ResumeChannel(const int channel) { if (!JA_soundEnabled) return; - if (channel == -1) - { + if (channel == -1) { for (int i = 0; i < JA_MAX_SIMULTANEOUS_CHANNELS; i++) - if (channels[i].state == JA_CHANNEL_PAUSED) - { + if (channels[i].state == JA_CHANNEL_PAUSED) { channels[i].state = JA_CHANNEL_PLAYING; - //SDL_ResumeAudioStreamDevice(channels[i].stream); + // SDL_ResumeAudioStreamDevice(channels[i].stream); SDL_BindAudioStream(sdlAudioDevice, channels[i].stream); } - } - else if (channel >= 0 && channel < JA_MAX_SIMULTANEOUS_CHANNELS) - { - if (channels[channel].state == JA_CHANNEL_PAUSED) - { + } else if (channel >= 0 && channel < JA_MAX_SIMULTANEOUS_CHANNELS) { + if (channels[channel].state == JA_CHANNEL_PAUSED) { channels[channel].state = JA_CHANNEL_PLAYING; - //SDL_ResumeAudioStreamDevice(channels[channel].stream); + // SDL_ResumeAudioStreamDevice(channels[channel].stream); SDL_BindAudioStream(sdlAudioDevice, channels[channel].stream); } } } -void JA_StopChannel(const int channel) -{ +void JA_StopChannel(const int channel) { if (!JA_soundEnabled) return; - if (channel == -1) - { + if (channel == -1) { for (int i = 0; i < JA_MAX_SIMULTANEOUS_CHANNELS; i++) { if (channels[i].state != JA_CHANNEL_FREE) SDL_DestroyAudioStream(channels[i].stream); channels[i].stream = nullptr; @@ -459,9 +407,7 @@ void JA_StopChannel(const int channel) channels[i].pos = 0; channels[i].sound = NULL; } - } - else if (channel >= 0 && channel < JA_MAX_SIMULTANEOUS_CHANNELS) - { + } else if (channel >= 0 && channel < JA_MAX_SIMULTANEOUS_CHANNELS) { if (channels[channel].state != JA_CHANNEL_FREE) SDL_DestroyAudioStream(channels[channel].stream); channels[channel].stream = nullptr; channels[channel].state = JA_CHANNEL_FREE; @@ -470,8 +416,7 @@ void JA_StopChannel(const int channel) } } -JA_Channel_state JA_GetChannelState(const int channel) -{ +JA_Channel_state JA_GetChannelState(const int channel) { if (!JA_soundEnabled) return JA_SOUND_DISABLED; if (channel < 0 || channel >= JA_MAX_SIMULTANEOUS_CHANNELS) return JA_CHANNEL_INVALID; @@ -479,28 +424,24 @@ JA_Channel_state JA_GetChannelState(const int channel) return channels[channel].state; } -float JA_SetSoundVolume(float volume) -{ - JA_soundVolume = SDL_clamp( volume, 0.0f, 1.0f ); +float JA_SetSoundVolume(float volume) { + JA_soundVolume = SDL_clamp(volume, 0.0f, 1.0f); for (int i = 0; i < JA_MAX_SIMULTANEOUS_CHANNELS; i++) - if ( (channels[i].state == JA_CHANNEL_PLAYING) || (channels[i].state == JA_CHANNEL_PAUSED) ) + if ((channels[i].state == JA_CHANNEL_PLAYING) || (channels[i].state == JA_CHANNEL_PAUSED)) SDL_SetAudioStreamGain(channels[i].stream, JA_soundVolume); return JA_soundVolume; } -void JA_EnableSound(const bool value) -{ - for (int i = 0; i < JA_MAX_SIMULTANEOUS_CHANNELS; i++) - { +void JA_EnableSound(const bool value) { + for (int i = 0; i < JA_MAX_SIMULTANEOUS_CHANNELS; i++) { if (channels[i].state == JA_CHANNEL_PLAYING) JA_StopChannel(i); } JA_soundEnabled = value; } -float JA_SetVolume(float volume) -{ +float JA_SetVolume(float volume) { JA_SetSoundVolume(JA_SetMusicVolume(volume) / 2.0f); return JA_musicVolume; diff --git a/source/core/jail_audio.hpp b/source/core/jail_audio.hpp index 048d710..5e0a0da 100644 --- a/source/core/jail_audio.hpp +++ b/source/core/jail_audio.hpp @@ -1,8 +1,16 @@ #pragma once #include -enum JA_Channel_state { JA_CHANNEL_INVALID, JA_CHANNEL_FREE, JA_CHANNEL_PLAYING, JA_CHANNEL_PAUSED, JA_SOUND_DISABLED }; -enum JA_Music_state { JA_MUSIC_INVALID, JA_MUSIC_PLAYING, JA_MUSIC_PAUSED, JA_MUSIC_STOPPED, JA_MUSIC_DISABLED }; +enum JA_Channel_state { JA_CHANNEL_INVALID, + JA_CHANNEL_FREE, + JA_CHANNEL_PLAYING, + JA_CHANNEL_PAUSED, + JA_SOUND_DISABLED }; +enum JA_Music_state { JA_MUSIC_INVALID, + JA_MUSIC_PLAYING, + JA_MUSIC_PAUSED, + JA_MUSIC_STOPPED, + JA_MUSIC_DISABLED }; struct JA_Sound_t; struct JA_Music_t; @@ -10,8 +18,8 @@ struct JA_Music_t; void JA_Init(const int freq, const SDL_AudioFormat format, const int num_channels); void JA_Quit(); -JA_Music_t *JA_LoadMusic(const char* filename); -JA_Music_t *JA_LoadMusic(Uint8* buffer, Uint32 length, const char* filename=nullptr); +JA_Music_t *JA_LoadMusic(const char *filename); +JA_Music_t *JA_LoadMusic(Uint8 *buffer, Uint32 length, const char *filename = nullptr); void JA_PlayMusic(JA_Music_t *music, const int loop = -1); char *JA_GetMusicFilename(JA_Music_t *music = nullptr); void JA_PauseMusic(); @@ -25,9 +33,9 @@ void JA_SetMusicPosition(float value); float JA_GetMusicPosition(); void JA_EnableMusic(const bool value); -JA_Sound_t *JA_NewSound(Uint8* buffer, Uint32 length); -JA_Sound_t *JA_LoadSound(Uint8* buffer, Uint32 length); -JA_Sound_t *JA_LoadSound(const char* filename); +JA_Sound_t *JA_NewSound(Uint8 *buffer, Uint32 length); +JA_Sound_t *JA_LoadSound(Uint8 *buffer, Uint32 length); +JA_Sound_t *JA_LoadSound(const char *filename); int JA_PlaySound(JA_Sound_t *sound, const int loop = 0); int JA_PlaySoundOnChannel(JA_Sound_t *sound, const int channel, const int loop = 0); void JA_PauseChannel(const int channel); diff --git a/source/core/jdraw8.cpp b/source/core/jdraw8.cpp index f2590db..f027078 100644 --- a/source/core/jdraw8.cpp +++ b/source/core/jdraw8.cpp @@ -1,15 +1,17 @@ #include "core/jdraw8.hpp" -#include "core/jfile.hpp" + #include -#include "external/gif.h" + +#include "core/jfile.hpp" #include "core/jshader.hpp" +#include "external/gif.h" #define SCREEN_WIDTH 960 #define SCREEN_HEIGHT 720 JD8_Surface screen = NULL; JD8_Palette main_palette = NULL; -Uint32* pixel_data = NULL; +Uint32 *pixel_data = NULL; int screenWidth = 320; int screenHeight = 200; @@ -18,217 +20,235 @@ Uint32 contadorFPS = 0; Uint32 tempsFPS = SDL_GetTicks(); char *fps = (char *)malloc(10); -SDL_Window* sdlWindow = NULL; -SDL_Renderer* sdlRenderer = NULL; -SDL_Texture* sdlTexture = NULL; -SDL_Texture* backBuffer = NULL; +SDL_Window *sdlWindow = NULL; +SDL_Renderer *sdlRenderer = NULL; +SDL_Texture *sdlTexture = NULL; +SDL_Texture *backBuffer = NULL; void JD8_Init(const char *title) { - screen = (JD8_Surface)calloc( 1, 64000 ); - main_palette = (JD8_Palette)calloc( 1, 768 ); - pixel_data = (Uint32*)calloc(1, 320 * 200 * 4); // 1048576 ); + screen = (JD8_Surface)calloc(1, 64000); + main_palette = (JD8_Palette)calloc(1, 768); + pixel_data = (Uint32 *)calloc(1, 320 * 200 * 4); // 1048576 ); - sdlWindow = SDL_CreateWindow( title, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_OPENGL ); + sdlWindow = SDL_CreateWindow(title, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_OPENGL); SDL_SetHint(SDL_HINT_RENDER_DRIVER, "opengl"); - //SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, "nearest"); - sdlRenderer = SDL_CreateRenderer(sdlWindow, NULL); + // SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, "nearest"); + sdlRenderer = SDL_CreateRenderer(sdlWindow, NULL); - sdlTexture = SDL_CreateTexture(sdlRenderer, SDL_PIXELFORMAT_ABGR8888, SDL_TEXTUREACCESS_STREAMING, 320, 200); - backBuffer = SDL_CreateTexture(sdlRenderer, SDL_PIXELFORMAT_ARGB8888, SDL_TEXTUREACCESS_TARGET, 320, 200); + sdlTexture = SDL_CreateTexture(sdlRenderer, SDL_PIXELFORMAT_ABGR8888, SDL_TEXTUREACCESS_STREAMING, 320, 200); + backBuffer = SDL_CreateTexture(sdlRenderer, SDL_PIXELFORMAT_ARGB8888, SDL_TEXTUREACCESS_TARGET, 320, 200); - int filesize = 0; - char *buffer = file_getfilebuffer("crtpi.glsl", filesize, true); + int filesize = 0; + char *buffer = file_getfilebuffer("crtpi.glsl", filesize, true); - shader::init(sdlWindow, backBuffer, buffer); - free(buffer); + shader::init(sdlWindow, backBuffer, buffer); + free(buffer); } void JD8_Quit() { - if( screen != NULL ) free( screen ); - if( main_palette != NULL ) free( main_palette ); - if( pixel_data != NULL ) free( pixel_data ); - SDL_DestroyRenderer(sdlRenderer); - SDL_DestroyWindow( sdlWindow ); + if (screen != NULL) free(screen); + if (main_palette != NULL) free(main_palette); + if (pixel_data != NULL) free(pixel_data); + SDL_DestroyRenderer(sdlRenderer); + SDL_DestroyWindow(sdlWindow); } void JD8_ClearScreen(Uint8 color) { - memset( screen, color, 64000 ); + memset(screen, color, 64000); } JD8_Surface JD8_NewSurface() { - JD8_Surface surface = (JD8_Surface)malloc( 64000 ); - memset( surface, 0, 64000 ); - return surface; + JD8_Surface surface = (JD8_Surface)malloc(64000); + memset(surface, 0, 64000); + return surface; } JD8_Surface JD8_LoadSurface(const char *file) { - int filesize = 0; - char *buffer = file_getfilebuffer(file, filesize); - - unsigned short w, h; - Uint8* pixels = LoadGif((unsigned char*)buffer, &w, &h); - - free(buffer); - - if (pixels == NULL) { - printf("Unable to load bitmap: %s\n", SDL_GetError()); - exit(1); - } - - JD8_Surface image = JD8_NewSurface(); - memcpy(image, pixels, 64000); + int filesize = 0; + char *buffer = file_getfilebuffer(file, filesize); - free(pixels); - return image; + unsigned short w, h; + Uint8 *pixels = LoadGif((unsigned char *)buffer, &w, &h); + + free(buffer); + + if (pixels == NULL) { + printf("Unable to load bitmap: %s\n", SDL_GetError()); + exit(1); + } + + JD8_Surface image = JD8_NewSurface(); + memcpy(image, pixels, 64000); + + free(pixels); + return image; } JD8_Palette JD8_LoadPalette(const char *file) { - int filesize = 0; - char *buffer = NULL; - buffer = file_getfilebuffer(file, filesize); + int filesize = 0; + char *buffer = NULL; + buffer = file_getfilebuffer(file, filesize); - JD8_Palette palette = (JD8_Palette)LoadPalette((unsigned char*)buffer); + JD8_Palette palette = (JD8_Palette)LoadPalette((unsigned char *)buffer); - return palette; + return palette; } void JD8_SetScreenPalette(JD8_Palette palette) { - if (main_palette == palette) return; - if( main_palette != NULL) free( main_palette ); - main_palette = palette; + if (main_palette == palette) return; + if (main_palette != NULL) free(main_palette); + main_palette = palette; } void JD8_FillSquare(int ini, int height, Uint8 color) { - const int offset = ini * 320; - const int size = height * 320; - memset(&screen[offset], color, size); + const int offset = ini * 320; + const int size = height * 320; + memset(&screen[offset], color, size); } void JD8_Blit(JD8_Surface surface) { - memcpy( screen, surface, 64000 ); + memcpy(screen, surface, 64000); } void JD8_Blit(int x, int y, JD8_Surface surface, int sx, int sy, int sw, int sh) { - int src_pointer = sx + (sy*320); - int dst_pointer = x + (y*320); - for( int i = 0; i < sh; i++ ) { - memcpy( &screen[dst_pointer], &surface[src_pointer], sw ); - src_pointer += 320; - dst_pointer += 320; - } + int src_pointer = sx + (sy * 320); + int dst_pointer = x + (y * 320); + for (int i = 0; i < sh; i++) { + memcpy(&screen[dst_pointer], &surface[src_pointer], sw); + src_pointer += 320; + dst_pointer += 320; + } } void JD8_BlitToSurface(int x, int y, JD8_Surface surface, int sx, int sy, int sw, int sh, JD8_Surface dest) { - int src_pointer = sx + (sy*320); - int dst_pointer = x + (y*320); - for( int i = 0; i < sh; i++ ) { - memcpy( &dest[dst_pointer], &surface[src_pointer], sw ); - src_pointer += 320; - dst_pointer += 320; - } + int src_pointer = sx + (sy * 320); + int dst_pointer = x + (y * 320); + for (int i = 0; i < sh; i++) { + memcpy(&dest[dst_pointer], &surface[src_pointer], sw); + src_pointer += 320; + dst_pointer += 320; + } } -void JD8_BlitCK(int x, int y, JD8_Surface surface, int sx, int sy, int sw, int sh, Uint8 colorkey ) { - int src_pointer = sx + (sy*320); - int dst_pointer = x + (y*320); - for( int j = 0; j < sh; j++ ) { - for( int i = 0; i < sw; i++ ) { - if( surface[src_pointer+i] != colorkey ) screen[dst_pointer+i] = surface[src_pointer+i]; - } - src_pointer += 320; - dst_pointer += 320; - } +void JD8_BlitCK(int x, int y, JD8_Surface surface, int sx, int sy, int sw, int sh, Uint8 colorkey) { + int src_pointer = sx + (sy * 320); + int dst_pointer = x + (y * 320); + for (int j = 0; j < sh; j++) { + for (int i = 0; i < sw; i++) { + if (surface[src_pointer + i] != colorkey) screen[dst_pointer + i] = surface[src_pointer + i]; + } + src_pointer += 320; + dst_pointer += 320; + } } void JD8_BlitCKCut(int x, int y, JD8_Surface surface, int sx, int sy, int sw, int sh, Uint8 colorkey) { - int src_pointer = sx + (sy * 320); - int dst_pointer = x + (y * 320); - for (int j = 0; j < sh; j++) { - for (int i = 0; i < sw; i++) { - if (surface[src_pointer + i] != colorkey && (x+i >= 0) && (y+j >= 0) && (x+i < 320) && (y+j < 200)) screen[dst_pointer + i] = surface[src_pointer + i]; - } - src_pointer += 320; - dst_pointer += 320; - } + int src_pointer = sx + (sy * 320); + int dst_pointer = x + (y * 320); + for (int j = 0; j < sh; j++) { + for (int i = 0; i < sw; i++) { + if (surface[src_pointer + i] != colorkey && (x + i >= 0) && (y + j >= 0) && (x + i < 320) && (y + j < 200)) screen[dst_pointer + i] = surface[src_pointer + i]; + } + src_pointer += 320; + dst_pointer += 320; + } } void JD8_BlitCKScroll(int y, JD8_Surface surface, int sx, int sy, int sh, Uint8 colorkey) { - int dst_pointer = y * 320; - for (int j = sy; j < sy+sh; j++) { - for (int i = 0; i < 320; i++) { - int x = (i+sx) % 320; - if (surface[x + j*320] != colorkey) screen[dst_pointer] = surface[x + j * 320]; - dst_pointer++; - } - } + int dst_pointer = y * 320; + for (int j = sy; j < sy + sh; j++) { + for (int i = 0; i < 320; i++) { + int x = (i + sx) % 320; + if (surface[x + j * 320] != colorkey) screen[dst_pointer] = surface[x + j * 320]; + dst_pointer++; + } + } } void JD8_BlitCKToSurface(int x, int y, JD8_Surface surface, int sx, int sy, int sw, int sh, JD8_Surface dest, Uint8 colorkey) { - int src_pointer = sx + (sy*320); - int dst_pointer = x + (y*320); - for( int j = 0; j < sh; j++ ) { - for( int i = 0; i < sw; i++ ) { - if( surface[src_pointer+i] != colorkey ) dest[dst_pointer+i] = surface[src_pointer+i]; - } - src_pointer += 320; - dst_pointer += 320; - } + int src_pointer = sx + (sy * 320); + int dst_pointer = x + (y * 320); + for (int j = 0; j < sh; j++) { + for (int i = 0; i < sw; i++) { + if (surface[src_pointer + i] != colorkey) dest[dst_pointer + i] = surface[src_pointer + i]; + } + src_pointer += 320; + dst_pointer += 320; + } } SDL_Rect rect{0, 0, SCREEN_WIDTH, SCREEN_HEIGHT}; void JD8_Flip() { - for( int x = 0; x < 320; x++ ) { - for( int y = 0; y < 200; y++ ) { - Uint32 color = 0xFF000000 + main_palette[screen[x + ( y * 320 )]].r + ( main_palette[screen[x + ( y * 320 )]].g << 8 ) + ( main_palette[screen[x + ( y * 320 )]].b << 16 ); - pixel_data[x + ( y * 320 )] = color; - } - } - SDL_UpdateTexture(sdlTexture, NULL, pixel_data, 320 * sizeof(Uint32)); - SDL_SetRenderTarget(sdlRenderer, backBuffer); - SDL_RenderTexture(sdlRenderer, sdlTexture, NULL, NULL); - shader::render(); - //SDL_RenderPresent(sdlRenderer); + for (int x = 0; x < 320; x++) { + for (int y = 0; y < 200; y++) { + Uint32 color = 0xFF000000 + main_palette[screen[x + (y * 320)]].r + (main_palette[screen[x + (y * 320)]].g << 8) + (main_palette[screen[x + (y * 320)]].b << 16); + pixel_data[x + (y * 320)] = color; + } + } + SDL_UpdateTexture(sdlTexture, NULL, pixel_data, 320 * sizeof(Uint32)); + SDL_SetRenderTarget(sdlRenderer, backBuffer); + SDL_RenderTexture(sdlRenderer, sdlTexture, NULL, NULL); + shader::render(); + // SDL_RenderPresent(sdlRenderer); } void JD8_FreeSurface(JD8_Surface surface) { - free( surface ); + free(surface); } -Uint8 JD8_GetPixel( JD8_Surface surface, int x, int y ) { - return surface[x + (y*320)]; +Uint8 JD8_GetPixel(JD8_Surface surface, int x, int y) { + return surface[x + (y * 320)]; } -void JD8_PutPixel( JD8_Surface surface, int x, int y, Uint8 pixel ) { - surface[x + (y*320)] = pixel; +void JD8_PutPixel(JD8_Surface surface, int x, int y, Uint8 pixel) { + surface[x + (y * 320)] = pixel; } void JD8_SetPaletteColor(Uint8 index, Uint8 r, Uint8 g, Uint8 b) { - main_palette[index].r = r << 2; - main_palette[index].g = g << 2; - main_palette[index].b = b << 2; + main_palette[index].r = r << 2; + main_palette[index].g = g << 2; + main_palette[index].b = b << 2; } void JD8_FadeOut() { - for( int j = 0; j < 32; j++ ) { - for( int i = 0; i < 256; i++ ) { - if( main_palette[i].r >= 8 ) main_palette[i].r-=8; else main_palette[i].r=0; - if( main_palette[i].g >= 8 ) main_palette[i].g-=8; else main_palette[i].g=0; - if( main_palette[i].b >= 8 ) main_palette[i].b-=8; else main_palette[i].b=0; - } - JD8_Flip(); - } + for (int j = 0; j < 32; j++) { + for (int i = 0; i < 256; i++) { + if (main_palette[i].r >= 8) + main_palette[i].r -= 8; + else + main_palette[i].r = 0; + if (main_palette[i].g >= 8) + main_palette[i].g -= 8; + else + main_palette[i].g = 0; + if (main_palette[i].b >= 8) + main_palette[i].b -= 8; + else + main_palette[i].b = 0; + } + JD8_Flip(); + } } #define MAX(a, b) (a) > (b) ? (a) : (b) -void JD8_FadeToPal( JD8_Palette pal ) { - for( int j = 0; j < 32; j++ ) { - for( int i = 0; i < 256; i++ ) { - if( main_palette[i].r <= int(pal[i].r)-8 ) main_palette[i].r+=8; else main_palette[i].r=pal[i].r; - if( main_palette[i].g <= int(pal[i].g)-8 ) main_palette[i].g+=8; else main_palette[i].g=pal[i].g; - if( main_palette[i].b <= int(pal[i].b)-8 ) main_palette[i].b+=8; else main_palette[i].b=pal[i].b; - } - JD8_Flip(); - } +void JD8_FadeToPal(JD8_Palette pal) { + for (int j = 0; j < 32; j++) { + for (int i = 0; i < 256; i++) { + if (main_palette[i].r <= int(pal[i].r) - 8) + main_palette[i].r += 8; + else + main_palette[i].r = pal[i].r; + if (main_palette[i].g <= int(pal[i].g) - 8) + main_palette[i].g += 8; + else + main_palette[i].g = pal[i].g; + if (main_palette[i].b <= int(pal[i].b) - 8) + main_palette[i].b += 8; + else + main_palette[i].b = pal[i].b; + } + JD8_Flip(); + } } diff --git a/source/core/jdraw8.hpp b/source/core/jdraw8.hpp index c0fc5fd..dad1cc2 100644 --- a/source/core/jdraw8.hpp +++ b/source/core/jdraw8.hpp @@ -2,13 +2,13 @@ #include struct Color { - Uint8 r; - Uint8 g; - Uint8 b; + Uint8 r; + Uint8 g; + Uint8 b; }; -typedef Uint8* JD8_Surface; -typedef Color* JD8_Palette; +typedef Uint8 *JD8_Surface; +typedef Color *JD8_Palette; void JD8_Init(const char *title); @@ -32,30 +32,30 @@ void JD8_Blit(int x, int y, JD8_Surface surface, int sx, int sy, int sw, int sh) void JD8_BlitToSurface(int x, int y, JD8_Surface surface, int sx, int sy, int sw, int sh, JD8_Surface dest); -void JD8_BlitCK(int x, int y, JD8_Surface surface, int sx, int sy, int sw, int sh, Uint8 colorkey ); +void JD8_BlitCK(int x, int y, JD8_Surface surface, int sx, int sy, int sw, int sh, Uint8 colorkey); void JD8_BlitCKCut(int x, int y, JD8_Surface surface, int sx, int sy, int sw, int sh, Uint8 colorkey); void JD8_BlitCKScroll(int y, JD8_Surface surface, int sx, int sy, int sh, Uint8 colorkey); -void JD8_BlitCKToSurface(int x, int y, JD8_Surface surface, int sx, int sy, int sw, int sh, JD8_Surface dest, Uint8 colorkey ); +void JD8_BlitCKToSurface(int x, int y, JD8_Surface surface, int sx, int sy, int sw, int sh, JD8_Surface dest, Uint8 colorkey); void JD8_Flip(); void JD8_FreeSurface(JD8_Surface surface); -Uint8 JD8_GetPixel( JD8_Surface surface, int x, int y ); +Uint8 JD8_GetPixel(JD8_Surface surface, int x, int y); -void JD8_PutPixel( JD8_Surface surface, int x, int y, Uint8 pixel ); +void JD8_PutPixel(JD8_Surface surface, int x, int y, Uint8 pixel); void JD8_SetPaletteColor(Uint8 index, Uint8 r, Uint8 g, Uint8 b); void JD8_FadeOut(); -void JD8_FadeToPal( JD8_Palette pal ); +void JD8_FadeToPal(JD8_Palette pal); -//JD_Font JD_LoadFont( char *file, int width, int height); +// JD_Font JD_LoadFont( char *file, int width, int height); -//void JD_DrawText( int x, int y, JD_Font *source, char *text); +// void JD_DrawText( int x, int y, JD_Font *source, char *text); -//char *JD_GetFPS(); +// char *JD_GetFPS(); diff --git a/source/core/jfile.cpp b/source/core/jfile.cpp index 8f99571..66c00bf 100644 --- a/source/core/jfile.cpp +++ b/source/core/jfile.cpp @@ -1,13 +1,15 @@ +#include "core/jfile.hpp" + +#include +#include #include #include -#include -#include -#include "core/jfile.hpp" #include #include -#include -#include + #include +#include +#include #include #include @@ -15,22 +17,21 @@ #include #endif -#define DEFAULT_FILENAME "data.jf2" -#define DEFAULT_FOLDER "data/" -#define CONFIG_FILENAME "config.txt" +#define DEFAULT_FILENAME "data.jf2" +#define DEFAULT_FOLDER "data/" +#define CONFIG_FILENAME "config.txt" -struct file_t -{ - std::string path; - uint32_t size; - uint32_t offset; +struct file_t { + std::string path; + uint32_t size; + uint32_t offset; }; std::vector toc; /* El std::map me fa coses rares, vaig a usar un good old std::vector amb una estructura key,value propia i au, que sempre funciona */ struct keyvalue_t { - std::string key, value; + std::string key, value; }; char *resource_filename = NULL; @@ -42,42 +43,41 @@ std::vector config; void file_setresourcefilename(const char *str) { if (resource_filename != NULL) free(resource_filename); - resource_filename = (char*)malloc(strlen(str)+1); + resource_filename = (char *)malloc(strlen(str) + 1); strcpy(resource_filename, str); } void file_setresourcefolder(const char *str) { if (resource_folder != NULL) free(resource_folder); - resource_folder = (char*)malloc(strlen(str)+1); + resource_folder = (char *)malloc(strlen(str) + 1); strcpy(resource_folder, str); } void file_setsource(const int src) { - file_source = src%2; // mod 2 so it always is a valid value, 0 (file) or 1 (folder) - if (src==SOURCE_FOLDER && resource_folder==NULL) file_setresourcefolder(DEFAULT_FOLDER); + file_source = src % 2; // mod 2 so it always is a valid value, 0 (file) or 1 (folder) + if (src == SOURCE_FOLDER && resource_folder == NULL) file_setresourcefolder(DEFAULT_FOLDER); } bool file_getdictionary() { if (resource_filename == NULL) file_setresourcefilename(DEFAULT_FILENAME); - std::ifstream fi (resource_filename, std::ios::binary); + std::ifstream fi(resource_filename, std::ios::binary); if (!fi.is_open()) return false; char header[4]; fi.read(header, 4); uint32_t num_files, toc_offset; - fi.read((char*)&num_files, 4); - fi.read((char*)&toc_offset, 4); + fi.read((char *)&num_files, 4); + fi.read((char *)&toc_offset, 4); fi.seekg(toc_offset); - for (uint32_t i=0; ipw_dir; - config_folder = std::string(homedir) + "/Library/Application Support/" + foldername; + struct passwd *pw = getpwuid(getuid()); + const char *homedir = pw->pw_dir; + config_folder = std::string(homedir) + "/Library/Application Support/" + foldername; #elif __linux__ - struct passwd *pw = getpwuid(getuid()); - const char *homedir = pw->pw_dir; - config_folder = std::string(homedir) + "/.config/" + foldername; + struct passwd *pw = getpwuid(getuid()); + const char *homedir = pw->pw_dir; + config_folder = std::string(homedir) + "/.config/" + foldername; #endif - std::filesystem::create_directories(config_folder); + std::filesystem::create_directories(config_folder); } const char *file_getconfigfolder() { - static std::string folder; - folder = config_folder + "/"; - return folder.c_str(); + static std::string folder; + folder = config_folder + "/"; + return folder.c_str(); } void file_loadconfigvalues() { - config.clear(); - std::string config_file = config_folder + "/config.txt"; - FILE *f = fopen(config_file.c_str(), "r"); + config.clear(); + std::string config_file = config_folder + "/config.txt"; + FILE *f = fopen(config_file.c_str(), "r"); if (!f) return; char line[1024]; while (fgets(line, sizeof(line), f)) { - char *value = strchr(line, '='); + char *value = strchr(line, '='); if (value) { - *value='\0'; value++; - value[strlen(value)-1] = '\0'; - config.push_back({line, value}); + *value = '\0'; + value++; + value[strlen(value) - 1] = '\0'; + config.push_back({line, value}); } } fclose(f); } void file_saveconfigvalues() { - std::string config_file = config_folder + "/config.txt"; - FILE *f = fopen(config_file.c_str(), "w"); - if (f) { - for (auto pair : config) { - fprintf(f, "%s=%s\n", pair.key.c_str(), pair.value.c_str()); - } - fclose(f); - } + std::string config_file = config_folder + "/config.txt"; + FILE *f = fopen(config_file.c_str(), "w"); + if (f) { + for (auto pair : config) { + fprintf(f, "%s=%s\n", pair.key.c_str(), pair.value.c_str()); + } + fclose(f); + } } -const char* file_getconfigvalue(const char *key) { - if (config.empty()) file_loadconfigvalues(); - for (auto pair : config) { - if (pair.key == std::string(key)) { - strcpy(scratch, pair.value.c_str()); - return scratch; - } - } - return NULL; +const char *file_getconfigvalue(const char *key) { + if (config.empty()) file_loadconfigvalues(); + for (auto pair : config) { + if (pair.key == std::string(key)) { + strcpy(scratch, pair.value.c_str()); + return scratch; + } + } + return NULL; } -void file_setconfigvalue(const char* key, const char* value) { - if (config.empty()) file_loadconfigvalues(); - for (auto &pair : config) { - if (pair.key == std::string(key)) { - pair.value = value; - file_saveconfigvalues(); - return; - } - } - config.push_back({key, value}); - file_saveconfigvalues(); - return; +void file_setconfigvalue(const char *key, const char *value) { + if (config.empty()) file_loadconfigvalues(); + for (auto &pair : config) { + if (pair.key == std::string(key)) { + pair.value = value; + file_saveconfigvalues(); + return; + } + } + config.push_back({key, value}); + file_saveconfigvalues(); + return; } diff --git a/source/core/jfile.hpp b/source/core/jfile.hpp index 9fe6c9b..73334b0 100644 --- a/source/core/jfile.hpp +++ b/source/core/jfile.hpp @@ -1,8 +1,8 @@ #pragma once #include -#define SOURCE_FILE 0 -#define SOURCE_FOLDER 1 +#define SOURCE_FILE 0 +#define SOURCE_FOLDER 1 void file_setconfigfolder(const char *foldername); const char *file_getconfigfolder(); @@ -11,8 +11,8 @@ void file_setresourcefilename(const char *str); void file_setresourcefolder(const char *str); void file_setsource(const int src); -FILE *file_getfilepointer(const char *resourcename, int& filesize, const bool binary=false); -char *file_getfilebuffer(const char *resourcename, int& filesize, const bool zero_terminate=false); +FILE *file_getfilepointer(const char *resourcename, int &filesize, const bool binary = false); +char *file_getfilebuffer(const char *resourcename, int &filesize, const bool zero_terminate = false); -const char* file_getconfigvalue(const char *key); -void file_setconfigvalue(const char* key, const char* value); +const char *file_getconfigvalue(const char *key); +void file_setconfigvalue(const char *key, const char *value); diff --git a/source/core/jgame.cpp b/source/core/jgame.cpp index 1b8132e..bb7863e 100644 --- a/source/core/jgame.cpp +++ b/source/core/jgame.cpp @@ -6,38 +6,37 @@ Uint32 updateTime = 0; Uint32 cycle_counter = 0; void JG_Init() { - - SDL_Init( SDL_INIT_VIDEO | SDL_INIT_AUDIO ); - //SDL_WM_SetCaption( title, NULL ); - updateTime = SDL_GetTicks(); + SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO); + // SDL_WM_SetCaption( title, NULL ); + updateTime = SDL_GetTicks(); } void JG_Finalize() { - SDL_Quit(); + SDL_Quit(); } void JG_QuitSignal() { - eixir = true; + eixir = true; } bool JG_Quitting() { - return eixir; + return eixir; } void JG_SetUpdateTicks(Uint32 milliseconds) { - updateTicks = milliseconds; + updateTicks = milliseconds; } bool JG_ShouldUpdate() { - if (SDL_GetTicks() - updateTime > updateTicks) { - updateTime = SDL_GetTicks(); - cycle_counter++; - return true; - } else { - return false; - } + if (SDL_GetTicks() - updateTime > updateTicks) { + updateTime = SDL_GetTicks(); + cycle_counter++; + return true; + } else { + return false; + } } Uint32 JG_GetCycleCounter() { - return cycle_counter; + return cycle_counter; } diff --git a/source/core/jgame.hpp b/source/core/jgame.hpp index b5fd2fb..8070c09 100644 --- a/source/core/jgame.hpp +++ b/source/core/jgame.hpp @@ -1,6 +1,6 @@ #pragma once #include - + void JG_Init(); void JG_Finalize(); diff --git a/source/core/jinput.cpp b/source/core/jinput.cpp index 0784fc0..3b96b91 100644 --- a/source/core/jinput.cpp +++ b/source/core/jinput.cpp @@ -1,52 +1,54 @@ #include "core/jinput.hpp" -#include "core/jgame.hpp" + #include -const bool *keystates;// = SDL_GetKeyboardState( NULL ); +#include "core/jgame.hpp" + +const bool* keystates; // = SDL_GetKeyboardState( NULL ); SDL_Event event; Uint8 cheat[5]; bool key_pressed = false; int waitTime = 0; void JI_DisableKeyboard(Uint32 time) { - waitTime = time; + waitTime = time; } -void JI_moveCheats( Uint8 new_key ) { - cheat[0] = cheat[1]; - cheat[1] = cheat[2]; - cheat[2] = cheat[3]; - cheat[3] = cheat[4]; - cheat[4] = new_key; +void JI_moveCheats(Uint8 new_key) { + cheat[0] = cheat[1]; + cheat[1] = cheat[2]; + cheat[2] = cheat[3]; + cheat[3] = cheat[4]; + cheat[4] = new_key; } void JI_Update() { - key_pressed = false; - keystates = SDL_GetKeyboardState( NULL ); + key_pressed = false; + keystates = SDL_GetKeyboardState(NULL); - if (waitTime > 0) waitTime--; + if (waitTime > 0) waitTime--; - while ( SDL_PollEvent( &event ) ) { - if ( event.type == SDL_EVENT_QUIT ) JG_QuitSignal(); - if( event.type == SDL_EVENT_KEY_UP ) { - key_pressed = true; - JI_moveCheats( event.key.scancode ); - } - } + while (SDL_PollEvent(&event)) { + if (event.type == SDL_EVENT_QUIT) JG_QuitSignal(); + if (event.type == SDL_EVENT_KEY_UP) { + key_pressed = true; + JI_moveCheats(event.key.scancode); + } + } } bool JI_KeyPressed(int key) { - return waitTime > 0 ? false : (keystates[key] != 0); + return waitTime > 0 ? false : (keystates[key] != 0); } -bool JI_CheatActivated( const char* cheat_code ) { - bool found = true; - for( size_t i = 0; i < strlen( cheat_code ); i++ ) { - if( cheat[i] != cheat_code[i] ) found = false; - } - return found; +bool JI_CheatActivated(const char* cheat_code) { + bool found = true; + for (size_t i = 0; i < strlen(cheat_code); i++) { + if (cheat[i] != cheat_code[i]) found = false; + } + return found; } bool JI_AnyKey() { - return waitTime > 0 ? false : key_pressed; + return waitTime > 0 ? false : key_pressed; } diff --git a/source/core/jinput.hpp b/source/core/jinput.hpp index 426e55c..29f0138 100644 --- a/source/core/jinput.hpp +++ b/source/core/jinput.hpp @@ -1,12 +1,12 @@ #pragma once #include - void JI_DisableKeyboard(Uint32 time); +void JI_DisableKeyboard(Uint32 time); - void JI_Update(); +void JI_Update(); - bool JI_KeyPressed(int key); +bool JI_KeyPressed(int key); - bool JI_CheatActivated( const char* cheat_code ); +bool JI_CheatActivated(const char* cheat_code); - bool JI_AnyKey(); +bool JI_AnyKey(); diff --git a/source/core/jshader.cpp b/source/core/jshader.cpp index f0a4ee6..4d78b97 100644 --- a/source/core/jshader.cpp +++ b/source/core/jshader.cpp @@ -3,23 +3,23 @@ #include #ifdef __APPLE__ -#include "CoreFoundation/CoreFoundation.h" #include +#include "CoreFoundation/CoreFoundation.h" + #if ESSENTIAL_GL_PRACTICES_SUPPORT_GL3 #include #else #include -#endif //!ESSENTIAL_GL_PRACTICES_SUPPORT_GL3 +#endif //! ESSENTIAL_GL_PRACTICES_SUPPORT_GL3 #else #include #include #endif -namespace shader -{ - SDL_Window *win = nullptr; - SDL_Renderer *renderer = nullptr; +namespace shader { + SDL_Window* win = nullptr; + SDL_Renderer* renderer = nullptr; GLuint programId = 0; SDL_Texture* backBuffer = nullptr; SDL_Point win_size = {640, 480}; @@ -28,9 +28,9 @@ namespace shader GLuint texture_number; GLuint nose; - #ifndef __APPLE__ +#ifndef __APPLE__ - // I'm avoiding the use of GLEW or some extensions handler, but that + // I'm avoiding the use of GLEW or some extensions handler, but that // doesn't mean you should... PFNGLCREATESHADERPROC glCreateShader; PFNGLSHADERSOURCEPROC glShaderSource; @@ -61,35 +61,33 @@ namespace shader glGetProgramInfoLog = (PFNGLGETPROGRAMINFOLOGPROC)SDL_GL_GetProcAddress("glGetProgramInfoLog"); glUseProgram = (PFNGLUSEPROGRAMPROC)SDL_GL_GetProcAddress("glUseProgram"); - return glCreateShader && glShaderSource && glCompileShader && glGetShaderiv && + return glCreateShader && glShaderSource && glCompileShader && glGetShaderiv && glGetShaderInfoLog && glDeleteShader && glAttachShader && glCreateProgram && glLinkProgram && glValidateProgram && glGetProgramiv && glGetProgramInfoLog && glUseProgram; } - #endif +#endif GLuint compileShader(const char* source, GLuint shaderType) { // Create ID for shader GLuint result = glCreateShader(shaderType); // Add define depending on shader type - const char *sources[2] = { shaderType==GL_VERTEX_SHADER?"#define VERTEX\n":"#define FRAGMENT\n", source }; + const char* sources[2] = {shaderType == GL_VERTEX_SHADER ? "#define VERTEX\n" : "#define FRAGMENT\n", source}; // Define shader text glShaderSource(result, 2, sources, NULL); // Compile shader glCompileShader(result); - //Check vertex shader for errors + // Check vertex shader for errors GLint shaderCompiled = GL_FALSE; - glGetShaderiv( result, GL_COMPILE_STATUS, &shaderCompiled ); - if (shaderCompiled != GL_TRUE) - { + glGetShaderiv(result, GL_COMPILE_STATUS, &shaderCompiled); + if (shaderCompiled != GL_TRUE) { std::cout << "Error en la compilación: " << result << "!" << std::endl; GLint logLength; glGetShaderiv(result, GL_INFO_LOG_LENGTH, &logLength); - if (logLength > 0) - { - GLchar *log = (GLchar*)malloc(logLength); + if (logLength > 0) { + GLchar* log = (GLchar*)malloc(logLength); glGetShaderInfoLog(result, logLength, &logLength, log); std::cout << "Shader compile log:" << log << std::endl; free(log); @@ -100,18 +98,16 @@ namespace shader return result; } - GLuint compileProgram(const char* vertexShaderSource, const char* fragmentShaderSource) - { + GLuint compileProgram(const char* vertexShaderSource, const char* fragmentShaderSource) { GLuint programId = 0; GLuint vtxShaderId, fragShaderId; programId = glCreateProgram(); vtxShaderId = compileShader(vertexShaderSource, GL_VERTEX_SHADER); - fragShaderId = compileShader(fragmentShaderSource?fragmentShaderSource:vertexShaderSource, GL_FRAGMENT_SHADER); + fragShaderId = compileShader(fragmentShaderSource ? fragmentShaderSource : vertexShaderSource, GL_FRAGMENT_SHADER); - if(vtxShaderId && fragShaderId) - { + if (vtxShaderId && fragShaderId) { // Associate shader with program glAttachShader(programId, vtxShaderId); glAttachShader(programId, fragShaderId); @@ -121,12 +117,12 @@ namespace shader // Check the status of the compile/link GLint logLen; glGetProgramiv(programId, GL_INFO_LOG_LENGTH, &logLen); - if (logLen > 0) - { - char* log = (char*) malloc(logLen * sizeof(char)); + if (logLen > 0) { + char* log = (char*)malloc(logLen * sizeof(char)); // Show any errors as appropriate glGetProgramInfoLog(programId, logLen, &logLen, log); - std::cout << "Prog Info Log: " << std::endl << log << std::endl; + std::cout << "Prog Info Log: " << std::endl + << log << std::endl; free(log); } } @@ -135,8 +131,7 @@ namespace shader return programId; } - const bool init(SDL_Window* win, SDL_Texture* backBuffer, const char* vertexShader, const char* fragmentShader) - { + const bool init(SDL_Window* win, SDL_Texture* backBuffer, const char* vertexShader, const char* fragmentShader) { shader::win = win; shader::renderer = SDL_GetRenderer(win); shader::backBuffer = backBuffer; @@ -150,16 +145,15 @@ namespace shader nose = SDL_GetNumberProperty(props, SDL_PROP_TEXTURE_OPENGL_TEXTURE_TARGET_NUMBER, -1); printf("texture target number: %i\n", nose); - if (access != SDL_TEXTUREACCESS_TARGET) - { + if (access != SDL_TEXTUREACCESS_TARGET) { std::cout << "ERROR FATAL: La textura per al render ha de tindre SDL_TEXTUREACCESS_TARGET definit." << std::endl; exit(1); } - const char * renderer_name = SDL_GetRendererName(renderer); + const char* renderer_name = SDL_GetRendererName(renderer); printf("rendererInfo.name: %s\n", renderer_name); - if(!strncmp(renderer_name, "opengl", 6)) { + if (!strncmp(renderer_name, "opengl", 6)) { #ifndef __APPLE__ if (!initGLExtensions()) { std::cout << "WARNING: No s'han pogut inicialitzar les extensions d'OpenGL!" << std::endl; @@ -178,21 +172,18 @@ namespace shader return true; } - unsigned char pixels[512*240*4]; + unsigned char pixels[512 * 240 * 4]; - void render() - { + void render() { SDL_FlushRenderer(renderer); SDL_SetRenderTarget(renderer, NULL); SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255); SDL_RenderClear(renderer); SDL_FlushRenderer(renderer); - if (usingOpenGL) - { + if (usingOpenGL) { GLint oldProgramId; - if (programId != 0) - { + if (programId != 0) { glGetIntegerv(GL_CURRENT_PROGRAM, &oldProgramId); glUseProgram(programId); } @@ -200,22 +191,22 @@ namespace shader glEnable(GL_TEXTURE_2D); glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_2D, 1); - //glGetTexImage(GL_TEXTURE_2D, 0, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8, pixels); - //if (glGetError()) { printf("GLGETERROR!\n"); exit(1);} - //GLint param; - //glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_HEIGHT, ¶m); - //printf("tex width: %i\n", param); + // glGetTexImage(GL_TEXTURE_2D, 0, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8, pixels); + // if (glGetError()) { printf("GLGETERROR!\n"); exit(1);} + // GLint param; + // glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_HEIGHT, ¶m); + // printf("tex width: %i\n", param); glViewport(0, 0, win_size.x, win_size.y); glBegin(GL_TRIANGLE_STRIP); - glTexCoord2f(0.0f, 0.0f); - glVertex2f(0.0f, 0.0f); - glTexCoord2f(1.0f, 0.0f); - glVertex2f(tex_size.x, 0.0f); - glTexCoord2f(0.0f, 1.0f); - glVertex2f(0.0f, tex_size.y); - glTexCoord2f(1.0f, 1.0f); - glVertex2f(tex_size.x, tex_size.y); + glTexCoord2f(0.0f, 0.0f); + glVertex2f(0.0f, 0.0f); + glTexCoord2f(1.0f, 0.0f); + glVertex2f(tex_size.x, 0.0f); + glTexCoord2f(0.0f, 1.0f); + glVertex2f(0.0f, tex_size.y); + glTexCoord2f(1.0f, 1.0f); + glVertex2f(tex_size.x, tex_size.y); glEnd(); SDL_GL_SwapWindow(win); @@ -226,6 +217,9 @@ namespace shader SDL_RenderTexture(renderer, backBuffer, NULL, NULL); SDL_RenderPresent(renderer); } - if (glGetError()) { printf("GLERROR!\n"); exit(1); } + if (glGetError()) { + printf("GLERROR!\n"); + exit(1); + } } -} +} // namespace shader diff --git a/source/core/jshader.hpp b/source/core/jshader.hpp index f2dc8e3..d82ce49 100644 --- a/source/core/jshader.hpp +++ b/source/core/jshader.hpp @@ -24,7 +24,7 @@ // Els shaders li'ls passem com una cadena, som nosaltres els que s'encarreguem // de carregarlos de disc, amb fopen, ifstream, jfile o el que vullgues. // Si els tens en un std::string, passa-li-la com "cadena.c_str()". -// +// // Poden ser els dos el mateix arxiu, com fa libRetro, jo desde dins ja fique // els defines necessaris. Si es el mateix arxiu, pots no ficar el quart paràmetre. // @@ -35,10 +35,8 @@ // Ah! una cosa mes: al compilar, en Linux afegir "-lGL", en Windows afegir "-lopengl32". // En Mac ni idea -namespace shader -{ - const bool init(SDL_Window* win, SDL_Texture* backBuffer, - const char* vertexShader, const char* fragmentShader=nullptr); +namespace shader { + const bool init(SDL_Window* win, SDL_Texture* backBuffer, const char* vertexShader, const char* fragmentShader = nullptr); void render(); -} +} // namespace shader diff --git a/source/external/.clang-format b/source/external/.clang-format new file mode 100644 index 0000000..47a38a9 --- /dev/null +++ b/source/external/.clang-format @@ -0,0 +1,2 @@ +DisableFormat: true +SortIncludes: Never diff --git a/source/game/bola.cpp b/source/game/bola.cpp index 81527c6..222577f 100644 --- a/source/game/bola.cpp +++ b/source/game/bola.cpp @@ -1,68 +1,66 @@ #include "game/bola.hpp" -#include "core/jgame.hpp" + #include -Bola::Bola( JD8_Surface gfx, Prota* sam ) : Sprite( gfx ) { - this->sam = sam; +#include "core/jgame.hpp" - this->entitat = (Entitat*)malloc( sizeof( Entitat ) ); - // Frames - this->entitat->num_frames = 2; - this->entitat->frames = (Frame*)malloc( this->entitat->num_frames * sizeof( Frame ) ); - this->entitat->frames[0].w = 15; - this->entitat->frames[0].h = 15; - this->entitat->frames[0].x = 30; - this->entitat->frames[0].y = 155; - this->entitat->frames[1].w = 15; - this->entitat->frames[1].h = 15; - this->entitat->frames[1].x = 45; - this->entitat->frames[1].y = 155; +Bola::Bola(JD8_Surface gfx, Prota* sam) + : Sprite(gfx) { + this->sam = sam; - // Animacions - this->entitat->num_animacions = 1; - this->entitat->animacions = (Animacio*)malloc( this->entitat->num_animacions * sizeof( Animacio ) ); - this->entitat->animacions[0].num_frames = 2; - this->entitat->animacions[0].frames = (Uint8*)malloc( 2 ); - this->entitat->animacions[0].frames[0] = 0; - this->entitat->animacions[0].frames[1] = 1; + this->entitat = (Entitat*)malloc(sizeof(Entitat)); + // Frames + this->entitat->num_frames = 2; + this->entitat->frames = (Frame*)malloc(this->entitat->num_frames * sizeof(Frame)); + this->entitat->frames[0].w = 15; + this->entitat->frames[0].h = 15; + this->entitat->frames[0].x = 30; + this->entitat->frames[0].y = 155; + this->entitat->frames[1].w = 15; + this->entitat->frames[1].h = 15; + this->entitat->frames[1].x = 45; + this->entitat->frames[1].y = 155; - this->cur_frame = 0; - this->o = 0; - this->cycles_per_frame = 4; - this->x = 20; - this->y = 100; - this->contador = 0; + // Animacions + this->entitat->num_animacions = 1; + this->entitat->animacions = (Animacio*)malloc(this->entitat->num_animacions * sizeof(Animacio)); + this->entitat->animacions[0].num_frames = 2; + this->entitat->animacions[0].frames = (Uint8*)malloc(2); + this->entitat->animacions[0].frames[0] = 0; + this->entitat->animacions[0].frames[1] = 1; + this->cur_frame = 0; + this->o = 0; + this->cycles_per_frame = 4; + this->x = 20; + this->y = 100; + this->contador = 0; } void Bola::draw() { - - if( this->contador == 0 ) Sprite::draw(); - + if (this->contador == 0) Sprite::draw(); } void Bola::update() { - - if( this->contador == 0 ) { - // Augmentem la x - this->x++; - if( this->x == 280 ) this->contador = 200; + if (this->contador == 0) { + // Augmentem la x + this->x++; + if (this->x == 280) this->contador = 200; - // Augmentem el frame - if( JG_GetCycleCounter() % this->cycles_per_frame == 0 ) { - this->cur_frame++; - if( this->cur_frame == this->entitat->animacions[this->o].num_frames ) this->cur_frame = 0; - } - - // Comprovem si ha tocat a Sam - if( this->x > ( this->sam->x - 7 ) && this->x < ( this->sam->x + 7 ) && this->y > ( this->sam->y - 7 ) && this->y < ( this->sam->y + 7 ) ) { - this->contador = 200; - info::vida--; - if( info::vida == 0 ) this->sam->o = 5; - } - } else { - this->contador--; - if( this->contador == 0 ) this->x = 20; - } + // Augmentem el frame + if (JG_GetCycleCounter() % this->cycles_per_frame == 0) { + this->cur_frame++; + if (this->cur_frame == this->entitat->animacions[this->o].num_frames) this->cur_frame = 0; + } + // Comprovem si ha tocat a Sam + if (this->x > (this->sam->x - 7) && this->x < (this->sam->x + 7) && this->y > (this->sam->y - 7) && this->y < (this->sam->y + 7)) { + this->contador = 200; + info::vida--; + if (info::vida == 0) this->sam->o = 5; + } + } else { + this->contador--; + if (this->contador == 0) this->x = 20; + } } diff --git a/source/game/bola.hpp b/source/game/bola.hpp index abb519e..f5f3c5d 100644 --- a/source/game/bola.hpp +++ b/source/game/bola.hpp @@ -1,22 +1,17 @@ #pragma once -#include "game/sprite.hpp" -#include "game/prota.hpp" #include "game/info.hpp" +#include "game/prota.hpp" +#include "game/sprite.hpp" class Bola : public Sprite { + public: + Bola(JD8_Surface gfx, Prota* sam); -public: - - Bola( JD8_Surface gfx, Prota* sam ); - - void draw(); - void update(); - - -protected: - - Uint8 contador; - Prota* sam; + void draw(); + void update(); + protected: + Uint8 contador; + Prota* sam; }; diff --git a/source/game/engendro.cpp b/source/game/engendro.cpp index 8875fc5..3c609a8 100644 --- a/source/game/engendro.cpp +++ b/source/game/engendro.cpp @@ -1,64 +1,61 @@ #include "game/engendro.hpp" -#include "core/jgame.hpp" + #include -Engendro::Engendro( JD8_Surface gfx, Uint16 x, Uint16 y ) : Sprite( gfx ) { +#include "core/jgame.hpp" - this->entitat = (Entitat*)malloc( sizeof( Entitat ) ); - // Frames - this->entitat->num_frames = 4; - this->entitat->frames = (Frame*)malloc( this->entitat->num_frames * sizeof( Frame ) ); +Engendro::Engendro(JD8_Surface gfx, Uint16 x, Uint16 y) + : Sprite(gfx) { + this->entitat = (Entitat*)malloc(sizeof(Entitat)); + // Frames + this->entitat->num_frames = 4; + this->entitat->frames = (Frame*)malloc(this->entitat->num_frames * sizeof(Frame)); - Uint8 frame = 0; - for( int y = 50; y <= 65; y+=15 ) { - for( int x = 225; x <= 240; x+=15 ) { - this->entitat->frames[frame].w = 15; - this->entitat->frames[frame].h = 15; - this->entitat->frames[frame].x = x; - this->entitat->frames[frame].y = y; - frame++; - } - } + Uint8 frame = 0; + for (int y = 50; y <= 65; y += 15) { + for (int x = 225; x <= 240; x += 15) { + this->entitat->frames[frame].w = 15; + this->entitat->frames[frame].h = 15; + this->entitat->frames[frame].x = x; + this->entitat->frames[frame].y = y; + frame++; + } + } - // Animacions - this->entitat->num_animacions = 1; - this->entitat->animacions = (Animacio*)malloc( this->entitat->num_animacions * sizeof( Animacio ) ); - this->entitat->animacions[0].num_frames = 6; - this->entitat->animacions[0].frames = (Uint8*)malloc( 6 ); - this->entitat->animacions[0].frames[0] = 0; - this->entitat->animacions[0].frames[1] = 1; - this->entitat->animacions[0].frames[2] = 2; - this->entitat->animacions[0].frames[3] = 3; - this->entitat->animacions[0].frames[4] = 2; - this->entitat->animacions[0].frames[5] = 1; - - this->cur_frame = 0; - this->vida = 18; - this->x = x; - this->y = y; - this->o = 0; - this->cycles_per_frame = 30; + // Animacions + this->entitat->num_animacions = 1; + this->entitat->animacions = (Animacio*)malloc(this->entitat->num_animacions * sizeof(Animacio)); + this->entitat->animacions[0].num_frames = 6; + this->entitat->animacions[0].frames = (Uint8*)malloc(6); + this->entitat->animacions[0].frames[0] = 0; + this->entitat->animacions[0].frames[1] = 1; + this->entitat->animacions[0].frames[2] = 2; + this->entitat->animacions[0].frames[3] = 3; + this->entitat->animacions[0].frames[4] = 2; + this->entitat->animacions[0].frames[5] = 1; + this->cur_frame = 0; + this->vida = 18; + this->x = x; + this->y = y; + this->o = 0; + this->cycles_per_frame = 30; } void Engendro::draw() { - - Sprite::draw(); - + Sprite::draw(); } bool Engendro::update() { + bool mort = false; - bool mort = false; + if (JG_GetCycleCounter() % this->cycles_per_frame == 0) { + this->cur_frame++; + if (this->cur_frame == this->entitat->animacions[this->o].num_frames) this->cur_frame = 0; + this->vida--; + } - if( JG_GetCycleCounter() % this->cycles_per_frame == 0 ) { - this->cur_frame++; - if( this->cur_frame == this->entitat->animacions[this->o].num_frames ) this->cur_frame = 0; - this->vida--; - } + if (vida == 0) mort = true; - - if( vida == 0 ) mort = true; - - return mort; + return mort; } diff --git a/source/game/engendro.hpp b/source/game/engendro.hpp index 4f670ef..20adb40 100644 --- a/source/game/engendro.hpp +++ b/source/game/engendro.hpp @@ -3,16 +3,12 @@ #include "game/sprite.hpp" class Engendro : public Sprite { + public: + Engendro(JD8_Surface gfx, Uint16 x, Uint16 y); -public: - - Engendro( JD8_Surface gfx, Uint16 x, Uint16 y ); - - void draw(); - bool update(); - -protected: - - Uint8 vida; + void draw(); + bool update(); + protected: + Uint8 vida; }; diff --git a/source/game/info.cpp b/source/game/info.cpp index aee3589..ff3f1c3 100644 --- a/source/game/info.cpp +++ b/source/game/info.cpp @@ -1,14 +1,13 @@ #include "game/info.hpp" -namespace info -{ - int num_piramide; - int num_habitacio; - int diners; - int diamants; - int vida; - int momies; - int engendros; - bool nou_personatge; - bool pepe_activat; -}; +namespace info { + int num_piramide; + int num_habitacio; + int diners; + int diamants; + int vida; + int momies; + int engendros; + bool nou_personatge; + bool pepe_activat; +}; // namespace info diff --git a/source/game/info.hpp b/source/game/info.hpp index 9d1325a..1712617 100644 --- a/source/game/info.hpp +++ b/source/game/info.hpp @@ -1,14 +1,13 @@ #pragma once -namespace info -{ - extern int num_piramide; - extern int num_habitacio; - extern int diners; - extern int diamants; - extern int vida; - extern int momies; - extern int engendros; - extern bool nou_personatge; - extern bool pepe_activat; -}; +namespace info { + extern int num_piramide; + extern int num_habitacio; + extern int diners; + extern int diamants; + extern int vida; + extern int momies; + extern int engendros; + extern bool nou_personatge; + extern bool pepe_activat; +}; // namespace info diff --git a/source/game/mapa.cpp b/source/game/mapa.cpp index 937bac6..c7ed57f 100644 --- a/source/game/mapa.cpp +++ b/source/game/mapa.cpp @@ -1,292 +1,278 @@ #include "game/mapa.hpp" +#include + #include "core/jgame.hpp" #include "core/jinput.hpp" -#include -Mapa::Mapa( JD8_Surface gfx, Prota* sam ) { +Mapa::Mapa(JD8_Surface gfx, Prota* sam) { + this->gfx = gfx; + this->sam = sam; - this->gfx = gfx; - this->sam = sam; + this->preparaFondoEstatic(); + this->preparaTombes(); - this->preparaFondoEstatic(); - this->preparaTombes(); - - this->ultim_vertex.columna = 255; - this->frame_torxes = 0; - - this->farao = false; - this->clau = false; - this->porta_oberta = false; - this->nova_momia = false; + this->ultim_vertex.columna = 255; + this->frame_torxes = 0; + this->farao = false; + this->clau = false; + this->porta_oberta = false; + this->nova_momia = false; } Mapa::~Mapa(void) { - - JD8_FreeSurface( this->fondo ); - + JD8_FreeSurface(this->fondo); } void Mapa::draw() { + if (info::num_piramide != 4) { + switch (sam->o) { + case 0: // Down + JD8_BlitCKToSurface(sam->x, sam->y, this->gfx, 15, 125 + sam->frame_pejades, 15, 1, this->fondo, 255); + break; + case 1: // Up + JD8_BlitCKToSurface(sam->x, sam->y + 15, this->gfx, 0, 125 + (14 - sam->frame_pejades), 15, 1, this->fondo, 255); + break; + case 2: // Right + JD8_BlitCKToSurface(sam->x + 7, sam->y, this->gfx, 30 + sam->frame_pejades, 125, 1, 15, this->fondo, 255); + break; + case 3: // Left + JD8_BlitCKToSurface(sam->x + 8, sam->y, this->gfx, 45 + (14 - sam->frame_pejades), 125, 1, 15, this->fondo, 255); + break; + } + } - if( info::num_piramide != 4 ) { - switch( sam->o ) { - case 0: // Down - JD8_BlitCKToSurface( sam->x, sam->y, this->gfx, 15, 125 + sam->frame_pejades, 15, 1, this->fondo, 255 ); - break; - case 1: // Up - JD8_BlitCKToSurface( sam->x, sam->y + 15, this->gfx, 0, 125 + ( 14 - sam->frame_pejades ), 15, 1, this->fondo, 255 ); - break; - case 2: // Right - JD8_BlitCKToSurface( sam->x + 7, sam->y, this->gfx, 30 + sam->frame_pejades, 125, 1, 15, this->fondo, 255 ); - break; - case 3: // Left - JD8_BlitCKToSurface( sam->x + 8, sam->y, this->gfx, 45 + ( 14 - sam->frame_pejades ), 125, 1, 15, this->fondo, 255 ); - break; - } - } + JD8_Blit(this->fondo); - JD8_Blit( this->fondo ); - - // Pinta tombes - for (int y = 0; y < 4; y++) { - for (int x = 0; x < 4; x++) { - JD8_BlitCK(35 + (x * 65), 45 + (y * 35), this->gfx, this->tombes[x + y * 4].x, this->tombes[x + y * 4].y, 50, 20, 255); - } - } - - JD8_BlitCK( 45, 15, this->gfx, 30 + ( this->frame_torxes * 25 ), 80, 25, 15, 255 ); - JD8_BlitCK( 95, 15, this->gfx, 30 + ( this->frame_torxes * 25 ), 80, 25, 15, 255 ); - JD8_BlitCK( 195, 15, this->gfx, 30 + ( this->frame_torxes * 25 ), 80, 25, 15, 255 ); - JD8_BlitCK( 245, 15, this->gfx, 30 + ( this->frame_torxes * 25 ), 80, 25, 15, 255 ); + // Pinta tombes + for (int y = 0; y < 4; y++) { + for (int x = 0; x < 4; x++) { + JD8_BlitCK(35 + (x * 65), 45 + (y * 35), this->gfx, this->tombes[x + y * 4].x, this->tombes[x + y * 4].y, 50, 20, 255); + } + } + JD8_BlitCK(45, 15, this->gfx, 30 + (this->frame_torxes * 25), 80, 25, 15, 255); + JD8_BlitCK(95, 15, this->gfx, 30 + (this->frame_torxes * 25), 80, 25, 15, 255); + JD8_BlitCK(195, 15, this->gfx, 30 + (this->frame_torxes * 25), 80, 25, 15, 255); + JD8_BlitCK(245, 15, this->gfx, 30 + (this->frame_torxes * 25), 80, 25, 15, 255); }; void Mapa::update() { + if (((sam->x - 20) % 65 == 0) && ((sam->y - 30) % 35 == 0) && ((this->ultim_vertex.columna != (sam->x - 20) / 65) || (this->ultim_vertex.fila != (sam->y - 30) / 35))) { + this->vertex.columna = (sam->x - 20) / 65; + this->vertex.fila = (sam->y - 30) / 35; + if (this->ultim_vertex.columna != 255) this->comprovaUltimCami(); + this->ultim_vertex = this->vertex; + } - if( ( ( sam->x - 20 ) % 65 == 0 ) && ( ( sam->y - 30 ) % 35 == 0 ) && ( ( this->ultim_vertex.columna != ( sam->x - 20 ) / 65 ) || ( this->ultim_vertex.fila != ( sam->y - 30 ) / 35 ) ) ) { - this->vertex.columna = ( sam->x - 20 ) / 65; - this->vertex.fila = ( sam->y - 30 ) / 35; - if( this->ultim_vertex.columna != 255 ) this->comprovaUltimCami(); - this->ultim_vertex = this->vertex; - } - - if( this->porta_oberta && sam->x == 150 && sam->y == 30 ) { - if( JI_KeyPressed( SDL_SCANCODE_UP ) ) { - this->sam->o = 4; - this->sam->y -= 15; - } - } - - if( JG_GetCycleCounter()%8 == 0 ) { - this->frame_torxes++; - this->frame_torxes = this->frame_torxes % 4; - } + if (this->porta_oberta && sam->x == 150 && sam->y == 30) { + if (JI_KeyPressed(SDL_SCANCODE_UP)) { + this->sam->o = 4; + this->sam->y -= 15; + } + } + if (JG_GetCycleCounter() % 8 == 0) { + this->frame_torxes++; + this->frame_torxes = this->frame_torxes % 4; + } } bool Mapa::novaMomia() { - bool resultat = nova_momia; - nova_momia = false; - return resultat; + bool resultat = nova_momia; + nova_momia = false; + return resultat; } void Mapa::preparaFondoEstatic() { + // Prepara el fondo est�tic de l'habitaci� + this->fondo = JD8_NewSurface(); + if (info::num_piramide == 6) { + JD8_BlitToSurface(9, 2, this->gfx, 227, 185, 92, 7, this->fondo); // Text "SECRETA" + } else { + JD8_BlitToSurface(9, 2, this->gfx, 60, 185, 39, 7, this->fondo); // Text "NIVELL" + JD8_BlitToSurface(72, 6, this->gfx, 153, 189, 3, 1, this->fondo); // Ralleta entre num piramide i num habitacio + } + JD8_BlitToSurface(130, 2, this->gfx, 225, 192, 19, 8, this->fondo); // Montonet de monedes + signe '=' + JD8_BlitToSurface(220, 2, this->gfx, 160, 185, 48, 7, this->fondo); // Text "ENERGIA" + if (info::diners >= 200) JD8_BlitToSurface(175, 3, this->gfx, 60, 193, 7, 6, this->fondo); - // Prepara el fondo est�tic de l'habitaci� - this->fondo = JD8_NewSurface(); - if (info::num_piramide == 6) { - JD8_BlitToSurface(9, 2, this->gfx, 227, 185, 92, 7, this->fondo); // Text "SECRETA" - } - else { - JD8_BlitToSurface(9, 2, this->gfx, 60, 185, 39, 7, this->fondo); // Text "NIVELL" - JD8_BlitToSurface(72, 6, this->gfx, 153, 189, 3, 1, this->fondo); // Ralleta entre num piramide i num habitacio - } - JD8_BlitToSurface(130, 2, this->gfx, 225, 192, 19, 8, this->fondo); // Montonet de monedes + signe '=' - JD8_BlitToSurface(220, 2, this->gfx, 160, 185, 48, 7, this->fondo); // Text "ENERGIA" - if (info::diners >= 200) JD8_BlitToSurface(175, 3, this->gfx, 60, 193, 7, 6, this->fondo); + // Pinta taulells + for (int y = 0; y < 11; y++) { + for (int x = 0; x < 19; x++) { + switch (info::num_piramide) { + case 1: + JD8_BlitToSurface(20 + (x * 15), 30 + (y * 15), this->gfx, 0, 80, 15, 15, this->fondo); + break; + case 2: + JD8_BlitToSurface(20 + (x * 15), 30 + (y * 15), this->gfx, 25, 95, 15, 15, this->fondo); + break; + case 3: + JD8_BlitToSurface(20 + (x * 15), 30 + (y * 15), this->gfx, 40, 95, 15, 15, this->fondo); + break; + case 4: + JD8_BlitToSurface(20 + (x * 15), 30 + (y * 15), this->gfx, 175 + ((rand() % 3) * 15), 80, 15, 15, this->fondo); + break; + case 5: + JD8_BlitToSurface(20 + (x * 15), 30 + (y * 15), this->gfx, 130, 80, 15, 15, this->fondo); + break; + case 6: + JD8_BlitToSurface(20 + (x * 15), 30 + (y * 15), this->gfx, 145, 80, 15, 15, this->fondo); + break; + } + } + } - // Pinta taulells - for( int y = 0; y < 11; y++ ) { - for( int x = 0; x < 19; x++ ) { - switch( info::num_piramide ) { - case 1: - JD8_BlitToSurface( 20+(x*15), 30+(y*15), this->gfx, 0, 80, 15, 15, this->fondo ); - break; - case 2: - JD8_BlitToSurface( 20+(x*15), 30+(y*15), this->gfx, 25, 95, 15, 15, this->fondo ); - break; - case 3: - JD8_BlitToSurface( 20+(x*15), 30+(y*15), this->gfx, 40, 95, 15, 15, this->fondo ); - break; - case 4: - JD8_BlitToSurface( 20+(x*15), 30+(y*15), this->gfx, 175 + ((rand()%3)*15), 80, 15, 15, this->fondo ); - break; - case 5: - JD8_BlitToSurface( 20+(x*15), 30+(y*15), this->gfx, 130, 80, 15, 15, this->fondo ); - break; - case 6: - JD8_BlitToSurface(20 + (x * 15), 30 + (y * 15), this->gfx, 145, 80, 15, 15, this->fondo); - break; - } - } - } + // Pinta vores de les parets + JD8_BlitCKToSurface(5, 15, this->gfx, 30, 110, 15, 15, this->fondo, 255); + JD8_BlitCKToSurface(295, 15, this->gfx, 45, 110, 15, 15, this->fondo, 255); + JD8_BlitCKToSurface(5, 180, this->gfx, 0, 155, 15, 20, this->fondo, 255); + JD8_BlitCKToSurface(295, 180, this->gfx, 15, 155, 15, 20, this->fondo, 255); + // Pinta parets verticals + for (int i = 0; i < 10; i++) { + JD8_BlitToSurface(5, 30 + (i * 15), this->gfx, 0, 110, 15, 15, this->fondo); + JD8_BlitToSurface(295, 30 + (i * 15), this->gfx, 15, 110, 15, 15, this->fondo); + } - // Pinta vores de les parets - JD8_BlitCKToSurface( 5, 15, this->gfx, 30, 110, 15, 15, this->fondo, 255 ); - JD8_BlitCKToSurface( 295, 15, this->gfx, 45, 110, 15, 15, this->fondo, 255 ); - JD8_BlitCKToSurface( 5, 180, this->gfx, 0, 155, 15, 20, this->fondo, 255 ); - JD8_BlitCKToSurface( 295, 180, this->gfx, 15, 155, 15, 20, this->fondo, 255 ); + // Pinta parets hortzintals + for (int i = 0; i < 11; i++) { + JD8_BlitToSurface(20 + (i * 25), 185, this->gfx, 0, 95, 25, 15, this->fondo); + JD8_BlitToSurface(20 + (i * 25), 15, this->gfx, 0, 95, 25, 15, this->fondo); + } - // Pinta parets verticals - for( int i = 0; i < 10; i++ ) { - JD8_BlitToSurface( 5, 30+(i*15), this->gfx, 0, 110, 15, 15, this->fondo ); - JD8_BlitToSurface( 295, 30+(i*15), this->gfx, 15, 110, 15, 15, this->fondo ); - } + // Pinta la porta + JD8_BlitCKToSurface(150, 18, this->gfx, 0, 143, 15, 12, this->fondo, 255); - // Pinta parets hortzintals - for( int i = 0; i < 11; i++ ) { - JD8_BlitToSurface( 20+(i*25), 185, this->gfx, 0, 95, 25, 15, this->fondo ); - JD8_BlitToSurface( 20+(i*25), 15, this->gfx, 0, 95, 25, 15, this->fondo ); - } - - // Pinta la porta - JD8_BlitCKToSurface( 150, 18, this->gfx, 0, 143, 15, 12, this->fondo, 255 ); - - if( info::num_piramide == 2 ) { - JD8_BlitToSurface( 5, 100, this->gfx, 30, 140, 15, 15, this->fondo ); - } + if (info::num_piramide == 2) { + JD8_BlitToSurface(5, 100, this->gfx, 30, 140, 15, 15, this->fondo); + } } -void swap( Uint8& a, Uint8& b ) { - Uint8 temp = a; - a = b; - b = temp; +void swap(Uint8& a, Uint8& b) { + Uint8 temp = a; + a = b; + b = temp; } void Mapa::preparaTombes() { - const Uint8 contingut = info::num_piramide == 6 ? CONTE_DIAMANT : CONTE_RES; - int cx = info::num_piramide == 6 ? 270 : 0; - int cy = info::num_piramide == 6 ? 50 : 0; + const Uint8 contingut = info::num_piramide == 6 ? CONTE_DIAMANT : CONTE_RES; + int cx = info::num_piramide == 6 ? 270 : 0; + int cy = info::num_piramide == 6 ? 50 : 0; - for( int i = 0; i < 16; i++ ) { - this->tombes[i].contingut = contingut; - this->tombes[i].oberta = false; - this->tombes[i].costat[0] = false; - this->tombes[i].costat[1] = false; - this->tombes[i].costat[2] = false; - this->tombes[i].costat[3] = false; - this->tombes[i].x = cx; - this->tombes[i].y = cy; - } - if (info::num_piramide == 6) return; - this->tombes[0].contingut = CONTE_FARAO; - this->tombes[1].contingut = CONTE_CLAU; - this->tombes[2].contingut = CONTE_PERGAMI; - this->tombes[3].contingut = CONTE_MOMIA; - for( int i = 4; i < 8; i++ ) this->tombes[i].contingut = CONTE_RES; - for( int i = 8; i < 16; i++ ) this->tombes[i].contingut = CONTE_TRESOR; + for (int i = 0; i < 16; i++) { + this->tombes[i].contingut = contingut; + this->tombes[i].oberta = false; + this->tombes[i].costat[0] = false; + this->tombes[i].costat[1] = false; + this->tombes[i].costat[2] = false; + this->tombes[i].costat[3] = false; + this->tombes[i].x = cx; + this->tombes[i].y = cy; + } + if (info::num_piramide == 6) return; + this->tombes[0].contingut = CONTE_FARAO; + this->tombes[1].contingut = CONTE_CLAU; + this->tombes[2].contingut = CONTE_PERGAMI; + this->tombes[3].contingut = CONTE_MOMIA; + for (int i = 4; i < 8; i++) this->tombes[i].contingut = CONTE_RES; + for (int i = 8; i < 16; i++) this->tombes[i].contingut = CONTE_TRESOR; - for( int i = 0; i < 50; i++ ) swap( this->tombes[rand()%16].contingut, this->tombes[rand()%16].contingut ); + for (int i = 0; i < 50; i++) swap(this->tombes[rand() % 16].contingut, this->tombes[rand() % 16].contingut); } -Uint8 minim( Uint8 a, Uint8 b ) { - return (avertex.columna - this->ultim_vertex.columna); + Uint8 fil_aux = abs(this->vertex.fila - this->ultim_vertex.fila); - Uint8 col_aux = abs( this->vertex.columna - this->ultim_vertex.columna ); - Uint8 fil_aux = abs( this->vertex.fila - this->ultim_vertex.fila ); + if (col_aux > fil_aux) { // Cam� horitzontal + Uint8 cami_fila = this->vertex.fila; + Uint8 cami_columna = minim(this->vertex.columna, this->ultim_vertex.columna); - if( col_aux > fil_aux ) { // Cam� horitzontal - Uint8 cami_fila = this->vertex.fila; - Uint8 cami_columna = minim( this->vertex.columna, this->ultim_vertex.columna ); + Sint8 caixa_avall = (cami_fila << 2) + cami_columna; + Sint8 caixa_amunt = caixa_avall - 4; - Sint8 caixa_avall = ( cami_fila << 2 ) + cami_columna; - Sint8 caixa_amunt = caixa_avall - 4; + if (caixa_avall < 16) { + this->tombes[caixa_avall].costat[0] = true; + this->comprovaCaixa(caixa_avall); + } + if (caixa_amunt >= 0) { + this->tombes[caixa_amunt].costat[2] = true; + this->comprovaCaixa(caixa_amunt); + } + } else { // Cam� vertical + Uint8 cami_columna = this->vertex.columna; + Uint8 cami_fila = minim(this->vertex.fila, this->ultim_vertex.fila); - if( caixa_avall < 16 ) { - this->tombes[caixa_avall].costat[0] = true; - this->comprovaCaixa( caixa_avall ); - } - if( caixa_amunt >= 0 ) { - this->tombes[caixa_amunt].costat[2] = true; - this->comprovaCaixa( caixa_amunt ); - } - } else { // Cam� vertical - Uint8 cami_columna = this->vertex.columna; - Uint8 cami_fila = minim( this->vertex.fila, this->ultim_vertex.fila ); + Sint8 caixa_dreta = (cami_fila << 2) + cami_columna; + Sint8 caixa_esquerra = caixa_dreta - 1; - Sint8 caixa_dreta = ( cami_fila << 2 ) + cami_columna; - Sint8 caixa_esquerra = caixa_dreta - 1; - - if( caixa_dreta <= ( cami_fila << 2 ) + 3 ) { - this->tombes[caixa_dreta].costat[3] = true; - this->comprovaCaixa( caixa_dreta ); - } - if( caixa_esquerra >= ( cami_fila << 2 ) ) { - this->tombes[caixa_esquerra].costat[1] = true; - this->comprovaCaixa( caixa_esquerra ); - } - } + if (caixa_dreta <= (cami_fila << 2) + 3) { + this->tombes[caixa_dreta].costat[3] = true; + this->comprovaCaixa(caixa_dreta); + } + if (caixa_esquerra >= (cami_fila << 2)) { + this->tombes[caixa_esquerra].costat[1] = true; + this->comprovaCaixa(caixa_esquerra); + } + } } -void Mapa::comprovaCaixa( Uint8 num ) -{ - // Si la tomba ja està oberta, no hi ha res que mirar - if( this->tombes[num].oberta ) return; +void Mapa::comprovaCaixa(Uint8 num) { + // Si la tomba ja està oberta, no hi ha res que mirar + if (this->tombes[num].oberta) return; - // Si algun costat encara no està passat, no hi ha res que fer - for( int i = 0; i < 4; i++ ) if( !this->tombes[num].costat[i] ) return; + // Si algun costat encara no està passat, no hi ha res que fer + for (int i = 0; i < 4; i++) + if (!this->tombes[num].costat[i]) return; - // Sinó, pos la acabem d'obrir - this->tombes[num].oberta = true; + // Sinó, pos la acabem d'obrir + this->tombes[num].oberta = true; - // Comprobem el premi del kinder sorpresa - switch( this->tombes[num].contingut ) - { - case CONTE_RES: - this->tombes[num].x = 50; - break; - case CONTE_TRESOR: - this->tombes[num].x = 100; - info::diners++; - break; - case CONTE_FARAO: - this->tombes[num].x = 150; - this->farao = true; - break; - case CONTE_CLAU: - this->tombes[num].x = 200; - this->clau = true; - break; - case CONTE_MOMIA: - this->tombes[num].y = 175; - this->nova_momia = true; - break; - case CONTE_PERGAMI: - this->tombes[num].x = 250; - this->sam->pergami = true; - break; - case CONTE_DIAMANT: - this->tombes[num].y = 70; - info::diamants++; - info::diners += VALOR_DIAMANT; - if (info::diamants == 16) this->farao = this->clau = true; - break; - } + // Comprobem el premi del kinder sorpresa + switch (this->tombes[num].contingut) { + case CONTE_RES: + this->tombes[num].x = 50; + break; + case CONTE_TRESOR: + this->tombes[num].x = 100; + info::diners++; + break; + case CONTE_FARAO: + this->tombes[num].x = 150; + this->farao = true; + break; + case CONTE_CLAU: + this->tombes[num].x = 200; + this->clau = true; + break; + case CONTE_MOMIA: + this->tombes[num].y = 175; + this->nova_momia = true; + break; + case CONTE_PERGAMI: + this->tombes[num].x = 250; + this->sam->pergami = true; + break; + case CONTE_DIAMANT: + this->tombes[num].y = 70; + info::diamants++; + info::diners += VALOR_DIAMANT; + if (info::diamants == 16) this->farao = this->clau = true; + break; + } - this->comprovaPorta(); + this->comprovaPorta(); } void Mapa::comprovaPorta() { - - if( this->clau && this->farao ) { - JD8_BlitCKToSurface( 150, 18, this->gfx, 15, 143, 15, 12, this->fondo, 255 ); - porta_oberta = true; - } - + if (this->clau && this->farao) { + JD8_BlitCKToSurface(150, 18, this->gfx, 15, 143, 15, 12, this->fondo, 255); + porta_oberta = true; + } } diff --git a/source/game/mapa.hpp b/source/game/mapa.hpp index 0e725ad..cb21791 100644 --- a/source/game/mapa.hpp +++ b/source/game/mapa.hpp @@ -1,7 +1,6 @@ #pragma once #include "core/jdraw8.hpp" - #include "game/info.hpp" #include "game/prota.hpp" @@ -15,50 +14,46 @@ #define VALOR_DIAMANT 5 struct Tomba { - bool costat[4]; - Uint8 contingut; - bool oberta; - Uint16 x, y; + bool costat[4]; + Uint8 contingut; + bool oberta; + Uint16 x, y; }; struct Vertex { - Uint8 columna; - Uint8 fila; + Uint8 columna; + Uint8 fila; }; class Mapa { + public: + Mapa(JD8_Surface gfx, Prota* sam); + ~Mapa(void); -public: + void draw(); + void update(); + bool novaMomia(); + void comprovaCaixa(Uint8 num); - Mapa( JD8_Surface gfx, Prota* sam ); - ~Mapa(void); + Tomba tombes[16]; - void draw(); - void update(); - bool novaMomia(); - void comprovaCaixa( Uint8 num ); + protected: + void preparaFondoEstatic(); + void preparaTombes(); - Tomba tombes[16]; + void comprovaUltimCami(); + void comprovaPorta(); -protected: + JD8_Surface gfx; + JD8_Surface fondo; + Vertex vertex; + Vertex ultim_vertex; + Uint8 frame_torxes; - void preparaFondoEstatic(); - void preparaTombes(); - - void comprovaUltimCami(); - void comprovaPorta(); - - JD8_Surface gfx; - JD8_Surface fondo; - Vertex vertex; - Vertex ultim_vertex; - Uint8 frame_torxes; - - Prota* sam; - - bool farao; - bool clau; - bool porta_oberta; - bool nova_momia; + Prota* sam; + bool farao; + bool clau; + bool porta_oberta; + bool nova_momia; }; diff --git a/source/game/marcador.cpp b/source/game/marcador.cpp index 94f026d..afca676 100644 --- a/source/game/marcador.cpp +++ b/source/game/marcador.cpp @@ -1,62 +1,60 @@ #include "game/marcador.hpp" -Marcador::Marcador( JD8_Surface gfx, Prota* sam ) { - - this->gfx = gfx; - this->sam = sam; +Marcador::Marcador(JD8_Surface gfx, Prota* sam) { + this->gfx = gfx; + this->sam = sam; } -Marcador::~Marcador(void) { +Marcador::~Marcador(void) { } void Marcador::draw() { - - if (info::num_piramide < 6) { - this->pintaNumero(55, 2, info::num_piramide); - this->pintaNumero(80, 2, info::num_habitacio); - } + if (info::num_piramide < 6) { + this->pintaNumero(55, 2, info::num_piramide); + this->pintaNumero(80, 2, info::num_habitacio); + } - this->pintaNumero( 149, 2, info::diners / 100 ); - this->pintaNumero( 156, 2, ( info::diners % 100 ) / 10 ); - this->pintaNumero( 163, 2, info::diners % 10 ); + this->pintaNumero(149, 2, info::diners / 100); + this->pintaNumero(156, 2, (info::diners % 100) / 10); + this->pintaNumero(163, 2, info::diners % 10); - if( this->sam->pergami ) JD8_BlitCK( 190, 1, this->gfx, 209, 185, 15, 14, 255 ); + if (this->sam->pergami) JD8_BlitCK(190, 1, this->gfx, 209, 185, 15, 14, 255); - JD8_BlitCK( 271, 1, this->gfx, 0, 20, 15, info::vida*3, 255 ); - if( info::vida < 5 ) JD8_BlitCK( 271, 1+(info::vida*3), this->gfx, 75, 20, 15, 15-(info::vida*3), 255 ); + JD8_BlitCK(271, 1, this->gfx, 0, 20, 15, info::vida * 3, 255); + if (info::vida < 5) JD8_BlitCK(271, 1 + (info::vida * 3), this->gfx, 75, 20, 15, 15 - (info::vida * 3), 255); } -void Marcador::pintaNumero( Uint16 x, Uint16 y, Uint8 num ) { - switch( num ) { - case 0: - JD8_BlitCK( x, y, this->gfx, 141, 193, 10, 7, 255 ); - break; - case 1: - JD8_BlitCK( x, y, this->gfx, 100, 185, 10, 7, 255 ); - break; - case 2: - JD8_BlitCK( x, y, this->gfx, 110, 185, 10, 7, 255 ); - break; - case 3: - JD8_BlitCK( x, y, this->gfx, 120, 185, 10, 7, 255 ); - break; - case 4: - JD8_BlitCK( x, y, this->gfx, 130, 185, 10, 7, 255 ); - break; - case 5: - JD8_BlitCK( x, y, this->gfx, 140, 185, 10, 7, 255 ); - break; - case 6: - JD8_BlitCK( x, y, this->gfx, 101, 193, 10, 7, 255 ); - break; - case 7: - JD8_BlitCK( x, y, this->gfx, 111, 193, 10, 7, 255 ); - break; - case 8: - JD8_BlitCK( x, y, this->gfx, 121, 193, 10, 7, 255 ); - break; - case 9: - JD8_BlitCK( x, y, this->gfx, 131, 193, 10, 7, 255 ); - break; - } +void Marcador::pintaNumero(Uint16 x, Uint16 y, Uint8 num) { + switch (num) { + case 0: + JD8_BlitCK(x, y, this->gfx, 141, 193, 10, 7, 255); + break; + case 1: + JD8_BlitCK(x, y, this->gfx, 100, 185, 10, 7, 255); + break; + case 2: + JD8_BlitCK(x, y, this->gfx, 110, 185, 10, 7, 255); + break; + case 3: + JD8_BlitCK(x, y, this->gfx, 120, 185, 10, 7, 255); + break; + case 4: + JD8_BlitCK(x, y, this->gfx, 130, 185, 10, 7, 255); + break; + case 5: + JD8_BlitCK(x, y, this->gfx, 140, 185, 10, 7, 255); + break; + case 6: + JD8_BlitCK(x, y, this->gfx, 101, 193, 10, 7, 255); + break; + case 7: + JD8_BlitCK(x, y, this->gfx, 111, 193, 10, 7, 255); + break; + case 8: + JD8_BlitCK(x, y, this->gfx, 121, 193, 10, 7, 255); + break; + case 9: + JD8_BlitCK(x, y, this->gfx, 131, 193, 10, 7, 255); + break; + } } diff --git a/source/game/marcador.hpp b/source/game/marcador.hpp index bf889b4..d54dda0 100644 --- a/source/game/marcador.hpp +++ b/source/game/marcador.hpp @@ -5,19 +5,15 @@ #include "game/prota.hpp" class Marcador { + public: + Marcador(JD8_Surface gfx, Prota* sam); + ~Marcador(void); -public: + void draw(); - Marcador( JD8_Surface gfx, Prota* sam ); - ~Marcador(void); - - void draw(); - -protected: - - void pintaNumero( Uint16 x, Uint16 y, Uint8 num ); - - JD8_Surface gfx; - Prota* sam; + protected: + void pintaNumero(Uint16 x, Uint16 y, Uint8 num); + JD8_Surface gfx; + Prota* sam; }; diff --git a/source/game/modulegame.cpp b/source/game/modulegame.cpp index 19ce8c2..f9014c6 100644 --- a/source/game/modulegame.cpp +++ b/source/game/modulegame.cpp @@ -1,166 +1,165 @@ #include "game/modulegame.hpp" -#include "core/jgame.hpp" -#include "core/jdraw8.hpp" #include "core/jail_audio.hpp" -#include "core/jinput.hpp" +#include "core/jdraw8.hpp" #include "core/jfile.hpp" +#include "core/jgame.hpp" +#include "core/jinput.hpp" ModuleGame::ModuleGame() { + this->gfx = JD8_LoadSurface(info::pepe_activat ? "frames2.gif" : "frames.gif"); + JG_SetUpdateTicks(10); - this->gfx = JD8_LoadSurface( info::pepe_activat ? "frames2.gif" : "frames.gif" ); - JG_SetUpdateTicks(10); - - this->sam = new Prota( this->gfx ); - this->mapa = new Mapa( this->gfx, this->sam ); - this->marcador = new Marcador( this->gfx, this->sam ); - if( info::num_piramide == 2 ) { - this->bola = new Bola( this->gfx, this->sam ); - } else { - this->bola = NULL; - } - this->momies = NULL; - - this->final = 0; - this->iniciarMomies(); + this->sam = new Prota(this->gfx); + this->mapa = new Mapa(this->gfx, this->sam); + this->marcador = new Marcador(this->gfx, this->sam); + if (info::num_piramide == 2) { + this->bola = new Bola(this->gfx, this->sam); + } else { + this->bola = NULL; + } + this->momies = NULL; + this->final = 0; + this->iniciarMomies(); } ModuleGame::~ModuleGame(void) { + JD8_FadeOut(); - JD8_FadeOut(); - - if( this->bola != NULL ) delete this->bola; - if( this->momies != NULL ) { - this->momies->clear(); - delete this->momies; - } - delete this->marcador; - delete this->mapa; - delete this->sam; - - JD8_FreeSurface( this->gfx ); + if (this->bola != NULL) delete this->bola; + if (this->momies != NULL) { + this->momies->clear(); + delete this->momies; + } + delete this->marcador; + delete this->mapa; + delete this->sam; + JD8_FreeSurface(this->gfx); } int ModuleGame::Go() { + this->Draw(); - this->Draw(); + const char* music = info::num_piramide == 3 ? "00000008.ogg" : (info::num_piramide == 2 ? "00000007.ogg" : (info::num_piramide == 6 ? "00000002.ogg" : "00000006.ogg")); + const char* current_music = JA_GetMusicFilename(); + if ((JA_GetMusicState() != JA_MUSIC_PLAYING) || !(strcmp(music, current_music) == 0)) { + int size; + char* buffer = file_getfilebuffer(music, size); + JA_PlayMusic(JA_LoadMusic((Uint8*)buffer, size, music)); + } - const char* music = info::num_piramide == 3 ? "00000008.ogg" : (info::num_piramide == 2 ? "00000007.ogg" : (info::num_piramide == 6 ? "00000002.ogg" : "00000006.ogg")); - const char *current_music = JA_GetMusicFilename(); - if ( (JA_GetMusicState()!=JA_MUSIC_PLAYING) || !(strcmp(music, current_music) == 0)) { - int size; - char *buffer = file_getfilebuffer(music, size); - JA_PlayMusic(JA_LoadMusic((Uint8*)buffer, size, music)); - } + JD8_FadeToPal(JD8_LoadPalette(info::pepe_activat ? "frames2.gif" : "frames.gif")); - JD8_FadeToPal( JD8_LoadPalette(info::pepe_activat ? "frames2.gif" : "frames.gif") ); + while (this->final == 0 && !JG_Quitting()) { + this->Draw(); + this->Update(); + } - while (this->final == 0 && !JG_Quitting()) { + // JS_FadeOutMusic(); - this->Draw(); - this->Update(); - } - - //JS_FadeOutMusic(); - - if( this->final == 1 ) { - info::num_habitacio++; - if( info::num_habitacio == 6 ) { - info::num_habitacio = 1; - info::num_piramide++; - } - if (info::num_piramide == 6 && info::num_habitacio == 2) info::num_piramide++; - } else if (this->final == 2) { + if (this->final == 1) { + info::num_habitacio++; + if (info::num_habitacio == 6) { + info::num_habitacio = 1; + info::num_piramide++; + } + if (info::num_piramide == 6 && info::num_habitacio == 2) info::num_piramide++; + } else if (this->final == 2) { info::num_piramide = 100; } - if( JG_Quitting() ) { - return -1; - } else { - if (info::num_habitacio == 1 || info::num_piramide == 100 || info::num_piramide == 7) { - return 1; - } else { - return 0; - } - } + if (JG_Quitting()) { + return -1; + } else { + if (info::num_habitacio == 1 || info::num_piramide == 100 || info::num_piramide == 7) { + return 1; + } else { + return 0; + } + } } void ModuleGame::Draw() { + this->mapa->draw(); + this->marcador->draw(); + this->sam->draw(); + if (this->momies != NULL) this->momies->draw(); + if (this->bola != NULL) this->bola->draw(); - this->mapa->draw(); - this->marcador->draw(); - this->sam->draw(); - if( this->momies != NULL ) this->momies->draw(); - if( this->bola != NULL ) this->bola->draw(); - - JD8_Flip(); + JD8_Flip(); } void ModuleGame::Update() { - if (JG_ShouldUpdate()) { - JI_Update(); + if (JG_ShouldUpdate()) { + JI_Update(); - this->final = this->sam->update(); - if( this->momies != NULL && this->momies->update() ) { - Momia* seguent = this->momies->next; - delete this->momies; - this->momies = seguent; - info::momies--; - } - if( this->bola != NULL ) this->bola->update(); - this->mapa->update(); - if( this->mapa->novaMomia() ) { - if( this->momies != NULL ) { - this->momies->insertar( new Momia( this->gfx, true, 0, 0, this->sam ) ); - info::momies++; - } else { - this->momies = new Momia( this->gfx, true, 0, 0, this->sam ); - info::momies++; - } - } + this->final = this->sam->update(); + if (this->momies != NULL && this->momies->update()) { + Momia* seguent = this->momies->next; + delete this->momies; + this->momies = seguent; + info::momies--; + } + if (this->bola != NULL) this->bola->update(); + this->mapa->update(); + if (this->mapa->novaMomia()) { + if (this->momies != NULL) { + this->momies->insertar(new Momia(this->gfx, true, 0, 0, this->sam)); + info::momies++; + } else { + this->momies = new Momia(this->gfx, true, 0, 0, this->sam); + info::momies++; + } + } - if( JI_CheatActivated( "reviu" ) ) info::vida = 5; - if( JI_CheatActivated( "alone" ) ) { - if( this->momies != NULL ) { - this->momies->clear(); - delete this->momies; - this->momies = NULL; - info::momies = 0; - } - } - if( JI_CheatActivated( "obert" ) ) { - for( int i = 0; i < 16; i++ ) { - this->mapa->tombes[i].costat[0] = true; - this->mapa->tombes[i].costat[1] = true; - this->mapa->tombes[i].costat[2] = true; - this->mapa->tombes[i].costat[3] = true; - this->mapa->comprovaCaixa( i ); - } - } + if (JI_CheatActivated("reviu")) info::vida = 5; + if (JI_CheatActivated("alone")) { + if (this->momies != NULL) { + this->momies->clear(); + delete this->momies; + this->momies = NULL; + info::momies = 0; + } + } + if (JI_CheatActivated("obert")) { + for (int i = 0; i < 16; i++) { + this->mapa->tombes[i].costat[0] = true; + this->mapa->tombes[i].costat[1] = true; + this->mapa->tombes[i].costat[2] = true; + this->mapa->tombes[i].costat[3] = true; + this->mapa->comprovaCaixa(i); + } + } - if( JI_KeyPressed( SDL_SCANCODE_ESCAPE ) ) { - JG_QuitSignal(); - } - } + if (JI_KeyPressed(SDL_SCANCODE_ESCAPE)) { + JG_QuitSignal(); + } + } } void ModuleGame::iniciarMomies() { + if (info::num_habitacio == 1) { + info::momies = 1; + } else { + info::momies++; + } + if (info::num_piramide == 6) info::momies = 8; - if( info::num_habitacio == 1 ) { info::momies = 1; } else { info::momies++; } - if (info::num_piramide == 6) info::momies = 8; - - int x = 20; - int y = 170; - bool dimonis = info::num_piramide == 6; - for( int i = 0; i < info::momies; i++ ) { - if( this->momies == NULL) { - this->momies = new Momia( this->gfx, dimonis, x, y, this->sam ); - } else { - this->momies->insertar( new Momia( this->gfx, dimonis, x, y, this->sam ) ); - } - x += 65; - if( x == 345 ) { x = 20; y -= 35; } - } + int x = 20; + int y = 170; + bool dimonis = info::num_piramide == 6; + for (int i = 0; i < info::momies; i++) { + if (this->momies == NULL) { + this->momies = new Momia(this->gfx, dimonis, x, y, this->sam); + } else { + this->momies->insertar(new Momia(this->gfx, dimonis, x, y, this->sam)); + } + x += 65; + if (x == 345) { + x = 20; + y -= 35; + } + } } diff --git a/source/game/modulegame.hpp b/source/game/modulegame.hpp index 293b3ad..600d68f 100644 --- a/source/game/modulegame.hpp +++ b/source/game/modulegame.hpp @@ -1,35 +1,31 @@ #pragma once +#include "game/bola.hpp" #include "game/info.hpp" #include "game/mapa.hpp" -#include "game/prota.hpp" #include "game/marcador.hpp" #include "game/momia.hpp" -#include "game/bola.hpp" +#include "game/prota.hpp" class ModuleGame { + public: + ModuleGame(); + ~ModuleGame(void); -public: + int Go(); - ModuleGame(); - ~ModuleGame(void); + private: + void Draw(); + void Update(); - int Go(); + void iniciarMomies(); -private: - - void Draw(); - void Update(); - - void iniciarMomies(); - - Uint8 final; - JD8_Surface gfx; - - Mapa* mapa; - Prota* sam; - Marcador* marcador; - Momia* momies; - Bola* bola; + Uint8 final; + JD8_Surface gfx; + Mapa* mapa; + Prota* sam; + Marcador* marcador; + Momia* momies; + Bola* bola; }; diff --git a/source/game/modulesequence.cpp b/source/game/modulesequence.cpp index 136d06f..a74430c 100644 --- a/source/game/modulesequence.cpp +++ b/source/game/modulesequence.cpp @@ -1,13 +1,15 @@ #include "game/modulesequence.hpp" -#include "core/jgame.hpp" -#include "core/jdraw8.hpp" -#include "core/jinput.hpp" -#include "core/jfile.hpp" -#include "core/jail_audio.hpp" #include + #include +#include "core/jail_audio.hpp" +#include "core/jdraw8.hpp" +#include "core/jfile.hpp" +#include "core/jgame.hpp" +#include "core/jinput.hpp" + ModuleSequence::ModuleSequence() { } @@ -15,934 +17,1148 @@ ModuleSequence::~ModuleSequence(void) { } int ModuleSequence::Go() { + if (info::num_piramide == 6 && info::diners < 200) info::num_piramide = 7; - if( info::num_piramide == 6 && info::diners < 200 ) info::num_piramide = 7; - - switch( info::num_piramide ) { - case 255: // Intro - doIntro(); - break; - case 0: // Men� - doMenu(); - break; - case 1: // Slides - case 7: - doSlides(); - break; - case 2: // Pre-pir�mide - case 3: - case 4: - case 5: - doBanner(); - break; - case 6: // Pre-Secreta - doSecreta(); - break; - case 8: // Credits - doCredits(); - break; - case 100: // Mort + switch (info::num_piramide) { + case 255: // Intro + doIntro(); + break; + case 0: // Men� + doMenu(); + break; + case 1: // Slides + case 7: + doSlides(); + break; + case 2: // Pre-pir�mide + case 3: + case 4: + case 5: + doBanner(); + break; + case 6: // Pre-Secreta + doSecreta(); + break; + case 8: // Credits + doCredits(); + break; + case 100: // Mort doMort(); break; - } + } - JD8_FadeOut(); + JD8_FadeOut(); - if( JG_Quitting() ) { - return -1; - } else { - if( info::num_piramide == 255 ) { - info::num_piramide = 0; - return 1; - } else if( info::num_piramide == 0 ) { - info::num_piramide = 1; - //info::num_piramide = 6; - //info::diners = 200; - return 1; - } else if( info::num_piramide == 7 ) { - info::num_piramide = 8; - return 1; - } else if( info::num_piramide == 8 ) { - info::num_piramide = 255; - return 1; - } else if( info::num_piramide == 100 ) { + if (JG_Quitting()) { + return -1; + } else { + if (info::num_piramide == 255) { info::num_piramide = 0; return 1; - } else { - return 0; - } - - } + } else if (info::num_piramide == 0) { + info::num_piramide = 1; + // info::num_piramide = 6; + // info::diners = 200; + return 1; + } else if (info::num_piramide == 7) { + info::num_piramide = 8; + return 1; + } else if (info::num_piramide == 8) { + info::num_piramide = 255; + return 1; + } else if (info::num_piramide == 100) { + info::num_piramide = 0; + return 1; + } else { + return 0; + } + } return 0; } -const int minim( const int a, const int b ) { - if( b < a ) { return b; } else { return a; } +const int minim(const int a, const int b) { + if (b < a) { + return b; + } else { + return a; + } } -void play_music(const char *music, bool loop = -1) -{ - int size; - char *buffer = file_getfilebuffer(music, size); - JA_PlayMusic(JA_LoadMusic((Uint8*)buffer, size, music), loop); +void play_music(const char* music, bool loop = -1) { + int size; + char* buffer = file_getfilebuffer(music, size); + JA_PlayMusic(JA_LoadMusic((Uint8*)buffer, size, music), loop); } void ModuleSequence::doIntro() { - JG_SetUpdateTicks(1000); + JG_SetUpdateTicks(1000); - play_music("00000003.ogg"); + play_music("00000003.ogg"); - JD8_Surface gfx = JD8_LoadSurface( "logo.gif" ); - JD8_Palette pal = JD8_LoadPalette( "logo.gif" ); - JD8_SetScreenPalette( pal ); + JD8_Surface gfx = JD8_LoadSurface("logo.gif"); + JD8_Palette pal = JD8_LoadPalette("logo.gif"); + JD8_SetScreenPalette(pal); - JD8_ClearScreen( 0 ); - JD8_Flip(); - while( !JG_ShouldUpdate() ) { JI_Update(); if( JI_AnyKey() || JG_Quitting() ) { JD8_FreeSurface( gfx ); return; } } - JG_SetUpdateTicks(100); + JD8_ClearScreen(0); + JD8_Flip(); + while (!JG_ShouldUpdate()) { + JI_Update(); + if (JI_AnyKey() || JG_Quitting()) { + JD8_FreeSurface(gfx); + return; + } + } + JG_SetUpdateTicks(100); - JD8_Blit( 43, 78, gfx, 43, 155, 27, 45 ); - JD8_Blit( 68, 78, gfx, 274, 155, 27, 45 ); - JD8_Flip(); - while( !JG_ShouldUpdate() ) { JI_Update(); if( JI_AnyKey() || JG_Quitting() ) { JD8_FreeSurface( gfx ); return; } } + JD8_Blit(43, 78, gfx, 43, 155, 27, 45); + JD8_Blit(68, 78, gfx, 274, 155, 27, 45); + JD8_Flip(); + while (!JG_ShouldUpdate()) { + JI_Update(); + if (JI_AnyKey() || JG_Quitting()) { + JD8_FreeSurface(gfx); + return; + } + } - JD8_Blit( 43, 78, gfx, 43, 155, 53, 45 ); - JD8_Blit( 96, 78, gfx, 274, 155, 27, 45 ); - JD8_Flip(); - while( !JG_ShouldUpdate() ) { JI_Update(); if( JI_AnyKey() || JG_Quitting() ) { JD8_FreeSurface( gfx ); return; } } + JD8_Blit(43, 78, gfx, 43, 155, 53, 45); + JD8_Blit(96, 78, gfx, 274, 155, 27, 45); + JD8_Flip(); + while (!JG_ShouldUpdate()) { + JI_Update(); + if (JI_AnyKey() || JG_Quitting()) { + JD8_FreeSurface(gfx); + return; + } + } - JD8_Blit( 43, 78, gfx, 43, 155, 66, 45 ); - JD8_Blit( 109, 78, gfx, 274, 155, 27, 45 ); - JD8_Flip(); - while( !JG_ShouldUpdate() ) { JI_Update(); if( JI_AnyKey() || JG_Quitting() ) { JD8_FreeSurface( gfx ); return; } } - JG_SetUpdateTicks(200); + JD8_Blit(43, 78, gfx, 43, 155, 66, 45); + JD8_Blit(109, 78, gfx, 274, 155, 27, 45); + JD8_Flip(); + while (!JG_ShouldUpdate()) { + JI_Update(); + if (JI_AnyKey() || JG_Quitting()) { + JD8_FreeSurface(gfx); + return; + } + } + JG_SetUpdateTicks(200); - JD8_Blit( 43, 78, gfx, 43, 155, 92, 45 ); - JD8_Blit( 136, 78, gfx, 274, 155, 27, 45 ); - JD8_Flip(); - while( !JG_ShouldUpdate() ) { JI_Update(); if( JI_AnyKey() || JG_Quitting() ) { JD8_FreeSurface( gfx ); return; } } + JD8_Blit(43, 78, gfx, 43, 155, 92, 45); + JD8_Blit(136, 78, gfx, 274, 155, 27, 45); + JD8_Flip(); + while (!JG_ShouldUpdate()) { + JI_Update(); + if (JI_AnyKey() || JG_Quitting()) { + JD8_FreeSurface(gfx); + return; + } + } - JD8_ClearScreen( 0 ); - JD8_Blit( 43, 78, gfx, 43, 155, 92, 45 ); - //JD8_Blit( 136, 78, gfx, 274, 155, 27, 45 ); - JD8_Flip(); - while( !JG_ShouldUpdate() ) { JI_Update(); if( JI_AnyKey() || JG_Quitting() ) { JD8_FreeSurface( gfx ); return; } } - JG_SetUpdateTicks(100); + JD8_ClearScreen(0); + JD8_Blit(43, 78, gfx, 43, 155, 92, 45); + // JD8_Blit( 136, 78, gfx, 274, 155, 27, 45 ); + JD8_Flip(); + while (!JG_ShouldUpdate()) { + JI_Update(); + if (JI_AnyKey() || JG_Quitting()) { + JD8_FreeSurface(gfx); + return; + } + } + JG_SetUpdateTicks(100); - JD8_Blit( 43, 78, gfx, 43, 155, 118, 45 ); - JD8_Blit( 160, 78, gfx, 274, 155, 27, 45 ); - JD8_Flip(); - while( !JG_ShouldUpdate() ) { JI_Update(); if( JI_AnyKey() || JG_Quitting() ) { JD8_FreeSurface( gfx ); return; } } + JD8_Blit(43, 78, gfx, 43, 155, 118, 45); + JD8_Blit(160, 78, gfx, 274, 155, 27, 45); + JD8_Flip(); + while (!JG_ShouldUpdate()) { + JI_Update(); + if (JI_AnyKey() || JG_Quitting()) { + JD8_FreeSurface(gfx); + return; + } + } - JD8_Blit( 43, 78, gfx, 43, 155, 145, 45 ); - JD8_Blit( 188, 78, gfx, 274, 155, 27, 45 ); - JD8_Flip(); - while( !JG_ShouldUpdate() ) { JI_Update(); if( JI_AnyKey() || JG_Quitting() ) { JD8_FreeSurface( gfx ); return; } } + JD8_Blit(43, 78, gfx, 43, 155, 145, 45); + JD8_Blit(188, 78, gfx, 274, 155, 27, 45); + JD8_Flip(); + while (!JG_ShouldUpdate()) { + JI_Update(); + if (JI_AnyKey() || JG_Quitting()) { + JD8_FreeSurface(gfx); + return; + } + } - JD8_Blit( 43, 78, gfx, 43, 155, 178, 45 ); - JD8_Blit( 221, 78, gfx, 274, 155, 27, 45 ); - JD8_Flip(); - while( !JG_ShouldUpdate() ) { JI_Update(); if( JI_AnyKey() || JG_Quitting() ) { JD8_FreeSurface( gfx ); return; } } + JD8_Blit(43, 78, gfx, 43, 155, 178, 45); + JD8_Blit(221, 78, gfx, 274, 155, 27, 45); + JD8_Flip(); + while (!JG_ShouldUpdate()) { + JI_Update(); + if (JI_AnyKey() || JG_Quitting()) { + JD8_FreeSurface(gfx); + return; + } + } - JD8_Blit( 43, 78, gfx, 43, 155, 205, 45 ); - JD8_Blit( 248, 78, gfx, 274, 155, 27, 45 ); - JD8_Flip(); - while( !JG_ShouldUpdate() ) { JI_Update(); if( JI_AnyKey() || JG_Quitting() ) { JD8_FreeSurface( gfx ); return; } } + JD8_Blit(43, 78, gfx, 43, 155, 205, 45); + JD8_Blit(248, 78, gfx, 274, 155, 27, 45); + JD8_Flip(); + while (!JG_ShouldUpdate()) { + JI_Update(); + if (JI_AnyKey() || JG_Quitting()) { + JD8_FreeSurface(gfx); + return; + } + } - JG_SetUpdateTicks(200); - JD8_Blit( 43, 78, gfx, 43, 155, 231, 45 ); - JD8_Blit( 274, 78, gfx, 274, 155, 27, 45 ); - JD8_Flip(); - while( !JG_ShouldUpdate() ) { JI_Update(); if( JI_AnyKey() || JG_Quitting() ) { JD8_FreeSurface( gfx ); return; } } - JD8_ClearScreen( 0 ); - JD8_Blit( 43, 78, gfx, 43, 155, 231, 45 ); - JD8_Flip(); - while( !JG_ShouldUpdate() ) { JI_Update(); if( JI_AnyKey() || JG_Quitting() ) { JD8_FreeSurface( gfx ); return; } } - JD8_Blit( 43, 78, gfx, 43, 155, 231, 45 ); - JD8_Blit( 274, 78, gfx, 274, 155, 27, 45 ); - JD8_Flip(); - while( !JG_ShouldUpdate() ) { JI_Update(); if( JI_AnyKey() || JG_Quitting() ) { JD8_FreeSurface( gfx ); return; } } - JD8_ClearScreen( 0 ); - JD8_Blit( 43, 78, gfx, 43, 155, 231, 45 ); - JD8_Flip(); - while( !JG_ShouldUpdate() ) { JI_Update(); if( JI_AnyKey() || JG_Quitting() ) { JD8_FreeSurface( gfx ); return; } } - JD8_Blit( 43, 78, gfx, 43, 155, 231, 45 ); - JD8_Blit( 274, 78, gfx, 274, 155, 27, 45 ); - JD8_Flip(); - while( !JG_ShouldUpdate() ) { JI_Update(); if( JI_AnyKey() || JG_Quitting() ) { JD8_FreeSurface( gfx ); return; } } - JD8_ClearScreen( 0 ); - JD8_Blit( 43, 78, gfx, 43, 155, 231, 45 ); - JD8_Flip(); - while( !JG_ShouldUpdate() ) { JI_Update(); if( JI_AnyKey() || JG_Quitting() ) { JD8_FreeSurface( gfx ); return; } } + JG_SetUpdateTicks(200); + JD8_Blit(43, 78, gfx, 43, 155, 231, 45); + JD8_Blit(274, 78, gfx, 274, 155, 27, 45); + JD8_Flip(); + while (!JG_ShouldUpdate()) { + JI_Update(); + if (JI_AnyKey() || JG_Quitting()) { + JD8_FreeSurface(gfx); + return; + } + } + JD8_ClearScreen(0); + JD8_Blit(43, 78, gfx, 43, 155, 231, 45); + JD8_Flip(); + while (!JG_ShouldUpdate()) { + JI_Update(); + if (JI_AnyKey() || JG_Quitting()) { + JD8_FreeSurface(gfx); + return; + } + } + JD8_Blit(43, 78, gfx, 43, 155, 231, 45); + JD8_Blit(274, 78, gfx, 274, 155, 27, 45); + JD8_Flip(); + while (!JG_ShouldUpdate()) { + JI_Update(); + if (JI_AnyKey() || JG_Quitting()) { + JD8_FreeSurface(gfx); + return; + } + } + JD8_ClearScreen(0); + JD8_Blit(43, 78, gfx, 43, 155, 231, 45); + JD8_Flip(); + while (!JG_ShouldUpdate()) { + JI_Update(); + if (JI_AnyKey() || JG_Quitting()) { + JD8_FreeSurface(gfx); + return; + } + } + JD8_Blit(43, 78, gfx, 43, 155, 231, 45); + JD8_Blit(274, 78, gfx, 274, 155, 27, 45); + JD8_Flip(); + while (!JG_ShouldUpdate()) { + JI_Update(); + if (JI_AnyKey() || JG_Quitting()) { + JD8_FreeSurface(gfx); + return; + } + } + JD8_ClearScreen(0); + JD8_Blit(43, 78, gfx, 43, 155, 231, 45); + JD8_Flip(); + while (!JG_ShouldUpdate()) { + JI_Update(); + if (JI_AnyKey() || JG_Quitting()) { + JD8_FreeSurface(gfx); + return; + } + } - for( int j = 0; j < 256; j++ ) { - for( int i = 16; i < 32; i++ ) { - if( i == 17 ) { - if( pal[i].r < 255 ) pal[i].r++; - if( pal[i].g < 255 ) pal[i].g++; - if( pal[i].b < 255 ) pal[i].b++; - } - if( pal[i].b < pal[i].g ) pal[i].b++; - if( pal[i].b > pal[i].g ) pal[i].b--; - if( pal[i].r < pal[i].g ) pal[i].r++; - if( pal[i].r > pal[i].g ) pal[i].r--; - } - JD8_Flip(); - } + for (int j = 0; j < 256; j++) { + for (int i = 16; i < 32; i++) { + if (i == 17) { + if (pal[i].r < 255) pal[i].r++; + if (pal[i].g < 255) pal[i].g++; + if (pal[i].b < 255) pal[i].b++; + } + if (pal[i].b < pal[i].g) pal[i].b++; + if (pal[i].b > pal[i].g) pal[i].b--; + if (pal[i].r < pal[i].g) pal[i].r++; + if (pal[i].r > pal[i].g) pal[i].r--; + } + JD8_Flip(); + } - while( !JG_ShouldUpdate() ) { JI_Update(); if( JI_AnyKey() || JG_Quitting() ) { JD8_FreeSurface( gfx ); return; } } - JG_SetUpdateTicks(20); + while (!JG_ShouldUpdate()) { + JI_Update(); + if (JI_AnyKey() || JG_Quitting()) { + JD8_FreeSurface(gfx); + return; + } + } + JG_SetUpdateTicks(20); - Uint16 fr1 = 13; - Uint16 fr2 = fr1; - Uint16 fr3 = 11; - Uint16 fr4 = fr3; - Uint16 fr5 = 20; - Uint16 fr6 = 8; - Uint16 fr7 = 29; - Uint16 fr8 = 4; - Uint16 fr9 = 16; - Uint16 fr10 = fr9; - Uint16 fr11 = 6; - Uint16 creu = 75; - Uint16 interrogant = 90; + Uint16 fr1 = 13; + Uint16 fr2 = fr1; + Uint16 fr3 = 11; + Uint16 fr4 = fr3; + Uint16 fr5 = 20; + Uint16 fr6 = 8; + Uint16 fr7 = 29; + Uint16 fr8 = 4; + Uint16 fr9 = 16; + Uint16 fr10 = fr9; + Uint16 fr11 = 6; + Uint16 creu = 75; + Uint16 interrogant = 90; - Uint16 fr_ani_1[13]; // camina dreta - Uint16 fr_ani_2[13]; // camina esquerra - Uint16 fr_ani_3[11]; // trau el mapa DRETA - Uint16 fr_ani_4[11]; // trau el mapa ESQUERRA - Uint16 fr_ani_5[20]; // bot de susto - Uint16 fr_ani_6[8]; // momia - Uint16 fr_ani_7[29]; // deixa caure el PAPER i SOMBRA - Uint16 fr_ani_8[4]; // PEDRA - Uint16 fr_ani_9[16]; // prota BALL - Uint16 fr_ani_10[16]; // momia BALL - Uint16 fr_ani_11[6]; // altaveu + Uint16 fr_ani_1[13]; // camina dreta + Uint16 fr_ani_2[13]; // camina esquerra + Uint16 fr_ani_3[11]; // trau el mapa DRETA + Uint16 fr_ani_4[11]; // trau el mapa ESQUERRA + Uint16 fr_ani_5[20]; // bot de susto + Uint16 fr_ani_6[8]; // momia + Uint16 fr_ani_7[29]; // deixa caure el PAPER i SOMBRA + Uint16 fr_ani_8[4]; // PEDRA + Uint16 fr_ani_9[16]; // prota BALL + Uint16 fr_ani_10[16]; // momia BALL + Uint16 fr_ani_11[6]; // altaveu - for( int i=0; i < fr1; i++ ) fr_ani_1[i] = i*15; - for( int i=0; i < fr2; i++ ) fr_ani_2[i] = i*15; //15 - for( int i=0; i < fr3; i++ ) fr_ani_3[i] = i*15; //30 - for( int i=0; i < fr4; i++ ) fr_ani_4[i] = i*15; //45 - for( int i=0; i <= 9; i++ ) fr_ani_5[i] = (i+11)*15; //45 - for( int i=10; i <= 19; i++ ) fr_ani_5[i] = fr_ani_5[19-i]; - for( int i=0; i < fr6; i++ ) fr_ani_6[i] = i*15; //60 - for( int i=0; i <= 13; i++ ) fr_ani_7[i] = (i+5)*15; //75 - for( int i=14; i < fr7; i++ ) fr_ani_7[i] = (i-14)*15; //105 - for( int i=0; i < fr8; i++ ) fr_ani_8[i] = (i+1)*15; //75 - for( int i=0; i < fr9; i++ ) fr_ani_9[i] = i*15; //120 - for( int i=0; i < fr10; i++ ) fr_ani_10[i] = i*15; //135 - for( int i=0; i < fr11; i++ ) fr_ani_11[i] = (i+1)*15; //90 - fr_ani_11[fr11-1] = fr_ani_11[3]; + for (int i = 0; i < fr1; i++) fr_ani_1[i] = i * 15; + for (int i = 0; i < fr2; i++) fr_ani_2[i] = i * 15; // 15 + for (int i = 0; i < fr3; i++) fr_ani_3[i] = i * 15; // 30 + for (int i = 0; i < fr4; i++) fr_ani_4[i] = i * 15; // 45 + for (int i = 0; i <= 9; i++) fr_ani_5[i] = (i + 11) * 15; // 45 + for (int i = 10; i <= 19; i++) fr_ani_5[i] = fr_ani_5[19 - i]; + for (int i = 0; i < fr6; i++) fr_ani_6[i] = i * 15; // 60 + for (int i = 0; i <= 13; i++) fr_ani_7[i] = (i + 5) * 15; // 75 + for (int i = 14; i < fr7; i++) fr_ani_7[i] = (i - 14) * 15; // 105 + for (int i = 0; i < fr8; i++) fr_ani_8[i] = (i + 1) * 15; // 75 + for (int i = 0; i < fr9; i++) fr_ani_9[i] = i * 15; // 120 + for (int i = 0; i < fr10; i++) fr_ani_10[i] = i * 15; // 135 + for (int i = 0; i < fr11; i++) fr_ani_11[i] = (i + 1) * 15; // 90 + fr_ani_11[fr11 - 1] = fr_ani_11[3]; - switch( rand()%3 ) { - case 0: + switch (rand() % 3) { + case 0: - // camina cap a la DRETA } - for( int i = 0; i <= 200; i++ ) { - - JD8_ClearScreen( 0 ); - JD8_Blit( 43, 78, gfx, 43, 155, 231, 45 ); - //Put_sprite(from,where,fr_ani_1[(i div 5) mod fr1],15,15,i,150); - JD8_BlitCK( i, 150, gfx, fr_ani_1[(i / 5) % fr1], 0, 15, 15, 0 ); - - JD8_Flip(); - while( !JG_ShouldUpdate() ) { JI_Update(); if( JI_AnyKey() || JG_Quitting() ) { JD8_FreeSurface( gfx ); return; } } - } + // camina cap a la DRETA } + for (int i = 0; i <= 200; i++) { + JD8_ClearScreen(0); + JD8_Blit(43, 78, gfx, 43, 155, 231, 45); + // Put_sprite(from,where,fr_ani_1[(i div 5) mod fr1],15,15,i,150); + JD8_BlitCK(i, 150, gfx, fr_ani_1[(i / 5) % fr1], 0, 15, 15, 0); - // trau el MAPA DRETA } - - for( int i = 0; i <= 200; i++ ) { - - JD8_ClearScreen( 0 ); - JD8_Blit( 43, 78, gfx, 43, 155, 231, 45 ); - //Put_sprite(from,where,fr_ani_3[minim((i div 5),fr3-1)],15,15,200,150); - JD8_BlitCK( 200, 150, gfx, fr_ani_3[minim((i / 5), fr3-1)], 30, 15, 15, 0 ); - - JD8_Flip(); - while( !JG_ShouldUpdate() ) { JI_Update(); if( JI_AnyKey() || JG_Quitting() ) { JD8_FreeSurface( gfx ); return; } } - } + JD8_Flip(); + while (!JG_ShouldUpdate()) { + JI_Update(); + if (JI_AnyKey() || JG_Quitting()) { + JD8_FreeSurface(gfx); + return; + } + } + } - // guarda el MAPA } - - for( int i = 200; i >= 0; i-- ) { - - JD8_ClearScreen( 0 ); - JD8_Blit( 43, 78, gfx, 43, 155, 231, 45 ); - //Put_sprite(from,where,fr_ani_3[minim((i div 5),fr3-1)],15,15,200,150); - JD8_BlitCK( 200, 150, gfx, fr_ani_3[minim((i / 5), fr3-1)], 30, 15, 15, 0 ); + // trau el MAPA DRETA } - JD8_Flip(); - while( !JG_ShouldUpdate() ) { JI_Update(); if( JI_AnyKey() || JG_Quitting() ) { JD8_FreeSurface( gfx ); return; } } - } + for (int i = 0; i <= 200; i++) { + JD8_ClearScreen(0); + JD8_Blit(43, 78, gfx, 43, 155, 231, 45); + // Put_sprite(from,where,fr_ani_3[minim((i div 5),fr3-1)],15,15,200,150); + JD8_BlitCK(200, 150, gfx, fr_ani_3[minim((i / 5), fr3 - 1)], 30, 15, 15, 0); - // camina cap a la ESQUERRA } - - for( int i = 200; i >= 80; i-- ) { - - JD8_ClearScreen( 0 ); - JD8_Blit( 43, 78, gfx, 43, 155, 231, 45 ); - //Put_sprite(from,where,fr_ani_2[(i div 5) mod fr2],15,15,i,150); - JD8_BlitCK( i, 150, gfx, fr_ani_2[(i / 5) % fr2], 15, 15, 15, 0 ); - - JD8_Flip(); - while( !JG_ShouldUpdate() ) { JI_Update(); if( JI_AnyKey() || JG_Quitting() ) { JD8_FreeSurface( gfx ); return; } } - } + JD8_Flip(); + while (!JG_ShouldUpdate()) { + JI_Update(); + if (JI_AnyKey() || JG_Quitting()) { + JD8_FreeSurface(gfx); + return; + } + } + } - // trau el MAPA ESQUERRA } - - for( int i = 0; i <= 200; i++ ) { - - JD8_ClearScreen( 0 ); - JD8_Blit( 43, 78, gfx, 43, 155, 231, 45 ); - //Put_sprite(from,where,fr_ani_4[minim((i div 5),fr4-1)],15,15,80,150); - JD8_BlitCK( 80, 150, gfx, fr_ani_4[minim((i / 5), fr4-1)], 45, 15, 15, 0 ); - - JD8_Flip(); - while( !JG_ShouldUpdate() ) { JI_Update(); if( JI_AnyKey() || JG_Quitting() ) { JD8_FreeSurface( gfx ); return; } } - } + // guarda el MAPA } - // momia cap a la ESQUERRA } - - for( int i = 300; i >= 95; i-- ) { - - JD8_ClearScreen( 0 ); - JD8_Blit( 43, 78, gfx, 43, 155, 231, 45 ); - //Put_sprite(from,where,fr_ani_6[(i div 10) mod fr6],15,15,i,150); - JD8_BlitCK( i, 150, gfx, fr_ani_6[(i / 5) % fr6], 60, 15, 15, 0 ); - //Put_sprite(from,where,fr_ani_4[fr4-1],15,15,80,150); - JD8_BlitCK( 80, 150, gfx, fr_ani_4[fr4-1], 45, 15, 15, 0 ); - - JD8_Flip(); - while( !JG_ShouldUpdate() ) { JI_Update(); if( JI_AnyKey() || JG_Quitting() ) { JD8_FreeSurface( gfx ); return; } } - } + for (int i = 200; i >= 0; i--) { + JD8_ClearScreen(0); + JD8_Blit(43, 78, gfx, 43, 155, 231, 45); + // Put_sprite(from,where,fr_ani_3[minim((i div 5),fr3-1)],15,15,200,150); + JD8_BlitCK(200, 150, gfx, fr_ani_3[minim((i / 5), fr3 - 1)], 30, 15, 15, 0); - // girar-se } - - for( int i = 0; i <= 50; i++ ) { - - JD8_ClearScreen( 0 ); - JD8_Blit( 43, 78, gfx, 43, 155, 231, 45 ); - //Put_sprite(from,where,fr_ani_1[1],15,15,80,150); - JD8_BlitCK( 80, 150, gfx, fr_ani_1[1], 0, 15, 15, 0 ); - //Put_sprite(from,where,fr_ani_6[4],15,15,95,150); - JD8_BlitCK( 95, 150, gfx, fr_ani_6[4], 60, 15, 15, 0 ); - //Put_sprite(from,where,interrogant,15,15,80,133); - JD8_BlitCK( 80, 133, gfx, 0, interrogant, 15, 15, 0 ); - - JD8_Flip(); - while( !JG_ShouldUpdate() ) { JI_Update(); if( JI_AnyKey() || JG_Quitting() ) { JD8_FreeSurface( gfx ); return; } } - } + JD8_Flip(); + while (!JG_ShouldUpdate()) { + JI_Update(); + if (JI_AnyKey() || JG_Quitting()) { + JD8_FreeSurface(gfx); + return; + } + } + } - // bot de SUSTO } - - for( int i = 0; i <= 49; i++ ) { - - JD8_ClearScreen( 0 ); - JD8_Blit( 43, 78, gfx, 43, 155, 231, 45 ); - //Put_sprite(from,where,fr_ani_5[minim((i div 5),fr5-1)],15,15,80,150-((i mod 50) div 5)); - JD8_BlitCK( 80, 150-((i % 50) / 5), gfx, fr_ani_5[minim(i/5, fr5-1)], 45, 15, 15, 0 ); - //Put_sprite(from,where,fr_ani_6[4],15,15,95,150); - JD8_BlitCK( 95, 150, gfx, fr_ani_6[4], 60, 15, 15, 0 ); - - JD8_Flip(); - while( !JG_ShouldUpdate() ) { JI_Update(); if( JI_AnyKey() || JG_Quitting() ) { JD8_FreeSurface( gfx ); return; } } - } + // camina cap a la ESQUERRA } - // bot de SUSTO } - - for( int i = 50; i <= 99; i++ ) { - - JD8_ClearScreen( 0 ); - JD8_Blit( 43, 78, gfx, 43, 155, 231, 45 ); - //Put_sprite(from,where,fr_ani_5[minim((i div 5),fr5-1)],15,15,80,140+((i mod 50) div 5)); - JD8_BlitCK( 80, 140+((i % 50) / 5), gfx, fr_ani_5[minim(i/5, fr5-1)], 45, 15, 15, 0 ); - //Put_sprite(from,where,fr_ani_6[4],15,15,95,150); - JD8_BlitCK( 95, 150, gfx, fr_ani_6[4], 60, 15, 15, 0 ); - - JD8_Flip(); - while( !JG_ShouldUpdate() ) { JI_Update(); if( JI_AnyKey() || JG_Quitting() ) { JD8_FreeSurface( gfx ); return; } } - } + for (int i = 200; i >= 80; i--) { + JD8_ClearScreen(0); + JD8_Blit(43, 78, gfx, 43, 155, 231, 45); + // Put_sprite(from,where,fr_ani_2[(i div 5) mod fr2],15,15,i,150); + JD8_BlitCK(i, 150, gfx, fr_ani_2[(i / 5) % fr2], 15, 15, 15, 0); - // camina cap a la ESQUERRA } - - for( int i = 80; i >= 0; i-- ) { - - JD8_ClearScreen( 0 ); - JD8_Blit( 43, 78, gfx, 43, 155, 231, 45 ); - //Put_sprite(from,where,fr_ani_2[(i div 5) mod fr2],15,15,i,150); - JD8_BlitCK( i, 150, gfx, fr_ani_2[(i/5) % fr2], 15, 15, 15, 0 ); - //Put_sprite(from,where,fr_ani_6[4],15,15,95,150); - JD8_BlitCK( 95, 150, gfx, fr_ani_6[4], 60, 15, 15, 0 ); - - JD8_Flip(); - while( !JG_ShouldUpdate() ) { JI_Update(); if( JI_AnyKey() || JG_Quitting() ) { JD8_FreeSurface( gfx ); return; } } - } + JD8_Flip(); + while (!JG_ShouldUpdate()) { + JI_Update(); + if (JI_AnyKey() || JG_Quitting()) { + JD8_FreeSurface(gfx); + return; + } + } + } - // final } - - for( int i = 0; i <= 150; i++ ) { - - JD8_ClearScreen( 0 ); - JD8_Blit( 43, 78, gfx, 43, 155, 231, 45 ); - //Put_sprite(from,where,fr_ani_6[4],15,15,95,150); - JD8_BlitCK( 95, 150, gfx, fr_ani_6[4], 60, 15, 15, 0 ); - //Put_sprite(from,where,interrogant,15,15,95,133); - JD8_BlitCK( 95, 133, gfx, 0, interrogant, 15, 15, 0 ); - - JD8_Flip(); - } - //-----} + // trau el MAPA ESQUERRA } + for (int i = 0; i <= 200; i++) { + JD8_ClearScreen(0); + JD8_Blit(43, 78, gfx, 43, 155, 231, 45); + // Put_sprite(from,where,fr_ani_4[minim((i div 5),fr4-1)],15,15,80,150); + JD8_BlitCK(80, 150, gfx, fr_ani_4[minim((i / 5), fr4 - 1)], 45, 15, 15, 0); - break; - case 1: - // camina cap a la DRETA } - for( int i = 0; i <= 200; i++ ) { - - JD8_ClearScreen( 0 ); - JD8_Blit( 43, 78, gfx, 43, 155, 231, 45 ); - //Put_sprite(from,where,creu,15,15,200,155); - JD8_BlitCK( 200, 155, gfx, 0, creu, 15, 15, 255 ); - //Put_sprite(from,where,fr_ani_1[(i div 5) mod fr1],15,15,i,150); - JD8_BlitCK( i, 150, gfx, fr_ani_1[(i/5) % fr1], 0, 15, 15, 255 ); - - JD8_Flip(); - while( !JG_ShouldUpdate() ) { JI_Update(); if( JI_AnyKey() || JG_Quitting() ) { JD8_FreeSurface( gfx ); return; } } - } + JD8_Flip(); + while (!JG_ShouldUpdate()) { + JI_Update(); + if (JI_AnyKey() || JG_Quitting()) { + JD8_FreeSurface(gfx); + return; + } + } + } - // trau el MAPA DRETA } - - for( int i = 0; i <= 300; i++ ) { - - JD8_ClearScreen( 0 ); - JD8_Blit( 43, 78, gfx, 43, 155, 231, 45 ); - //Put_sprite(from,where,creu,15,15,200,155); - JD8_BlitCK( 200, 155, gfx, 0, creu, 15, 15, 255 ); - //Put_sprite(from,where,fr_ani_3[minim((i div 5),fr3-1)],15,15,200,150); - JD8_BlitCK( 200, 150, gfx, fr_ani_3[minim(i/5, fr3-1)], 30, 15, 15, 255 ); - - JD8_Flip(); - while( !JG_ShouldUpdate() ) { JI_Update(); if( JI_AnyKey() || JG_Quitting() ) { JD8_FreeSurface( gfx ); return; } } - } + // momia cap a la ESQUERRA } - // INTERROGANT } - - for( int i = 0; i <= 100; i++ ) { - - JD8_ClearScreen( 0 ); - JD8_Blit( 43, 78, gfx, 43, 155, 231, 45 ); - //Put_sprite(from,where,creu,15,15,200,155); - JD8_BlitCK( 200, 155, gfx, 0, creu, 15, 15, 255 ); - //Put_sprite(from,where,interrogant,15,15,200,134); - JD8_BlitCK( 200, 134, gfx, 0, interrogant, 15, 15, 255 ); - //Put_sprite(from,where,fr_ani_3[fr3-1],15,15,200,150); - JD8_BlitCK( 200, 150, gfx, fr_ani_3[fr3-1], 30, 15, 15, 255 ); - - JD8_Flip(); - while( !JG_ShouldUpdate() ) { JI_Update(); if( JI_AnyKey() || JG_Quitting() ) { JD8_FreeSurface( gfx ); return; } } - } + for (int i = 300; i >= 95; i--) { + JD8_ClearScreen(0); + JD8_Blit(43, 78, gfx, 43, 155, 231, 45); + // Put_sprite(from,where,fr_ani_6[(i div 10) mod fr6],15,15,i,150); + JD8_BlitCK(i, 150, gfx, fr_ani_6[(i / 5) % fr6], 60, 15, 15, 0); + // Put_sprite(from,where,fr_ani_4[fr4-1],15,15,80,150); + JD8_BlitCK(80, 150, gfx, fr_ani_4[fr4 - 1], 45, 15, 15, 0); - // deixa caure el MAPA i SOMBRA } - - for( int i = 0; i <= 200; i++ ) { - - JD8_ClearScreen( 0 ); - JD8_Blit( 43, 78, gfx, 43, 155, 231, 45 ); - //Put_sprite(from,where,creu,15,15,200,155); - JD8_BlitCK( 200, 155, gfx, 0, creu, 15, 15, 255 ); - //Put_sprite(from,where,fr_ani_7[minim((i div 5),fr7-1)],15,15,200,150); - if( minim(i/5, fr7-1) <= 13 ) { - JD8_BlitCK( 200, 150, gfx, fr_ani_7[minim(i/5, fr7-1)], 75, 15, 15, 255 ); - } else { - JD8_BlitCK( 200, 150, gfx, fr_ani_7[minim(i/5, fr7-1)], 105, 15, 15, 255 ); - } - - JD8_Flip(); - while( !JG_ShouldUpdate() ) { JI_Update(); if( JI_AnyKey() || JG_Quitting() ) { JD8_FreeSurface( gfx ); return; } } - } + JD8_Flip(); + while (!JG_ShouldUpdate()) { + JI_Update(); + if (JI_AnyKey() || JG_Quitting()) { + JD8_FreeSurface(gfx); + return; + } + } + } - // SOMBRA i PEDRA } - - for( int i = 0; i <= 75; i++ ) { - - JD8_ClearScreen( 0 ); - JD8_Blit( 43, 78, gfx, 43, 155, 231, 45 ); - //Put_sprite(from,where,creu,15,15,200,155); - JD8_BlitCK( 200, 155, gfx, 0, creu, 15, 15, 255 ); - //Put_sprite(from,where,fr_ani_7[fr7-1],15,15,200,150); - JD8_BlitCK( 200, 150, gfx, fr_ani_7[fr7-1], 105, 15, 15, 255 ); - //Put_sprite(from,where,fr_ani_8[0],15,15,200,i*2); - JD8_BlitCK( 200, i*2, gfx, fr_ani_8[0], 75, 15, 15, 255 ); - - JD8_Flip(); - while( !JG_ShouldUpdate() ) { JI_Update(); if( JI_AnyKey() || JG_Quitting() ) { JD8_FreeSurface( gfx ); return; } } - } + // girar-se } - // trencar PEDRA } - - for( int i = 0; i <= 19; i++ ) { - - JD8_ClearScreen( 0 ); - JD8_Blit( 43, 78, gfx, 43, 155, 231, 45 ); - //Put_sprite(from,where,creu,15,15,200,155); - JD8_BlitCK( 200, 155, gfx, 0, creu, 15, 15, 255 ); - //Put_sprite(from,where,fr_ani_8[i div 10],15,15,200,150); - JD8_BlitCK( 200, 150, gfx, fr_ani_8[i/10], 75, 15, 15, 255 ); - - JD8_Flip(); - while( !JG_ShouldUpdate() ) { JI_Update(); if( JI_AnyKey() || JG_Quitting() ) { JD8_FreeSurface( gfx ); return; } } - } + for (int i = 0; i <= 50; i++) { + JD8_ClearScreen(0); + JD8_Blit(43, 78, gfx, 43, 155, 231, 45); + // Put_sprite(from,where,fr_ani_1[1],15,15,80,150); + JD8_BlitCK(80, 150, gfx, fr_ani_1[1], 0, 15, 15, 0); + // Put_sprite(from,where,fr_ani_6[4],15,15,95,150); + JD8_BlitCK(95, 150, gfx, fr_ani_6[4], 60, 15, 15, 0); + // Put_sprite(from,where,interrogant,15,15,80,133); + JD8_BlitCK(80, 133, gfx, 0, interrogant, 15, 15, 0); - // FINAL } - - for( int i = 0; i <= 200; i++ ) { - - JD8_ClearScreen( 0 ); - JD8_Blit( 43, 78, gfx, 43, 155, 231, 45 ); - //Put_sprite(from,where,creu,15,15,200,155); - JD8_BlitCK( 200, 155, gfx, 0, creu, 15, 15, 255 ); - //Put_sprite(from,where,fr_ani_8[1],15,15,200,150); - JD8_BlitCK( 200, 150, gfx, fr_ani_8[1], 75, 15, 15, 255 ); - //Put_sprite(from,where,fr_ani_8[2],15,15,185,150); - JD8_BlitCK( 185, 150, gfx, fr_ani_8[2], 75, 15, 15, 255 ); - //Put_sprite(from,where,fr_ani_8[3],15,15,215,150); - JD8_BlitCK( 215, 150, gfx, fr_ani_8[3], 75, 15, 15, 255 ); - - JD8_Flip(); - while( !JG_ShouldUpdate() ) { JI_Update(); if( JI_AnyKey() || JG_Quitting() ) { JD8_FreeSurface( gfx ); return; } } - } - break; - case 2: - // camina cap a la DRETA } - for( int i = 0; i <= 145; i++ ) { - - JD8_ClearScreen( 0 ); - JD8_Blit( 43, 78, gfx, 43, 155, 231, 45 ); - //Put_sprite(from,where,fr_ani_1[(i div 5) mod fr1],15,15,i,150); - JD8_BlitCK( i, 150, gfx, fr_ani_1[(i/5) % fr1], 0, 15, 15, 255 ); - //Put_sprite(from,where,fr_ani_6[(i div 10) mod fr6],15,15,304-i,150); - JD8_BlitCK( 304-i, 150, gfx, fr_ani_6[(i/10) % fr6], 60, 15, 15, 255 ); - - JD8_Flip(); - while( !JG_ShouldUpdate() ) { JI_Update(); if( JI_AnyKey() || JG_Quitting() ) { JD8_FreeSurface( gfx ); return; } } - } + JD8_Flip(); + while (!JG_ShouldUpdate()) { + JI_Update(); + if (JI_AnyKey() || JG_Quitting()) { + JD8_FreeSurface(gfx); + return; + } + } + } - // els dos quets } - - for( int i = 0; i <= 100; i++ ) { + // bot de SUSTO } - JD8_ClearScreen( 0 ); - JD8_Blit( 43, 78, gfx, 43, 155, 231, 45 ); - //Put_sprite(from,where,fr_ani_1[1],15,15,145,150); - JD8_BlitCK( 145, 150, gfx, fr_ani_1[1], 0, 15, 15, 255 ); - //Put_sprite(from,where,fr_ani_6[1],15,15,160,150); - JD8_BlitCK( 160, 150, gfx, fr_ani_6[1], 60, 15, 15, 255 ); - - JD8_Flip(); - while( !JG_ShouldUpdate() ) { JI_Update(); if( JI_AnyKey() || JG_Quitting() ) { JD8_FreeSurface( gfx ); return; } } - } + for (int i = 0; i <= 49; i++) { + JD8_ClearScreen(0); + JD8_Blit(43, 78, gfx, 43, 155, 231, 45); + // Put_sprite(from,where,fr_ani_5[minim((i div 5),fr5-1)],15,15,80,150-((i mod 50) div 5)); + JD8_BlitCK(80, 150 - ((i % 50) / 5), gfx, fr_ani_5[minim(i / 5, fr5 - 1)], 45, 15, 15, 0); + // Put_sprite(from,where,fr_ani_6[4],15,15,95,150); + JD8_BlitCK(95, 150, gfx, fr_ani_6[4], 60, 15, 15, 0); - // aparicio altaveu } - - for( int i = 0; i <= 50; i++ ) { - - JD8_ClearScreen( 0 ); - JD8_Blit( 43, 78, gfx, 43, 155, 231, 45 ); - //Put_sprite(from,where,fr_ani_11[(i div 10) mod 2],15,15,125,150); - JD8_BlitCK( 125, 150, gfx, fr_ani_11[(i/10) % 2], 90, 15, 15, 255 ); - //Put_sprite(from,where,fr_ani_1[1],15,15,145,150); - JD8_BlitCK( 145, 150, gfx, fr_ani_1[1], 0, 15, 15, 255 ); - //Put_sprite(from,where,fr_ani_6[1],15,15,160,150); - JD8_BlitCK( 160, 150, gfx, fr_ani_6[1], 60, 15, 15, 255 ); - - JD8_Flip(); - while( !JG_ShouldUpdate() ) { JI_Update(); if( JI_AnyKey() || JG_Quitting() ) { JD8_FreeSurface( gfx ); return; } } - } + JD8_Flip(); + while (!JG_ShouldUpdate()) { + JI_Update(); + if (JI_AnyKey() || JG_Quitting()) { + JD8_FreeSurface(gfx); + return; + } + } + } - // BALL } - - for( int i = 0; i <= 800; i++ ) { - - JD8_ClearScreen( 0 ); - JD8_Blit( 43, 78, gfx, 43, 155, 231, 45 ); - //Put_sprite(from,where,fr_ani_9[(i div 10) mod fr9],15,15,145,150); - JD8_BlitCK( 145, 150, gfx, fr_ani_9[(i/10) % fr9], 120, 15, 15, 255 ); - //Put_sprite(from,where,fr_ani_10[(i div 10) mod fr10],15,15,160,150); - JD8_BlitCK( 160, 150, gfx, fr_ani_10[(i/10) % fr10], 135, 15, 15, 255 ); - //Put_sprite(from,where,fr_ani_11[((i div 5) mod 4)+2],15,15,125,150); - JD8_BlitCK( 125, 150, gfx, fr_ani_11[((i/5) % 4)+2], 90, 15, 15, 255 ); - - JD8_Flip(); - while( !JG_ShouldUpdate() ) { JI_Update(); if( JI_AnyKey() || JG_Quitting() ) { JD8_FreeSurface( gfx ); return; } } - } + // bot de SUSTO } - break; - } + for (int i = 50; i <= 99; i++) { + JD8_ClearScreen(0); + JD8_Blit(43, 78, gfx, 43, 155, 231, 45); + // Put_sprite(from,where,fr_ani_5[minim((i div 5),fr5-1)],15,15,80,140+((i mod 50) div 5)); + JD8_BlitCK(80, 140 + ((i % 50) / 5), gfx, fr_ani_5[minim(i / 5, fr5 - 1)], 45, 15, 15, 0); + // Put_sprite(from,where,fr_ani_6[4],15,15,95,150); + JD8_BlitCK(95, 150, gfx, fr_ani_6[4], 60, 15, 15, 0); + JD8_Flip(); + while (!JG_ShouldUpdate()) { + JI_Update(); + if (JI_AnyKey() || JG_Quitting()) { + JD8_FreeSurface(gfx); + return; + } + } + } - JD8_FreeSurface( gfx ); + // camina cap a la ESQUERRA } + + for (int i = 80; i >= 0; i--) { + JD8_ClearScreen(0); + JD8_Blit(43, 78, gfx, 43, 155, 231, 45); + // Put_sprite(from,where,fr_ani_2[(i div 5) mod fr2],15,15,i,150); + JD8_BlitCK(i, 150, gfx, fr_ani_2[(i / 5) % fr2], 15, 15, 15, 0); + // Put_sprite(from,where,fr_ani_6[4],15,15,95,150); + JD8_BlitCK(95, 150, gfx, fr_ani_6[4], 60, 15, 15, 0); + + JD8_Flip(); + while (!JG_ShouldUpdate()) { + JI_Update(); + if (JI_AnyKey() || JG_Quitting()) { + JD8_FreeSurface(gfx); + return; + } + } + } + + // final } + + for (int i = 0; i <= 150; i++) { + JD8_ClearScreen(0); + JD8_Blit(43, 78, gfx, 43, 155, 231, 45); + // Put_sprite(from,where,fr_ani_6[4],15,15,95,150); + JD8_BlitCK(95, 150, gfx, fr_ani_6[4], 60, 15, 15, 0); + // Put_sprite(from,where,interrogant,15,15,95,133); + JD8_BlitCK(95, 133, gfx, 0, interrogant, 15, 15, 0); + + JD8_Flip(); + } + //-----} + + break; + case 1: + // camina cap a la DRETA } + for (int i = 0; i <= 200; i++) { + JD8_ClearScreen(0); + JD8_Blit(43, 78, gfx, 43, 155, 231, 45); + // Put_sprite(from,where,creu,15,15,200,155); + JD8_BlitCK(200, 155, gfx, 0, creu, 15, 15, 255); + // Put_sprite(from,where,fr_ani_1[(i div 5) mod fr1],15,15,i,150); + JD8_BlitCK(i, 150, gfx, fr_ani_1[(i / 5) % fr1], 0, 15, 15, 255); + + JD8_Flip(); + while (!JG_ShouldUpdate()) { + JI_Update(); + if (JI_AnyKey() || JG_Quitting()) { + JD8_FreeSurface(gfx); + return; + } + } + } + + // trau el MAPA DRETA } + + for (int i = 0; i <= 300; i++) { + JD8_ClearScreen(0); + JD8_Blit(43, 78, gfx, 43, 155, 231, 45); + // Put_sprite(from,where,creu,15,15,200,155); + JD8_BlitCK(200, 155, gfx, 0, creu, 15, 15, 255); + // Put_sprite(from,where,fr_ani_3[minim((i div 5),fr3-1)],15,15,200,150); + JD8_BlitCK(200, 150, gfx, fr_ani_3[minim(i / 5, fr3 - 1)], 30, 15, 15, 255); + + JD8_Flip(); + while (!JG_ShouldUpdate()) { + JI_Update(); + if (JI_AnyKey() || JG_Quitting()) { + JD8_FreeSurface(gfx); + return; + } + } + } + + // INTERROGANT } + + for (int i = 0; i <= 100; i++) { + JD8_ClearScreen(0); + JD8_Blit(43, 78, gfx, 43, 155, 231, 45); + // Put_sprite(from,where,creu,15,15,200,155); + JD8_BlitCK(200, 155, gfx, 0, creu, 15, 15, 255); + // Put_sprite(from,where,interrogant,15,15,200,134); + JD8_BlitCK(200, 134, gfx, 0, interrogant, 15, 15, 255); + // Put_sprite(from,where,fr_ani_3[fr3-1],15,15,200,150); + JD8_BlitCK(200, 150, gfx, fr_ani_3[fr3 - 1], 30, 15, 15, 255); + + JD8_Flip(); + while (!JG_ShouldUpdate()) { + JI_Update(); + if (JI_AnyKey() || JG_Quitting()) { + JD8_FreeSurface(gfx); + return; + } + } + } + + // deixa caure el MAPA i SOMBRA } + + for (int i = 0; i <= 200; i++) { + JD8_ClearScreen(0); + JD8_Blit(43, 78, gfx, 43, 155, 231, 45); + // Put_sprite(from,where,creu,15,15,200,155); + JD8_BlitCK(200, 155, gfx, 0, creu, 15, 15, 255); + // Put_sprite(from,where,fr_ani_7[minim((i div 5),fr7-1)],15,15,200,150); + if (minim(i / 5, fr7 - 1) <= 13) { + JD8_BlitCK(200, 150, gfx, fr_ani_7[minim(i / 5, fr7 - 1)], 75, 15, 15, 255); + } else { + JD8_BlitCK(200, 150, gfx, fr_ani_7[minim(i / 5, fr7 - 1)], 105, 15, 15, 255); + } + + JD8_Flip(); + while (!JG_ShouldUpdate()) { + JI_Update(); + if (JI_AnyKey() || JG_Quitting()) { + JD8_FreeSurface(gfx); + return; + } + } + } + + // SOMBRA i PEDRA } + + for (int i = 0; i <= 75; i++) { + JD8_ClearScreen(0); + JD8_Blit(43, 78, gfx, 43, 155, 231, 45); + // Put_sprite(from,where,creu,15,15,200,155); + JD8_BlitCK(200, 155, gfx, 0, creu, 15, 15, 255); + // Put_sprite(from,where,fr_ani_7[fr7-1],15,15,200,150); + JD8_BlitCK(200, 150, gfx, fr_ani_7[fr7 - 1], 105, 15, 15, 255); + // Put_sprite(from,where,fr_ani_8[0],15,15,200,i*2); + JD8_BlitCK(200, i * 2, gfx, fr_ani_8[0], 75, 15, 15, 255); + + JD8_Flip(); + while (!JG_ShouldUpdate()) { + JI_Update(); + if (JI_AnyKey() || JG_Quitting()) { + JD8_FreeSurface(gfx); + return; + } + } + } + + // trencar PEDRA } + + for (int i = 0; i <= 19; i++) { + JD8_ClearScreen(0); + JD8_Blit(43, 78, gfx, 43, 155, 231, 45); + // Put_sprite(from,where,creu,15,15,200,155); + JD8_BlitCK(200, 155, gfx, 0, creu, 15, 15, 255); + // Put_sprite(from,where,fr_ani_8[i div 10],15,15,200,150); + JD8_BlitCK(200, 150, gfx, fr_ani_8[i / 10], 75, 15, 15, 255); + + JD8_Flip(); + while (!JG_ShouldUpdate()) { + JI_Update(); + if (JI_AnyKey() || JG_Quitting()) { + JD8_FreeSurface(gfx); + return; + } + } + } + + // FINAL } + + for (int i = 0; i <= 200; i++) { + JD8_ClearScreen(0); + JD8_Blit(43, 78, gfx, 43, 155, 231, 45); + // Put_sprite(from,where,creu,15,15,200,155); + JD8_BlitCK(200, 155, gfx, 0, creu, 15, 15, 255); + // Put_sprite(from,where,fr_ani_8[1],15,15,200,150); + JD8_BlitCK(200, 150, gfx, fr_ani_8[1], 75, 15, 15, 255); + // Put_sprite(from,where,fr_ani_8[2],15,15,185,150); + JD8_BlitCK(185, 150, gfx, fr_ani_8[2], 75, 15, 15, 255); + // Put_sprite(from,where,fr_ani_8[3],15,15,215,150); + JD8_BlitCK(215, 150, gfx, fr_ani_8[3], 75, 15, 15, 255); + + JD8_Flip(); + while (!JG_ShouldUpdate()) { + JI_Update(); + if (JI_AnyKey() || JG_Quitting()) { + JD8_FreeSurface(gfx); + return; + } + } + } + break; + case 2: + // camina cap a la DRETA } + for (int i = 0; i <= 145; i++) { + JD8_ClearScreen(0); + JD8_Blit(43, 78, gfx, 43, 155, 231, 45); + // Put_sprite(from,where,fr_ani_1[(i div 5) mod fr1],15,15,i,150); + JD8_BlitCK(i, 150, gfx, fr_ani_1[(i / 5) % fr1], 0, 15, 15, 255); + // Put_sprite(from,where,fr_ani_6[(i div 10) mod fr6],15,15,304-i,150); + JD8_BlitCK(304 - i, 150, gfx, fr_ani_6[(i / 10) % fr6], 60, 15, 15, 255); + + JD8_Flip(); + while (!JG_ShouldUpdate()) { + JI_Update(); + if (JI_AnyKey() || JG_Quitting()) { + JD8_FreeSurface(gfx); + return; + } + } + } + + // els dos quets } + + for (int i = 0; i <= 100; i++) { + JD8_ClearScreen(0); + JD8_Blit(43, 78, gfx, 43, 155, 231, 45); + // Put_sprite(from,where,fr_ani_1[1],15,15,145,150); + JD8_BlitCK(145, 150, gfx, fr_ani_1[1], 0, 15, 15, 255); + // Put_sprite(from,where,fr_ani_6[1],15,15,160,150); + JD8_BlitCK(160, 150, gfx, fr_ani_6[1], 60, 15, 15, 255); + + JD8_Flip(); + while (!JG_ShouldUpdate()) { + JI_Update(); + if (JI_AnyKey() || JG_Quitting()) { + JD8_FreeSurface(gfx); + return; + } + } + } + + // aparicio altaveu } + + for (int i = 0; i <= 50; i++) { + JD8_ClearScreen(0); + JD8_Blit(43, 78, gfx, 43, 155, 231, 45); + // Put_sprite(from,where,fr_ani_11[(i div 10) mod 2],15,15,125,150); + JD8_BlitCK(125, 150, gfx, fr_ani_11[(i / 10) % 2], 90, 15, 15, 255); + // Put_sprite(from,where,fr_ani_1[1],15,15,145,150); + JD8_BlitCK(145, 150, gfx, fr_ani_1[1], 0, 15, 15, 255); + // Put_sprite(from,where,fr_ani_6[1],15,15,160,150); + JD8_BlitCK(160, 150, gfx, fr_ani_6[1], 60, 15, 15, 255); + + JD8_Flip(); + while (!JG_ShouldUpdate()) { + JI_Update(); + if (JI_AnyKey() || JG_Quitting()) { + JD8_FreeSurface(gfx); + return; + } + } + } + + // BALL } + + for (int i = 0; i <= 800; i++) { + JD8_ClearScreen(0); + JD8_Blit(43, 78, gfx, 43, 155, 231, 45); + // Put_sprite(from,where,fr_ani_9[(i div 10) mod fr9],15,15,145,150); + JD8_BlitCK(145, 150, gfx, fr_ani_9[(i / 10) % fr9], 120, 15, 15, 255); + // Put_sprite(from,where,fr_ani_10[(i div 10) mod fr10],15,15,160,150); + JD8_BlitCK(160, 150, gfx, fr_ani_10[(i / 10) % fr10], 135, 15, 15, 255); + // Put_sprite(from,where,fr_ani_11[((i div 5) mod 4)+2],15,15,125,150); + JD8_BlitCK(125, 150, gfx, fr_ani_11[((i / 5) % 4) + 2], 90, 15, 15, 255); + + JD8_Flip(); + while (!JG_ShouldUpdate()) { + JI_Update(); + if (JI_AnyKey() || JG_Quitting()) { + JD8_FreeSurface(gfx); + return; + } + } + } + + break; + } + + JD8_FreeSurface(gfx); } - void ModuleSequence::doMenu() { - JG_SetUpdateTicks(20); - JD8_Surface fondo = JD8_LoadSurface( "menu.gif" ); - JD8_Surface gfx = JD8_LoadSurface( "menu2.gif" ); - JD8_Palette pal = JD8_LoadPalette( "menu2.gif" ); - - JD8_Blit( fondo ); - JD8_BlitCK( 100, 25, gfx, 0, 74, 124, 68, 255 ); // logo - JD8_BlitCK( 130, 100, gfx, 0, 0, 80, 74, 255 ); - JD8_BlitCK( 0, 150, gfx, 0, 150, 320, 50, 255 ); - JD8_FadeToPal( pal ); + JG_SetUpdateTicks(20); + JD8_Surface fondo = JD8_LoadSurface("menu.gif"); + JD8_Surface gfx = JD8_LoadSurface("menu2.gif"); + JD8_Palette pal = JD8_LoadPalette("menu2.gif"); - contador = 0; - int palmeres = 0; - int horitzo = 0; - int camello = 0; + JD8_Blit(fondo); + JD8_BlitCK(100, 25, gfx, 0, 74, 124, 68, 255); // logo + JD8_BlitCK(130, 100, gfx, 0, 0, 80, 74, 255); + JD8_BlitCK(0, 150, gfx, 0, 150, 320, 50, 255); + JD8_FadeToPal(pal); - JI_Update(); - while( !JI_AnyKey() && !JG_Quitting() && !JI_KeyPressed(SDL_SCANCODE_P)) { + contador = 0; + int palmeres = 0; + int horitzo = 0; + int camello = 0; - JD8_Blit( 0, 0, fondo, 0, 0, 320, 100 ); // fondo sol estatic + JI_Update(); + while (!JI_AnyKey() && !JG_Quitting() && !JI_KeyPressed(SDL_SCANCODE_P)) { + JD8_Blit(0, 0, fondo, 0, 0, 320, 100); // fondo sol estatic - JD8_BlitCK( horitzo, 100, fondo, 0, 100, 320-horitzo, 100, 255 ); // fondo moviment - JD8_BlitCK( 0, 100, fondo, 320-horitzo, 100, horitzo, 100, 255 ); + JD8_BlitCK(horitzo, 100, fondo, 0, 100, 320 - horitzo, 100, 255); // fondo moviment + JD8_BlitCK(0, 100, fondo, 320 - horitzo, 100, horitzo, 100, 255); - JD8_BlitCK( 100, 25, gfx, 0, 74, 124, 68, 255 ); // logo - JD8_BlitCK( 130, 100, gfx, camello*80, 0, 80, 74, 255 ); // camello + JD8_BlitCK(100, 25, gfx, 0, 74, 124, 68, 255); // logo + JD8_BlitCK(130, 100, gfx, camello * 80, 0, 80, 74, 255); // camello - JD8_BlitCK( palmeres, 150, gfx, 0, 150, 320-palmeres, 50, 255 ); // palemeres moviment - JD8_BlitCK( 0, 150, gfx, 320-palmeres, 150, palmeres, 50, 255 ); + JD8_BlitCK(palmeres, 150, gfx, 0, 150, 320 - palmeres, 50, 255); // palemeres moviment + JD8_BlitCK(0, 150, gfx, 320 - palmeres, 150, palmeres, 50, 255); - JD8_BlitCK( 87, 167, gfx, 127, 124, 150, 24, 255 ); // jdes - JD8_BlitCK( 303, 193, gfx, 305, 143, 15, 5, 255 ); // versio + JD8_BlitCK(87, 167, gfx, 127, 124, 150, 24, 255); // jdes + JD8_BlitCK(303, 193, gfx, 305, 143, 15, 5, 255); // versio - if( contador%100 > 30 ) JD8_BlitCK( 98, 130, gfx, 161, 92, 127, 9, 255 ); // pulsa tecla... - if ((contador % 100 > 30) && info::nou_personatge) JD8_BlitCK(68, 141, gfx, 128, 105, 189, 9, 255); // 'p' per a personatge nou... + if (contador % 100 > 30) JD8_BlitCK(98, 130, gfx, 161, 92, 127, 9, 255); // pulsa tecla... + if ((contador % 100 > 30) && info::nou_personatge) JD8_BlitCK(68, 141, gfx, 128, 105, 189, 9, 255); // 'p' per a personatge nou... - JD8_Flip(); + JD8_Flip(); - if( JG_ShouldUpdate() ) { - if( contador%4 == 0 ) { palmeres--; if( palmeres < 0 ) palmeres = 319; } - if( contador%8 == 0 ) { camello++; if( camello == 4 ) camello = 0; } - if( contador%16 == 0 ) { horitzo--; if( horitzo < 0 ) horitzo = 319; } - contador++; - JI_Update(); - } - } - info::pepe_activat = JI_KeyPressed(SDL_SCANCODE_P); - JI_DisableKeyboard(60); - JD8_FreeSurface( fondo ); - JD8_FreeSurface( gfx ); - free( pal ); + if (JG_ShouldUpdate()) { + if (contador % 4 == 0) { + palmeres--; + if (palmeres < 0) palmeres = 319; + } + if (contador % 8 == 0) { + camello++; + if (camello == 4) camello = 0; + } + if (contador % 16 == 0) { + horitzo--; + if (horitzo < 0) horitzo = 319; + } + contador++; + JI_Update(); + } + } + info::pepe_activat = JI_KeyPressed(SDL_SCANCODE_P); + JI_DisableKeyboard(60); + JD8_FreeSurface(fondo); + JD8_FreeSurface(gfx); + free(pal); } void ModuleSequence::doSlides() { - JG_SetUpdateTicks(20); + JG_SetUpdateTicks(20); + const char* arxiu; + if (info::num_piramide == 7) { + play_music("00000005.ogg", 1); + if (info::diners < 200) { + arxiu = "intro2.gif"; + } else { + arxiu = "intro3.gif"; + } + } else { + arxiu = "intro.gif"; + } - const char* arxiu; - if( info::num_piramide == 7 ) { - play_music("00000005.ogg", 1); - if (info::diners < 200) { - arxiu = "intro2.gif"; - } else { - arxiu = "intro3.gif"; - } - } else { - arxiu = "intro.gif"; - } + JD8_Surface gfx = JD8_LoadSurface(arxiu); + JD8_Palette pal_aux = JD8_LoadPalette(arxiu); + JD8_Palette pal = (JD8_Palette)malloc(768); + memcpy(pal, pal_aux, 768); + JD8_ClearScreen(255); + JD8_SetScreenPalette(pal); - JD8_Surface gfx = JD8_LoadSurface( arxiu ); - JD8_Palette pal_aux = JD8_LoadPalette( arxiu ); - JD8_Palette pal = (JD8_Palette)malloc( 768 ); - memcpy( pal, pal_aux, 768 ); - JD8_ClearScreen( 255 ); - JD8_SetScreenPalette( pal ); + bool exit = false; + int step = 0; + contador = 1; + while (!exit && !JG_Quitting()) { + if (JG_ShouldUpdate()) { + JI_Update(); - bool exit = false; - int step = 0; - contador = 1; - while( !exit && !JG_Quitting() ) { - if (JG_ShouldUpdate()) { - JI_Update(); + if (JI_AnyKey()) { + exit = true; + } - if( JI_AnyKey() ) { - exit = true; - } + switch (step) { + case 0: + JD8_Blit(320 - (contador * 4), 65, gfx, 0, 0, contador * 4, 65); + JD8_Flip(); + contador++; + if (contador == 80) step++; + break; + case 3: + JD8_Blit(0, 65, gfx, 320 - (contador * 4), 65, contador * 4, 65); + JD8_Flip(); + contador++; + if (contador == 80) step++; + break; + case 6: + JD8_Blit(320 - (contador * 4), 65, gfx, 0, 130, contador * 4, 65); + JD8_Flip(); + contador++; + if (contador == 80) step++; + break; + case 1: + case 4: + case 7: + contador--; + if (contador == -150) { + contador = 0; + step++; + } + break; + case 2: + case 5: + JD8_FadeOut(); + memcpy(pal, pal_aux, 768); + JD8_ClearScreen(255); + step++; + break; + case 8: + if (info::num_piramide != 7) JA_FadeOutMusic(250); + exit = true; + break; + } + } + } - switch( step ) { - case 0: - JD8_Blit( 320 - ( contador * 4 ), 65, gfx, 0, 0, contador*4, 65 ); - JD8_Flip(); - contador++; - if( contador == 80 ) step++; - break; - case 3: - JD8_Blit( 0, 65, gfx, 320 - ( contador * 4 ), 65, contador*4, 65 ); - JD8_Flip(); - contador++; - if( contador == 80 ) step++; - break; - case 6: - JD8_Blit( 320 - ( contador * 4 ), 65, gfx, 0, 130, contador*4, 65 ); - JD8_Flip(); - contador++; - if( contador == 80 ) step++; - break; - case 1: - case 4: - case 7: - contador--; - if (contador == -150) { contador = 0; step++; } - break; - case 2: - case 5: - JD8_FadeOut(); - memcpy( pal, pal_aux, 768 ); - JD8_ClearScreen( 255 ); - step++; - break; - case 8: - if (info::num_piramide != 7) JA_FadeOutMusic(250); - exit = true; - break; - } - } - } - - JD8_FreeSurface( gfx ); - free( pal_aux ); + JD8_FreeSurface(gfx); + free(pal_aux); } void ModuleSequence::doBanner() { play_music("00000004.ogg"); - this->contador = 5000; + this->contador = 5000; - JD8_Surface gfx = JD8_LoadSurface( "ffase.gif" ); - JD8_Palette pal = JD8_LoadPalette( "ffase.gif" ); + JD8_Surface gfx = JD8_LoadSurface("ffase.gif"); + JD8_Palette pal = JD8_LoadPalette("ffase.gif"); - JD8_ClearScreen( 0 ); + JD8_ClearScreen(0); - JD8_Blit( 81, 24, gfx, 81, 155, 168, 21 ); - JD8_Blit( 39, 150, gfx, 39, 175, 248, 20 ); + JD8_Blit(81, 24, gfx, 81, 155, 168, 21); + JD8_Blit(39, 150, gfx, 39, 175, 248, 20); - switch( info::num_piramide ) { - case 2: - JD8_Blit( 82, 60, gfx, 0, 0, 160, 75 ); - break; - case 3: - JD8_Blit( 82, 60, gfx, 160, 0, 160, 75 ); - break; - case 4: - JD8_Blit( 82, 60, gfx, 0, 75, 160, 75 ); - break; - case 5: - JD8_Blit( 82, 60, gfx, 160, 75, 160, 75 ); - break; - } - JD8_FadeToPal( pal ); + switch (info::num_piramide) { + case 2: + JD8_Blit(82, 60, gfx, 0, 0, 160, 75); + break; + case 3: + JD8_Blit(82, 60, gfx, 160, 0, 160, 75); + break; + case 4: + JD8_Blit(82, 60, gfx, 0, 75, 160, 75); + break; + case 5: + JD8_Blit(82, 60, gfx, 160, 75, 160, 75); + break; + } + JD8_FadeToPal(pal); - bool exit = false; - while( !exit && !JG_Quitting() ) { - if (JG_ShouldUpdate()) { - JI_Update(); + bool exit = false; + while (!exit && !JG_Quitting()) { + if (JG_ShouldUpdate()) { + JI_Update(); - if( JI_AnyKey() ) { - exit = true; - } + if (JI_AnyKey()) { + exit = true; + } - contador--; - if( contador == 0 ) exit = true; - } - } + contador--; + if (contador == 0) exit = true; + } + } JA_FadeOutMusic(250); } void ModuleSequence::doSecreta() { - play_music("00000002.ogg"); - JG_SetUpdateTicks(20); - JD8_FadeOut(); - JD8_Surface gfx = JD8_LoadSurface("tomba1.gif"); - JD8_Palette pal_aux = JD8_LoadPalette("tomba1.gif"); - JD8_Palette pal = (JD8_Palette)malloc(768); - memcpy(pal, pal_aux, 768); - JD8_ClearScreen(255); - JD8_SetScreenPalette(pal); + play_music("00000002.ogg"); + JG_SetUpdateTicks(20); + JD8_FadeOut(); + JD8_Surface gfx = JD8_LoadSurface("tomba1.gif"); + JD8_Palette pal_aux = JD8_LoadPalette("tomba1.gif"); + JD8_Palette pal = (JD8_Palette)malloc(768); + memcpy(pal, pal_aux, 768); + JD8_ClearScreen(255); + JD8_SetScreenPalette(pal); - bool exit = false; - int step = 0; - contador = 1; - while (!exit && !JG_Quitting()) { - if (JG_ShouldUpdate()) { - JI_Update(); + bool exit = false; + int step = 0; + contador = 1; + while (!exit && !JG_Quitting()) { + if (JG_ShouldUpdate()) { + JI_Update(); - if (JI_AnyKey()) { - exit = true; - } + if (JI_AnyKey()) { + exit = true; + } - switch (step) { - case 0: - JD8_Blit(70, 60, gfx, 0, contador, 178, 70); //Put_Sprite(from, where, 0 + (320 * i), 178, 70, 70, 60); - JD8_BlitCK(70, 60, gfx, 178, contador >> 1, 142, 70, 255); //Put_Sprite(from, where, 178 + (320 * (i div 2)), 142, 70, 70, 60); - JD8_Flip(); - contador++; - if (contador == 128) step++; - break; - case 1: - case 4: - case 7: - case 9: - contador--; - if (contador == 0) step++; - break; - case 2: - JD8_ClearScreen(255); - JD8_Flip(); - gfx = JD8_LoadSurface("tomba2.gif"); - pal_aux = JD8_LoadPalette("tomba2.gif"); - memcpy(pal, pal_aux, 768); - JD8_SetScreenPalette(pal); - step++; - break; - case 3: - JD8_Blit(55, 53, gfx, 0, 158-contador, 211, contador); //Put_Sprite(from, where, 0 + ((158 - i) * 320), 211, i, 55, 53); - JD8_Flip(); - contador++; - if (contador == 94) step++; - break; - case 5: - JD8_ClearScreen(0); - JD8_Flip(); - JD8_SetPaletteColor(254, 12, 11, 11); - JD8_SetPaletteColor(253, 12, 11, 11); - step++; - break; - case 6: - JD8_Blit(80, 68, gfx, 160 - (contador*2), 0, contador*2, 64); //Put_Sprite(from, where, 160 - (i * 2), (i * 2), 64, 80, 68); - JD8_Flip(); - contador++; - if (contador == 80) step++; - break; - case 8: - JD8_SetPaletteColor(254, contador+12, 11, 11); - JD8_SetPaletteColor(253, (contador+12) >> 1, 11, 11); - JD8_Flip(); - contador++; - if (contador == 51) step++; - break; - case 10: - JD8_FadeOut(); - memcpy(pal, pal_aux, 768); - JD8_ClearScreen(255); - JA_FadeOutMusic(250); - exit = true; - break; - } - } - } + switch (step) { + case 0: + JD8_Blit(70, 60, gfx, 0, contador, 178, 70); // Put_Sprite(from, where, 0 + (320 * i), 178, 70, 70, 60); + JD8_BlitCK(70, 60, gfx, 178, contador >> 1, 142, 70, 255); // Put_Sprite(from, where, 178 + (320 * (i div 2)), 142, 70, 70, 60); + JD8_Flip(); + contador++; + if (contador == 128) step++; + break; + case 1: + case 4: + case 7: + case 9: + contador--; + if (contador == 0) step++; + break; + case 2: + JD8_ClearScreen(255); + JD8_Flip(); + gfx = JD8_LoadSurface("tomba2.gif"); + pal_aux = JD8_LoadPalette("tomba2.gif"); + memcpy(pal, pal_aux, 768); + JD8_SetScreenPalette(pal); + step++; + break; + case 3: + JD8_Blit(55, 53, gfx, 0, 158 - contador, 211, contador); // Put_Sprite(from, where, 0 + ((158 - i) * 320), 211, i, 55, 53); + JD8_Flip(); + contador++; + if (contador == 94) step++; + break; + case 5: + JD8_ClearScreen(0); + JD8_Flip(); + JD8_SetPaletteColor(254, 12, 11, 11); + JD8_SetPaletteColor(253, 12, 11, 11); + step++; + break; + case 6: + JD8_Blit(80, 68, gfx, 160 - (contador * 2), 0, contador * 2, 64); // Put_Sprite(from, where, 160 - (i * 2), (i * 2), 64, 80, 68); + JD8_Flip(); + contador++; + if (contador == 80) step++; + break; + case 8: + JD8_SetPaletteColor(254, contador + 12, 11, 11); + JD8_SetPaletteColor(253, (contador + 12) >> 1, 11, 11); + JD8_Flip(); + contador++; + if (contador == 51) step++; + break; + case 10: + JD8_FadeOut(); + memcpy(pal, pal_aux, 768); + JD8_ClearScreen(255); + JA_FadeOutMusic(250); + exit = true; + break; + } + } + } - JD8_FreeSurface(gfx); - free(pal_aux); + JD8_FreeSurface(gfx); + free(pal_aux); } void ModuleSequence::doCredits() { + struct { + Uint16 x, y; + } frames_coche[8] = {{214, 152}, {214, 104}, {214, 56}, {214, 104}, {214, 152}, {214, 8}, {108, 152}, {214, 8}}; + const Uint32 n_frames_coche = 8; + const Uint32 velocitat_coche = 3; - struct { Uint16 x, y; } frames_coche[8] = { { 214, 152 }, { 214, 104 }, { 214, 56 }, { 214, 104 }, { 214, 152 }, { 214, 8 }, { 108, 152 }, { 214, 8 } }; - const Uint32 n_frames_coche = 8; - const Uint32 velocitat_coche = 3; + JD8_Surface vaddr2 = JD8_LoadSurface("final.gif"); + JD8_Surface vaddr3 = JD8_LoadSurface("finals.gif"); + JD8_Palette pal = JD8_LoadPalette("final.gif"); + JD8_SetScreenPalette(pal); - JD8_Surface vaddr2 = JD8_LoadSurface("final.gif"); - JD8_Surface vaddr3 = JD8_LoadSurface("finals.gif"); - JD8_Palette pal = JD8_LoadPalette("final.gif"); - JD8_SetScreenPalette(pal); + int contador = 0; - int contador = 0; + bool exit = false; + contador = 1; + while (!exit && !JG_Quitting()) { + if (JG_ShouldUpdate()) { + JI_Update(); - bool exit = false; - contador = 1; - while (!exit && !JG_Quitting()) { - if (JG_ShouldUpdate()) { - JI_Update(); + if (JI_AnyKey() || contador >= 3100) { + exit = true; + } - if (JI_AnyKey() || contador >= 3100) { - exit = true; - } + JD8_ClearScreen(255); - JD8_ClearScreen(255); + if (contador < 2750) { + JD8_BlitCKCut(115, 200 - (contador / 6), vaddr2, 0, 0, 80, 200, 0); + } - if (contador < 2750) { - JD8_BlitCKCut(115, 200 - (contador / 6), vaddr2, 0, 0, 80, 200, 0); - } + if ((contador > 1200) && (contador < 2280)) { + JD8_BlitCKCut(100, 200 - ((contador - 1200) / 6), vaddr2, 85, 0, 120, 140, 0); + } else if (contador >= 2250) { + JD8_BlitCK(100, 20, vaddr2, 85, 0, 120, 140, 0); + } - if ((contador > 1200) && (contador < 2280)) { - JD8_BlitCKCut(100, 200 - ((contador-1200) / 6), vaddr2, 85, 0, 120, 140, 0); - } else if (contador >= 2250) { - JD8_BlitCK(100, 20, vaddr2, 85, 0, 120, 140, 0); - } + if (info::diamants == 16) { + // scroll_final_joc(vaddr3, vaddr, contador_final); + JD8_BlitCKScroll(50, vaddr3, ((contador >> 3) % 320) + 1, 0, 50, 255); + JD8_BlitCKScroll(50, vaddr3, ((contador >> 2) % 320) + 1, 50, 50, 255); + JD8_BlitCKScroll(50, vaddr3, ((contador >> 1) % 320) + 1, 100, 50, 255); + JD8_BlitCKScroll(50, vaddr3, (contador % 320) + 1, 150, 50, 255); - if (info::diamants == 16) { - //scroll_final_joc(vaddr3, vaddr, contador_final); - JD8_BlitCKScroll(50, vaddr3, ((contador >> 3) % 320) + 1, 0, 50, 255); - JD8_BlitCKScroll(50, vaddr3, ((contador >> 2) % 320) + 1, 50, 50, 255); - JD8_BlitCKScroll(50, vaddr3, ((contador >> 1) % 320) + 1, 100, 50, 255); - JD8_BlitCKScroll(50, vaddr3, (contador % 320) + 1, 150, 50, 255); + JD8_BlitCK(100, 50, vaddr2, frames_coche[(contador / velocitat_coche) % n_frames_coche].x, frames_coche[(contador / velocitat_coche) % n_frames_coche].y, 106, 48, 255); + } else { + JD8_BlitCK(0, 50, vaddr3, 0, 0, 320, 50, 255); + JD8_BlitCK(0, 50, vaddr3, 0, 50, 320, 50, 255); + } - JD8_BlitCK(100, 50, vaddr2, frames_coche[(contador / velocitat_coche) % n_frames_coche].x, frames_coche[(contador / velocitat_coche) % n_frames_coche].y, 106, 48, 255); - } else { - JD8_BlitCK(0, 50, vaddr3, 0, 0, 320, 50, 255); - JD8_BlitCK(0, 50, vaddr3, 0, 50, 320, 50, 255); - } + JD8_FillSquare(0, 50, 255); + JD8_FillSquare(100, 10, 255); - JD8_FillSquare(0, 50, 255); - JD8_FillSquare(100, 10, 255); + JD8_Flip(); + contador++; + } + } - JD8_Flip(); - contador++; - } - } + FILE* ini = fopen("trick.ini", "wb"); + fwrite("1", 1, 1, ini); + fclose(ini); + info::nou_personatge = true; - FILE* ini = fopen("trick.ini", "wb"); - fwrite("1", 1, 1, ini); - fclose(ini); - info::nou_personatge = true; - - JD8_FreeSurface(vaddr3); - JD8_FreeSurface(vaddr2); + JD8_FreeSurface(vaddr3); + JD8_FreeSurface(vaddr2); } void ModuleSequence::doMort() { play_music("00000001.ogg"); - JI_DisableKeyboard(60); + JI_DisableKeyboard(60); - info::vida = 5; + info::vida = 5; this->contador = 1000; - JD8_Surface gfx = JD8_LoadSurface( "gameover.gif" ); - JD8_Palette pal = JD8_LoadPalette( "gameover.gif" ); + JD8_Surface gfx = JD8_LoadSurface("gameover.gif"); + JD8_Palette pal = JD8_LoadPalette("gameover.gif"); - JD8_ClearScreen( 0 ); + JD8_ClearScreen(0); - JD8_Blit( gfx ); + JD8_Blit(gfx); - JD8_FadeToPal( pal ); + JD8_FadeToPal(pal); bool exit = false; - while( !exit && !JG_Quitting() ) { + while (!exit && !JG_Quitting()) { if (JG_ShouldUpdate()) { JI_Update(); - - if( JI_AnyKey() ) { + + if (JI_AnyKey()) { exit = true; } - + contador--; - if( contador == 0 ) exit = true; + if (contador == 0) exit = true; } } - play_music("00000003.ogg"); + play_music("00000003.ogg"); } - diff --git a/source/game/modulesequence.hpp b/source/game/modulesequence.hpp index 2bbe625..89da26a 100644 --- a/source/game/modulesequence.hpp +++ b/source/game/modulesequence.hpp @@ -3,23 +3,20 @@ #include "game/info.hpp" class ModuleSequence { + public: + ModuleSequence(); + ~ModuleSequence(void); -public: + int Go(); - ModuleSequence(); - ~ModuleSequence(void); - - int Go(); - -private: - - void doIntro(); - void doMenu(); - void doSlides(); - void doBanner(); - void doSecreta(); - void doCredits(); + private: + void doIntro(); + void doMenu(); + void doSlides(); + void doBanner(); + void doSecreta(); + void doCredits(); void doMort(); - int contador; + int contador; }; diff --git a/source/game/momia.cpp b/source/game/momia.cpp index 062d949..91d799d 100644 --- a/source/game/momia.cpp +++ b/source/game/momia.cpp @@ -1,177 +1,183 @@ #include "game/momia.hpp" -#include "core/jgame.hpp" + #include -Momia::Momia( JD8_Surface gfx, bool dimoni, Uint16 x, Uint16 y, Prota* sam ) : Sprite( gfx ) { - this->dimoni = dimoni; - this->sam = sam; +#include "core/jgame.hpp" - this->entitat = (Entitat*)malloc( sizeof( Entitat ) ); - // Frames - this->entitat->num_frames = 20; - this->entitat->frames = (Frame*)malloc( this->entitat->num_frames * sizeof( Frame ) ); - Uint16 frame = 0; - for( int y = 0; y < 4; y++ ) { - for( int x = 0; x < 5; x++ ) { - this->entitat->frames[frame].w = 15; - this->entitat->frames[frame].h = 15; - if( info::num_piramide == 4 ) this->entitat->frames[frame].h -= 5; - this->entitat->frames[frame].x = (x*15)+75; - if( this->dimoni ) this->entitat->frames[frame].x += 75; - this->entitat->frames[frame].y = 20+(y*15); - frame++; +Momia::Momia(JD8_Surface gfx, bool dimoni, Uint16 x, Uint16 y, Prota* sam) + : Sprite(gfx) { + this->dimoni = dimoni; + this->sam = sam; - } - } - // Animacions - this->entitat->num_animacions = 4; - this->entitat->animacions = (Animacio*)malloc( this->entitat->num_animacions * sizeof( Animacio ) ); - for( int i = 0; i < 4; i++ ) { - this->entitat->animacions[i].num_frames = 8; - this->entitat->animacions[i].frames = (Uint8*)malloc( 8 ); - this->entitat->animacions[i].frames[0] = 0 + (i*5); - this->entitat->animacions[i].frames[1] = 1 + (i*5); - this->entitat->animacions[i].frames[2] = 2 + (i*5); - this->entitat->animacions[i].frames[3] = 1 + (i*5); - this->entitat->animacions[i].frames[4] = 0 + (i*5); - this->entitat->animacions[i].frames[5] = 3 + (i*5); - this->entitat->animacions[i].frames[6] = 4 + (i*5); - this->entitat->animacions[i].frames[7] = 3 + (i*5); - } + this->entitat = (Entitat*)malloc(sizeof(Entitat)); + // Frames + this->entitat->num_frames = 20; + this->entitat->frames = (Frame*)malloc(this->entitat->num_frames * sizeof(Frame)); + Uint16 frame = 0; + for (int y = 0; y < 4; y++) { + for (int x = 0; x < 5; x++) { + this->entitat->frames[frame].w = 15; + this->entitat->frames[frame].h = 15; + if (info::num_piramide == 4) this->entitat->frames[frame].h -= 5; + this->entitat->frames[frame].x = (x * 15) + 75; + if (this->dimoni) this->entitat->frames[frame].x += 75; + this->entitat->frames[frame].y = 20 + (y * 15); + frame++; + } + } + // Animacions + this->entitat->num_animacions = 4; + this->entitat->animacions = (Animacio*)malloc(this->entitat->num_animacions * sizeof(Animacio)); + for (int i = 0; i < 4; i++) { + this->entitat->animacions[i].num_frames = 8; + this->entitat->animacions[i].frames = (Uint8*)malloc(8); + this->entitat->animacions[i].frames[0] = 0 + (i * 5); + this->entitat->animacions[i].frames[1] = 1 + (i * 5); + this->entitat->animacions[i].frames[2] = 2 + (i * 5); + this->entitat->animacions[i].frames[3] = 1 + (i * 5); + this->entitat->animacions[i].frames[4] = 0 + (i * 5); + this->entitat->animacions[i].frames[5] = 3 + (i * 5); + this->entitat->animacions[i].frames[6] = 4 + (i * 5); + this->entitat->animacions[i].frames[7] = 3 + (i * 5); + } - this->cur_frame = 0; - this->o = rand()%4; - this->cycles_per_frame = 4; - this->next = NULL; - - if( this->dimoni ) { - if( x == 0 ) { - this->x = 150; - } else { - this->x = x; - } - if( y == 0 ) { - if( this->sam->y > 100 ) { - this->y = 30; - } else { - this->y = 170; - } - } else { - this->y = y; - } - this->engendro = new Engendro( gfx, this->x, this->y ); - } else { - this->engendro = NULL; - this->x = x; - this->y = y; - } + this->cur_frame = 0; + this->o = rand() % 4; + this->cycles_per_frame = 4; + this->next = NULL; + if (this->dimoni) { + if (x == 0) { + this->x = 150; + } else { + this->x = x; + } + if (y == 0) { + if (this->sam->y > 100) { + this->y = 30; + } else { + this->y = 170; + } + } else { + this->y = y; + } + this->engendro = new Engendro(gfx, this->x, this->y); + } else { + this->engendro = NULL; + this->x = x; + this->y = y; + } } void Momia::clear() { - if( this->next != NULL ) this->next->clear(); - if( this->engendro != NULL) delete this->engendro; - delete this->next; + if (this->next != NULL) this->next->clear(); + if (this->engendro != NULL) delete this->engendro; + delete this->next; } void Momia::draw() { + if (this->engendro != NULL) { + this->engendro->draw(); + } else { + Sprite::draw(); - if( this->engendro != NULL ) { - this->engendro->draw(); - } else { - - Sprite::draw(); - - if( info::num_piramide == 4 ) { - if( ( JG_GetCycleCounter() % 40 ) < 20 ) { - JD8_BlitCK(this->x, this->y, this->gfx, 220, 80, 15, 15, 255 ); - } else { - JD8_BlitCK(this->x, this->y, this->gfx, 235, 80, 15, 15, 255 ); - } - } - } - if( this->next != NULL ) this->next->draw(); + if (info::num_piramide == 4) { + if ((JG_GetCycleCounter() % 40) < 20) { + JD8_BlitCK(this->x, this->y, this->gfx, 220, 80, 15, 15, 255); + } else { + JD8_BlitCK(this->x, this->y, this->gfx, 235, 80, 15, 15, 255); + } + } + } + if (this->next != NULL) this->next->draw(); } bool Momia::update() { + bool morta = false; - bool morta = false; + if (this->engendro != NULL) { + if (this->engendro->update()) { + delete this->engendro; + this->engendro = NULL; + } + } else { + if (this->sam->o < 4 && (this->dimoni || info::num_piramide == 5 || JG_GetCycleCounter() % 2 == 0)) { + if ((this->x - 20) % 65 == 0 && (this->y - 30) % 35 == 0) { + if (this->dimoni) { + if (rand() % 2 == 0) { + if (this->x > this->sam->x) { + this->o = 3; + } else if (this->x < this->sam->x) { + this->o = 2; + } else if (this->y < this->sam->y) { + this->o = 0; + } else if (this->y > this->sam->y) { + this->o = 1; + } + } else { + if (this->y < this->sam->y) { + this->o = 0; + } else if (this->y > this->sam->y) { + this->o = 1; + } else if (this->x > this->sam->x) { + this->o = 3; + } else if (this->x < this->sam->x) { + this->o = 2; + } + } + } else { + this->o = rand() % 4; + } + } - if( this->engendro != NULL ) { - if( this->engendro->update() ) { - delete this->engendro; - this->engendro = NULL; - } - } else { - if( this->sam->o < 4 && ( this->dimoni || info::num_piramide == 5 || JG_GetCycleCounter()%2 == 0 ) ) { - - if( ( this->x - 20 ) % 65 == 0 && ( this->y - 30 ) % 35 == 0 ) { - if( this->dimoni ) { - if( rand()%2 == 0 ) { - if( this->x > this->sam->x ) { this->o = 3; } - else if( this->x < this->sam->x ) { this->o = 2; } - else if( this->y < this->sam->y ) { this->o = 0; } - else if( this->y > this->sam->y ) { this->o = 1; } - } else { - if( this->y < this->sam->y ) { this->o = 0; } - else if( this->y > this->sam->y ) { this->o = 1; } - else if( this->x > this->sam->x ) { this->o = 3; } - else if( this->x < this->sam->x ) { this->o = 2; } - } - } else { - this->o = rand()%4; - } - } + switch (this->o) { + case 0: + if (y < 170) this->y++; + break; + case 1: + if (y > 30) this->y--; + break; + case 2: + if (x < 280) this->x++; + break; + case 3: + if (x > 20) this->x--; + break; + } - switch( this->o ) { - case 0: - if( y < 170 ) this->y++; - break; - case 1: - if( y > 30 ) this->y--; - break; - case 2: - if( x < 280 ) this->x++; - break; - case 3: - if( x > 20 ) this->x--; - break; - } + if (JG_GetCycleCounter() % this->cycles_per_frame == 0) { + this->cur_frame++; + if (this->cur_frame == this->entitat->animacions[this->o].num_frames) this->cur_frame = 0; + } - if( JG_GetCycleCounter() % this->cycles_per_frame == 0 ) { - this->cur_frame++; - if( this->cur_frame == this->entitat->animacions[this->o].num_frames ) this->cur_frame = 0; - } + if (this->x > (this->sam->x - 7) && this->x < (this->sam->x + 7) && this->y > (this->sam->y - 7) && this->y < (this->sam->y + 7)) { + morta = true; + if (this->sam->pergami) { + this->sam->pergami = false; + } else { + info::vida--; + if (info::vida == 0) this->sam->o = 5; + } + } + } + } - if( this->x > ( this->sam->x - 7 ) && this->x < ( this->sam->x + 7 ) && this->y > ( this->sam->y - 7 ) && this->y < ( this->sam->y + 7 ) ) { - morta = true; - if( this->sam->pergami ) { - this->sam->pergami = false; - } else { - info::vida--; - if( info::vida == 0 ) this->sam->o = 5; - } - } - } - } + if (this->next != NULL) { + if (this->next->update()) { + Momia* seguent = this->next->next; + delete this->next; + this->next = seguent; + info::momies--; + } + } - if( this->next != NULL ) { - if( this->next->update() ) { - Momia* seguent = this->next->next; - delete this->next; - this->next = seguent; - info::momies--; - } - } - - return morta; + return morta; } -void Momia::insertar( Momia* momia ) { - - if( this->next != NULL ) { - this->next->insertar( momia ); - } else { - this->next = momia; - } +void Momia::insertar(Momia* momia) { + if (this->next != NULL) { + this->next->insertar(momia); + } else { + this->next = momia; + } } diff --git a/source/game/momia.hpp b/source/game/momia.hpp index e06a8de..4b3b124 100644 --- a/source/game/momia.hpp +++ b/source/game/momia.hpp @@ -1,27 +1,23 @@ #pragma once -#include "game/sprite.hpp" -#include "game/prota.hpp" #include "game/engendro.hpp" #include "game/info.hpp" +#include "game/prota.hpp" +#include "game/sprite.hpp" class Momia : public Sprite { + public: + Momia(JD8_Surface gfx, bool dimoni, Uint16 x, Uint16 y, Prota* sam); -public: + void clear(); + void draw(); + bool update(); + void insertar(Momia* momia); - Momia( JD8_Surface gfx, bool dimoni, Uint16 x, Uint16 y, Prota* sam ); - - void clear(); - void draw(); - bool update(); - void insertar( Momia* momia ); - - bool dimoni; - Momia* next; - -protected: - - Prota* sam; - Engendro* engendro; + bool dimoni; + Momia* next; + protected: + Prota* sam; + Engendro* engendro; }; diff --git a/source/game/prota.cpp b/source/game/prota.cpp index 043461f..62f99ce 100644 --- a/source/game/prota.cpp +++ b/source/game/prota.cpp @@ -1,150 +1,152 @@ #include "game/prota.hpp" -#include "core/jgame.hpp" -#include "core/jinput.hpp" + #include -Prota::Prota( JD8_Surface gfx ) : Sprite( gfx ) { +#include "core/jgame.hpp" +#include "core/jinput.hpp" - this->entitat = (Entitat*)malloc( sizeof( Entitat ) ); - this->entitat->num_frames = 82; - this->entitat->frames = (Frame*)malloc( this->entitat->num_frames * sizeof( Frame ) ); - Uint16 frame = 0; - for( int y = 0; y < 4; y++ ) { - for( int x = 0; x < 5; x++ ) { - this->entitat->frames[frame].w = 15; - this->entitat->frames[frame].h = 15; - if( info::num_piramide == 4 ) this->entitat->frames[frame].h -= 5; - this->entitat->frames[frame].x = x*15; - this->entitat->frames[frame].y = 20+(y*15); - frame++; +Prota::Prota(JD8_Surface gfx) + : Sprite(gfx) { + this->entitat = (Entitat*)malloc(sizeof(Entitat)); + this->entitat->num_frames = 82; + this->entitat->frames = (Frame*)malloc(this->entitat->num_frames * sizeof(Frame)); + Uint16 frame = 0; + for (int y = 0; y < 4; y++) { + for (int x = 0; x < 5; x++) { + this->entitat->frames[frame].w = 15; + this->entitat->frames[frame].h = 15; + if (info::num_piramide == 4) this->entitat->frames[frame].h -= 5; + this->entitat->frames[frame].x = x * 15; + this->entitat->frames[frame].y = 20 + (y * 15); + frame++; + } + } + for (int y = 95; y < 185; y += 30) { + for (int x = 60; x < 315; x += 15) { + if (x != 300 || y != 155) { + this->entitat->frames[frame].w = 15; + this->entitat->frames[frame].h = 30; + if (info::num_piramide == 4) this->entitat->frames[frame].h -= 5; + this->entitat->frames[frame].x = x; + this->entitat->frames[frame].y = y; + frame++; + } + } + } + for (int y = 20; y < 50; y += 15) { + for (int x = 225; x < 315; x += 15) { + this->entitat->frames[frame].w = 15; + this->entitat->frames[frame].h = 15; + if (info::num_piramide == 4) this->entitat->frames[frame].h -= 5; + this->entitat->frames[frame].x = x; + this->entitat->frames[frame].y = y; + frame++; + } + } - } - } - for( int y = 95; y < 185; y+=30 ) { - for( int x = 60; x < 315; x+=15 ) { - if( x != 300 || y != 155 ) { - this->entitat->frames[frame].w = 15; - this->entitat->frames[frame].h = 30; - if( info::num_piramide == 4 ) this->entitat->frames[frame].h -= 5; - this->entitat->frames[frame].x = x; - this->entitat->frames[frame].y = y; - frame++; - } - } - } - for( int y = 20; y < 50; y+=15 ) { - for( int x = 225; x < 315; x+=15 ) { - this->entitat->frames[frame].w = 15; - this->entitat->frames[frame].h = 15; - if( info::num_piramide == 4 ) this->entitat->frames[frame].h -= 5; - this->entitat->frames[frame].x = x; - this->entitat->frames[frame].y = y; - frame++; - } - } + this->entitat->num_animacions = 6; + this->entitat->animacions = (Animacio*)malloc(this->entitat->num_animacions * sizeof(Animacio)); + for (int i = 0; i < 4; i++) { + this->entitat->animacions[i].num_frames = 8; + this->entitat->animacions[i].frames = (Uint8*)malloc(8); + this->entitat->animacions[i].frames[0] = 0 + (i * 5); + this->entitat->animacions[i].frames[1] = 1 + (i * 5); + this->entitat->animacions[i].frames[2] = 2 + (i * 5); + this->entitat->animacions[i].frames[3] = 1 + (i * 5); + this->entitat->animacions[i].frames[4] = 0 + (i * 5); + this->entitat->animacions[i].frames[5] = 3 + (i * 5); + this->entitat->animacions[i].frames[6] = 4 + (i * 5); + this->entitat->animacions[i].frames[7] = 3 + (i * 5); + } + this->entitat->animacions[4].num_frames = 50; + this->entitat->animacions[4].frames = (Uint8*)malloc(50); + for (int i = 0; i < 50; i++) this->entitat->animacions[4].frames[i] = i + 20; - this->entitat->num_animacions = 6; - this->entitat->animacions = (Animacio*)malloc( this->entitat->num_animacions * sizeof( Animacio ) ); - for( int i = 0; i < 4; i++ ) { - this->entitat->animacions[i].num_frames = 8; - this->entitat->animacions[i].frames = (Uint8*)malloc( 8 ); - this->entitat->animacions[i].frames[0] = 0 + (i*5); - this->entitat->animacions[i].frames[1] = 1 + (i*5); - this->entitat->animacions[i].frames[2] = 2 + (i*5); - this->entitat->animacions[i].frames[3] = 1 + (i*5); - this->entitat->animacions[i].frames[4] = 0 + (i*5); - this->entitat->animacions[i].frames[5] = 3 + (i*5); - this->entitat->animacions[i].frames[6] = 4 + (i*5); - this->entitat->animacions[i].frames[7] = 3 + (i*5); - } - this->entitat->animacions[4].num_frames = 50; - this->entitat->animacions[4].frames = (Uint8*)malloc( 50 ); - for( int i = 0; i < 50; i++ ) this->entitat->animacions[4].frames[i] = i + 20; + this->entitat->animacions[5].num_frames = 48; + this->entitat->animacions[5].frames = (Uint8*)malloc(48); + for (int i = 0; i < 12; i++) this->entitat->animacions[5].frames[i] = i + 70; + for (int i = 12; i < 48; i++) this->entitat->animacions[5].frames[i] = 81; - this->entitat->animacions[5].num_frames = 48; - this->entitat->animacions[5].frames = (Uint8*)malloc( 48 ); - for( int i = 0; i < 12; i++ ) this->entitat->animacions[5].frames[i] = i + 70; - for (int i = 12; i < 48; i++) this->entitat->animacions[5].frames[i] = 81; - - this->cur_frame = 0; - this->x = 150; - this->y = 30; - this->o = 0; - this->cycles_per_frame = 4; - this->pergami = false; - this->frame_pejades = 0; + this->cur_frame = 0; + this->x = 150; + this->y = 30; + this->o = 0; + this->cycles_per_frame = 4; + this->pergami = false; + this->frame_pejades = 0; } void Prota::draw() { + Sprite::draw(); - Sprite::draw(); - - if( info::num_piramide == 4 && this->o != 4) { - if( ( JG_GetCycleCounter() % 40 ) < 20 ) { - JD8_BlitCK(this->x, this->y, this->gfx, 220, 80, 15, 15, 255 ); - } else { - JD8_BlitCK(this->x, this->y, this->gfx, 235, 80, 15, 15, 255 ); - } - } + if (info::num_piramide == 4 && this->o != 4) { + if ((JG_GetCycleCounter() % 40) < 20) { + JD8_BlitCK(this->x, this->y, this->gfx, 220, 80, 15, 15, 255); + } else { + JD8_BlitCK(this->x, this->y, this->gfx, 235, 80, 15, 15, 255); + } + } } Uint8 Prota::update() { + Uint8 eixir = 0; - Uint8 eixir = 0; + if (this->o < 4) { + Uint8 dir = 4; + if (JI_KeyPressed(SDL_SCANCODE_DOWN)) { + if ((this->x - 20) % 65 == 0) this->o = 0; + dir = this->o; + } + if (JI_KeyPressed(SDL_SCANCODE_UP)) { + if ((this->x - 20) % 65 == 0) this->o = 1; + dir = this->o; + } + if (JI_KeyPressed(SDL_SCANCODE_RIGHT)) { + if ((this->y - 30) % 35 == 0) this->o = 2; + dir = this->o; + } + if (JI_KeyPressed(SDL_SCANCODE_LEFT)) { + if ((this->y - 30) % 35 == 0) this->o = 3; + dir = this->o; + } - if( this->o < 4 ) { - Uint8 dir = 4; - if ( JI_KeyPressed(SDL_SCANCODE_DOWN) ) { - if( (this->x-20)%65 == 0 ) this->o = 0; - dir = this->o; - } - if ( JI_KeyPressed(SDL_SCANCODE_UP) ) { - if( (this->x-20)%65 == 0 ) this->o = 1; - dir = this->o; - } - if( JI_KeyPressed( SDL_SCANCODE_RIGHT ) ) { - if( (this->y-30)%35 == 0 ) this->o = 2; - dir = this->o; - } - if( JI_KeyPressed( SDL_SCANCODE_LEFT ) ) { - if( (this->y-30)%35 == 0 ) this->o = 3; - dir = this->o; - } + switch (dir) { + case 0: + if (this->y < 170) this->y++; + break; + case 1: + if (this->y > 30) this->y--; + break; + case 2: + if (this->x < 280) this->x++; + break; + case 3: + if (this->x > 20) this->x--; + break; + } - switch( dir ) { - case 0: - if( this->y < 170 ) this->y++; - break; - case 1: - if( this->y > 30 ) this->y--; - break; - case 2: - if( this->x < 280 ) this->x++; - break; - case 3: - if( this->x > 20 ) this->x--; - break; - } - - if( dir == 4 ) { - this->cur_frame = 0; - } else { - this->frame_pejades++; - if( this->frame_pejades == 15 ) this->frame_pejades = 0; - if( JG_GetCycleCounter() % this->cycles_per_frame == 0 ) { - this->cur_frame++; - if( this->cur_frame == this->entitat->animacions[this->o].num_frames ) this->cur_frame = 0; - } - } - eixir = false; - } else { - if( JG_GetCycleCounter() % this->cycles_per_frame == 0 ) { - this->cur_frame++; - if( this->cur_frame == this->entitat->animacions[this->o].num_frames ) { - if( this->o == 4 ) { eixir = 1; } else { eixir = 2; } - } - } - } - return eixir; + if (dir == 4) { + this->cur_frame = 0; + } else { + this->frame_pejades++; + if (this->frame_pejades == 15) this->frame_pejades = 0; + if (JG_GetCycleCounter() % this->cycles_per_frame == 0) { + this->cur_frame++; + if (this->cur_frame == this->entitat->animacions[this->o].num_frames) this->cur_frame = 0; + } + } + eixir = false; + } else { + if (JG_GetCycleCounter() % this->cycles_per_frame == 0) { + this->cur_frame++; + if (this->cur_frame == this->entitat->animacions[this->o].num_frames) { + if (this->o == 4) { + eixir = 1; + } else { + eixir = 2; + } + } + } + } + return eixir; } - diff --git a/source/game/prota.hpp b/source/game/prota.hpp index 71143b7..fe7b08c 100644 --- a/source/game/prota.hpp +++ b/source/game/prota.hpp @@ -1,21 +1,17 @@ #pragma once -#include "game/sprite.hpp" #include "game/info.hpp" +#include "game/sprite.hpp" class Prota : public Sprite { + public: + Prota(JD8_Surface gfx); -public: - - Prota( JD8_Surface gfx ); - - void draw(); - Uint8 update(); - - Uint8 frame_pejades; - bool pergami; - -protected: + void draw(); + Uint8 update(); + Uint8 frame_pejades; + bool pergami; + protected: }; diff --git a/source/game/sprite.cpp b/source/game/sprite.cpp index 52fa448..2bb9e9f 100644 --- a/source/game/sprite.cpp +++ b/source/game/sprite.cpp @@ -1,38 +1,26 @@ #include "game/sprite.hpp" + #include -Sprite::Sprite( JD8_Surface gfx ) { - - this->gfx = gfx; - this->entitat = NULL; - +Sprite::Sprite(JD8_Surface gfx) { + this->gfx = gfx; + this->entitat = NULL; } Sprite::~Sprite(void) { + if (this->entitat != NULL) { + if (this->entitat->num_frames > 0) free(this->entitat->frames); - if( this->entitat != NULL ) { - - if( this->entitat->num_frames > 0 ) free( this->entitat->frames ); - - if( this->entitat->num_animacions > 0 ) { - for( int i = 0; i < this->entitat->num_animacions; i++ ) { - if( this->entitat->animacions[i].num_frames > 0 ) free( this->entitat->animacions[i].frames ); - } - } - - free( this->entitat ); - } + if (this->entitat->num_animacions > 0) { + for (int i = 0; i < this->entitat->num_animacions; i++) { + if (this->entitat->animacions[i].num_frames > 0) free(this->entitat->animacions[i].frames); + } + } + free(this->entitat); + } } void Sprite::draw() { - - JD8_BlitCK( this->x, this->y, this->gfx, this->entitat->frames[this->entitat->animacions[this->o].frames[this->cur_frame]].x, - this->entitat->frames[this->entitat->animacions[this->o].frames[this->cur_frame]].y, - this->entitat->frames[this->entitat->animacions[this->o].frames[this->cur_frame]].w, - this->entitat->frames[this->entitat->animacions[this->o].frames[this->cur_frame]].h, - 255); - + JD8_BlitCK(this->x, this->y, this->gfx, this->entitat->frames[this->entitat->animacions[this->o].frames[this->cur_frame]].x, this->entitat->frames[this->entitat->animacions[this->o].frames[this->cur_frame]].y, this->entitat->frames[this->entitat->animacions[this->o].frames[this->cur_frame]].w, this->entitat->frames[this->entitat->animacions[this->o].frames[this->cur_frame]].h, 255); } - - diff --git a/source/game/sprite.hpp b/source/game/sprite.hpp index da930d2..1ea203c 100644 --- a/source/game/sprite.hpp +++ b/source/game/sprite.hpp @@ -3,42 +3,38 @@ #include "core/jdraw8.hpp" struct Frame { - Uint16 x; - Uint16 y; - Uint16 w; - Uint16 h; + Uint16 x; + Uint16 y; + Uint16 w; + Uint16 h; }; struct Animacio { - Uint8 num_frames; - Uint8* frames; + Uint8 num_frames; + Uint8* frames; }; struct Entitat { - Uint8 num_frames; - Frame* frames; - Uint8 num_animacions; - Animacio* animacions; + Uint8 num_frames; + Frame* frames; + Uint8 num_animacions; + Animacio* animacions; }; class Sprite { + public: + Sprite(JD8_Surface gfx); + ~Sprite(void); -public: + void draw(); - Sprite( JD8_Surface gfx ); - ~Sprite(void); - - void draw(); - - Entitat* entitat; - Uint8 cur_frame; - Uint16 x; - Uint16 y; - Uint16 o; - -protected: - - JD8_Surface gfx; - Uint8 cycles_per_frame; + Entitat* entitat; + Uint8 cur_frame; + Uint16 x; + Uint16 y; + Uint16 o; + protected: + JD8_Surface gfx; + Uint8 cycles_per_frame; }; diff --git a/source/main.cpp b/source/main.cpp index 53a232e..0742c22 100644 --- a/source/main.cpp +++ b/source/main.cpp @@ -1,67 +1,67 @@ -#include "core/jgame.hpp" -#include "core/jdraw8.hpp" +#include +#include + #include "core/jail_audio.hpp" +#include "core/jdraw8.hpp" #include "core/jfile.hpp" +#include "core/jgame.hpp" #include "game/defines.hpp" #include "game/info.hpp" #include "game/modulegame.hpp" #include "game/modulesequence.hpp" #include "game/options.hpp" -#include -#include -int main( int argc, char* args[] ) { +int main(int argc, char* args[]) { + srand(unsigned(time(NULL))); - srand( unsigned(time(NULL)) ); + // Crea la carpeta de configuració i carrega les opcions + file_setconfigfolder("jailgames/aee"); + Options::setConfigFile(std::string(file_getconfigfolder()) + "config.yaml"); + Options::loadFromFile(); - // Crea la carpeta de configuració i carrega les opcions - file_setconfigfolder("jailgames/aee"); - Options::setConfigFile(std::string(file_getconfigfolder()) + "config.yaml"); - Options::loadFromFile(); + JG_Init(); + JD8_Init(Texts::WINDOW_TITLE); + JA_Init(48000, SDL_AUDIO_S16, 2); - JG_Init(); - JD8_Init(Texts::WINDOW_TITLE); - JA_Init(48000, SDL_AUDIO_S16, 2); + info::num_habitacio = Options::game.habitacio_inicial; + info::num_piramide = Options::game.piramide_inicial; + info::diners = 0; + info::diamants = 0; + info::vida = Options::game.vides; + info::momies = 0; + info::nou_personatge = false; + info::pepe_activat = false; - info::num_habitacio = Options::game.habitacio_inicial; - info::num_piramide = Options::game.piramide_inicial; - info::diners = 0; - info::diamants = 0; - info::vida = Options::game.vides; - info::momies = 0; - info::nou_personatge = false; - info::pepe_activat = false; + FILE* ini = fopen("trick.ini", "rb"); + if (ini != NULL) { + info::nou_personatge = true; + fclose(ini); + } - FILE* ini = fopen("trick.ini", "rb"); - if (ini != NULL) { - info::nou_personatge = true; - fclose(ini); - } + int gameState = 1; - int gameState = 1; + while (gameState != -1) { + switch (gameState) { + case 0: + ModuleGame* moduleGame; + moduleGame = new ModuleGame(); + gameState = moduleGame->Go(); + delete moduleGame; + break; + case 1: + ModuleSequence* moduleSequence; + moduleSequence = new ModuleSequence(); + gameState = moduleSequence->Go(); + delete moduleSequence; + break; + } + } - while (gameState != -1) { - switch (gameState) { - case 0: - ModuleGame* moduleGame; - moduleGame = new ModuleGame(); - gameState = moduleGame->Go(); - delete moduleGame; - break; - case 1: - ModuleSequence* moduleSequence; - moduleSequence = new ModuleSequence(); - gameState = moduleSequence->Go(); - delete moduleSequence; - break; - } - } + Options::saveToFile(); - Options::saveToFile(); + JA_Quit(); + JD8_Quit(); + JG_Finalize(); - JA_Quit(); - JD8_Quit(); - JG_Finalize(); - - return 0; + return 0; }