Versió 1.1
This commit is contained in:
116
PasswordController.cpp
Normal file
116
PasswordController.cpp
Normal file
@@ -0,0 +1,116 @@
|
||||
#include "PasswordController.h"
|
||||
#include "const.h"
|
||||
#include "fileManager.h"
|
||||
|
||||
PasswordController::PasswordController(DrawManager *p_drawManager, InputManager *p_inputManager, MusicManager *p_musicManager) {
|
||||
drawManager = p_drawManager;
|
||||
inputManager = p_inputManager;
|
||||
musicManager = p_musicManager;
|
||||
}
|
||||
|
||||
PasswordController::~PasswordController(void) {
|
||||
}
|
||||
|
||||
bool PasswordController::Init() {
|
||||
fondo = drawManager->LoadBitmap("prefase.gif");
|
||||
cursor = drawManager->LoadFont("cursor.gif");
|
||||
font = drawManager->LoadFont("fuente1.gif");
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void PasswordController::Go(GameInfo *gameInfo) {
|
||||
bool salir = false;
|
||||
char tecla = -1;
|
||||
char password[11] = " ";
|
||||
char indice = 0;
|
||||
|
||||
if ( !Init() ) { salir = true; gameInfo->estado = ESTADO_SALIR; }
|
||||
|
||||
drawManager->Blit(0,0, fondo);
|
||||
drawManager->Print(95, 80, font, 7, 5, "ESCRIU EL PASSWORD");
|
||||
drawManager->FadeIn();
|
||||
|
||||
while ( !salir ) {
|
||||
inputManager->Update();
|
||||
|
||||
drawManager->Blit(0,0, fondo);
|
||||
drawManager->Print(95, 80, font, 7, 5, "ESCRIU EL PASSWORD");
|
||||
drawManager->Print(123, 140, font, 7, 5, password);
|
||||
drawManager->Flip();
|
||||
|
||||
if (inputManager->eixir) {
|
||||
gameInfo->estado = ESTADO_SALIR;
|
||||
salir = true;
|
||||
}
|
||||
|
||||
if (inputManager->cualquierTecla && tecla == -1) {
|
||||
if (inputManager->TeclaPulsada(SDLK_BACKSPACE) && indice > 0) {
|
||||
indice--;
|
||||
password[indice] = 32;
|
||||
tecla = SDLK_BACKSPACE;
|
||||
} else {
|
||||
tecla = ObtenerTecla();
|
||||
if (tecla != -1) {
|
||||
password[indice] = tecla;
|
||||
indice++;
|
||||
if (indice == 10) {
|
||||
gameInfo->fase = ObtenerFaseDePassword(password);
|
||||
gameInfo->estado = ESTADO_SEQUENCIA;
|
||||
salir = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (inputManager->teclaSoltada) {
|
||||
tecla = -1;
|
||||
}
|
||||
}
|
||||
drawManager->FadeOut();
|
||||
}
|
||||
|
||||
char PasswordController::ObtenerTecla() {
|
||||
char tecla = -1;
|
||||
for (int i=48; i<=57; i++) {
|
||||
if (inputManager->TeclaPulsada(i)) tecla = i;
|
||||
}
|
||||
for (int i=97; i<=122; i++) {
|
||||
if (inputManager->TeclaPulsada(i)) tecla = i-32;
|
||||
}
|
||||
return tecla;
|
||||
}
|
||||
|
||||
int PasswordController::ObtenerFaseDePassword(char *password) {
|
||||
int filesize = 0;
|
||||
char *buffer = GetBufferFromResource("offsets.bal", &filesize);
|
||||
|
||||
int punter = 0;
|
||||
|
||||
bool salir = false;
|
||||
char passFile[11] = " ";
|
||||
int numPassword = 0;
|
||||
|
||||
while ( numPassword < 30 && !salir ) {
|
||||
for (int i=0;i<10;i++) {
|
||||
punter++;
|
||||
passFile[i] = buffer[punter] - (101+i);
|
||||
}
|
||||
punter++;
|
||||
|
||||
salir = true;
|
||||
for (int i=0;i<10;i++) {
|
||||
if (passFile[i] != password[i]) salir = false;
|
||||
}
|
||||
numPassword++;
|
||||
}
|
||||
|
||||
if (!salir) numPassword = 0;
|
||||
|
||||
return numPassword;
|
||||
}
|
||||
|
||||
void PasswordController::Finalize(void) {
|
||||
SDL_FreeSurface(fondo);
|
||||
SDL_FreeSurface(cursor);
|
||||
SDL_FreeSurface(font);
|
||||
}
|
||||
Reference in New Issue
Block a user