Compare commits
2 Commits
262761e832
...
aa6b79c9ac
| Author | SHA1 | Date | |
|---|---|---|---|
| aa6b79c9ac | |||
| 4c430ec512 |
3
.gitignore
vendored
3
.gitignore
vendored
@@ -1,4 +1,5 @@
|
||||
.vscode/*
|
||||
*.exe
|
||||
arounders
|
||||
arounders_debug
|
||||
arounders_debug
|
||||
*.dll
|
||||
@@ -6,6 +6,49 @@ namespace gamestate
|
||||
{
|
||||
namespace play
|
||||
{
|
||||
|
||||
draw::surface *fondo = nullptr;
|
||||
draw::surface *mapa = nullptr;
|
||||
|
||||
void carregarMapa();
|
||||
|
||||
void init()
|
||||
{
|
||||
// Carregar el fondo que toque i la seua paleta (que nomes usa els colors del 128 al 255)
|
||||
char arxiuFondo[10] = "BKG00.GIF";
|
||||
arxiuFondo[4] = (game::getConfig("fase") % 10) + 48;
|
||||
fondo = draw::loadSurface(arxiuFondo, true);
|
||||
|
||||
// Carregar la paleta estandar
|
||||
uint32_t *pal = draw::loadPalette("tiles.gif");
|
||||
draw::setPalette(pal, 128);
|
||||
|
||||
// [TODO] Carreagar la resta de gifs que facen falta
|
||||
//font1 = drawManager->LoadFont("fuente1.gif");
|
||||
//cursor = drawManager->LoadFont("cursor.gif");
|
||||
//puerta = drawManager->LoadFont("puerta.gif");
|
||||
//marca = drawManager->LoadFont("marca.gif");
|
||||
//menu = drawManager->LoadFont("menu.gif");
|
||||
|
||||
// [TODO] CREAR AIGUA PROCESSOR
|
||||
// [TODO] CREAR MARCADOR PROCESSOR
|
||||
|
||||
carregarMapa();
|
||||
}
|
||||
|
||||
void carregarMapa()
|
||||
{
|
||||
FILE *f = file::getFilePointer("mapes.txt");
|
||||
|
||||
const int fase = game::getConfig("fase");
|
||||
int val;
|
||||
do {
|
||||
fscanf(f, "LEVEL %i", &val);
|
||||
} while (val != fase);
|
||||
|
||||
int tileset=0;
|
||||
fscanf(f, "tileset = %i", &tileset);
|
||||
|
||||
fclose(f);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -140,7 +140,7 @@ namespace gamestate
|
||||
char *ObtenerPasswordDeFase()
|
||||
{
|
||||
int filesize = 0;
|
||||
const char *buffer = file::getFileBuffer("offsets.bal", filesize);
|
||||
const char *buffer = file::getFileBuffer("offsets.bal", &filesize);
|
||||
|
||||
int punter = (game::getConfig("fase")-1)*11;
|
||||
|
||||
|
||||
@@ -39,6 +39,8 @@ namespace gamestate
|
||||
|
||||
bool loop()
|
||||
{
|
||||
static bool salir = false;
|
||||
|
||||
const int x = input::mouseX();
|
||||
const int y = input::mouseY();
|
||||
|
||||
@@ -63,13 +65,28 @@ namespace gamestate
|
||||
|
||||
draw::render();
|
||||
|
||||
if (draw::isfading()) return true;
|
||||
|
||||
if (salir)
|
||||
{
|
||||
salir = false;
|
||||
gamestate::play::init();
|
||||
return true;
|
||||
}
|
||||
|
||||
if (input::anyKeyPressed() || input::mouseBtn(1))
|
||||
{
|
||||
draw::fadeout();
|
||||
salir = true;
|
||||
return true;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void carregarMapa()
|
||||
{
|
||||
int filesize = 0;
|
||||
char *buffer = file::getFileBuffer("MAPES.BAL", filesize);
|
||||
char *buffer = file::getFileBuffer("MAPES.BAL", &filesize);
|
||||
|
||||
char *punter = buffer + (game::getConfig("fase") * 212) + 3;
|
||||
|
||||
|
||||
@@ -43,7 +43,7 @@ namespace gamestate
|
||||
}
|
||||
|
||||
int filesize;
|
||||
sequence_file = file::getFilePointer(filename, filesize);
|
||||
sequence_file = file::getFilePointer(filename, &filesize);
|
||||
|
||||
game::setState(&gamestate::sequence::loop);
|
||||
}
|
||||
@@ -87,26 +87,31 @@ namespace gamestate
|
||||
std::string command(text);
|
||||
|
||||
if (command=="ESPERAR") {
|
||||
int res = fscanf(sequence_file, "%i", &val);
|
||||
//int res =
|
||||
fscanf(sequence_file, "%i", &val);
|
||||
printf("ESPERAR %i\n", val);
|
||||
wait_until = SDL_GetTicks() + val;
|
||||
|
||||
} else if (command=="FADEIN") {
|
||||
int res = fscanf(sequence_file, " '%[^']'", text);
|
||||
//int res =
|
||||
fscanf(sequence_file, " '%[^']'", text);
|
||||
drawPic(text);
|
||||
draw::fadein();
|
||||
|
||||
} else if (command=="SHOW") {
|
||||
int res = fscanf(sequence_file, " '%[^']'", text);
|
||||
//int res =
|
||||
fscanf(sequence_file, " '%[^']'", text);
|
||||
drawPic(text);
|
||||
draw::render();
|
||||
|
||||
} else if (command=="PRINT") {
|
||||
int res = fscanf(sequence_file, " %i %i %i '%[^']'", &x, &y, &val, text);
|
||||
//int res =
|
||||
fscanf(sequence_file, " %i %i %i '%[^']'", &x, &y, &val, text);
|
||||
drawText(x, y, val, text);
|
||||
|
||||
} else if (command=="PLAYMUSIC") {
|
||||
int res = fscanf(sequence_file, " '%[^']'", text);
|
||||
//int res =
|
||||
fscanf(sequence_file, " '%[^']'", text);
|
||||
audio::loadMusic(text);
|
||||
audio::playMusic();
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@ namespace audio
|
||||
free(buffer);
|
||||
}
|
||||
int filesize=0;
|
||||
buffer = file::getFileBuffer(filename, filesize);
|
||||
buffer = file::getFileBuffer(filename, &filesize);
|
||||
music = Mix_LoadMUS_RW(SDL_RWFromMem(buffer, filesize), 1);
|
||||
|
||||
if (music==nullptr) return false;
|
||||
|
||||
@@ -114,7 +114,7 @@ namespace draw
|
||||
// Agafem un buffer de bytes de l'arxiu especificat
|
||||
// getFileBuffer() simplement ens torna el arxiu sencer dins de un array de char
|
||||
int size;
|
||||
uint8_t *buffer = (uint8_t *)file::getFileBuffer(filename, size);
|
||||
uint8_t *buffer = (uint8_t *)file::getFileBuffer(filename, &size);
|
||||
|
||||
// Si ens ha tornat nullptr, es que no l'ha trobat, tornem nosaltres també nullptr ja que no s'ha pogut crear la superficie
|
||||
if (buffer == nullptr)
|
||||
@@ -230,7 +230,7 @@ namespace draw
|
||||
// Agafem un buffer de bytes de l'arxiu especificat
|
||||
// getFileBuffer() simplement ens torna el arxiu sencer dins de un array de char
|
||||
int size;
|
||||
uint8_t *buffer = (uint8_t *)file::getFileBuffer(filename, size);
|
||||
uint8_t *buffer = (uint8_t *)file::getFileBuffer(filename, &size);
|
||||
|
||||
// Li passem el array del arxiu a LoadPalette. Ell ens torna un array de uint32_t amb la paleta
|
||||
// Van a ser 256 entrades de 32 bits, cada entrada es un color, amb el format 0xAARRGGBB
|
||||
|
||||
@@ -193,7 +193,7 @@ namespace file
|
||||
}
|
||||
|
||||
// Obté un "FILE*" al arxiu que se li demana, independentment de la font (arxius individual en carpeta, o arxiu de recursos)
|
||||
FILE *getFilePointer(const std::string resourcename, int &filesize, const bool binary)
|
||||
FILE *getFilePointer(const std::string resourcename, int *filesize, const bool binary)
|
||||
{
|
||||
// Si tenim configurat agafar els recursos de arxiu, pero encara no tenim la taula de continguts carregada...
|
||||
if (file_source == SOURCE_FILE and toc.size() == 0)
|
||||
@@ -231,7 +231,7 @@ namespace file
|
||||
}
|
||||
|
||||
// Agafem el tamany del recurs de la taula de continguts
|
||||
filesize = toc[count].size;
|
||||
if (filesize) *filesize = toc[count].size;
|
||||
|
||||
// obrim l'arxiu de recursos
|
||||
f = fopen(resource_filename.c_str(), binary ? "rb" : "r");
|
||||
@@ -252,7 +252,7 @@ namespace file
|
||||
// Si estem pillant els recursos de carpeta, simplement obrim el arxiu en questió i tornem el FILE* associat.
|
||||
f = fopen((resource_folder + resourcename).c_str(), binary ? "rb" : "r");
|
||||
fseek(f, 0, SEEK_END);
|
||||
filesize = ftell(f);
|
||||
if (filesize) *filesize = ftell(f);
|
||||
fseek(f, 0, SEEK_SET);
|
||||
}
|
||||
|
||||
@@ -261,20 +261,23 @@ namespace file
|
||||
}
|
||||
|
||||
// Obté un buffer de memòria en format "char*" del arxiu que se li demana, independentment de la font (arxius individual en carpeta, o arxiu de recursos)
|
||||
char *getFileBuffer(const std::string resourcename, int &filesize)
|
||||
char *getFileBuffer(const std::string resourcename, int *filesize)
|
||||
{
|
||||
int size;
|
||||
// Usem la funció anterior per a obtinde un FILE*, independentment de on pillem els recursos
|
||||
FILE *f = getFilePointer(resourcename, filesize, true);
|
||||
FILE *f = getFilePointer(resourcename, &size, true);
|
||||
|
||||
// Reservem memòria per al buffer
|
||||
char *buffer = (char *)malloc(filesize);
|
||||
char *buffer = (char *)malloc(size);
|
||||
|
||||
// llegim el contingut del arxiu i el fiquem en el buffer
|
||||
fread(buffer, filesize, 1, f);
|
||||
fread(buffer, size, 1, f);
|
||||
|
||||
// Tanquem l'arxiu
|
||||
fclose(f);
|
||||
|
||||
if (filesize) *filesize = size;
|
||||
|
||||
// Tornem el buffer. OJO! recordar alliberar-lo amb free(buffer) quan acabem amb ell.
|
||||
return buffer;
|
||||
}
|
||||
|
||||
@@ -28,14 +28,14 @@ namespace file
|
||||
/// @param filesize paràmetre de retorn. Ací es torna el tamany de l'arxiu
|
||||
/// @param binary si volem obrir el arxiu en format binary
|
||||
/// @return un punter FILE* al arxiu
|
||||
FILE *getFilePointer(const std::string resourcename, int &filesize, const bool binary = false);
|
||||
FILE *getFilePointer(const std::string resourcename, int *filesize = nullptr, const bool binary = false);
|
||||
|
||||
/// @brief Obté un buffer de memòria en format "char*" del arxiu que se li demana, independentment de la font (arxius individual en carpeta, o arxiu de recursos).
|
||||
/// @brief Recordar alliberar la memoria del buffer amb free(buffer) al acabar amb ell.
|
||||
/// @param resourcename el nom de l'arxiu del que volem obrindre el buffer
|
||||
/// @param filesize paràmetre de retorn. Ací es torna el tamany de l'arxiu
|
||||
/// @return un array de "filesize" bytes amb el contingut del arxiu
|
||||
char *getFileBuffer(const std::string resourcename, int &filesize);
|
||||
char *getFileBuffer(const std::string resourcename, int *filesize = nullptr);
|
||||
|
||||
// Funcions d'access a la configuració (clau = valor)
|
||||
// -----------------------------------------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user