git repos / blockattack-game

blame: source/code/main.cpp

normal view · raw

89c4a3a6 sago007 2008-08-29 14:32 1
/*
89c4a3a6 sago007 2008-08-29 14:32 2
Block Attack - Rise of the Blocks, SDL game, besed on Nintendo's Tetris Attack
89c4a3a6 sago007 2008-08-29 14:32 3
Copyright (C) 2008 Poul Sander
89c4a3a6 sago007 2008-08-29 14:32 4
89c4a3a6 sago007 2008-08-29 14:32 5
    This program is free software; you can redistribute it and/or modify
89c4a3a6 sago007 2008-08-29 14:32 6
    it under the terms of the GNU General Public License as published by
89c4a3a6 sago007 2008-08-29 14:32 7
    the Free Software Foundation; either version 2 of the License, or
89c4a3a6 sago007 2008-08-29 14:32 8
    (at your option) any later version.
89c4a3a6 sago007 2008-08-29 14:32 9
89c4a3a6 sago007 2008-08-29 14:32 10
    This program is distributed in the hope that it will be useful,
89c4a3a6 sago007 2008-08-29 14:32 11
    but WITHOUT ANY WARRANTY; without even the implied warranty of
89c4a3a6 sago007 2008-08-29 14:32 12
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
89c4a3a6 sago007 2008-08-29 14:32 13
    GNU General Public License for more details.
89c4a3a6 sago007 2008-08-29 14:32 14
89c4a3a6 sago007 2008-08-29 14:32 15
    You should have received a copy of the GNU General Public License
89c4a3a6 sago007 2008-08-29 14:32 16
    along with this program; if not, write to the Free Software
89c4a3a6 sago007 2008-08-29 14:32 17
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
89c4a3a6 sago007 2008-08-29 14:32 18
89c4a3a6 sago007 2008-08-29 14:32 19
    Poul Sander
89c4a3a6 sago007 2008-08-29 14:32 20
    R�vehjvej 36, V. 1111
89c4a3a6 sago007 2008-08-29 14:32 21
    2800 Kgs. Lyngby
89c4a3a6 sago007 2008-08-29 14:32 22
    DENMARK
89c4a3a6 sago007 2008-08-29 14:32 23
    blockattack@poulsander.com
89c4a3a6 sago007 2008-08-29 14:32 24
    http://blockattack.sf.net
89c4a3a6 sago007 2008-08-29 14:32 25
*/
89c4a3a6 sago007 2008-08-29 14:32 26
89c4a3a6 sago007 2008-08-29 14:32 27
#define VERSION_NUMBER "version 1.4.0 BETA"
89c4a3a6 sago007 2008-08-29 14:32 28
89c4a3a6 sago007 2008-08-29 14:32 29
//If DEBUG is defined: AI info and FPS will be written to screen
89c4a3a6 sago007 2008-08-29 14:32 30
//#define DEBUG
89c4a3a6 sago007 2008-08-29 14:32 31
89c4a3a6 sago007 2008-08-29 14:32 32
//If NETWORK id defined: enet will be used
89c4a3a6 sago007 2008-08-29 14:32 33
#define NETWORK
89c4a3a6 sago007 2008-08-29 14:32 34
89c4a3a6 sago007 2008-08-29 14:32 35
//Macros to convert surfaces (for faster drawing)
89c4a3a6 sago007 2008-08-29 14:32 36
#define CONVERT(n) tmp = SDL_DisplayFormat(n); SDL_FreeSurface(n); n = tmp
89c4a3a6 sago007 2008-08-29 14:32 37
#define CONVERTA(n) tmp = SDL_DisplayFormatAlpha(n); SDL_FreeSurface(n); n = tmp
89c4a3a6 sago007 2008-08-29 14:32 38
89c4a3a6 sago007 2008-08-29 14:32 39
#include <iostream>
89c4a3a6 sago007 2008-08-29 14:32 40
#include <stdlib.h>
89c4a3a6 sago007 2008-08-29 14:32 41
#include <time.h>           //Used for srand()
89c4a3a6 sago007 2008-08-29 14:32 42
#include <sstream>
89c4a3a6 sago007 2008-08-29 14:32 43
#include <string>
89c4a3a6 sago007 2008-08-29 14:32 44
#include "SDL.h"            //The SDL libary, used for most things
89c4a3a6 sago007 2008-08-29 14:32 45
#include <SDL_mixer.h>      //Used for sound & music
89c4a3a6 sago007 2008-08-29 14:32 46
#include <SDL_image.h>      //To load PNG images!
89c4a3a6 sago007 2008-08-29 14:32 47
#include "ttfont.h"        //To use True Type Fonts in SDL
89c4a3a6 sago007 2008-08-29 14:32 48
//#include "config.h"
89c4a3a6 sago007 2008-08-29 14:32 49
#include <vector>
89c4a3a6 sago007 2008-08-29 14:32 50
89c4a3a6 sago007 2008-08-29 14:32 51
//if SHAREDIR is not used we look in current directory
89c4a3a6 sago007 2008-08-29 14:32 52
#ifndef SHAREDIR
89c4a3a6 sago007 2008-08-29 14:32 53
#define SHAREDIR "."
89c4a3a6 sago007 2008-08-29 14:32 54
#endif
89c4a3a6 sago007 2008-08-29 14:32 55
89c4a3a6 sago007 2008-08-29 14:32 56
89c4a3a6 sago007 2008-08-29 14:32 57
89c4a3a6 sago007 2008-08-29 14:32 58
//enet things
89c4a3a6 sago007 2008-08-29 14:32 59
#ifdef NETWORK
89c4a3a6 sago007 2008-08-29 14:32 60
#include "enet/enet.h"
89c4a3a6 sago007 2008-08-29 14:32 61
//#include "enet/list.h"
89c4a3a6 sago007 2008-08-29 14:32 62
//#include "enet/protocol.h"
89c4a3a6 sago007 2008-08-29 14:32 63
#endif
89c4a3a6 sago007 2008-08-29 14:32 64
//enet things end
89c4a3a6 sago007 2008-08-29 14:32 65
89c4a3a6 sago007 2008-08-29 14:32 66
#include "SFont.h"          //Used to write on screen
89c4a3a6 sago007 2008-08-29 14:32 67
#include "highscore.h"      //Stores highscores
89c4a3a6 sago007 2008-08-29 14:32 68
#include "ReadKeyboard.h"   //Reads text from keyboard
89c4a3a6 sago007 2008-08-29 14:32 69
#include "joypad.h"         //Used for joypads
89c4a3a6 sago007 2008-08-29 14:32 70
#include "listFiles.h"	    //Used to show files on screen
89c4a3a6 sago007 2008-08-29 14:32 71
#include "replay.h"			//Used for replays
89c4a3a6 sago007 2008-08-29 14:32 72
#include "stats.h"          //Saves general stats 
89c4a3a6 sago007 2008-08-29 14:32 73
//#include "editor/editorMain.hpp" //The level editor
89c4a3a6 sago007 2008-08-29 14:32 74
#include "uploadReplay.h"   //Takes care of everything libcurl related
89c4a3a6 sago007 2008-08-29 14:32 75
89c4a3a6 sago007 2008-08-29 14:32 76
#include "common.h"
89c4a3a6 sago007 2008-08-29 14:32 77
89c4a3a6 sago007 2008-08-29 14:32 78
/*******************************************************************************
89c4a3a6 sago007 2008-08-29 14:32 79
* All variables and constant has been moved to mainVars.hpp for the overview.  *
89c4a3a6 sago007 2008-08-29 14:32 80
*******************************************************************************/
89c4a3a6 sago007 2008-08-29 14:32 81
#include "mainVars.hpp"
89c4a3a6 sago007 2008-08-29 14:32 82
89c4a3a6 sago007 2008-08-29 14:32 83
void MakeBackground(int,int);
89c4a3a6 sago007 2008-08-29 14:32 84
89c4a3a6 sago007 2008-08-29 14:32 85
void closeAllMenus()
89c4a3a6 sago007 2008-08-29 14:32 86
{
89c4a3a6 sago007 2008-08-29 14:32 87
    bNewGameOpen=false;          //show sub menues
89c4a3a6 sago007 2008-08-29 14:32 88
    bOptionsOpen=false;          //Show OptionsMenu (Configure and Select Puzzle)
89c4a3a6 sago007 2008-08-29 14:32 89
    b1playerOpen=false;			//show submenu
89c4a3a6 sago007 2008-08-29 14:32 90
    b2playersOpen=false;
89c4a3a6 sago007 2008-08-29 14:32 91
    bReplayOpen = false;
89c4a3a6 sago007 2008-08-29 14:32 92
#ifdef NETWORK
89c4a3a6 sago007 2008-08-29 14:32 93
    bNetworkOpen = false;
89c4a3a6 sago007 2008-08-29 14:32 94
#endif
89c4a3a6 sago007 2008-08-29 14:32 95
    showOptions = false;
89c4a3a6 sago007 2008-08-29 14:32 96
    showHighscores = false;
89c4a3a6 sago007 2008-08-29 14:32 97
89c4a3a6 sago007 2008-08-29 14:32 98
}
89c4a3a6 sago007 2008-08-29 14:32 99
89c4a3a6 sago007 2008-08-29 14:32 100
89c4a3a6 sago007 2008-08-29 14:32 101
89c4a3a6 sago007 2008-08-29 14:32 102
//Because we use the SHAREDIR we need:
89c4a3a6 sago007 2008-08-29 14:32 103
SDL_Surface * IMG_Load2(char* path) {
89c4a3a6 sago007 2008-08-29 14:32 104
89c4a3a6 sago007 2008-08-29 14:32 105
    char * tmp;
89c4a3a6 sago007 2008-08-29 14:32 106
    SDL_Surface * ret=NULL;
89c4a3a6 sago007 2008-08-29 14:32 107
    tmp = (char*)malloc (sizeof(char)*(strlen(path)+strlen(sharedir)+2));
89c4a3a6 sago007 2008-08-29 14:32 108
    strcpy(tmp, sharedir);
89c4a3a6 sago007 2008-08-29 14:32 109
    strcat(tmp, "/");
89c4a3a6 sago007 2008-08-29 14:32 110
    strcat(tmp, path);
89c4a3a6 sago007 2008-08-29 14:32 111
#ifdef DEBUG
89c4a3a6 sago007 2008-08-29 14:32 112
    printf("loading %s\n",tmp);
89c4a3a6 sago007 2008-08-29 14:32 113
#endif
89c4a3a6 sago007 2008-08-29 14:32 114
    if (!(ret = IMG_Load(tmp)))
89c4a3a6 sago007 2008-08-29 14:32 115
        ret = IMG_Load(path);
89c4a3a6 sago007 2008-08-29 14:32 116
89c4a3a6 sago007 2008-08-29 14:32 117
    free(tmp);
89c4a3a6 sago007 2008-08-29 14:32 118
    return ret;
89c4a3a6 sago007 2008-08-29 14:32 119
}
89c4a3a6 sago007 2008-08-29 14:32 120
89c4a3a6 sago007 2008-08-29 14:32 121
//Function to replace an image (ie. for a theme). Return true if replacing
89c4a3a6 sago007 2008-08-29 14:32 122
bool reloadIMG(SDL_Surface **surface2replace, string replaceWith)
89c4a3a6 sago007 2008-08-29 14:32 123
{
89c4a3a6 sago007 2008-08-29 14:32 124
    string fullPath = SHAREDIR+(string)"/themes/"+replaceWith;
89c4a3a6 sago007 2008-08-29 14:32 125
    #ifdef DEBUG
89c4a3a6 sago007 2008-08-29 14:32 126
    cout << "Trying to load " << fullPath << endl;
89c4a3a6 sago007 2008-08-29 14:32 127
    #endif
89c4a3a6 sago007 2008-08-29 14:32 128
    SDL_Surface * temp = NULL;
89c4a3a6 sago007 2008-08-29 14:32 129
    temp = IMG_Load(fullPath.c_str());
89c4a3a6 sago007 2008-08-29 14:32 130
    if(temp) //If we loaded a new image
89c4a3a6 sago007 2008-08-29 14:32 131
    {
89c4a3a6 sago007 2008-08-29 14:32 132
        #ifdef DEBUG
89c4a3a6 sago007 2008-08-29 14:32 133
        cout << "Found in game folder: " << fullPath << endl;
89c4a3a6 sago007 2008-08-29 14:32 134
        #endif
89c4a3a6 sago007 2008-08-29 14:32 135
        SDL_FreeSurface(*surface2replace);
89c4a3a6 sago007 2008-08-29 14:32 136
        *surface2replace = temp;
89c4a3a6 sago007 2008-08-29 14:32 137
        return true;
89c4a3a6 sago007 2008-08-29 14:32 138
    }
89c4a3a6 sago007 2008-08-29 14:32 139
    //Stop if under windows:
89c4a3a6 sago007 2008-08-29 14:32 140
    #ifdef __unix__
89c4a3a6 sago007 2008-08-29 14:32 141
    fullPath = (string)getenv("HOME")+(string)"/.gamesaves/blockattack/themes/"+replaceWith;
89c4a3a6 sago007 2008-08-29 14:32 142
    #ifdef DEBUG
89c4a3a6 sago007 2008-08-29 14:32 143
    cout << "Trying to load " << fullPath << endl;
89c4a3a6 sago007 2008-08-29 14:32 144
    #endif
89c4a3a6 sago007 2008-08-29 14:32 145
    temp = IMG_Load(fullPath.c_str());
89c4a3a6 sago007 2008-08-29 14:32 146
    if(temp) //If we loaded a new image
89c4a3a6 sago007 2008-08-29 14:32 147
    {
89c4a3a6 sago007 2008-08-29 14:32 148
        #ifdef DEBUG
89c4a3a6 sago007 2008-08-29 14:32 149
        cout << "Found in home folder: " << fullPath << endl;
89c4a3a6 sago007 2008-08-29 14:32 150
        #endif
89c4a3a6 sago007 2008-08-29 14:32 151
        SDL_FreeSurface(*surface2replace);
89c4a3a6 sago007 2008-08-29 14:32 152
        *surface2replace = temp;
89c4a3a6 sago007 2008-08-29 14:32 153
        return true;
89c4a3a6 sago007 2008-08-29 14:32 154
    }
89c4a3a6 sago007 2008-08-29 14:32 155
    #endif
89c4a3a6 sago007 2008-08-29 14:32 156
    *surface2replace = * surface2replace;
89c4a3a6 sago007 2008-08-29 14:32 157
    return false;
89c4a3a6 sago007 2008-08-29 14:32 158
}
89c4a3a6 sago007 2008-08-29 14:32 159
89c4a3a6 sago007 2008-08-29 14:32 160
void loadTheme(string themeName)
89c4a3a6 sago007 2008-08-29 14:32 161
{
89c4a3a6 sago007 2008-08-29 14:32 162
    reloadIMG(&backgroundImage,themeName+"/background.png");
89c4a3a6 sago007 2008-08-29 14:32 163
    reloadIMG(&backgroundImage,themeName+"/background.jpg");
89c4a3a6 sago007 2008-08-29 14:32 164
    CONVERT(backgroundImage); //We should always convert even if we don't have to or else: SEGFAULT!
89c4a3a6 sago007 2008-08-29 14:32 165
    reloadIMG(&bNewGame,themeName+"/bNewGame.png");
89c4a3a6 sago007 2008-08-29 14:32 166
    CONVERT(bNewGame);
89c4a3a6 sago007 2008-08-29 14:32 167
    reloadIMG(&b1player,themeName+"/bOnePlayer.png");
89c4a3a6 sago007 2008-08-29 14:32 168
    CONVERT(b1player);
89c4a3a6 sago007 2008-08-29 14:32 169
    reloadIMG(&b2players,themeName+"/bTwoPlayers.png");
89c4a3a6 sago007 2008-08-29 14:32 170
    CONVERT(b2players);
89c4a3a6 sago007 2008-08-29 14:32 171
    reloadIMG(&bVsMode,themeName+"/bVsGame.png");
89c4a3a6 sago007 2008-08-29 14:32 172
    CONVERT(bVsMode);
89c4a3a6 sago007 2008-08-29 14:32 173
    reloadIMG(&bPuzzle,themeName+"/bPuzzle.png");
89c4a3a6 sago007 2008-08-29 14:32 174
    CONVERT(bPuzzle);
89c4a3a6 sago007 2008-08-29 14:32 175
    reloadIMG(&bStageClear,themeName+"/bStageClear.png");
89c4a3a6 sago007 2008-08-29 14:32 176
    CONVERT(bStageClear);
89c4a3a6 sago007 2008-08-29 14:32 177
    reloadIMG(&bTimeTrial,themeName+"/bTimeTrial.png");
89c4a3a6 sago007 2008-08-29 14:32 178
    CONVERT(bTimeTrial);
89c4a3a6 sago007 2008-08-29 14:32 179
    reloadIMG(&bEndless,themeName+"/bEndless.png");
89c4a3a6 sago007 2008-08-29 14:32 180
    CONVERT(bEndless);
89c4a3a6 sago007 2008-08-29 14:32 181
    reloadIMG(&bOptions,themeName+"/bOptions.png");
89c4a3a6 sago007 2008-08-29 14:32 182
    CONVERT(bOptions);
89c4a3a6 sago007 2008-08-29 14:32 183
    reloadIMG(&bConfigure,themeName+"/bConfigure.png");
89c4a3a6 sago007 2008-08-29 14:32 184
    CONVERTA(bConfigure);
89c4a3a6 sago007 2008-08-29 14:32 185
    reloadIMG(&bSelectPuzzle,themeName+"/bSelectPuzzle.png");
89c4a3a6 sago007 2008-08-29 14:32 186
    CONVERTA(bSelectPuzzle);
89c4a3a6 sago007 2008-08-29 14:32 187
    reloadIMG(&bReplay,themeName+"/bReplay.png");
89c4a3a6 sago007 2008-08-29 14:32 188
    CONVERTA(bReplay);
89c4a3a6 sago007 2008-08-29 14:32 189
    reloadIMG(&bReplay,themeName+"/bSave.png");
89c4a3a6 sago007 2008-08-29 14:32 190
    CONVERTA(bSave);
89c4a3a6 sago007 2008-08-29 14:32 191
    reloadIMG(&bLoad,themeName+"/bLoad.png");
89c4a3a6 sago007 2008-08-29 14:32 192
    CONVERTA(bLoad);
89c4a3a6 sago007 2008-08-29 14:32 193
#ifdef NETWORK
89c4a3a6 sago007 2008-08-29 14:32 194
    reloadIMG(&bNetwork,themeName+"/bNetwork.png");
89c4a3a6 sago007 2008-08-29 14:32 195
    CONVERTA(bNetwork);
89c4a3a6 sago007 2008-08-29 14:32 196
    reloadIMG(&bHost,themeName+"/bHost.png");
89c4a3a6 sago007 2008-08-29 14:32 197
    CONVERTA(bHost);
89c4a3a6 sago007 2008-08-29 14:32 198
    reloadIMG(&bConnect,themeName+"/bConnect.png");
89c4a3a6 sago007 2008-08-29 14:32 199
    CONVERTA(bConnect);
89c4a3a6 sago007 2008-08-29 14:32 200
#endif
89c4a3a6 sago007 2008-08-29 14:32 201
    reloadIMG(&bHighScore,themeName+"/bHighScore.png");
89c4a3a6 sago007 2008-08-29 14:32 202
    CONVERT(bHighScore);
89c4a3a6 sago007 2008-08-29 14:32 203
    reloadIMG(&boardBackBack,themeName+"/boardBackBack.png");
89c4a3a6 sago007 2008-08-29 14:32 204
    CONVERTA(boardBackBack);
89c4a3a6 sago007 2008-08-29 14:32 205
    reloadIMG(&backBoard,themeName+"/BackBoard.png");
89c4a3a6 sago007 2008-08-29 14:32 206
    CONVERT(backBoard);
89c4a3a6 sago007 2008-08-29 14:32 207
    reloadIMG(&blackLine,themeName+"/blackLine.png");
89c4a3a6 sago007 2008-08-29 14:32 208
    CONVERT(blackLine);
89c4a3a6 sago007 2008-08-29 14:32 209
    reloadIMG(&changeButtonsBack,themeName+"/changeButtonsBack.png");
89c4a3a6 sago007 2008-08-29 14:32 210
    CONVERTA(changeButtonsBack);
89c4a3a6 sago007 2008-08-29 14:32 211
    reloadIMG(&cursor[0],themeName+"/animations/cursor/1.png");
89c4a3a6 sago007 2008-08-29 14:32 212
    CONVERTA(cursor[0]);
89c4a3a6 sago007 2008-08-29 14:32 213
    reloadIMG(&cursor[1],themeName+"/animations/cursor/2.png");
89c4a3a6 sago007 2008-08-29 14:32 214
    CONVERTA(cursor[1]);
89c4a3a6 sago007 2008-08-29 14:32 215
    reloadIMG(&cursor[0],themeName+"/animations/counter/1.png");
89c4a3a6 sago007 2008-08-29 14:32 216
    CONVERTA(counter[0]);
89c4a3a6 sago007 2008-08-29 14:32 217
    reloadIMG(&cursor[1],themeName+"/animations/counter/2.png");
89c4a3a6 sago007 2008-08-29 14:32 218
    CONVERTA(counter[1]);
89c4a3a6 sago007 2008-08-29 14:32 219
    reloadIMG(&cursor[2],themeName+"/animations/counter/3.png");
89c4a3a6 sago007 2008-08-29 14:32 220
    CONVERTA(counter[2]);
89c4a3a6 sago007 2008-08-29 14:32 221
    reloadIMG(&topscoresBack,themeName+"/topscores.png");
89c4a3a6 sago007 2008-08-29 14:32 222
    CONVERTA(topscoresBack);
89c4a3a6 sago007 2008-08-29 14:32 223
    reloadIMG(&optionsBack,themeName+"/options.png");
89c4a3a6 sago007 2008-08-29 14:32 224
    CONVERTA(optionsBack);
89c4a3a6 sago007 2008-08-29 14:32 225
    reloadIMG(&bExit,themeName+"/bExit.png");
89c4a3a6 sago007 2008-08-29 14:32 226
    CONVERT(bExit);
89c4a3a6 sago007 2008-08-29 14:32 227
    reloadIMG(&bOn,themeName+"/bOn.png");
89c4a3a6 sago007 2008-08-29 14:32 228
    CONVERT(bOn);
89c4a3a6 sago007 2008-08-29 14:32 229
    reloadIMG(&bOff,themeName+"/bOff.png");
89c4a3a6 sago007 2008-08-29 14:32 230
    CONVERT(bOff);
89c4a3a6 sago007 2008-08-29 14:32 231
    reloadIMG(&bChange,themeName+"/bChange.png");
89c4a3a6 sago007 2008-08-29 14:32 232
    CONVERT(bChange);
89c4a3a6 sago007 2008-08-29 14:32 233
    reloadIMG(&b1024,themeName+"/b1024.png");
89c4a3a6 sago007 2008-08-29 14:32 234
    CONVERT(b1024);
89c4a3a6 sago007 2008-08-29 14:32 235
    reloadIMG(&dialogBox,themeName+"/dialogbox.png");
89c4a3a6 sago007 2008-08-29 14:32 236
    CONVERTA(dialogBox);
89c4a3a6 sago007 2008-08-29 14:32 237
//	CONVERTA(fileDialogBox);
89c4a3a6 sago007 2008-08-29 14:32 238
    reloadIMG(&iLevelCheck,themeName+"/iLevelCheck.png");
89c4a3a6 sago007 2008-08-29 14:32 239
    CONVERTA(iLevelCheck);
89c4a3a6 sago007 2008-08-29 14:32 240
    reloadIMG(&iLevelCheckBox,themeName+"/iLevelCheckBox.png");
89c4a3a6 sago007 2008-08-29 14:32 241
    CONVERT(iLevelCheckBox);
89c4a3a6 sago007 2008-08-29 14:32 242
    reloadIMG(&iCheckBoxArea,themeName+"/iCheckBoxArea.png");
89c4a3a6 sago007 2008-08-29 14:32 243
    CONVERTA(iCheckBoxArea);
89c4a3a6 sago007 2008-08-29 14:32 244
    for (int i = 0;i<4;i++)
89c4a3a6 sago007 2008-08-29 14:32 245
    {
89c4a3a6 sago007 2008-08-29 14:32 246
        reloadIMG(&explosion[i],themeName+"/animations/explosion/"+(char)('0'+i)+".png");
89c4a3a6 sago007 2008-08-29 14:32 247
        CONVERTA(explosion[i]);
89c4a3a6 sago007 2008-08-29 14:32 248
    }
89c4a3a6 sago007 2008-08-29 14:32 249
    reloadIMG(&bricks[0],themeName+"/blue.png");
89c4a3a6 sago007 2008-08-29 14:32 250
    reloadIMG(&bricks[1],themeName+"/green.png");
89c4a3a6 sago007 2008-08-29 14:32 251
    reloadIMG(&bricks[2],themeName+"/purple.png");
89c4a3a6 sago007 2008-08-29 14:32 252
    reloadIMG(&bricks[3],themeName+"/red.png");
89c4a3a6 sago007 2008-08-29 14:32 253
    reloadIMG(&bricks[4],themeName+"/turkish.png");
89c4a3a6 sago007 2008-08-29 14:32 254
    reloadIMG(&bricks[5],themeName+"/yellow.png");
89c4a3a6 sago007 2008-08-29 14:32 255
    reloadIMG(&bricks[6],themeName+"/gray.png");
89c4a3a6 sago007 2008-08-29 14:32 256
    reloadIMG(&balls[0],themeName+"/balls/ballBlue.png");
89c4a3a6 sago007 2008-08-29 14:32 257
    reloadIMG(&balls[1],themeName+"/balls/ballGreen.png");
89c4a3a6 sago007 2008-08-29 14:32 258
    reloadIMG(&balls[2],themeName+"/balls/ballPurple.png");
89c4a3a6 sago007 2008-08-29 14:32 259
    reloadIMG(&balls[3],themeName+"/balls/ballRed.png");
89c4a3a6 sago007 2008-08-29 14:32 260
    reloadIMG(&balls[4],themeName+"/balls/ballTurkish.png");
89c4a3a6 sago007 2008-08-29 14:32 261
    reloadIMG(&balls[5],themeName+"/balls/ballYellow.png");
89c4a3a6 sago007 2008-08-29 14:32 262
    reloadIMG(&balls[6],themeName+"/balls/ballGray.png");
89c4a3a6 sago007 2008-08-29 14:32 263
    for (int i = 0; i<7; i++)
89c4a3a6 sago007 2008-08-29 14:32 264
    {
89c4a3a6 sago007 2008-08-29 14:32 265
        CONVERTA(bricks[i]);
89c4a3a6 sago007 2008-08-29 14:32 266
        CONVERTA(balls[i]);
89c4a3a6 sago007 2008-08-29 14:32 267
    }
89c4a3a6 sago007 2008-08-29 14:32 268
    reloadIMG(&crossover,themeName+"/crossover.png");
89c4a3a6 sago007 2008-08-29 14:32 269
    CONVERTA(crossover);
89c4a3a6 sago007 2008-08-29 14:32 270
    reloadIMG(&garbageTL,themeName+"/garbage/garbageTL.png");
89c4a3a6 sago007 2008-08-29 14:32 271
    CONVERTA(garbageTL);
89c4a3a6 sago007 2008-08-29 14:32 272
    reloadIMG(&garbageT,themeName+"/garbage/garbageT.png");
89c4a3a6 sago007 2008-08-29 14:32 273
    CONVERTA(garbageT);
89c4a3a6 sago007 2008-08-29 14:32 274
    reloadIMG(&garbageTR,themeName+"/garbage/garbageTR.png");
89c4a3a6 sago007 2008-08-29 14:32 275
    CONVERTA(garbageTR);
89c4a3a6 sago007 2008-08-29 14:32 276
    reloadIMG(&garbageR,themeName+"/garbage/garbageR.png");
89c4a3a6 sago007 2008-08-29 14:32 277
    CONVERTA(garbageR);
89c4a3a6 sago007 2008-08-29 14:32 278
    reloadIMG(&garbageBR,themeName+"/garbage/garbageBR.png");
89c4a3a6 sago007 2008-08-29 14:32 279
    CONVERTA(garbageBR);
89c4a3a6 sago007 2008-08-29 14:32 280
    reloadIMG(&garbageB,themeName+"/garbage/garbageB.png");
89c4a3a6 sago007 2008-08-29 14:32 281
    CONVERTA(garbageB);
89c4a3a6 sago007 2008-08-29 14:32 282
    reloadIMG(&garbageBL,themeName+"/garbage/garbageBL.png");
89c4a3a6 sago007 2008-08-29 14:32 283
    CONVERTA(garbageBL);
89c4a3a6 sago007 2008-08-29 14:32 284
    reloadIMG(&garbageL,themeName+"/garbage/garbageL.png");
89c4a3a6 sago007 2008-08-29 14:32 285
    CONVERTA(garbageL);
89c4a3a6 sago007 2008-08-29 14:32 286
    reloadIMG(&garbageFill,themeName+"/garbage/garbageFill.png");
89c4a3a6 sago007 2008-08-29 14:32 287
    CONVERTA(garbageFill);
89c4a3a6 sago007 2008-08-29 14:32 288
    reloadIMG(&garbageML,themeName+"/garbage/garbageML.png");
89c4a3a6 sago007 2008-08-29 14:32 289
    CONVERTA(garbageML);
89c4a3a6 sago007 2008-08-29 14:32 290
    reloadIMG(&garbageMR,themeName+"/garbage/garbageMR.png");
89c4a3a6 sago007 2008-08-29 14:32 291
    CONVERTA(garbageMR);
89c4a3a6 sago007 2008-08-29 14:32 292
    reloadIMG(&garbageM,themeName+"/garbage/garbageM.png");
89c4a3a6 sago007 2008-08-29 14:32 293
    CONVERTA(garbageM);
89c4a3a6 sago007 2008-08-29 14:32 294
    reloadIMG(&garbageGML,themeName+"/garbage/garbageGML.png");
89c4a3a6 sago007 2008-08-29 14:32 295
    CONVERTA(garbageGML);
89c4a3a6 sago007 2008-08-29 14:32 296
    reloadIMG(&garbageGMR,themeName+"/garbage/garbageGMR.png");
89c4a3a6 sago007 2008-08-29 14:32 297
    CONVERTA(garbageGMR);
89c4a3a6 sago007 2008-08-29 14:32 298
    reloadIMG(&garbageGM,themeName+"/garbage/garbageGM.png");
89c4a3a6 sago007 2008-08-29 14:32 299
    CONVERTA(garbageGM);
89c4a3a6 sago007 2008-08-29 14:32 300
    reloadIMG(&smiley[0],themeName+"/smileys/0.png");
89c4a3a6 sago007 2008-08-29 14:32 301
    CONVERTA(smiley[0]);
89c4a3a6 sago007 2008-08-29 14:32 302
    reloadIMG(&smiley[1],themeName+"/smileys/1.png");
89c4a3a6 sago007 2008-08-29 14:32 303
    CONVERTA(smiley[1]);
89c4a3a6 sago007 2008-08-29 14:32 304
    reloadIMG(&smiley[2],themeName+"/smileys/2.png");
89c4a3a6 sago007 2008-08-29 14:32 305
    CONVERTA(smiley[2]);
89c4a3a6 sago007 2008-08-29 14:32 306
    reloadIMG(&smiley[3],themeName+"/smileys/3.png");
89c4a3a6 sago007 2008-08-29 14:32 307
    CONVERTA(smiley[3]);
89c4a3a6 sago007 2008-08-29 14:32 308
    reloadIMG(&iWinner,themeName+"/iWinner.png");
89c4a3a6 sago007 2008-08-29 14:32 309
    CONVERTA(iWinner);
89c4a3a6 sago007 2008-08-29 14:32 310
    reloadIMG(&iDraw,themeName+"/iDraw.png");
89c4a3a6 sago007 2008-08-29 14:32 311
    CONVERTA(iDraw);
89c4a3a6 sago007 2008-08-29 14:32 312
    reloadIMG(&iLoser,themeName+"/iLoser.png");
89c4a3a6 sago007 2008-08-29 14:32 313
    CONVERTA(iLoser);
89c4a3a6 sago007 2008-08-29 14:32 314
    reloadIMG(&iChainBack,themeName+"/chainFrame.png");
89c4a3a6 sago007 2008-08-29 14:32 315
    CONVERTA(iChainBack);
89c4a3a6 sago007 2008-08-29 14:32 316
    reloadIMG(&iGameOver,themeName+"/iGameOver.png");
89c4a3a6 sago007 2008-08-29 14:32 317
    CONVERTA(iGameOver);
89c4a3a6 sago007 2008-08-29 14:32 318
    reloadIMG(&mouse,themeName+"/mouse.png");
89c4a3a6 sago007 2008-08-29 14:32 319
    CONVERTA(mouse);
89c4a3a6 sago007 2008-08-29 14:32 320
    reloadIMG(&stageBobble,themeName+"/iStageClearLimit.png");
89c4a3a6 sago007 2008-08-29 14:32 321
    CONVERTA(stageBobble);
89c4a3a6 sago007 2008-08-29 14:32 322
    reloadIMG(&bTheme,themeName+"/bTheme.png");
89c4a3a6 sago007 2008-08-29 14:32 323
    CONVERTA(bTheme);
89c4a3a6 sago007 2008-08-29 14:32 324
    reloadIMG(&bSkip,themeName+"/bSkip.png");
89c4a3a6 sago007 2008-08-29 14:32 325
    CONVERTA(bSkip);
89c4a3a6 sago007 2008-08-29 14:32 326
    reloadIMG(&bRetry,themeName+"/bRetry.png");
89c4a3a6 sago007 2008-08-29 14:32 327
    CONVERTA(bRetry);
89c4a3a6 sago007 2008-08-29 14:32 328
    reloadIMG(&bNext,themeName+"/bNext.png");
89c4a3a6 sago007 2008-08-29 14:32 329
    CONVERTA(bNext);
89c4a3a6 sago007 2008-08-29 14:32 330
    /**
89c4a3a6 sago007 2008-08-29 14:32 331
     *Fonts is a special case
89c4a3a6 sago007 2008-08-29 14:32 332
     */
89c4a3a6 sago007 2008-08-29 14:32 333
    //First we free them:
89c4a3a6 sago007 2008-08-29 14:32 334
    /*SFont_FreeFont(fBlueFont);
89c4a3a6 sago007 2008-08-29 14:32 335
    SFont_FreeFont(fSmallFont);
89c4a3a6 sago007 2008-08-29 14:32 336
    //Then we reload the images:
89c4a3a6 sago007 2008-08-29 14:32 337
    reloadIMG(&iBlueFont,themeName+"/24P_Arial_Blue.png");
89c4a3a6 sago007 2008-08-29 14:32 338
    reloadIMG(&iSmallFont,themeName+"/14P_Arial_Angle_Red.png");
89c4a3a6 sago007 2008-08-29 14:32 339
    //Then we convert them:
89c4a3a6 sago007 2008-08-29 14:32 340
    CONVERTA(iBlueFont);
89c4a3a6 sago007 2008-08-29 14:32 341
    CONVERTA(iSmallFont);
89c4a3a6 sago007 2008-08-29 14:32 342
    //Then create the fonts again:
89c4a3a6 sago007 2008-08-29 14:32 343
    fBlueFont = SFont_InitFont(iBlueFont);
89c4a3a6 sago007 2008-08-29 14:32 344
    fSmallFont = SFont_InitFont(iSmallFont);*/
89c4a3a6 sago007 2008-08-29 14:32 345
    //Editor:
89c4a3a6 sago007 2008-08-29 14:32 346
    /*CONVERTA(bCreateFile);
89c4a3a6 sago007 2008-08-29 14:32 347
    CONVERTA(bDeletePuzzle);
89c4a3a6 sago007 2008-08-29 14:32 348
    CONVERTA(bLoadFile);
89c4a3a6 sago007 2008-08-29 14:32 349
    CONVERTA(bMoveBack);
89c4a3a6 sago007 2008-08-29 14:32 350
    CONVERTA(bMoveDown);
89c4a3a6 sago007 2008-08-29 14:32 351
    CONVERTA(bMoveForward);
89c4a3a6 sago007 2008-08-29 14:32 352
    CONVERTA(bMoveLeft);
89c4a3a6 sago007 2008-08-29 14:32 353
    CONVERTA(bMoveRight);
89c4a3a6 sago007 2008-08-29 14:32 354
    CONVERTA(bMoveUp);
89c4a3a6 sago007 2008-08-29 14:32 355
    CONVERTA(bNewPuzzle);
89c4a3a6 sago007 2008-08-29 14:32 356
    CONVERTA(bSaveFileAs);
89c4a3a6 sago007 2008-08-29 14:32 357
    CONVERTA(bSavePuzzle);
89c4a3a6 sago007 2008-08-29 14:32 358
    CONVERTA(bSaveToFile);
89c4a3a6 sago007 2008-08-29 14:32 359
    CONVERTA(bTestPuzzle);*/
89c4a3a6 sago007 2008-08-29 14:32 360
    #ifdef DEBUG
89c4a3a6 sago007 2008-08-29 14:32 361
    cout << "Loading succeded" << endl;
89c4a3a6 sago007 2008-08-29 14:32 362
    #endif
89c4a3a6 sago007 2008-08-29 14:32 363
}
89c4a3a6 sago007 2008-08-29 14:32 364
89c4a3a6 sago007 2008-08-29 14:32 365
/*TTF_Font * TTF_OpenFont2(char* path, int ptsize) {
89c4a3a6 sago007 2008-08-29 14:32 366
89c4a3a6 sago007 2008-08-29 14:32 367
    char * tmp;
89c4a3a6 sago007 2008-08-29 14:32 368
    TTF_Font * ret=NULL;
89c4a3a6 sago007 2008-08-29 14:32 369
    tmp = (char*)malloc (sizeof(char)*(strlen(path)+strlen(sharedir)+2));
89c4a3a6 sago007 2008-08-29 14:32 370
    strcpy(tmp, sharedir);
89c4a3a6 sago007 2008-08-29 14:32 371
    strcat(tmp, "/");
89c4a3a6 sago007 2008-08-29 14:32 372
    strcat(tmp, path);
89c4a3a6 sago007 2008-08-29 14:32 373
#ifdef DEBUG
89c4a3a6 sago007 2008-08-29 14:32 374
    printf("loading %s\n",tmp);
89c4a3a6 sago007 2008-08-29 14:32 375
#endif
89c4a3a6 sago007 2008-08-29 14:32 376
    if(!(TTF_WasInit()))
89c4a3a6 sago007 2008-08-29 14:32 377
       TTF_Init();
89c4a3a6 sago007 2008-08-29 14:32 378
    if (!(ret = TTF_OpenFont(tmp, ptsize)))
89c4a3a6 sago007 2008-08-29 14:32 379
        ret = TTF_OpenFont(path, ptsize);
89c4a3a6 sago007 2008-08-29 14:32 380
    if(!ret)
89c4a3a6 sago007 2008-08-29 14:32 381
        cout << "failed to load font: " << TTF_GetError() << endl;
89c4a3a6 sago007 2008-08-29 14:32 382
    free(tmp);
89c4a3a6 sago007 2008-08-29 14:32 383
    return ret;
89c4a3a6 sago007 2008-08-29 14:32 384
}*/
89c4a3a6 sago007 2008-08-29 14:32 385
89c4a3a6 sago007 2008-08-29 14:32 386
Mix_Music * Mix_LoadMUS2(char* path)
89c4a3a6 sago007 2008-08-29 14:32 387
{
89c4a3a6 sago007 2008-08-29 14:32 388
    char * tmp;
89c4a3a6 sago007 2008-08-29 14:32 389
    Mix_Music * ret=NULL;
89c4a3a6 sago007 2008-08-29 14:32 390
    tmp = (char*)malloc (sizeof(char)*(strlen(path)+strlen(sharedir)+2));
89c4a3a6 sago007 2008-08-29 14:32 391
    strcpy(tmp, sharedir);
89c4a3a6 sago007 2008-08-29 14:32 392
    strcat(tmp, "/");
89c4a3a6 sago007 2008-08-29 14:32 393
    strcat(tmp, path);
89c4a3a6 sago007 2008-08-29 14:32 394
#ifdef DEBUG
89c4a3a6 sago007 2008-08-29 14:32 395
    printf("loading %s\n",tmp);
89c4a3a6 sago007 2008-08-29 14:32 396
#endif
89c4a3a6 sago007 2008-08-29 14:32 397
    if (!(ret = Mix_LoadMUS(tmp)))
89c4a3a6 sago007 2008-08-29 14:32 398
        ret = Mix_LoadMUS(path);
89c4a3a6 sago007 2008-08-29 14:32 399
89c4a3a6 sago007 2008-08-29 14:32 400
    free(tmp);
89c4a3a6 sago007 2008-08-29 14:32 401
    return ret;
89c4a3a6 sago007 2008-08-29 14:32 402
}
89c4a3a6 sago007 2008-08-29 14:32 403
89c4a3a6 sago007 2008-08-29 14:32 404
Mix_Chunk * Mix_LoadWAV2(char* path)
89c4a3a6 sago007 2008-08-29 14:32 405
{
89c4a3a6 sago007 2008-08-29 14:32 406
    char * tmp;
89c4a3a6 sago007 2008-08-29 14:32 407
    Mix_Chunk * ret=NULL;
89c4a3a6 sago007 2008-08-29 14:32 408
    tmp = (char*)malloc (sizeof(char)*(strlen(path)+strlen(sharedir)+2));
89c4a3a6 sago007 2008-08-29 14:32 409
    strcpy(tmp, sharedir);
89c4a3a6 sago007 2008-08-29 14:32 410
    strcat(tmp, "/");
89c4a3a6 sago007 2008-08-29 14:32 411
    strcat(tmp, path);
89c4a3a6 sago007 2008-08-29 14:32 412
#ifdef DEBUG
89c4a3a6 sago007 2008-08-29 14:32 413
    printf("loading %s\n",tmp);
89c4a3a6 sago007 2008-08-29 14:32 414
#endif
89c4a3a6 sago007 2008-08-29 14:32 415
    if (!(ret = Mix_LoadWAV(tmp)))
89c4a3a6 sago007 2008-08-29 14:32 416
        ret = Mix_LoadWAV(path);
89c4a3a6 sago007 2008-08-29 14:32 417
89c4a3a6 sago007 2008-08-29 14:32 418
    free(tmp);
89c4a3a6 sago007 2008-08-29 14:32 419
    return ret;
89c4a3a6 sago007 2008-08-29 14:32 420
}
89c4a3a6 sago007 2008-08-29 14:32 421
89c4a3a6 sago007 2008-08-29 14:32 422
//Load all image files to memory
89c4a3a6 sago007 2008-08-29 14:32 423
int InitImages()
89c4a3a6 sago007 2008-08-29 14:32 424
{
89c4a3a6 sago007 2008-08-29 14:32 425
    if (!((backgroundImage = IMG_Load2((char*)"gfx/background.png"))
89c4a3a6 sago007 2008-08-29 14:32 426
            && (background = IMG_Load2((char*)"gfx/blackBackGround.png"))
89c4a3a6 sago007 2008-08-29 14:32 427
            && (bNewGame = IMG_Load2((char*)"gfx/bNewGame.png"))
89c4a3a6 sago007 2008-08-29 14:32 428
            && (b1player = IMG_Load2((char*)"gfx/bOnePlayer.png"))
89c4a3a6 sago007 2008-08-29 14:32 429
            && (b2players = IMG_Load2((char*)"gfx/bTwoPlayers.png"))
89c4a3a6 sago007 2008-08-29 14:32 430
            && (bVsMode = IMG_Load2((char*)"gfx/bVsGame.png"))
89c4a3a6 sago007 2008-08-29 14:32 431
            && (bPuzzle = IMG_Load2((char*)"gfx/bPuzzle.png"))
89c4a3a6 sago007 2008-08-29 14:32 432
            && (bStageClear = IMG_Load2((char*)"gfx/bStageClear.png"))
89c4a3a6 sago007 2008-08-29 14:32 433
            && (bTimeTrial = IMG_Load2((char*)"gfx/bTimeTrial.png"))
89c4a3a6 sago007 2008-08-29 14:32 434
            && (bEndless = IMG_Load2((char*)"gfx/bEndless.png"))
89c4a3a6 sago007 2008-08-29 14:32 435
            && (bOptions = IMG_Load2((char*)"gfx/bOptions.png"))
89c4a3a6 sago007 2008-08-29 14:32 436
            && (bConfigure = IMG_Load2((char*)"gfx/bConfigure.png"))
89c4a3a6 sago007 2008-08-29 14:32 437
            && (bSelectPuzzle = IMG_Load2((char*)"gfx/bSelectPuzzle.png"))
89c4a3a6 sago007 2008-08-29 14:32 438
            && (bHighScore = IMG_Load2((char*)"gfx/bHighScore.png"))
89c4a3a6 sago007 2008-08-29 14:32 439
            && (bExit = IMG_Load2((char*)"gfx/bExit.png"))
89c4a3a6 sago007 2008-08-29 14:32 440
            && (bBack = IMG_Load2((char*)"gfx/bBack.png"))
89c4a3a6 sago007 2008-08-29 14:32 441
            && (bForward = IMG_Load2((char*)"gfx/bForward.png"))
89c4a3a6 sago007 2008-08-29 14:32 442
            && (bReplay = IMG_Load2((char*)"gfx/bReplays.png"))
89c4a3a6 sago007 2008-08-29 14:32 443
            && (bSave = IMG_Load2((char*)"gfx/bSave.png"))
89c4a3a6 sago007 2008-08-29 14:32 444
            && (bLoad = IMG_Load2((char*)"gfx/bLoad.png"))
89c4a3a6 sago007 2008-08-29 14:32 445
#ifdef NETWORK
89c4a3a6 sago007 2008-08-29 14:32 446
            && (bNetwork = IMG_Load2((char*)"gfx/bNetwork.png"))
89c4a3a6 sago007 2008-08-29 14:32 447
            && (bHost = IMG_Load2((char*)"gfx/bHost.png"))
89c4a3a6 sago007 2008-08-29 14:32 448
            && (bConnect = IMG_Load2((char*)"gfx/bConnect.png"))
89c4a3a6 sago007 2008-08-29 14:32 449
#endif
89c4a3a6 sago007 2008-08-29 14:32 450
            && (blackLine = IMG_Load2((char*)"gfx/blackLine.png"))
89c4a3a6 sago007 2008-08-29 14:32 451
            && (stageBobble = IMG_Load2((char*)"gfx/iStageClearLimit.png"))
89c4a3a6 sago007 2008-08-29 14:32 452
            && (bricks[0] = IMG_Load2((char*)"gfx/blue.png"))
89c4a3a6 sago007 2008-08-29 14:32 453
            && (bricks[1] = IMG_Load2((char*)"gfx/green.png"))
89c4a3a6 sago007 2008-08-29 14:32 454
            && (bricks[2] = IMG_Load2((char*)"gfx/purple.png"))
89c4a3a6 sago007 2008-08-29 14:32 455
            && (bricks[3] = IMG_Load2((char*)"gfx/red.png"))
89c4a3a6 sago007 2008-08-29 14:32 456
            && (bricks[4] = IMG_Load2((char*)"gfx/turkish.png"))
89c4a3a6 sago007 2008-08-29 14:32 457
            && (bricks[5] = IMG_Load2((char*)"gfx/yellow.png"))
89c4a3a6 sago007 2008-08-29 14:32 458
            && (bricks[6] = IMG_Load2((char*)"gfx/grey.png"))
89c4a3a6 sago007 2008-08-29 14:32 459
            && (crossover = IMG_Load2((char*)"gfx/crossover.png"))
89c4a3a6 sago007 2008-08-29 14:32 460
            && (balls[0] = IMG_Load2((char*)"gfx/balls/ballBlue.png"))
89c4a3a6 sago007 2008-08-29 14:32 461
            && (balls[1] = IMG_Load2((char*)"gfx/balls/ballGreen.png"))
89c4a3a6 sago007 2008-08-29 14:32 462
            && (balls[2] = IMG_Load2((char*)"gfx/balls/ballPurple.png"))
89c4a3a6 sago007 2008-08-29 14:32 463
            && (balls[3] = IMG_Load2((char*)"gfx/balls/ballRed.png"))
89c4a3a6 sago007 2008-08-29 14:32 464
            && (balls[4] = IMG_Load2((char*)"gfx/balls/ballTurkish.png"))
89c4a3a6 sago007 2008-08-29 14:32 465
            && (balls[5] = IMG_Load2((char*)"gfx/balls/ballYellow.png"))
89c4a3a6 sago007 2008-08-29 14:32 466
            && (balls[6] = IMG_Load2((char*)"gfx/balls/ballGray.png"))
89c4a3a6 sago007 2008-08-29 14:32 467
            && (cursor[0] = IMG_Load2((char*)"gfx/animations/cursor/1.png"))
89c4a3a6 sago007 2008-08-29 14:32 468
            && (cursor[1] = IMG_Load2((char*)"gfx/animations/cursor/2.png"))
89c4a3a6 sago007 2008-08-29 14:32 469
            && (bomb[0] = IMG_Load2((char*)"gfx/animations/bomb/bomb_1.png"))
89c4a3a6 sago007 2008-08-29 14:32 470
            && (bomb[1] = IMG_Load2((char*)"gfx/animations/bomb/bomb_2.png"))
89c4a3a6 sago007 2008-08-29 14:32 471
            && (ready[0] = IMG_Load2((char*)"gfx/animations/ready/ready_1.png"))
89c4a3a6 sago007 2008-08-29 14:32 472
            && (ready[1] = IMG_Load2((char*)"gfx/animations/ready/ready_2.png"))
89c4a3a6 sago007 2008-08-29 14:32 473
            && (explosion[0] = IMG_Load2((char*)"gfx/animations/explosion/0.png"))
89c4a3a6 sago007 2008-08-29 14:32 474
            && (explosion[1] = IMG_Load2((char*)"gfx/animations/explosion/1.png"))
89c4a3a6 sago007 2008-08-29 14:32 475
            && (explosion[2] = IMG_Load2((char*)"gfx/animations/explosion/2.png"))
89c4a3a6 sago007 2008-08-29 14:32 476
            && (explosion[3] = IMG_Load2((char*)"gfx/animations/explosion/3.png"))
89c4a3a6 sago007 2008-08-29 14:32 477
            && (counter[0] = IMG_Load2((char*)"gfx/counter/1.png"))
89c4a3a6 sago007 2008-08-29 14:32 478
            && (counter[1] = IMG_Load2((char*)"gfx/counter/2.png"))
89c4a3a6 sago007 2008-08-29 14:32 479
            && (counter[2] = IMG_Load2((char*)"gfx/counter/3.png"))
89c4a3a6 sago007 2008-08-29 14:32 480
            && (backBoard = IMG_Load2((char*)"gfx/BackBoard.png")) //not used, we just test if it exists :)
89c4a3a6 sago007 2008-08-29 14:32 481
            && (iGameOver = IMG_Load2((char*)"gfx/iGameOver.png"))
89c4a3a6 sago007 2008-08-29 14:32 482
            && (iWinner = IMG_Load2((char*)"gfx/iWinner.png"))
89c4a3a6 sago007 2008-08-29 14:32 483
            && (iDraw = IMG_Load2((char*)"gfx/iDraw.png"))
89c4a3a6 sago007 2008-08-29 14:32 484
            && (iLoser = IMG_Load2((char*)"gfx/iLoser.png"))
89c4a3a6 sago007 2008-08-29 14:32 485
            && (iChainBack = IMG_Load2((char*)"gfx/chainFrame.png"))
89c4a3a6 sago007 2008-08-29 14:32 486
            //&& (iBlueFont = IMG_Load2("gfx/24P_Copperplate_Blue.png"))
89c4a3a6 sago007 2008-08-29 14:32 487
            && (iBlueFont = IMG_Load2((char*)"gfx/24P_Arial_Blue.png"))
89c4a3a6 sago007 2008-08-29 14:32 488
            && (iSmallFont = IMG_Load2((char*)"gfx/14P_Arial_Angle_Red.png"))
89c4a3a6 sago007 2008-08-29 14:32 489
            && (topscoresBack = IMG_Load2((char*)"gfx/topscores.png"))
89c4a3a6 sago007 2008-08-29 14:32 490
            && (optionsBack = IMG_Load2((char*)"gfx/options.png"))
89c4a3a6 sago007 2008-08-29 14:32 491
            && (bOn = IMG_Load2((char*)"gfx/bOn.png"))
89c4a3a6 sago007 2008-08-29 14:32 492
            && (bOff = IMG_Load2((char*)"gfx/bOff.png"))
89c4a3a6 sago007 2008-08-29 14:32 493
            && (bChange = IMG_Load2((char*)"gfx/bChange.png"))
89c4a3a6 sago007 2008-08-29 14:32 494
            && (b1024 = IMG_Load2((char*)"gfx/b1024.png"))
89c4a3a6 sago007 2008-08-29 14:32 495
            && (dialogBox = IMG_Load2((char*)"gfx/dialogbox.png"))
89c4a3a6 sago007 2008-08-29 14:32 496
//	&& (fileDialogBox = IMG_Load2("gfx/fileDialogbox.png"))
89c4a3a6 sago007 2008-08-29 14:32 497
            && (iLevelCheck = IMG_Load2((char*)"gfx/iLevelCheck.png"))
89c4a3a6 sago007 2008-08-29 14:32 498
            && (iLevelCheckBox = IMG_Load2((char*)"gfx/iLevelCheckBox.png"))
89c4a3a6 sago007 2008-08-29 14:32 499
            && (iCheckBoxArea = IMG_Load2((char*)"gfx/iCheckBoxArea.png"))
89c4a3a6 sago007 2008-08-29 14:32 500
            && (boardBackBack = IMG_Load2((char*)"gfx/boardBackBack.png"))
89c4a3a6 sago007 2008-08-29 14:32 501
            && (changeButtonsBack = IMG_Load2((char*)"gfx/changeButtonsBack.png"))
89c4a3a6 sago007 2008-08-29 14:32 502
            && (garbageTL = IMG_Load2((char*)"gfx/garbage/garbageTL.png"))
89c4a3a6 sago007 2008-08-29 14:32 503
            && (garbageT = IMG_Load2((char*)"gfx/garbage/garbageT.png"))
89c4a3a6 sago007 2008-08-29 14:32 504
            && (garbageTR = IMG_Load2((char*)"gfx/garbage/garbageTR.png"))
89c4a3a6 sago007 2008-08-29 14:32 505
            && (garbageR = IMG_Load2((char*)"gfx/garbage/garbageR.png"))
89c4a3a6 sago007 2008-08-29 14:32 506
            && (garbageBR = IMG_Load2((char*)"gfx/garbage/garbageBR.png"))
89c4a3a6 sago007 2008-08-29 14:32 507
            && (garbageB = IMG_Load2((char*)"gfx/garbage/garbageB.png"))
89c4a3a6 sago007 2008-08-29 14:32 508
            && (garbageBL = IMG_Load2((char*)"gfx/garbage/garbageBL.png"))
89c4a3a6 sago007 2008-08-29 14:32 509
            && (garbageL = IMG_Load2((char*)"gfx/garbage/garbageL.png"))
89c4a3a6 sago007 2008-08-29 14:32 510
            && (garbageFill = IMG_Load2((char*)"gfx/garbage/garbageFill.png"))
89c4a3a6 sago007 2008-08-29 14:32 511
            && (garbageML = IMG_Load2((char*)"gfx/garbage/garbageML.png"))
89c4a3a6 sago007 2008-08-29 14:32 512
            && (garbageM = IMG_Load2((char*)"gfx/garbage/garbageM.png"))
89c4a3a6 sago007 2008-08-29 14:32 513
            && (garbageMR = IMG_Load2((char*)"gfx/garbage/garbageMR.png"))
89c4a3a6 sago007 2008-08-29 14:32 514
            && (garbageGM = IMG_Load2((char*)"gfx/garbage/garbageGM.png"))
89c4a3a6 sago007 2008-08-29 14:32 515
            && (garbageGML = IMG_Load2((char*)"gfx/garbage/garbageGML.png"))
89c4a3a6 sago007 2008-08-29 14:32 516
            && (garbageGMR = IMG_Load2((char*)"gfx/garbage/garbageGMR.png"))
89c4a3a6 sago007 2008-08-29 14:32 517
            && (smiley[0] = IMG_Load2((char*)"gfx/smileys/0.png"))
89c4a3a6 sago007 2008-08-29 14:32 518
            && (smiley[1] = IMG_Load2((char*)"gfx/smileys/1.png"))
89c4a3a6 sago007 2008-08-29 14:32 519
            && (smiley[2] = IMG_Load2((char*)"gfx/smileys/2.png"))
89c4a3a6 sago007 2008-08-29 14:32 520
            && (smiley[3] = IMG_Load2((char*)"gfx/smileys/3.png"))
89c4a3a6 sago007 2008-08-29 14:32 521
            //new in 1.3.2
89c4a3a6 sago007 2008-08-29 14:32 522
            && (transCover = IMG_Load2((char*)"gfx/transCover.png"))
89c4a3a6 sago007 2008-08-29 14:32 523
            /*&& (bCreateFile = IMG_Load2((char*)"gfx/editor/bCreateFile.png"))
89c4a3a6 sago007 2008-08-29 14:32 524
            && (bDeletePuzzle = IMG_Load2((char*)"gfx/editor/bDeletePuzzle.png"))
89c4a3a6 sago007 2008-08-29 14:32 525
            && (bLoadFile = IMG_Load2((char*)"gfx/editor/bLoadFile.png"))
89c4a3a6 sago007 2008-08-29 14:32 526
            && (bMoveBack = IMG_Load2((char*)"gfx/editor/bMoveBack.png"))
89c4a3a6 sago007 2008-08-29 14:32 527
            && (bMoveDown = IMG_Load2((char*)"gfx/editor/bMoveDown.png"))
89c4a3a6 sago007 2008-08-29 14:32 528
            && (bMoveForward = IMG_Load2((char*)"gfx/editor/bMoveForward.png"))
89c4a3a6 sago007 2008-08-29 14:32 529
            && (bMoveLeft = IMG_Load2((char*)"gfx/editor/bMoveLeft.png"))
89c4a3a6 sago007 2008-08-29 14:32 530
            && (bMoveRight = IMG_Load2((char*)"gfx/editor/bMoveRight.png"))
89c4a3a6 sago007 2008-08-29 14:32 531
            && (bMoveUp = IMG_Load2((char*)"gfx/editor/bMoveUp.png"))
89c4a3a6 sago007 2008-08-29 14:32 532
            && (bNewPuzzle = IMG_Load2((char*)"gfx/editor/bNewPuzzle.png"))
89c4a3a6 sago007 2008-08-29 14:32 533
            && (bSaveFileAs = IMG_Load2((char*)"gfx/editor/bSaveFileAs.png"))
89c4a3a6 sago007 2008-08-29 14:32 534
            && (bSavePuzzle = IMG_Load2((char*)"gfx/editor/bSavePuzzle.png"))
89c4a3a6 sago007 2008-08-29 14:32 535
            && (bSaveToFile = IMG_Load2((char*)"gfx/editor/bSaveToFile.png"))
89c4a3a6 sago007 2008-08-29 14:32 536
            && (bTestPuzzle = IMG_Load2((char*)"gfx/editor/bTestPuzzle.png"))*/
89c4a3a6 sago007 2008-08-29 14:32 537
            //end new in 1.3.2
89c4a3a6 sago007 2008-08-29 14:32 538
            //new in 1.4.0
89c4a3a6 sago007 2008-08-29 14:32 539
            && (bTheme = IMG_Load2((char*)"gfx/bTheme.png"))
89c4a3a6 sago007 2008-08-29 14:32 540
            && (bSkip = IMG_Load2((char*)"gfx/bSkip.png"))
89c4a3a6 sago007 2008-08-29 14:32 541
            && (bNext = IMG_Load2((char*)"gfx/bNext.png"))
89c4a3a6 sago007 2008-08-29 14:32 542
            && (bRetry = IMG_Load2((char*)"gfx/bRetry.png"))
89c4a3a6 sago007 2008-08-29 14:32 543
            //end new in 1.4.0
89c4a3a6 sago007 2008-08-29 14:32 544
            && (mouse = IMG_Load2((char*)"gfx/mouse.png"))
89c4a3a6 sago007 2008-08-29 14:32 545
         ))
89c4a3a6 sago007 2008-08-29 14:32 546
        //if there was a problem ie. "File not found"
89c4a3a6 sago007 2008-08-29 14:32 547
    {
89c4a3a6 sago007 2008-08-29 14:32 548
        cout << "Error loading image file: " << SDL_GetError() << endl;
89c4a3a6 sago007 2008-08-29 14:32 549
        exit(1);
89c4a3a6 sago007 2008-08-29 14:32 550
    }
89c4a3a6 sago007 2008-08-29 14:32 551
89c4a3a6 sago007 2008-08-29 14:32 552
89c4a3a6 sago007 2008-08-29 14:32 553
    //Prepare for fast blittering!
89c4a3a6 sago007 2008-08-29 14:32 554
    CONVERT(background);
89c4a3a6 sago007 2008-08-29 14:32 555
    CONVERT(bNewGame);
89c4a3a6 sago007 2008-08-29 14:32 556
    CONVERT(backgroundImage);
89c4a3a6 sago007 2008-08-29 14:32 557
    CONVERT(b1player);
89c4a3a6 sago007 2008-08-29 14:32 558
    CONVERT(b2players);
89c4a3a6 sago007 2008-08-29 14:32 559
    CONVERT(bVsMode);
89c4a3a6 sago007 2008-08-29 14:32 560
    CONVERT(bPuzzle);
89c4a3a6 sago007 2008-08-29 14:32 561
    CONVERT(bStageClear);
89c4a3a6 sago007 2008-08-29 14:32 562
    CONVERT(bTimeTrial);
89c4a3a6 sago007 2008-08-29 14:32 563
    CONVERT(bEndless);
89c4a3a6 sago007 2008-08-29 14:32 564
    CONVERT(bOptions);
89c4a3a6 sago007 2008-08-29 14:32 565
    CONVERTA(bConfigure);
89c4a3a6 sago007 2008-08-29 14:32 566
    CONVERTA(bSelectPuzzle);
89c4a3a6 sago007 2008-08-29 14:32 567
    CONVERTA(bReplay);
89c4a3a6 sago007 2008-08-29 14:32 568
    CONVERTA(bSave);
89c4a3a6 sago007 2008-08-29 14:32 569
    CONVERTA(bLoad);
89c4a3a6 sago007 2008-08-29 14:32 570
    CONVERTA(bTheme);
89c4a3a6 sago007 2008-08-29 14:32 571
    CONVERTA(bSkip);
89c4a3a6 sago007 2008-08-29 14:32 572
    CONVERTA(bRetry);
89c4a3a6 sago007 2008-08-29 14:32 573
    CONVERTA(bNext);
89c4a3a6 sago007 2008-08-29 14:32 574
#ifdef NETWORK
89c4a3a6 sago007 2008-08-29 14:32 575
    CONVERTA(bNetwork);
89c4a3a6 sago007 2008-08-29 14:32 576
    CONVERTA(bHost);
89c4a3a6 sago007 2008-08-29 14:32 577
    CONVERTA(bConnect);
89c4a3a6 sago007 2008-08-29 14:32 578
#endif
89c4a3a6 sago007 2008-08-29 14:32 579
    CONVERT(bHighScore);
89c4a3a6 sago007 2008-08-29 14:32 580
    CONVERTA(boardBackBack);
89c4a3a6 sago007 2008-08-29 14:32 581
    CONVERT(backBoard);
89c4a3a6 sago007 2008-08-29 14:32 582
    CONVERT(blackLine);
89c4a3a6 sago007 2008-08-29 14:32 583
    CONVERTA(changeButtonsBack);
89c4a3a6 sago007 2008-08-29 14:32 584
    CONVERTA(cursor[0]);
89c4a3a6 sago007 2008-08-29 14:32 585
    CONVERTA(cursor[1]);
89c4a3a6 sago007 2008-08-29 14:32 586
    CONVERTA(counter[0]);
89c4a3a6 sago007 2008-08-29 14:32 587
    CONVERTA(counter[1]);
89c4a3a6 sago007 2008-08-29 14:32 588
    CONVERTA(counter[2]);
89c4a3a6 sago007 2008-08-29 14:32 589
    CONVERTA(topscoresBack);
89c4a3a6 sago007 2008-08-29 14:32 590
    CONVERTA(optionsBack);
89c4a3a6 sago007 2008-08-29 14:32 591
    CONVERT(bExit);
89c4a3a6 sago007 2008-08-29 14:32 592
    CONVERT(bOn);
89c4a3a6 sago007 2008-08-29 14:32 593
    CONVERT(bOff);
89c4a3a6 sago007 2008-08-29 14:32 594
    CONVERT(bChange);
89c4a3a6 sago007 2008-08-29 14:32 595
    CONVERT(b1024);
89c4a3a6 sago007 2008-08-29 14:32 596
    CONVERTA(dialogBox);
89c4a3a6 sago007 2008-08-29 14:32 597
//	CONVERTA(fileDialogBox);
89c4a3a6 sago007 2008-08-29 14:32 598
    CONVERTA(iLevelCheck);
89c4a3a6 sago007 2008-08-29 14:32 599
    CONVERT(iLevelCheckBox);
89c4a3a6 sago007 2008-08-29 14:32 600
    CONVERTA(iCheckBoxArea);
89c4a3a6 sago007 2008-08-29 14:32 601
    for (int i = 0;i<4;i++)
89c4a3a6 sago007 2008-08-29 14:32 602
    {
89c4a3a6 sago007 2008-08-29 14:32 603
        CONVERTA(explosion[i]);
89c4a3a6 sago007 2008-08-29 14:32 604
    }
89c4a3a6 sago007 2008-08-29 14:32 605
    for (int i = 0; i<7; i++)
89c4a3a6 sago007 2008-08-29 14:32 606
    {
89c4a3a6 sago007 2008-08-29 14:32 607
        CONVERTA(bricks[i]);
89c4a3a6 sago007 2008-08-29 14:32 608
        CONVERTA(balls[i]);
89c4a3a6 sago007 2008-08-29 14:32 609
    }
89c4a3a6 sago007 2008-08-29 14:32 610
    CONVERTA(crossover);
89c4a3a6 sago007 2008-08-29 14:32 611
    CONVERTA(garbageTL);
89c4a3a6 sago007 2008-08-29 14:32 612
    CONVERTA(garbageT);
89c4a3a6 sago007 2008-08-29 14:32 613
    CONVERTA(garbageTR);
89c4a3a6 sago007 2008-08-29 14:32 614
    CONVERTA(garbageR);
89c4a3a6 sago007 2008-08-29 14:32 615
    CONVERTA(garbageBR);
89c4a3a6 sago007 2008-08-29 14:32 616
    CONVERTA(garbageB);
89c4a3a6 sago007 2008-08-29 14:32 617
    CONVERTA(garbageBL);
89c4a3a6 sago007 2008-08-29 14:32 618
    CONVERTA(garbageL);
89c4a3a6 sago007 2008-08-29 14:32 619
    CONVERTA(garbageFill);
89c4a3a6 sago007 2008-08-29 14:32 620
    CONVERTA(garbageML);
89c4a3a6 sago007 2008-08-29 14:32 621
    CONVERTA(garbageMR);
89c4a3a6 sago007 2008-08-29 14:32 622
    CONVERTA(garbageM);
89c4a3a6 sago007 2008-08-29 14:32 623
    CONVERTA(garbageGML);
89c4a3a6 sago007 2008-08-29 14:32 624
    CONVERTA(garbageGMR);
89c4a3a6 sago007 2008-08-29 14:32 625
    CONVERTA(garbageGM);
89c4a3a6 sago007 2008-08-29 14:32 626
    CONVERTA(smiley[0]);
89c4a3a6 sago007 2008-08-29 14:32 627
    CONVERTA(smiley[1]);
89c4a3a6 sago007 2008-08-29 14:32 628
    CONVERTA(smiley[2]);
89c4a3a6 sago007 2008-08-29 14:32 629
    CONVERTA(smiley[3]);
89c4a3a6 sago007 2008-08-29 14:32 630
    CONVERTA(iWinner);
89c4a3a6 sago007 2008-08-29 14:32 631
    CONVERTA(iDraw);
89c4a3a6 sago007 2008-08-29 14:32 632
    CONVERTA(iLoser);
89c4a3a6 sago007 2008-08-29 14:32 633
    CONVERTA(iChainBack);
89c4a3a6 sago007 2008-08-29 14:32 634
    CONVERTA(iBlueFont);
89c4a3a6 sago007 2008-08-29 14:32 635
    CONVERTA(iSmallFont);
89c4a3a6 sago007 2008-08-29 14:32 636
    CONVERTA(iGameOver);
89c4a3a6 sago007 2008-08-29 14:32 637
    CONVERTA(mouse);
89c4a3a6 sago007 2008-08-29 14:32 638
    CONVERTA(stageBobble);
89c4a3a6 sago007 2008-08-29 14:32 639
    CONVERTA(transCover);
89c4a3a6 sago007 2008-08-29 14:32 640
    //Editor:
89c4a3a6 sago007 2008-08-29 14:32 641
    /*CONVERTA(bCreateFile);
89c4a3a6 sago007 2008-08-29 14:32 642
    CONVERTA(bDeletePuzzle);
89c4a3a6 sago007 2008-08-29 14:32 643
    CONVERTA(bLoadFile);
89c4a3a6 sago007 2008-08-29 14:32 644
    CONVERTA(bMoveBack);
89c4a3a6 sago007 2008-08-29 14:32 645
    CONVERTA(bMoveDown);
89c4a3a6 sago007 2008-08-29 14:32 646
    CONVERTA(bMoveForward);
89c4a3a6 sago007 2008-08-29 14:32 647
    CONVERTA(bMoveLeft);
89c4a3a6 sago007 2008-08-29 14:32 648
    CONVERTA(bMoveRight);
89c4a3a6 sago007 2008-08-29 14:32 649
    CONVERTA(bMoveUp);
89c4a3a6 sago007 2008-08-29 14:32 650
    CONVERTA(bNewPuzzle);
89c4a3a6 sago007 2008-08-29 14:32 651
    CONVERTA(bSaveFileAs);
89c4a3a6 sago007 2008-08-29 14:32 652
    CONVERTA(bSavePuzzle);
89c4a3a6 sago007 2008-08-29 14:32 653
    CONVERTA(bSaveToFile);
89c4a3a6 sago007 2008-08-29 14:32 654
    CONVERTA(bTestPuzzle);*/
89c4a3a6 sago007 2008-08-29 14:32 655
89c4a3a6 sago007 2008-08-29 14:32 656
    //Here comes the fonts:
89c4a3a6 sago007 2008-08-29 14:32 657
    fBlueFont = SFont_InitFont(iBlueFont);
89c4a3a6 sago007 2008-08-29 14:32 658
    fSmallFont = SFont_InitFont(iSmallFont);
89c4a3a6 sago007 2008-08-29 14:32 659
    
89c4a3a6 sago007 2008-08-29 14:32 660
    //And the ttf font:
89c4a3a6 sago007 2008-08-29 14:32 661
//    TTF_Font *ttFont1 = TTF_OpenFont2("fonts/FreeSerif.ttf", 24);
89c4a3a6 sago007 2008-08-29 14:32 662
//    TTF_SetFontStyle(ttFont1,TTF_STYLE_BOLD);
89c4a3a6 sago007 2008-08-29 14:32 663
//    ttfont = TTFont(ttFont1);
89c4a3a6 sago007 2008-08-29 14:32 664
89c4a3a6 sago007 2008-08-29 14:32 665
//Loads the sound if sound present
89c4a3a6 sago007 2008-08-29 14:32 666
    if (!NoSound)
89c4a3a6 sago007 2008-08-29 14:32 667
    {
89c4a3a6 sago007 2008-08-29 14:32 668
        //And here the music:
89c4a3a6 sago007 2008-08-29 14:32 669
        bgMusic = Mix_LoadMUS2((char*)"music/bgMusic.ogg");
89c4a3a6 sago007 2008-08-29 14:32 670
        //the music... we just hope it exists, else the user won't hear anything
89c4a3a6 sago007 2008-08-29 14:32 671
        //Same goes for the sounds
89c4a3a6 sago007 2008-08-29 14:32 672
        boing = Mix_LoadWAV2((char*)"sound/pop.ogg");
89c4a3a6 sago007 2008-08-29 14:32 673
        timesUp = Mix_LoadWAV2((char*)"sound/whistleblow.ogg");
89c4a3a6 sago007 2008-08-29 14:32 674
        applause = Mix_LoadWAV2((char*)"sound/applause.ogg");
89c4a3a6 sago007 2008-08-29 14:32 675
        photoClick = Mix_LoadWAV2((char*)"sound/cameraclick.ogg");
89c4a3a6 sago007 2008-08-29 14:32 676
        heartBeat = Mix_LoadWAV2((char*)"sound/heartbeat3.ogg");
89c4a3a6 sago007 2008-08-29 14:32 677
        typingChunk = Mix_LoadWAV2((char*)"sound/typing.ogg");
89c4a3a6 sago007 2008-08-29 14:32 678
        counterChunk = Mix_LoadWAV2((char*)"sound/counter.ogg");
89c4a3a6 sago007 2008-08-29 14:32 679
    } //All sound has been loaded or not
89c4a3a6 sago007 2008-08-29 14:32 680
    return 0;
89c4a3a6 sago007 2008-08-29 14:32 681
} //InitImages()
89c4a3a6 sago007 2008-08-29 14:32 682
89c4a3a6 sago007 2008-08-29 14:32 683
89c4a3a6 sago007 2008-08-29 14:32 684
//Unload images and fonts and sounds
89c4a3a6 sago007 2008-08-29 14:32 685
void UnloadImages()
89c4a3a6 sago007 2008-08-29 14:32 686
{
89c4a3a6 sago007 2008-08-29 14:32 687
    //Fonts and Sounds needs to be freed
89c4a3a6 sago007 2008-08-29 14:32 688
    SFont_FreeFont(fBlueFont);
89c4a3a6 sago007 2008-08-29 14:32 689
    SFont_FreeFont(fSmallFont);
89c4a3a6 sago007 2008-08-29 14:32 690
    if (!NoSound) //Only unload then it has been loaded!
89c4a3a6 sago007 2008-08-29 14:32 691
    {
89c4a3a6 sago007 2008-08-29 14:32 692
        Mix_FreeMusic(bgMusic);
89c4a3a6 sago007 2008-08-29 14:32 693
        Mix_FreeChunk(boing);
89c4a3a6 sago007 2008-08-29 14:32 694
        Mix_FreeChunk(timesUp);
89c4a3a6 sago007 2008-08-29 14:32 695
        Mix_FreeChunk(applause);
89c4a3a6 sago007 2008-08-29 14:32 696
        Mix_FreeChunk(photoClick);
89c4a3a6 sago007 2008-08-29 14:32 697
        Mix_FreeChunk(heartBeat);
89c4a3a6 sago007 2008-08-29 14:32 698
        Mix_FreeChunk(counterChunk);
89c4a3a6 sago007 2008-08-29 14:32 699
        Mix_FreeChunk(typingChunk);
89c4a3a6 sago007 2008-08-29 14:32 700
    }
89c4a3a6 sago007 2008-08-29 14:32 701
    //Free surfaces:
89c4a3a6 sago007 2008-08-29 14:32 702
    //I think this will crash, at least it happend to me...
89c4a3a6 sago007 2008-08-29 14:32 703
    SDL_FreeSurface(backgroundImage);
89c4a3a6 sago007 2008-08-29 14:32 704
    SDL_FreeSurface(background);
89c4a3a6 sago007 2008-08-29 14:32 705
    SDL_FreeSurface(bNewGame);
89c4a3a6 sago007 2008-08-29 14:32 706
    SDL_FreeSurface(b1player);
89c4a3a6 sago007 2008-08-29 14:32 707
    SDL_FreeSurface(b2players);
89c4a3a6 sago007 2008-08-29 14:32 708
    SDL_FreeSurface(bVsMode);
89c4a3a6 sago007 2008-08-29 14:32 709
    SDL_FreeSurface(bPuzzle);
89c4a3a6 sago007 2008-08-29 14:32 710
    SDL_FreeSurface(bStageClear);
89c4a3a6 sago007 2008-08-29 14:32 711
    SDL_FreeSurface(bTimeTrial);
89c4a3a6 sago007 2008-08-29 14:32 712
    SDL_FreeSurface(bEndless);
89c4a3a6 sago007 2008-08-29 14:32 713
    SDL_FreeSurface(bOptions);
89c4a3a6 sago007 2008-08-29 14:32 714
    SDL_FreeSurface(bConfigure);
89c4a3a6 sago007 2008-08-29 14:32 715
    SDL_FreeSurface(bSelectPuzzle);
89c4a3a6 sago007 2008-08-29 14:32 716
    SDL_FreeSurface(bHighScore);
89c4a3a6 sago007 2008-08-29 14:32 717
    SDL_FreeSurface(bReplay);
89c4a3a6 sago007 2008-08-29 14:32 718
    SDL_FreeSurface(bSave);
89c4a3a6 sago007 2008-08-29 14:32 719
    SDL_FreeSurface(bLoad);
89c4a3a6 sago007 2008-08-29 14:32 720
    #ifdef NETWORK
89c4a3a6 sago007 2008-08-29 14:32 721
    SDL_FreeSurface(bNetwork);
89c4a3a6 sago007 2008-08-29 14:32 722
    SDL_FreeSurface(bHost);
89c4a3a6 sago007 2008-08-29 14:32 723
    SDL_FreeSurface(bConnect);
89c4a3a6 sago007 2008-08-29 14:32 724
    #endif
89c4a3a6 sago007 2008-08-29 14:32 725
    SDL_FreeSurface(bExit);
89c4a3a6 sago007 2008-08-29 14:32 726
    SDL_FreeSurface(blackLine);
89c4a3a6 sago007 2008-08-29 14:32 727
    SDL_FreeSurface(stageBobble);
89c4a3a6 sago007 2008-08-29 14:32 728
    SDL_FreeSurface(bricks[0]);
89c4a3a6 sago007 2008-08-29 14:32 729
    SDL_FreeSurface(bricks[1]);
89c4a3a6 sago007 2008-08-29 14:32 730
    SDL_FreeSurface(bricks[2]);
89c4a3a6 sago007 2008-08-29 14:32 731
    SDL_FreeSurface(bricks[3]);
89c4a3a6 sago007 2008-08-29 14:32 732
    SDL_FreeSurface(bricks[4]);
89c4a3a6 sago007 2008-08-29 14:32 733
    SDL_FreeSurface(bricks[5]);
89c4a3a6 sago007 2008-08-29 14:32 734
    SDL_FreeSurface(bricks[6]);
89c4a3a6 sago007 2008-08-29 14:32 735
    SDL_FreeSurface(crossover);
89c4a3a6 sago007 2008-08-29 14:32 736
    SDL_FreeSurface(balls[0]);
89c4a3a6 sago007 2008-08-29 14:32 737
    SDL_FreeSurface(balls[1]);
89c4a3a6 sago007 2008-08-29 14:32 738
    SDL_FreeSurface(balls[2]);
89c4a3a6 sago007 2008-08-29 14:32 739
    SDL_FreeSurface(balls[3]);
89c4a3a6 sago007 2008-08-29 14:32 740
    SDL_FreeSurface(balls[4]);
89c4a3a6 sago007 2008-08-29 14:32 741
    SDL_FreeSurface(balls[5]);
89c4a3a6 sago007 2008-08-29 14:32 742
    SDL_FreeSurface(balls[6]);
89c4a3a6 sago007 2008-08-29 14:32 743
    SDL_FreeSurface(cursor[0]);
89c4a3a6 sago007 2008-08-29 14:32 744
    SDL_FreeSurface(cursor[1]);
89c4a3a6 sago007 2008-08-29 14:32 745
    SDL_FreeSurface(backBoard); //not used, we just test if it exists :)
89c4a3a6 sago007 2008-08-29 14:32 746
    SDL_FreeSurface(iGameOver);
89c4a3a6 sago007 2008-08-29 14:32 747
    SDL_FreeSurface(iWinner);
89c4a3a6 sago007 2008-08-29 14:32 748
    SDL_FreeSurface(iDraw);
89c4a3a6 sago007 2008-08-29 14:32 749
    SDL_FreeSurface(iLoser);
89c4a3a6 sago007 2008-08-29 14:32 750
    SDL_FreeSurface(iChainBack);
89c4a3a6 sago007 2008-08-29 14:32 751
    //SDL_FreeSurface(iBlueFont); //Segfault
89c4a3a6 sago007 2008-08-29 14:32 752
    //SDL_FreeSurface(iSmallFont); //Segfault
89c4a3a6 sago007 2008-08-29 14:32 753
    SDL_FreeSurface(topscoresBack);
89c4a3a6 sago007 2008-08-29 14:32 754
    SDL_FreeSurface(optionsBack);
89c4a3a6 sago007 2008-08-29 14:32 755
    SDL_FreeSurface(bOn);
89c4a3a6 sago007 2008-08-29 14:32 756
    SDL_FreeSurface(bOff);
89c4a3a6 sago007 2008-08-29 14:32 757
    SDL_FreeSurface(bChange);
89c4a3a6 sago007 2008-08-29 14:32 758
    SDL_FreeSurface(b1024);
89c4a3a6 sago007 2008-08-29 14:32 759
    SDL_FreeSurface(dialogBox);
89c4a3a6 sago007 2008-08-29 14:32 760
    //SDL_FreeSurface(fileDialogBox);
89c4a3a6 sago007 2008-08-29 14:32 761
    SDL_FreeSurface(iLevelCheck);
89c4a3a6 sago007 2008-08-29 14:32 762
    SDL_FreeSurface(iLevelCheckBox);
89c4a3a6 sago007 2008-08-29 14:32 763
    SDL_FreeSurface(iCheckBoxArea);
89c4a3a6 sago007 2008-08-29 14:32 764
    SDL_FreeSurface(boardBackBack);
89c4a3a6 sago007 2008-08-29 14:32 765
    SDL_FreeSurface(changeButtonsBack);
89c4a3a6 sago007 2008-08-29 14:32 766
    SDL_FreeSurface(garbageTL);
89c4a3a6 sago007 2008-08-29 14:32 767
    SDL_FreeSurface(garbageT);
89c4a3a6 sago007 2008-08-29 14:32 768
    SDL_FreeSurface(garbageTR);
89c4a3a6 sago007 2008-08-29 14:32 769
    SDL_FreeSurface(garbageR);
89c4a3a6 sago007 2008-08-29 14:32 770
    SDL_FreeSurface(garbageBR);
89c4a3a6 sago007 2008-08-29 14:32 771
    SDL_FreeSurface(garbageB);
89c4a3a6 sago007 2008-08-29 14:32 772
    SDL_FreeSurface(garbageBL);
89c4a3a6 sago007 2008-08-29 14:32 773
    SDL_FreeSurface(garbageL);
89c4a3a6 sago007 2008-08-29 14:32 774
    SDL_FreeSurface(garbageFill);
89c4a3a6 sago007 2008-08-29 14:32 775
    SDL_FreeSurface(garbageML);
89c4a3a6 sago007 2008-08-29 14:32 776
    SDL_FreeSurface(garbageM);
89c4a3a6 sago007 2008-08-29 14:32 777
    SDL_FreeSurface(garbageMR);
89c4a3a6 sago007 2008-08-29 14:32 778
    SDL_FreeSurface(garbageGML);
89c4a3a6 sago007 2008-08-29 14:32 779
    SDL_FreeSurface(garbageGM);
89c4a3a6 sago007 2008-08-29 14:32 780
    SDL_FreeSurface(garbageGMR);
89c4a3a6 sago007 2008-08-29 14:32 781
    SDL_FreeSurface(smiley[0]);
89c4a3a6 sago007 2008-08-29 14:32 782
    SDL_FreeSurface(smiley[1]);
89c4a3a6 sago007 2008-08-29 14:32 783
    SDL_FreeSurface(smiley[2]);
89c4a3a6 sago007 2008-08-29 14:32 784
    SDL_FreeSurface(smiley[3]);
89c4a3a6 sago007 2008-08-29 14:32 785
    SDL_FreeSurface(transCover);
89c4a3a6 sago007 2008-08-29 14:32 786
    SDL_FreeSurface(mouse);
89c4a3a6 sago007 2008-08-29 14:32 787
    
89c4a3a6 sago007 2008-08-29 14:32 788
}
89c4a3a6 sago007 2008-08-29 14:32 789
89c4a3a6 sago007 2008-08-29 14:32 790
//Function to convert numbers to string
89c4a3a6 sago007 2008-08-29 14:32 791
string itoa(int num)
89c4a3a6 sago007 2008-08-29 14:32 792
{
89c4a3a6 sago007 2008-08-29 14:32 793
    stringstream converter;
89c4a3a6 sago007 2008-08-29 14:32 794
    converter << num;
89c4a3a6 sago007 2008-08-29 14:32 795
    return converter.str();
89c4a3a6 sago007 2008-08-29 14:32 796
}
89c4a3a6 sago007 2008-08-29 14:32 797
89c4a3a6 sago007 2008-08-29 14:32 798
//Function to convert numbers to string (2 diget)
89c4a3a6 sago007 2008-08-29 14:32 799
string itoa2(int num)
89c4a3a6 sago007 2008-08-29 14:32 800
{
89c4a3a6 sago007 2008-08-29 14:32 801
    stringstream converter;
89c4a3a6 sago007 2008-08-29 14:32 802
    if(num<10)
89c4a3a6 sago007 2008-08-29 14:32 803
        converter << "0";
89c4a3a6 sago007 2008-08-29 14:32 804
    converter << num;
89c4a3a6 sago007 2008-08-29 14:32 805
    return converter.str();
89c4a3a6 sago007 2008-08-29 14:32 806
}
89c4a3a6 sago007 2008-08-29 14:32 807
89c4a3a6 sago007 2008-08-29 14:32 808
/*Loads all the puzzle levels*/
89c4a3a6 sago007 2008-08-29 14:32 809
int LoadPuzzleStages()
89c4a3a6 sago007 2008-08-29 14:32 810
{
89c4a3a6 sago007 2008-08-29 14:32 811
    //if(puzzleLoaded)
89c4a3a6 sago007 2008-08-29 14:32 812
    //    return 1;
89c4a3a6 sago007 2008-08-29 14:32 813
#ifdef __unix__
89c4a3a6 sago007 2008-08-29 14:32 814
    string filename0 = (string)getenv("HOME")+(string)"/.gamesaves/blockattack/puzzles/";
89c4a3a6 sago007 2008-08-29 14:32 815
    filename0 = filename0+puzzleName;
89c4a3a6 sago007 2008-08-29 14:32 816
    if (singlePuzzle)
89c4a3a6 sago007 2008-08-29 14:32 817
        filename0 = singlePuzzleFile;
89c4a3a6 sago007 2008-08-29 14:32 818
#endif //__unix__
89c4a3a6 sago007 2008-08-29 14:32 819
#ifdef SHAREDIR
89c4a3a6 sago007 2008-08-29 14:32 820
    string filename = (string)SHAREDIR+(string)"/res/";
89c4a3a6 sago007 2008-08-29 14:32 821
    filename = filename+puzzleName;
89c4a3a6 sago007 2008-08-29 14:32 822
#else
89c4a3a6 sago007 2008-08-29 14:32 823
    string filename = "res/"+puzzleName;
89c4a3a6 sago007 2008-08-29 14:32 824
#endif
89c4a3a6 sago007 2008-08-29 14:32 825
#ifdef __unix__
89c4a3a6 sago007 2008-08-29 14:32 826
    ifstream inFile(filename0.c_str());
89c4a3a6 sago007 2008-08-29 14:32 827
    if (!inFile)
89c4a3a6 sago007 2008-08-29 14:32 828
        inFile.open(filename.c_str());
89c4a3a6 sago007 2008-08-29 14:32 829
#else
89c4a3a6 sago007 2008-08-29 14:32 830
    ifstream inFile(filename.c_str());
89c4a3a6 sago007 2008-08-29 14:32 831
#endif
89c4a3a6 sago007 2008-08-29 14:32 832
    inFile >> nrOfPuzzles;
89c4a3a6 sago007 2008-08-29 14:32 833
    if (nrOfPuzzles>maxNrOfPuzzleStages)
89c4a3a6 sago007 2008-08-29 14:32 834
        nrOfPuzzles=maxNrOfPuzzleStages;
89c4a3a6 sago007 2008-08-29 14:32 835
    for (int k=0; (k<nrOfPuzzles)&&(!inFile.eof()); k++)
89c4a3a6 sago007 2008-08-29 14:32 836
    {
89c4a3a6 sago007 2008-08-29 14:32 837
        inFile >> nrOfMovesAllowed[k];
89c4a3a6 sago007 2008-08-29 14:32 838
        for (int i=11;i>=0;i--)
89c4a3a6 sago007 2008-08-29 14:32 839
            for (int j=0;j<6;j++)
89c4a3a6 sago007 2008-08-29 14:32 840
            {
89c4a3a6 sago007 2008-08-29 14:32 841
                inFile >> puzzleLevels[k][j][i];
89c4a3a6 sago007 2008-08-29 14:32 842
            }
89c4a3a6 sago007 2008-08-29 14:32 843
    }
89c4a3a6 sago007 2008-08-29 14:32 844
    puzzleLoaded = true;
89c4a3a6 sago007 2008-08-29 14:32 845
    return 0;
89c4a3a6 sago007 2008-08-29 14:32 846
}
89c4a3a6 sago007 2008-08-29 14:32 847
89c4a3a6 sago007 2008-08-29 14:32 848
/*Draws a image from on a given Surface. Takes source image, destination surface and coordinates*/
89c4a3a6 sago007 2008-08-29 14:32 849
inline void DrawIMG(SDL_Surface *img, SDL_Surface *target, int x, int y)
89c4a3a6 sago007 2008-08-29 14:32 850
{
89c4a3a6 sago007 2008-08-29 14:32 851
    SDL_Rect dest;
89c4a3a6 sago007 2008-08-29 14:32 852
    dest.x = x;
89c4a3a6 sago007 2008-08-29 14:32 853
    dest.y = y;
89c4a3a6 sago007 2008-08-29 14:32 854
    SDL_BlitSurface(img, NULL, target, &dest);
89c4a3a6 sago007 2008-08-29 14:32 855
}
89c4a3a6 sago007 2008-08-29 14:32 856
89c4a3a6 sago007 2008-08-29 14:32 857
/*Draws a part of an image on a surface of choice*/
89c4a3a6 sago007 2008-08-29 14:32 858
void DrawIMG(SDL_Surface *img, SDL_Surface * target, int x, int y, int w, int h, int x2, int y2)
89c4a3a6 sago007 2008-08-29 14:32 859
{
89c4a3a6 sago007 2008-08-29 14:32 860
    SDL_Rect dest;
89c4a3a6 sago007 2008-08-29 14:32 861
    dest.x = x;
89c4a3a6 sago007 2008-08-29 14:32 862
    dest.y = y;
89c4a3a6 sago007 2008-08-29 14:32 863
    SDL_Rect dest2;
89c4a3a6 sago007 2008-08-29 14:32 864
    dest2.x = x2;
89c4a3a6 sago007 2008-08-29 14:32 865
    dest2.y = y2;
89c4a3a6 sago007 2008-08-29 14:32 866
    dest2.w = w;
89c4a3a6 sago007 2008-08-29 14:32 867
    dest2.h = h;
89c4a3a6 sago007 2008-08-29 14:32 868
    SDL_BlitSurface(img, &dest2, target, &dest);
89c4a3a6 sago007 2008-08-29 14:32 869
}
89c4a3a6 sago007 2008-08-29 14:32 870
89c4a3a6 sago007 2008-08-29 14:32 871
//The small things that are faaling when you clear something
89c4a3a6 sago007 2008-08-29 14:32 872
class aBall
89c4a3a6 sago007 2008-08-29 14:32 873
{
89c4a3a6 sago007 2008-08-29 14:32 874
private:
89c4a3a6 sago007 2008-08-29 14:32 875
    double x;
89c4a3a6 sago007 2008-08-29 14:32 876
    double y;
89c4a3a6 sago007 2008-08-29 14:32 877
    double velocityY;
89c4a3a6 sago007 2008-08-29 14:32 878
    double velocityX;
89c4a3a6 sago007 2008-08-29 14:32 879
    int color;
89c4a3a6 sago007 2008-08-29 14:32 880
    unsigned long int lastTime;
89c4a3a6 sago007 2008-08-29 14:32 881
public:
89c4a3a6 sago007 2008-08-29 14:32 882
89c4a3a6 sago007 2008-08-29 14:32 883
    aBall()
89c4a3a6 sago007 2008-08-29 14:32 884
    {}
89c4a3a6 sago007 2008-08-29 14:32 885
89c4a3a6 sago007 2008-08-29 14:32 886
    //constructor:
89c4a3a6 sago007 2008-08-29 14:32 887
    aBall(int X, int Y, bool right, int coulor)
89c4a3a6 sago007 2008-08-29 14:32 888
    {
89c4a3a6 sago007 2008-08-29 14:32 889
        double tal = 1.0;
89c4a3a6 sago007 2008-08-29 14:32 890
        velocityY = -tal*startVelocityY;
89c4a3a6 sago007 2008-08-29 14:32 891
        lastTime = currentTime;
89c4a3a6 sago007 2008-08-29 14:32 892
        x = (double)X;
89c4a3a6 sago007 2008-08-29 14:32 893
        y = (double)Y;
89c4a3a6 sago007 2008-08-29 14:32 894
        color = coulor;
89c4a3a6 sago007 2008-08-29 14:32 895
        if (right)
89c4a3a6 sago007 2008-08-29 14:32 896
            velocityX = tal*VelocityX;
89c4a3a6 sago007 2008-08-29 14:32 897
        else
89c4a3a6 sago007 2008-08-29 14:32 898
            velocityX = -tal*VelocityX;
89c4a3a6 sago007 2008-08-29 14:32 899
    }  //constructor
89c4a3a6 sago007 2008-08-29 14:32 900
89c4a3a6 sago007 2008-08-29 14:32 901
    //Deconstructor
89c4a3a6 sago007 2008-08-29 14:32 902
    ~aBall()
89c4a3a6 sago007 2008-08-29 14:32 903
    {
89c4a3a6 sago007 2008-08-29 14:32 904
    }   //Deconstructor
89c4a3a6 sago007 2008-08-29 14:32 905
89c4a3a6 sago007 2008-08-29 14:32 906
    void update()
89c4a3a6 sago007 2008-08-29 14:32 907
    {
89c4a3a6 sago007 2008-08-29 14:32 908
        double timePassed = (((double)(currentTime-lastTime))/1000.0);  //time passed in seconds
89c4a3a6 sago007 2008-08-29 14:32 909
        x = x+timePassed*velocityX;
89c4a3a6 sago007 2008-08-29 14:32 910
        y = y+timePassed*velocityY;
89c4a3a6 sago007 2008-08-29 14:32 911
        velocityY = velocityY + gravity*timePassed;
89c4a3a6 sago007 2008-08-29 14:32 912
        if (y<1.0)
89c4a3a6 sago007 2008-08-29 14:32 913
            velocityY=10.0;
89c4a3a6 sago007 2008-08-29 14:32 914
        if ((velocityY>minVelocity) && (y>(double)(768-ballSize)) && (y<768.0))
89c4a3a6 sago007 2008-08-29 14:32 915
        {
89c4a3a6 sago007 2008-08-29 14:32 916
            velocityY = -0.70*velocityY;
89c4a3a6 sago007 2008-08-29 14:32 917
            y = 768.0-ballSize;
89c4a3a6 sago007 2008-08-29 14:32 918
        }
89c4a3a6 sago007 2008-08-29 14:32 919
        lastTime = currentTime;
89c4a3a6 sago007 2008-08-29 14:32 920
    }
89c4a3a6 sago007 2008-08-29 14:32 921
89c4a3a6 sago007 2008-08-29 14:32 922
    int getX()
89c4a3a6 sago007 2008-08-29 14:32 923
    {
89c4a3a6 sago007 2008-08-29 14:32 924
        return (int)x;
89c4a3a6 sago007 2008-08-29 14:32 925
    }
89c4a3a6 sago007 2008-08-29 14:32 926
89c4a3a6 sago007 2008-08-29 14:32 927
    int getY()
89c4a3a6 sago007 2008-08-29 14:32 928
    {
89c4a3a6 sago007 2008-08-29 14:32 929
        return (int)y;
89c4a3a6 sago007 2008-08-29 14:32 930
    }
89c4a3a6 sago007 2008-08-29 14:32 931
89c4a3a6 sago007 2008-08-29 14:32 932
    int getColor()
89c4a3a6 sago007 2008-08-29 14:32 933
    {
89c4a3a6 sago007 2008-08-29 14:32 934
        return color;
89c4a3a6 sago007 2008-08-29 14:32 935
    }
89c4a3a6 sago007 2008-08-29 14:32 936
};  //aBall
89c4a3a6 sago007 2008-08-29 14:32 937
89c4a3a6 sago007 2008-08-29 14:32 938
const int maxNumberOfBalls = 100;
89c4a3a6 sago007 2008-08-29 14:32 939
89c4a3a6 sago007 2008-08-29 14:32 940
class ballManeger
89c4a3a6 sago007 2008-08-29 14:32 941
{
89c4a3a6 sago007 2008-08-29 14:32 942
public:
89c4a3a6 sago007 2008-08-29 14:32 943
    aBall ballArray[maxNumberOfBalls];
89c4a3a6 sago007 2008-08-29 14:32 944
    bool ballUsed[maxNumberOfBalls];
89c4a3a6 sago007 2008-08-29 14:32 945
    //The old ball information is also saved so balls can be deleted!
89c4a3a6 sago007 2008-08-29 14:32 946
    aBall oldBallArray[maxNumberOfBalls];
89c4a3a6 sago007 2008-08-29 14:32 947
    bool oldBallUsed[maxNumberOfBalls];
89c4a3a6 sago007 2008-08-29 14:32 948
89c4a3a6 sago007 2008-08-29 14:32 949
    ballManeger()
89c4a3a6 sago007 2008-08-29 14:32 950
    {
89c4a3a6 sago007 2008-08-29 14:32 951
        for (int i=0; i<maxNumberOfBalls; i++)
89c4a3a6 sago007 2008-08-29 14:32 952
        {
89c4a3a6 sago007 2008-08-29 14:32 953
            ballUsed[i] = false;
89c4a3a6 sago007 2008-08-29 14:32 954
            oldBallUsed[i] = false;
89c4a3a6 sago007 2008-08-29 14:32 955
        }
89c4a3a6 sago007 2008-08-29 14:32 956
    }
89c4a3a6 sago007 2008-08-29 14:32 957
89c4a3a6 sago007 2008-08-29 14:32 958
    int addBall(int x, int y,bool right,int color)
89c4a3a6 sago007 2008-08-29 14:32 959
    {
89c4a3a6 sago007 2008-08-29 14:32 960
        //cout << "Tries to add a ball" << endl;
89c4a3a6 sago007 2008-08-29 14:32 961
        int ballNumber = 0;
89c4a3a6 sago007 2008-08-29 14:32 962
        while ((ballUsed[ballNumber])&&(ballNumber<maxNumberOfBalls))
89c4a3a6 sago007 2008-08-29 14:32 963
            ballNumber++;
89c4a3a6 sago007 2008-08-29 14:32 964
        if (ballNumber==maxNumberOfBalls)
89c4a3a6 sago007 2008-08-29 14:32 965
            return -1;
89c4a3a6 sago007 2008-08-29 14:32 966
        currentTime = SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 967
        ballArray[ballNumber] = aBall(x,y,right,color);
89c4a3a6 sago007 2008-08-29 14:32 968
        ballUsed[ballNumber] = true;
89c4a3a6 sago007 2008-08-29 14:32 969
        //cout << "Ball added" << endl;
89c4a3a6 sago007 2008-08-29 14:32 970
        return 1;
89c4a3a6 sago007 2008-08-29 14:32 971
    }  //addBall
89c4a3a6 sago007 2008-08-29 14:32 972
89c4a3a6 sago007 2008-08-29 14:32 973
    void update()
89c4a3a6 sago007 2008-08-29 14:32 974
    {
89c4a3a6 sago007 2008-08-29 14:32 975
        currentTime = SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 976
        for (int i = 0; i<maxNumberOfBalls; i++)
89c4a3a6 sago007 2008-08-29 14:32 977
        {
89c4a3a6 sago007 2008-08-29 14:32 978
89c4a3a6 sago007 2008-08-29 14:32 979
            if (ballUsed[i])
89c4a3a6 sago007 2008-08-29 14:32 980
            {
89c4a3a6 sago007 2008-08-29 14:32 981
                oldBallUsed[i] = true;
89c4a3a6 sago007 2008-08-29 14:32 982
                oldBallArray[i] = ballArray[i];
89c4a3a6 sago007 2008-08-29 14:32 983
                ballArray[i].update();
89c4a3a6 sago007 2008-08-29 14:32 984
                if (ballArray[i].getY()>800)
89c4a3a6 sago007 2008-08-29 14:32 985
                {
89c4a3a6 sago007 2008-08-29 14:32 986
                    ballArray[i].~aBall();
89c4a3a6 sago007 2008-08-29 14:32 987
                    ballUsed[i] = false;
89c4a3a6 sago007 2008-08-29 14:32 988
                    //cout << "Ball removed" << endl;
89c4a3a6 sago007 2008-08-29 14:32 989
                }
89c4a3a6 sago007 2008-08-29 14:32 990
            }
89c4a3a6 sago007 2008-08-29 14:32 991
            else
89c4a3a6 sago007 2008-08-29 14:32 992
            {
89c4a3a6 sago007 2008-08-29 14:32 993
                oldBallUsed[i] = false;
89c4a3a6 sago007 2008-08-29 14:32 994
            }
89c4a3a6 sago007 2008-08-29 14:32 995
        }
89c4a3a6 sago007 2008-08-29 14:32 996
    } //update
89c4a3a6 sago007 2008-08-29 14:32 997
89c4a3a6 sago007 2008-08-29 14:32 998
89c4a3a6 sago007 2008-08-29 14:32 999
}; //theBallManeger
89c4a3a6 sago007 2008-08-29 14:32 1000
89c4a3a6 sago007 2008-08-29 14:32 1001
ballManeger theBallManeger;
89c4a3a6 sago007 2008-08-29 14:32 1002
89c4a3a6 sago007 2008-08-29 14:32 1003
//a explosions, non moving
89c4a3a6 sago007 2008-08-29 14:32 1004
class anExplosion
89c4a3a6 sago007 2008-08-29 14:32 1005
{
89c4a3a6 sago007 2008-08-29 14:32 1006
private:
89c4a3a6 sago007 2008-08-29 14:32 1007
    int x;
89c4a3a6 sago007 2008-08-29 14:32 1008
    int y;
89c4a3a6 sago007 2008-08-29 14:32 1009
    Uint8 frameNumber;
89c4a3a6 sago007 2008-08-29 14:32 1010
#define frameLength 80
89c4a3a6 sago007 2008-08-29 14:32 1011
    //How long an image in an animation should be showed
89c4a3a6 sago007 2008-08-29 14:32 1012
#define maxFrame 4
89c4a3a6 sago007 2008-08-29 14:32 1013
    //How many images there are in the animation
89c4a3a6 sago007 2008-08-29 14:32 1014
    unsigned long int placeTime; //Then the explosion occored
89c4a3a6 sago007 2008-08-29 14:32 1015
public:
89c4a3a6 sago007 2008-08-29 14:32 1016
89c4a3a6 sago007 2008-08-29 14:32 1017
    anExplosion()
89c4a3a6 sago007 2008-08-29 14:32 1018
    {}
89c4a3a6 sago007 2008-08-29 14:32 1019
89c4a3a6 sago007 2008-08-29 14:32 1020
    //constructor:
89c4a3a6 sago007 2008-08-29 14:32 1021
    anExplosion(int X, int Y)
89c4a3a6 sago007 2008-08-29 14:32 1022
    {
89c4a3a6 sago007 2008-08-29 14:32 1023
        placeTime = currentTime;
89c4a3a6 sago007 2008-08-29 14:32 1024
        x = X;
89c4a3a6 sago007 2008-08-29 14:32 1025
        y = Y;
89c4a3a6 sago007 2008-08-29 14:32 1026
        frameNumber=0;
89c4a3a6 sago007 2008-08-29 14:32 1027
    }  //constructor
89c4a3a6 sago007 2008-08-29 14:32 1028
89c4a3a6 sago007 2008-08-29 14:32 1029
    //Deconstructor
89c4a3a6 sago007 2008-08-29 14:32 1030
    ~anExplosion()
89c4a3a6 sago007 2008-08-29 14:32 1031
    {
89c4a3a6 sago007 2008-08-29 14:32 1032
    }   //Deconstructor
89c4a3a6 sago007 2008-08-29 14:32 1033
89c4a3a6 sago007 2008-08-29 14:32 1034
    //true if animation has played and object should be removed from the screen
89c4a3a6 sago007 2008-08-29 14:32 1035
    bool removeMe()
89c4a3a6 sago007 2008-08-29 14:32 1036
    {
89c4a3a6 sago007 2008-08-29 14:32 1037
        frameNumber = (currentTime-placeTime)/frameLength;
89c4a3a6 sago007 2008-08-29 14:32 1038
        return (!(frameNumber<maxFrame));
89c4a3a6 sago007 2008-08-29 14:32 1039
    }
89c4a3a6 sago007 2008-08-29 14:32 1040
89c4a3a6 sago007 2008-08-29 14:32 1041
    int getX()
89c4a3a6 sago007 2008-08-29 14:32 1042
    {
89c4a3a6 sago007 2008-08-29 14:32 1043
        return (int)x;
89c4a3a6 sago007 2008-08-29 14:32 1044
    }
89c4a3a6 sago007 2008-08-29 14:32 1045
89c4a3a6 sago007 2008-08-29 14:32 1046
    int getY()
89c4a3a6 sago007 2008-08-29 14:32 1047
    {
89c4a3a6 sago007 2008-08-29 14:32 1048
        return (int)y;
89c4a3a6 sago007 2008-08-29 14:32 1049
    }
89c4a3a6 sago007 2008-08-29 14:32 1050
89c4a3a6 sago007 2008-08-29 14:32 1051
    int getFrame()
89c4a3a6 sago007 2008-08-29 14:32 1052
    {
89c4a3a6 sago007 2008-08-29 14:32 1053
        return frameNumber;
89c4a3a6 sago007 2008-08-29 14:32 1054
    }
89c4a3a6 sago007 2008-08-29 14:32 1055
};  //nExplosion
89c4a3a6 sago007 2008-08-29 14:32 1056
89c4a3a6 sago007 2008-08-29 14:32 1057
class explosionManeger
89c4a3a6 sago007 2008-08-29 14:32 1058
{
89c4a3a6 sago007 2008-08-29 14:32 1059
public:
89c4a3a6 sago007 2008-08-29 14:32 1060
    anExplosion explosionArray[maxNumberOfBalls];
89c4a3a6 sago007 2008-08-29 14:32 1061
    bool explosionUsed[maxNumberOfBalls];
89c4a3a6 sago007 2008-08-29 14:32 1062
    //The old explosion information is also saved so explosions can be deleted!
89c4a3a6 sago007 2008-08-29 14:32 1063
    anExplosion oldExplosionArray[maxNumberOfBalls];
89c4a3a6 sago007 2008-08-29 14:32 1064
    bool oldExplosionUsed[maxNumberOfBalls];
89c4a3a6 sago007 2008-08-29 14:32 1065
89c4a3a6 sago007 2008-08-29 14:32 1066
    explosionManeger()
89c4a3a6 sago007 2008-08-29 14:32 1067
    {
89c4a3a6 sago007 2008-08-29 14:32 1068
        for (int i=0; i<maxNumberOfBalls; i++)
89c4a3a6 sago007 2008-08-29 14:32 1069
        {
89c4a3a6 sago007 2008-08-29 14:32 1070
            explosionUsed[i] = false;
89c4a3a6 sago007 2008-08-29 14:32 1071
            oldExplosionUsed[i] = false;
89c4a3a6 sago007 2008-08-29 14:32 1072
        }
89c4a3a6 sago007 2008-08-29 14:32 1073
    }
89c4a3a6 sago007 2008-08-29 14:32 1074
89c4a3a6 sago007 2008-08-29 14:32 1075
    int addExplosion(int x, int y)
89c4a3a6 sago007 2008-08-29 14:32 1076
    {
89c4a3a6 sago007 2008-08-29 14:32 1077
        //cout << "Tries to add an explosion" << endl;
89c4a3a6 sago007 2008-08-29 14:32 1078
        int explosionNumber = 0;
89c4a3a6 sago007 2008-08-29 14:32 1079
        while ((explosionUsed[explosionNumber])&&(explosionNumber<maxNumberOfBalls))
89c4a3a6 sago007 2008-08-29 14:32 1080
            explosionNumber++;
89c4a3a6 sago007 2008-08-29 14:32 1081
        if (explosionNumber==maxNumberOfBalls)
89c4a3a6 sago007 2008-08-29 14:32 1082
            return -1;
89c4a3a6 sago007 2008-08-29 14:32 1083
        currentTime = SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 1084
        explosionArray[explosionNumber] = anExplosion(x,y);
89c4a3a6 sago007 2008-08-29 14:32 1085
        explosionUsed[explosionNumber] = true;
89c4a3a6 sago007 2008-08-29 14:32 1086
        //cout << "Explosion added" << endl;
89c4a3a6 sago007 2008-08-29 14:32 1087
        return 1;
89c4a3a6 sago007 2008-08-29 14:32 1088
    }  //addBall
89c4a3a6 sago007 2008-08-29 14:32 1089
89c4a3a6 sago007 2008-08-29 14:32 1090
    void update()
89c4a3a6 sago007 2008-08-29 14:32 1091
    {
89c4a3a6 sago007 2008-08-29 14:32 1092
        currentTime = SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 1093
        for (int i = 0; i<maxNumberOfBalls; i++)
89c4a3a6 sago007 2008-08-29 14:32 1094
        {
89c4a3a6 sago007 2008-08-29 14:32 1095
89c4a3a6 sago007 2008-08-29 14:32 1096
            if (explosionUsed[i])
89c4a3a6 sago007 2008-08-29 14:32 1097
            {
89c4a3a6 sago007 2008-08-29 14:32 1098
                oldExplosionUsed[i] = true;
89c4a3a6 sago007 2008-08-29 14:32 1099
                oldExplosionArray[i] = explosionArray[i];
89c4a3a6 sago007 2008-08-29 14:32 1100
                if (explosionArray[i].removeMe())
89c4a3a6 sago007 2008-08-29 14:32 1101
                {
89c4a3a6 sago007 2008-08-29 14:32 1102
                    explosionArray[i].~anExplosion();
89c4a3a6 sago007 2008-08-29 14:32 1103
                    explosionUsed[i] = false;
89c4a3a6 sago007 2008-08-29 14:32 1104
                    //cout << "Explosion removed" << endl;
89c4a3a6 sago007 2008-08-29 14:32 1105
                }
89c4a3a6 sago007 2008-08-29 14:32 1106
            }
89c4a3a6 sago007 2008-08-29 14:32 1107
            else
89c4a3a6 sago007 2008-08-29 14:32 1108
            {
89c4a3a6 sago007 2008-08-29 14:32 1109
                oldExplosionUsed[i] = false;
89c4a3a6 sago007 2008-08-29 14:32 1110
            }
89c4a3a6 sago007 2008-08-29 14:32 1111
        }
89c4a3a6 sago007 2008-08-29 14:32 1112
    } //update
89c4a3a6 sago007 2008-08-29 14:32 1113
89c4a3a6 sago007 2008-08-29 14:32 1114
89c4a3a6 sago007 2008-08-29 14:32 1115
}; //explosionManeger
89c4a3a6 sago007 2008-08-29 14:32 1116
89c4a3a6 sago007 2008-08-29 14:32 1117
explosionManeger theExplosionManeger;
89c4a3a6 sago007 2008-08-29 14:32 1118
89c4a3a6 sago007 2008-08-29 14:32 1119
//text pop-up
89c4a3a6 sago007 2008-08-29 14:32 1120
class textMessage
89c4a3a6 sago007 2008-08-29 14:32 1121
{
89c4a3a6 sago007 2008-08-29 14:32 1122
private:
89c4a3a6 sago007 2008-08-29 14:32 1123
    int x;
89c4a3a6 sago007 2008-08-29 14:32 1124
    int y;
89c4a3a6 sago007 2008-08-29 14:32 1125
    char textt[10];
89c4a3a6 sago007 2008-08-29 14:32 1126
    unsigned long int time;
89c4a3a6 sago007 2008-08-29 14:32 1127
    unsigned long int placeTime; //Then the text was placed
89c4a3a6 sago007 2008-08-29 14:32 1128
public:
89c4a3a6 sago007 2008-08-29 14:32 1129
89c4a3a6 sago007 2008-08-29 14:32 1130
    textMessage()
89c4a3a6 sago007 2008-08-29 14:32 1131
    {}
89c4a3a6 sago007 2008-08-29 14:32 1132
89c4a3a6 sago007 2008-08-29 14:32 1133
    //constructor:
89c4a3a6 sago007 2008-08-29 14:32 1134
    textMessage(int X, int Y,const char* Text,unsigned int Time)
89c4a3a6 sago007 2008-08-29 14:32 1135
    {
89c4a3a6 sago007 2008-08-29 14:32 1136
        //cout << "Running constructor" << endl;
89c4a3a6 sago007 2008-08-29 14:32 1137
        placeTime = currentTime;
89c4a3a6 sago007 2008-08-29 14:32 1138
        x = X;
89c4a3a6 sago007 2008-08-29 14:32 1139
        y = Y;
89c4a3a6 sago007 2008-08-29 14:32 1140
        strncpy(textt,Text,10);
89c4a3a6 sago007 2008-08-29 14:32 1141
        textt[9]=0;
89c4a3a6 sago007 2008-08-29 14:32 1142
        time = Time;
89c4a3a6 sago007 2008-08-29 14:32 1143
        //cout << "Constructor runned" << endl;
89c4a3a6 sago007 2008-08-29 14:32 1144
    }  //constructor
89c4a3a6 sago007 2008-08-29 14:32 1145
89c4a3a6 sago007 2008-08-29 14:32 1146
    //true if the text has expired
89c4a3a6 sago007 2008-08-29 14:32 1147
    bool removeMe()
89c4a3a6 sago007 2008-08-29 14:32 1148
    {
89c4a3a6 sago007 2008-08-29 14:32 1149
        return currentTime-placeTime>time;
89c4a3a6 sago007 2008-08-29 14:32 1150
    }
89c4a3a6 sago007 2008-08-29 14:32 1151
89c4a3a6 sago007 2008-08-29 14:32 1152
    int getX()
89c4a3a6 sago007 2008-08-29 14:32 1153
    {
89c4a3a6 sago007 2008-08-29 14:32 1154
        //cout << "Gets X" << endl;
89c4a3a6 sago007 2008-08-29 14:32 1155
        return x;
89c4a3a6 sago007 2008-08-29 14:32 1156
    }
89c4a3a6 sago007 2008-08-29 14:32 1157
89c4a3a6 sago007 2008-08-29 14:32 1158
    int getY()
89c4a3a6 sago007 2008-08-29 14:32 1159
    {
89c4a3a6 sago007 2008-08-29 14:32 1160
        //cout << "Gets Y" << endl;
89c4a3a6 sago007 2008-08-29 14:32 1161
        return y;
89c4a3a6 sago007 2008-08-29 14:32 1162
    }
89c4a3a6 sago007 2008-08-29 14:32 1163
89c4a3a6 sago007 2008-08-29 14:32 1164
    char* getText()
89c4a3a6 sago007 2008-08-29 14:32 1165
    {
89c4a3a6 sago007 2008-08-29 14:32 1166
        //cout << "Gets text" << endl;
89c4a3a6 sago007 2008-08-29 14:32 1167
        return textt;
89c4a3a6 sago007 2008-08-29 14:32 1168
    }
89c4a3a6 sago007 2008-08-29 14:32 1169
};  //text popup
89c4a3a6 sago007 2008-08-29 14:32 1170
89c4a3a6 sago007 2008-08-29 14:32 1171
class textManeger
89c4a3a6 sago007 2008-08-29 14:32 1172
{
89c4a3a6 sago007 2008-08-29 14:32 1173
public:
89c4a3a6 sago007 2008-08-29 14:32 1174
    textMessage textArray[maxNumberOfBalls];
89c4a3a6 sago007 2008-08-29 14:32 1175
    bool textUsed[maxNumberOfBalls];
89c4a3a6 sago007 2008-08-29 14:32 1176
    //The old text information is also saved so text can be deleted!
89c4a3a6 sago007 2008-08-29 14:32 1177
    textMessage oldTextArray[maxNumberOfBalls];
89c4a3a6 sago007 2008-08-29 14:32 1178
    bool oldTextUsed[maxNumberOfBalls];
89c4a3a6 sago007 2008-08-29 14:32 1179
89c4a3a6 sago007 2008-08-29 14:32 1180
    textManeger()
89c4a3a6 sago007 2008-08-29 14:32 1181
    {
89c4a3a6 sago007 2008-08-29 14:32 1182
        for (int i=0; i<maxNumberOfBalls; i++)
89c4a3a6 sago007 2008-08-29 14:32 1183
        {
89c4a3a6 sago007 2008-08-29 14:32 1184
            textUsed[i] = false;
89c4a3a6 sago007 2008-08-29 14:32 1185
            oldTextUsed[i] = false;
89c4a3a6 sago007 2008-08-29 14:32 1186
        }
89c4a3a6 sago007 2008-08-29 14:32 1187
    }
89c4a3a6 sago007 2008-08-29 14:32 1188
89c4a3a6 sago007 2008-08-29 14:32 1189
    int addText(int x, int y,string Text,unsigned int Time)
89c4a3a6 sago007 2008-08-29 14:32 1190
    {
89c4a3a6 sago007 2008-08-29 14:32 1191
        //cout << "Tries to add text" << endl;
89c4a3a6 sago007 2008-08-29 14:32 1192
        int textNumber = 0;
89c4a3a6 sago007 2008-08-29 14:32 1193
        while ((textNumber<maxNumberOfBalls)&&((textUsed[textNumber])||(oldTextUsed[textNumber])))
89c4a3a6 sago007 2008-08-29 14:32 1194
            textNumber++;
89c4a3a6 sago007 2008-08-29 14:32 1195
        if (textNumber==maxNumberOfBalls)
89c4a3a6 sago007 2008-08-29 14:32 1196
            return -1;
89c4a3a6 sago007 2008-08-29 14:32 1197
        //cout << "adding to: " << textNumber << ":" << textUsed[textNumber] << ":" << &textArray[textNumber] << endl;
89c4a3a6 sago007 2008-08-29 14:32 1198
        currentTime = SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 1199
        //if(&textArray[textNumber]!=NULL)
89c4a3a6 sago007 2008-08-29 14:32 1200
        //*textArray[textNumber]=0;
89c4a3a6 sago007 2008-08-29 14:32 1201
        textArray[textNumber] = textMessage(x,y,Text.c_str(),Time);
89c4a3a6 sago007 2008-08-29 14:32 1202
        textUsed[textNumber] = true;
89c4a3a6 sago007 2008-08-29 14:32 1203
        //cout << "Text added" << endl;
89c4a3a6 sago007 2008-08-29 14:32 1204
        return 1;
89c4a3a6 sago007 2008-08-29 14:32 1205
    }  //addText
89c4a3a6 sago007 2008-08-29 14:32 1206
89c4a3a6 sago007 2008-08-29 14:32 1207
    void update()
89c4a3a6 sago007 2008-08-29 14:32 1208
    {
89c4a3a6 sago007 2008-08-29 14:32 1209
        //cout << "Running update" << endl;
89c4a3a6 sago007 2008-08-29 14:32 1210
        currentTime = SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 1211
        for (int i = 0; i<maxNumberOfBalls; i++)
89c4a3a6 sago007 2008-08-29 14:32 1212
        {
89c4a3a6 sago007 2008-08-29 14:32 1213
89c4a3a6 sago007 2008-08-29 14:32 1214
            if (textUsed[i])
89c4a3a6 sago007 2008-08-29 14:32 1215
            {
89c4a3a6 sago007 2008-08-29 14:32 1216
                if (!oldTextUsed[i])
89c4a3a6 sago007 2008-08-29 14:32 1217
                {
89c4a3a6 sago007 2008-08-29 14:32 1218
                    oldTextUsed[i] = true;
89c4a3a6 sago007 2008-08-29 14:32 1219
                    oldTextArray[i] = textMessage(textArray[i]);
89c4a3a6 sago007 2008-08-29 14:32 1220
                }
89c4a3a6 sago007 2008-08-29 14:32 1221
                if (textArray[i].removeMe())
89c4a3a6 sago007 2008-08-29 14:32 1222
                {
89c4a3a6 sago007 2008-08-29 14:32 1223
                    textArray[i].~textMessage();
89c4a3a6 sago007 2008-08-29 14:32 1224
                    textUsed[i] = false;
89c4a3a6 sago007 2008-08-29 14:32 1225
                }
89c4a3a6 sago007 2008-08-29 14:32 1226
            }
89c4a3a6 sago007 2008-08-29 14:32 1227
            else
89c4a3a6 sago007 2008-08-29 14:32 1228
                if (oldTextUsed[i])
89c4a3a6 sago007 2008-08-29 14:32 1229
                {
89c4a3a6 sago007 2008-08-29 14:32 1230
                    oldTextUsed[i] = false;
89c4a3a6 sago007 2008-08-29 14:32 1231
                    oldTextArray[i].~textMessage();
89c4a3a6 sago007 2008-08-29 14:32 1232
                }
89c4a3a6 sago007 2008-08-29 14:32 1233
        }
89c4a3a6 sago007 2008-08-29 14:32 1234
    } //update
89c4a3a6 sago007 2008-08-29 14:32 1235
89c4a3a6 sago007 2008-08-29 14:32 1236
89c4a3a6 sago007 2008-08-29 14:32 1237
}; //textManeger
89c4a3a6 sago007 2008-08-29 14:32 1238
89c4a3a6 sago007 2008-08-29 14:32 1239
textManeger theTextManeger;
89c4a3a6 sago007 2008-08-29 14:32 1240
89c4a3a6 sago007 2008-08-29 14:32 1241
//Here comes the Block Game object
89c4a3a6 sago007 2008-08-29 14:32 1242
#include "BlockGame.hpp"
89c4a3a6 sago007 2008-08-29 14:32 1243
89c4a3a6 sago007 2008-08-29 14:32 1244
//writeScreenShot saves the screen as a bmp file, it uses the time to get a unique filename
89c4a3a6 sago007 2008-08-29 14:32 1245
void writeScreenShot()
89c4a3a6 sago007 2008-08-29 14:32 1246
{
89c4a3a6 sago007 2008-08-29 14:32 1247
    cout << "Saving screenshot" << endl;
89c4a3a6 sago007 2008-08-29 14:32 1248
    int rightNow = (int)time(NULL);
89c4a3a6 sago007 2008-08-29 14:32 1249
#if defined(__unix__)
89c4a3a6 sago007 2008-08-29 14:32 1250
    char buf[514];
89c4a3a6 sago007 2008-08-29 14:32 1251
    sprintf( buf, "%s/.gamesaves/blockattack/screenshots/screenshot%i.bmp", getenv("HOME"), rightNow );
89c4a3a6 sago007 2008-08-29 14:32 1252
#else
89c4a3a6 sago007 2008-08-29 14:32 1253
    char buf[MAX_PATH];
89c4a3a6 sago007 2008-08-29 14:32 1254
    sprintf( buf, "%s\\My Games\\blockattack\\screenshots\\screenshot%i.bmp", (getMyDocumentsPath()).c_str(), rightNow );
89c4a3a6 sago007 2008-08-29 14:32 1255
#endif
89c4a3a6 sago007 2008-08-29 14:32 1256
    SDL_SaveBMP( screen, buf );
89c4a3a6 sago007 2008-08-29 14:32 1257
    if (!NoSound)
89c4a3a6 sago007 2008-08-29 14:32 1258
        if (SoundEnabled)Mix_PlayChannel(1,photoClick,0);
89c4a3a6 sago007 2008-08-29 14:32 1259
}
89c4a3a6 sago007 2008-08-29 14:32 1260
89c4a3a6 sago007 2008-08-29 14:32 1261
//Draws the highscores
89c4a3a6 sago007 2008-08-29 14:32 1262
inline void DrawHighscores(int x, int y)
89c4a3a6 sago007 2008-08-29 14:32 1263
{
89c4a3a6 sago007 2008-08-29 14:32 1264
    DrawIMG(topscoresBack,screen,x,y);
89c4a3a6 sago007 2008-08-29 14:32 1265
    if (showEndless) SFont_Write(screen,fBlueFont,x+100,y+100,"Endless:");
89c4a3a6 sago007 2008-08-29 14:32 1266
    else SFont_Write(screen,fBlueFont,x+100,y+100,"Time Trial:");
89c4a3a6 sago007 2008-08-29 14:32 1267
    for (int i =0;i<10;i++)
89c4a3a6 sago007 2008-08-29 14:32 1268
    {
89c4a3a6 sago007 2008-08-29 14:32 1269
        char playerScore[32];
89c4a3a6 sago007 2008-08-29 14:32 1270
        char playerName[32];
89c4a3a6 sago007 2008-08-29 14:32 1271
        if (showEndless) sprintf(playerScore, "%i", theTopScoresEndless.getScoreNumber(i));
89c4a3a6 sago007 2008-08-29 14:32 1272
        else sprintf(playerScore, "%i", theTopScoresTimeTrial.getScoreNumber(i));
89c4a3a6 sago007 2008-08-29 14:32 1273
        if (showEndless) strcpy(playerName,theTopScoresEndless.getScoreName(i));
89c4a3a6 sago007 2008-08-29 14:32 1274
        else strcpy(playerName,theTopScoresTimeTrial.getScoreName(i));
89c4a3a6 sago007 2008-08-29 14:32 1275
        SFont_Write(screen,fBlueFont,x+420,y+150+i*35,playerScore);
89c4a3a6 sago007 2008-08-29 14:32 1276
        SFont_Write(screen,fBlueFont,x+60,y+150+i*35,playerName);
89c4a3a6 sago007 2008-08-29 14:32 1277
    }
89c4a3a6 sago007 2008-08-29 14:32 1278
}
89c4a3a6 sago007 2008-08-29 14:32 1279
89c4a3a6 sago007 2008-08-29 14:32 1280
char keyname[11];
89c4a3a6 sago007 2008-08-29 14:32 1281
89c4a3a6 sago007 2008-08-29 14:32 1282
//Function to return the name of a key, to be displayed...
89c4a3a6 sago007 2008-08-29 14:32 1283
char* getKeyName(SDLKey key)
89c4a3a6 sago007 2008-08-29 14:32 1284
{
89c4a3a6 sago007 2008-08-29 14:32 1285
89c4a3a6 sago007 2008-08-29 14:32 1286
    char charToPut = '\0';
89c4a3a6 sago007 2008-08-29 14:32 1287
    switch (key)
89c4a3a6 sago007 2008-08-29 14:32 1288
    {
89c4a3a6 sago007 2008-08-29 14:32 1289
    case SDLK_a:
89c4a3a6 sago007 2008-08-29 14:32 1290
        charToPut = 'A';
89c4a3a6 sago007 2008-08-29 14:32 1291
        break;
89c4a3a6 sago007 2008-08-29 14:32 1292
    case SDLK_b:
89c4a3a6 sago007 2008-08-29 14:32 1293
        charToPut = 'B';
89c4a3a6 sago007 2008-08-29 14:32 1294
        break;
89c4a3a6 sago007 2008-08-29 14:32 1295
    case SDLK_c:
89c4a3a6 sago007 2008-08-29 14:32 1296
        charToPut = 'C';
89c4a3a6 sago007 2008-08-29 14:32 1297
        break;
89c4a3a6 sago007 2008-08-29 14:32 1298
    case SDLK_d:
89c4a3a6 sago007 2008-08-29 14:32 1299
        charToPut = 'D';
89c4a3a6 sago007 2008-08-29 14:32 1300
        break;
89c4a3a6 sago007 2008-08-29 14:32 1301
    case SDLK_e:
89c4a3a6 sago007 2008-08-29 14:32 1302
        charToPut = 'E';
89c4a3a6 sago007 2008-08-29 14:32 1303
        break;
89c4a3a6 sago007 2008-08-29 14:32 1304
    case SDLK_f:
89c4a3a6 sago007 2008-08-29 14:32 1305
        charToPut = 'F';
89c4a3a6 sago007 2008-08-29 14:32 1306
        break;
89c4a3a6 sago007 2008-08-29 14:32 1307
    case SDLK_g:
89c4a3a6 sago007 2008-08-29 14:32 1308
        charToPut = 'G';
89c4a3a6 sago007 2008-08-29 14:32 1309
        break;
89c4a3a6 sago007 2008-08-29 14:32 1310
    case SDLK_h:
89c4a3a6 sago007 2008-08-29 14:32 1311
        charToPut = 'H';
89c4a3a6 sago007 2008-08-29 14:32 1312
        break;
89c4a3a6 sago007 2008-08-29 14:32 1313
    case SDLK_i:
89c4a3a6 sago007 2008-08-29 14:32 1314
        charToPut = 'I';
89c4a3a6 sago007 2008-08-29 14:32 1315
        break;
89c4a3a6 sago007 2008-08-29 14:32 1316
    case SDLK_j:
89c4a3a6 sago007 2008-08-29 14:32 1317
        charToPut = 'J';
89c4a3a6 sago007 2008-08-29 14:32 1318
        break;
89c4a3a6 sago007 2008-08-29 14:32 1319
    case SDLK_k:
89c4a3a6 sago007 2008-08-29 14:32 1320
        charToPut = 'K';
89c4a3a6 sago007 2008-08-29 14:32 1321
        break;
89c4a3a6 sago007 2008-08-29 14:32 1322
    case SDLK_l:
89c4a3a6 sago007 2008-08-29 14:32 1323
        charToPut = 'L';
89c4a3a6 sago007 2008-08-29 14:32 1324
        break;
89c4a3a6 sago007 2008-08-29 14:32 1325
    case SDLK_m:
89c4a3a6 sago007 2008-08-29 14:32 1326
        charToPut = 'M';
89c4a3a6 sago007 2008-08-29 14:32 1327
        break;
89c4a3a6 sago007 2008-08-29 14:32 1328
    case SDLK_n:
89c4a3a6 sago007 2008-08-29 14:32 1329
        charToPut = 'N';
89c4a3a6 sago007 2008-08-29 14:32 1330
        break;
89c4a3a6 sago007 2008-08-29 14:32 1331
    case SDLK_o:
89c4a3a6 sago007 2008-08-29 14:32 1332
        charToPut = 'O';
89c4a3a6 sago007 2008-08-29 14:32 1333
        break;
89c4a3a6 sago007 2008-08-29 14:32 1334
    case SDLK_p:
89c4a3a6 sago007 2008-08-29 14:32 1335
        charToPut = 'P';
89c4a3a6 sago007 2008-08-29 14:32 1336
        break;
89c4a3a6 sago007 2008-08-29 14:32 1337
    case SDLK_q:
89c4a3a6 sago007 2008-08-29 14:32 1338
        charToPut = 'Q';
89c4a3a6 sago007 2008-08-29 14:32 1339
        break;
89c4a3a6 sago007 2008-08-29 14:32 1340
    case SDLK_r:
89c4a3a6 sago007 2008-08-29 14:32 1341
        charToPut = 'R';
89c4a3a6 sago007 2008-08-29 14:32 1342
        break;
89c4a3a6 sago007 2008-08-29 14:32 1343
    case SDLK_s:
89c4a3a6 sago007 2008-08-29 14:32 1344
        charToPut = 'S';
89c4a3a6 sago007 2008-08-29 14:32 1345
        break;
89c4a3a6 sago007 2008-08-29 14:32 1346
    case SDLK_t:
89c4a3a6 sago007 2008-08-29 14:32 1347
        charToPut = 'T';
89c4a3a6 sago007 2008-08-29 14:32 1348
        break;
89c4a3a6 sago007 2008-08-29 14:32 1349
    case SDLK_u:
89c4a3a6 sago007 2008-08-29 14:32 1350
        charToPut = 'U';
89c4a3a6 sago007 2008-08-29 14:32 1351
        break;
89c4a3a6 sago007 2008-08-29 14:32 1352
    case SDLK_v:
89c4a3a6 sago007 2008-08-29 14:32 1353
        charToPut = 'V';
89c4a3a6 sago007 2008-08-29 14:32 1354
        break;
89c4a3a6 sago007 2008-08-29 14:32 1355
    case SDLK_w:
89c4a3a6 sago007 2008-08-29 14:32 1356
        charToPut = 'W';
89c4a3a6 sago007 2008-08-29 14:32 1357
        break;
89c4a3a6 sago007 2008-08-29 14:32 1358
    case SDLK_x:
89c4a3a6 sago007 2008-08-29 14:32 1359
        charToPut = 'X';
89c4a3a6 sago007 2008-08-29 14:32 1360
        break;
89c4a3a6 sago007 2008-08-29 14:32 1361
    case SDLK_y:
89c4a3a6 sago007 2008-08-29 14:32 1362
        charToPut = 'Y';
89c4a3a6 sago007 2008-08-29 14:32 1363
        break;
89c4a3a6 sago007 2008-08-29 14:32 1364
    case SDLK_z:
89c4a3a6 sago007 2008-08-29 14:32 1365
        charToPut = 'Z';
89c4a3a6 sago007 2008-08-29 14:32 1366
        break;
89c4a3a6 sago007 2008-08-29 14:32 1367
    case SDLK_0:
89c4a3a6 sago007 2008-08-29 14:32 1368
        charToPut = '0';
89c4a3a6 sago007 2008-08-29 14:32 1369
        break;
89c4a3a6 sago007 2008-08-29 14:32 1370
    case SDLK_1:
89c4a3a6 sago007 2008-08-29 14:32 1371
        charToPut = '1';
89c4a3a6 sago007 2008-08-29 14:32 1372
        break;
89c4a3a6 sago007 2008-08-29 14:32 1373
    case SDLK_2:
89c4a3a6 sago007 2008-08-29 14:32 1374
        charToPut = '2';
89c4a3a6 sago007 2008-08-29 14:32 1375
        break;
89c4a3a6 sago007 2008-08-29 14:32 1376
    case SDLK_3:
89c4a3a6 sago007 2008-08-29 14:32 1377
        charToPut = '3';
89c4a3a6 sago007 2008-08-29 14:32 1378
        break;
89c4a3a6 sago007 2008-08-29 14:32 1379
    case SDLK_4:
89c4a3a6 sago007 2008-08-29 14:32 1380
        charToPut = '4';
89c4a3a6 sago007 2008-08-29 14:32 1381
        break;
89c4a3a6 sago007 2008-08-29 14:32 1382
    case SDLK_5:
89c4a3a6 sago007 2008-08-29 14:32 1383
        charToPut = '5';
89c4a3a6 sago007 2008-08-29 14:32 1384
        break;
89c4a3a6 sago007 2008-08-29 14:32 1385
    case SDLK_6:
89c4a3a6 sago007 2008-08-29 14:32 1386
        charToPut = '6';
89c4a3a6 sago007 2008-08-29 14:32 1387
        break;
89c4a3a6 sago007 2008-08-29 14:32 1388
    case SDLK_7:
89c4a3a6 sago007 2008-08-29 14:32 1389
        charToPut = '7';
89c4a3a6 sago007 2008-08-29 14:32 1390
        break;
89c4a3a6 sago007 2008-08-29 14:32 1391
    case SDLK_8:
89c4a3a6 sago007 2008-08-29 14:32 1392
        charToPut = '8';
89c4a3a6 sago007 2008-08-29 14:32 1393
        break;
89c4a3a6 sago007 2008-08-29 14:32 1394
    case SDLK_9:
89c4a3a6 sago007 2008-08-29 14:32 1395
        charToPut = '9';
89c4a3a6 sago007 2008-08-29 14:32 1396
        break;
89c4a3a6 sago007 2008-08-29 14:32 1397
    case SDLK_KP0:
89c4a3a6 sago007 2008-08-29 14:32 1398
        sprintf(keyname,"NP_0");
89c4a3a6 sago007 2008-08-29 14:32 1399
        break;
89c4a3a6 sago007 2008-08-29 14:32 1400
    case SDLK_KP1:
89c4a3a6 sago007 2008-08-29 14:32 1401
        sprintf(keyname,"NP_1");
89c4a3a6 sago007 2008-08-29 14:32 1402
        break;
89c4a3a6 sago007 2008-08-29 14:32 1403
    case SDLK_KP2:
89c4a3a6 sago007 2008-08-29 14:32 1404
        sprintf(keyname,"NP_2");
89c4a3a6 sago007 2008-08-29 14:32 1405
        break;
89c4a3a6 sago007 2008-08-29 14:32 1406
    case SDLK_KP3:
89c4a3a6 sago007 2008-08-29 14:32 1407
        sprintf(keyname,"NP_3");
89c4a3a6 sago007 2008-08-29 14:32 1408
        break;
89c4a3a6 sago007 2008-08-29 14:32 1409
    case SDLK_KP4:
89c4a3a6 sago007 2008-08-29 14:32 1410
        sprintf(keyname,"NP_4");
89c4a3a6 sago007 2008-08-29 14:32 1411
        break;
89c4a3a6 sago007 2008-08-29 14:32 1412
    case SDLK_KP5:
89c4a3a6 sago007 2008-08-29 14:32 1413
        sprintf(keyname,"NP_5");
89c4a3a6 sago007 2008-08-29 14:32 1414
        break;
89c4a3a6 sago007 2008-08-29 14:32 1415
    case SDLK_KP6:
89c4a3a6 sago007 2008-08-29 14:32 1416
        sprintf(keyname,"NP_6");
89c4a3a6 sago007 2008-08-29 14:32 1417
        break;
89c4a3a6 sago007 2008-08-29 14:32 1418
    case SDLK_KP7:
89c4a3a6 sago007 2008-08-29 14:32 1419
        sprintf(keyname,"NP_7");
89c4a3a6 sago007 2008-08-29 14:32 1420
        break;
89c4a3a6 sago007 2008-08-29 14:32 1421
    case SDLK_KP8:
89c4a3a6 sago007 2008-08-29 14:32 1422
        sprintf(keyname,"NP_8");
89c4a3a6 sago007 2008-08-29 14:32 1423
        break;
89c4a3a6 sago007 2008-08-29 14:32 1424
    case SDLK_KP9:
89c4a3a6 sago007 2008-08-29 14:32 1425
        sprintf(keyname,"NP_9");
89c4a3a6 sago007 2008-08-29 14:32 1426
        break;
89c4a3a6 sago007 2008-08-29 14:32 1427
    case SDLK_BACKSPACE:
89c4a3a6 sago007 2008-08-29 14:32 1428
        sprintf(keyname,"Backspace");
89c4a3a6 sago007 2008-08-29 14:32 1429
        break;
89c4a3a6 sago007 2008-08-29 14:32 1430
    case SDLK_TAB:
89c4a3a6 sago007 2008-08-29 14:32 1431
        sprintf(keyname,"Tab");
89c4a3a6 sago007 2008-08-29 14:32 1432
        break;
89c4a3a6 sago007 2008-08-29 14:32 1433
    case SDLK_CLEAR:
89c4a3a6 sago007 2008-08-29 14:32 1434
        sprintf(keyname,"Clear");
89c4a3a6 sago007 2008-08-29 14:32 1435
        break;
89c4a3a6 sago007 2008-08-29 14:32 1436
    case SDLK_RETURN:
89c4a3a6 sago007 2008-08-29 14:32 1437
        sprintf(keyname,"Return");
89c4a3a6 sago007 2008-08-29 14:32 1438
        break;
89c4a3a6 sago007 2008-08-29 14:32 1439
    case SDLK_PAUSE:
89c4a3a6 sago007 2008-08-29 14:32 1440
        sprintf(keyname,"Pause");
89c4a3a6 sago007 2008-08-29 14:32 1441
        break;
89c4a3a6 sago007 2008-08-29 14:32 1442
    case SDLK_SPACE:
89c4a3a6 sago007 2008-08-29 14:32 1443
        sprintf(keyname,"Space");
89c4a3a6 sago007 2008-08-29 14:32 1444
        break;
89c4a3a6 sago007 2008-08-29 14:32 1445
    case SDLK_EXCLAIM:
89c4a3a6 sago007 2008-08-29 14:32 1446
        charToPut = '!';
89c4a3a6 sago007 2008-08-29 14:32 1447
        break;
89c4a3a6 sago007 2008-08-29 14:32 1448
    case SDLK_QUOTEDBL:
89c4a3a6 sago007 2008-08-29 14:32 1449
        sprintf(keyname,"QuoteDBL");
89c4a3a6 sago007 2008-08-29 14:32 1450
        break;
89c4a3a6 sago007 2008-08-29 14:32 1451
    case SDLK_HASH:
89c4a3a6 sago007 2008-08-29 14:32 1452
        charToPut = '#';
89c4a3a6 sago007 2008-08-29 14:32 1453
        break;
89c4a3a6 sago007 2008-08-29 14:32 1454
    case SDLK_DOLLAR:
89c4a3a6 sago007 2008-08-29 14:32 1455
        sprintf(keyname,"$");
89c4a3a6 sago007 2008-08-29 14:32 1456
        break;
89c4a3a6 sago007 2008-08-29 14:32 1457
    case SDLK_ASTERISK:
89c4a3a6 sago007 2008-08-29 14:32 1458
        sprintf(keyname,"Asterisk");
89c4a3a6 sago007 2008-08-29 14:32 1459
        break;
89c4a3a6 sago007 2008-08-29 14:32 1460
    case SDLK_PLUS:
89c4a3a6 sago007 2008-08-29 14:32 1461
        sprintf(keyname,"Plus");
89c4a3a6 sago007 2008-08-29 14:32 1462
        break;
89c4a3a6 sago007 2008-08-29 14:32 1463
    case SDLK_COMMA:
89c4a3a6 sago007 2008-08-29 14:32 1464
        sprintf(keyname,"Comma");
89c4a3a6 sago007 2008-08-29 14:32 1465
        break;
89c4a3a6 sago007 2008-08-29 14:32 1466
    case SDLK_MINUS:
89c4a3a6 sago007 2008-08-29 14:32 1467
        sprintf(keyname,"Minus");
89c4a3a6 sago007 2008-08-29 14:32 1468
        break;
89c4a3a6 sago007 2008-08-29 14:32 1469
    case SDLK_PERIOD:
89c4a3a6 sago007 2008-08-29 14:32 1470
        sprintf(keyname,"Period");
89c4a3a6 sago007 2008-08-29 14:32 1471
        break;
89c4a3a6 sago007 2008-08-29 14:32 1472
    case SDLK_SLASH:
89c4a3a6 sago007 2008-08-29 14:32 1473
        charToPut ='/';
89c4a3a6 sago007 2008-08-29 14:32 1474
        break;
89c4a3a6 sago007 2008-08-29 14:32 1475
    case SDLK_COLON:
89c4a3a6 sago007 2008-08-29 14:32 1476
        sprintf(keyname,"Colon");
89c4a3a6 sago007 2008-08-29 14:32 1477
        break;
89c4a3a6 sago007 2008-08-29 14:32 1478
    case SDLK_SEMICOLON:
89c4a3a6 sago007 2008-08-29 14:32 1479
        sprintf(keyname,"SemiColon");
89c4a3a6 sago007 2008-08-29 14:32 1480
        break;
89c4a3a6 sago007 2008-08-29 14:32 1481
    case SDLK_LESS:
89c4a3a6 sago007 2008-08-29 14:32 1482
        charToPut = '<';
89c4a3a6 sago007 2008-08-29 14:32 1483
        break;
89c4a3a6 sago007 2008-08-29 14:32 1484
    case SDLK_EQUALS:
89c4a3a6 sago007 2008-08-29 14:32 1485
        sprintf(keyname,"Equals");
89c4a3a6 sago007 2008-08-29 14:32 1486
        break;
89c4a3a6 sago007 2008-08-29 14:32 1487
    case SDLK_DELETE:
89c4a3a6 sago007 2008-08-29 14:32 1488
        sprintf(keyname,"Delete");
89c4a3a6 sago007 2008-08-29 14:32 1489
        break;
89c4a3a6 sago007 2008-08-29 14:32 1490
    case SDLK_KP_PERIOD:
89c4a3a6 sago007 2008-08-29 14:32 1491
        sprintf(keyname,"NPperiod");
89c4a3a6 sago007 2008-08-29 14:32 1492
        break;
89c4a3a6 sago007 2008-08-29 14:32 1493
    case SDLK_KP_DIVIDE:
89c4a3a6 sago007 2008-08-29 14:32 1494
        sprintf(keyname,"NPdivide");
89c4a3a6 sago007 2008-08-29 14:32 1495
        break;
89c4a3a6 sago007 2008-08-29 14:32 1496
    case SDLK_KP_MULTIPLY:
89c4a3a6 sago007 2008-08-29 14:32 1497
        sprintf(keyname,"NPmultiply");
89c4a3a6 sago007 2008-08-29 14:32 1498
        break;
89c4a3a6 sago007 2008-08-29 14:32 1499
    case SDLK_KP_MINUS:
89c4a3a6 sago007 2008-08-29 14:32 1500
        sprintf(keyname,"NPminus");
89c4a3a6 sago007 2008-08-29 14:32 1501
        break;
89c4a3a6 sago007 2008-08-29 14:32 1502
    case SDLK_KP_PLUS:
89c4a3a6 sago007 2008-08-29 14:32 1503
        sprintf(keyname,"NPplus");
89c4a3a6 sago007 2008-08-29 14:32 1504
        break;
89c4a3a6 sago007 2008-08-29 14:32 1505
    case SDLK_KP_ENTER:
89c4a3a6 sago007 2008-08-29 14:32 1506
        sprintf(keyname,"NP_Enter");
89c4a3a6 sago007 2008-08-29 14:32 1507
        break;
89c4a3a6 sago007 2008-08-29 14:32 1508
    case SDLK_KP_EQUALS:
89c4a3a6 sago007 2008-08-29 14:32 1509
        sprintf(keyname,"NP=");
89c4a3a6 sago007 2008-08-29 14:32 1510
        break;
89c4a3a6 sago007 2008-08-29 14:32 1511
    case SDLK_UP:
89c4a3a6 sago007 2008-08-29 14:32 1512
        sprintf(keyname,"UP");
89c4a3a6 sago007 2008-08-29 14:32 1513
        break;
89c4a3a6 sago007 2008-08-29 14:32 1514
    case SDLK_DOWN:
89c4a3a6 sago007 2008-08-29 14:32 1515
        sprintf(keyname,"DOWN");
89c4a3a6 sago007 2008-08-29 14:32 1516
        break;
89c4a3a6 sago007 2008-08-29 14:32 1517
    case SDLK_RIGHT:
89c4a3a6 sago007 2008-08-29 14:32 1518
        sprintf(keyname,"RIGHT");
89c4a3a6 sago007 2008-08-29 14:32 1519
        break;
89c4a3a6 sago007 2008-08-29 14:32 1520
    case SDLK_LEFT:
89c4a3a6 sago007 2008-08-29 14:32 1521
        sprintf(keyname,"LEFT");
89c4a3a6 sago007 2008-08-29 14:32 1522
        break;
89c4a3a6 sago007 2008-08-29 14:32 1523
    case SDLK_INSERT:
89c4a3a6 sago007 2008-08-29 14:32 1524
        sprintf(keyname,"Insert");
89c4a3a6 sago007 2008-08-29 14:32 1525
        break;
89c4a3a6 sago007 2008-08-29 14:32 1526
    case SDLK_HOME:
89c4a3a6 sago007 2008-08-29 14:32 1527
        sprintf(keyname,"Home");
89c4a3a6 sago007 2008-08-29 14:32 1528
        break;
89c4a3a6 sago007 2008-08-29 14:32 1529
    case SDLK_END:
89c4a3a6 sago007 2008-08-29 14:32 1530
        sprintf(keyname,"End");
89c4a3a6 sago007 2008-08-29 14:32 1531
        break;
89c4a3a6 sago007 2008-08-29 14:32 1532
    case SDLK_PAGEUP:
89c4a3a6 sago007 2008-08-29 14:32 1533
        sprintf(keyname,"PageUp");
89c4a3a6 sago007 2008-08-29 14:32 1534
        break;
89c4a3a6 sago007 2008-08-29 14:32 1535
    case SDLK_PAGEDOWN:
89c4a3a6 sago007 2008-08-29 14:32 1536
        sprintf(keyname,"PageDown");
89c4a3a6 sago007 2008-08-29 14:32 1537
        break;
89c4a3a6 sago007 2008-08-29 14:32 1538
    case SDLK_NUMLOCK:
89c4a3a6 sago007 2008-08-29 14:32 1539
        sprintf(keyname,"NumLock");
89c4a3a6 sago007 2008-08-29 14:32 1540
        break;
89c4a3a6 sago007 2008-08-29 14:32 1541
    case SDLK_CAPSLOCK:
89c4a3a6 sago007 2008-08-29 14:32 1542
        sprintf(keyname,"CapsLock");
89c4a3a6 sago007 2008-08-29 14:32 1543
        break;
89c4a3a6 sago007 2008-08-29 14:32 1544
    case SDLK_SCROLLOCK:
89c4a3a6 sago007 2008-08-29 14:32 1545
        sprintf(keyname,"ScrolLock");
89c4a3a6 sago007 2008-08-29 14:32 1546
        break;
89c4a3a6 sago007 2008-08-29 14:32 1547
    case SDLK_RSHIFT:
89c4a3a6 sago007 2008-08-29 14:32 1548
        sprintf(keyname,"Rshift");
89c4a3a6 sago007 2008-08-29 14:32 1549
        break;
89c4a3a6 sago007 2008-08-29 14:32 1550
    case SDLK_LSHIFT:
89c4a3a6 sago007 2008-08-29 14:32 1551
        sprintf(keyname,"Lshift");
89c4a3a6 sago007 2008-08-29 14:32 1552
        break;
89c4a3a6 sago007 2008-08-29 14:32 1553
    case SDLK_RCTRL:
89c4a3a6 sago007 2008-08-29 14:32 1554
        sprintf(keyname,"Rctrl");
89c4a3a6 sago007 2008-08-29 14:32 1555
        break;
89c4a3a6 sago007 2008-08-29 14:32 1556
    case SDLK_LCTRL:
89c4a3a6 sago007 2008-08-29 14:32 1557
        sprintf(keyname,"Lctrl");
89c4a3a6 sago007 2008-08-29 14:32 1558
        break;
89c4a3a6 sago007 2008-08-29 14:32 1559
    case SDLK_RALT:
89c4a3a6 sago007 2008-08-29 14:32 1560
        sprintf(keyname,"Ralt");
89c4a3a6 sago007 2008-08-29 14:32 1561
        break;
89c4a3a6 sago007 2008-08-29 14:32 1562
    case SDLK_LALT:
89c4a3a6 sago007 2008-08-29 14:32 1563
        sprintf(keyname,"Lalt");
89c4a3a6 sago007 2008-08-29 14:32 1564
        break;
89c4a3a6 sago007 2008-08-29 14:32 1565
    case SDLK_RMETA:
89c4a3a6 sago007 2008-08-29 14:32 1566
        sprintf(keyname,"Rmeta");
89c4a3a6 sago007 2008-08-29 14:32 1567
        break;
89c4a3a6 sago007 2008-08-29 14:32 1568
    case SDLK_LMETA:
89c4a3a6 sago007 2008-08-29 14:32 1569
        sprintf(keyname,"Lmeta");
89c4a3a6 sago007 2008-08-29 14:32 1570
        break;
89c4a3a6 sago007 2008-08-29 14:32 1571
    case SDLK_LSUPER:
89c4a3a6 sago007 2008-08-29 14:32 1572
        sprintf(keyname,"Lwin");
89c4a3a6 sago007 2008-08-29 14:32 1573
        break;
89c4a3a6 sago007 2008-08-29 14:32 1574
    case SDLK_RSUPER:
89c4a3a6 sago007 2008-08-29 14:32 1575
        sprintf(keyname,"Rwin");
89c4a3a6 sago007 2008-08-29 14:32 1576
        break;
89c4a3a6 sago007 2008-08-29 14:32 1577
    case SDLK_MODE:
89c4a3a6 sago007 2008-08-29 14:32 1578
        sprintf(keyname,"Mode");
89c4a3a6 sago007 2008-08-29 14:32 1579
        break;
89c4a3a6 sago007 2008-08-29 14:32 1580
    case SDLK_HELP:
89c4a3a6 sago007 2008-08-29 14:32 1581
        sprintf(keyname,"Help");
89c4a3a6 sago007 2008-08-29 14:32 1582
        break;
89c4a3a6 sago007 2008-08-29 14:32 1583
    default:
89c4a3a6 sago007 2008-08-29 14:32 1584
        sprintf(keyname,"Unknown");
89c4a3a6 sago007 2008-08-29 14:32 1585
        break;
89c4a3a6 sago007 2008-08-29 14:32 1586
    }
89c4a3a6 sago007 2008-08-29 14:32 1587
    if (charToPut != '\0')
89c4a3a6 sago007 2008-08-29 14:32 1588
        sprintf(keyname,"%c",charToPut);
89c4a3a6 sago007 2008-08-29 14:32 1589
    return &keyname[0];
89c4a3a6 sago007 2008-08-29 14:32 1590
}
89c4a3a6 sago007 2008-08-29 14:32 1591
89c4a3a6 sago007 2008-08-29 14:32 1592
void MakeBackground(int xsize,int ysize,BlockGame &theGame, BlockGame &theGame2);
89c4a3a6 sago007 2008-08-29 14:32 1593
89c4a3a6 sago007 2008-08-29 14:32 1594
int OpenControlsBox(int x, int y, int player)
89c4a3a6 sago007 2008-08-29 14:32 1595
{
89c4a3a6 sago007 2008-08-29 14:32 1596
    int mousex, mousey;
89c4a3a6 sago007 2008-08-29 14:32 1597
    Uint8 *keys;
89c4a3a6 sago007 2008-08-29 14:32 1598
    bool done =false;
89c4a3a6 sago007 2008-08-29 14:32 1599
    char *keyname;
89c4a3a6 sago007 2008-08-29 14:32 1600
    MakeBackground(1024,768);
89c4a3a6 sago007 2008-08-29 14:32 1601
    while (!done)
89c4a3a6 sago007 2008-08-29 14:32 1602
    {
89c4a3a6 sago007 2008-08-29 14:32 1603
        SDL_Delay(10);
89c4a3a6 sago007 2008-08-29 14:32 1604
        DrawIMG(background, screen, 0, 0);
89c4a3a6 sago007 2008-08-29 14:32 1605
        DrawIMG(changeButtonsBack,screen,x,y);
89c4a3a6 sago007 2008-08-29 14:32 1606
        if (player == 0)
89c4a3a6 sago007 2008-08-29 14:32 1607
            SFont_Write(screen,fBlueFont,x+40,y+2,"Player 1 keys");
89c4a3a6 sago007 2008-08-29 14:32 1608
        else
89c4a3a6 sago007 2008-08-29 14:32 1609
            SFont_Write(screen,fBlueFont,x+40,y+2,"Player 2 keys");
89c4a3a6 sago007 2008-08-29 14:32 1610
        SFont_Write(screen,fBlueFont,x+6,y+50,"Up");
89c4a3a6 sago007 2008-08-29 14:32 1611
        keyname = getKeyName(keySettings[player].up);
89c4a3a6 sago007 2008-08-29 14:32 1612
        SFont_Write(screen,fBlueFont,x+200,y+50,keyname);
89c4a3a6 sago007 2008-08-29 14:32 1613
        SFont_Write(screen,fBlueFont,x+6,y+100,"Down");
89c4a3a6 sago007 2008-08-29 14:32 1614
        keyname = getKeyName(keySettings[player].down);
89c4a3a6 sago007 2008-08-29 14:32 1615
        SFont_Write(screen,fBlueFont,x+200,y+100,keyname);
89c4a3a6 sago007 2008-08-29 14:32 1616
        SFont_Write(screen,fBlueFont,x+6,y+150,"Left");
89c4a3a6 sago007 2008-08-29 14:32 1617
        keyname = getKeyName(keySettings[player].left);
89c4a3a6 sago007 2008-08-29 14:32 1618
        SFont_Write(screen,fBlueFont,x+200,y+150,keyname);
89c4a3a6 sago007 2008-08-29 14:32 1619
        SFont_Write(screen,fBlueFont,x+6,y+200,"Right");
89c4a3a6 sago007 2008-08-29 14:32 1620
        keyname = getKeyName(keySettings[player].right);
89c4a3a6 sago007 2008-08-29 14:32 1621
        SFont_Write(screen,fBlueFont,x+200,y+200,keyname);
89c4a3a6 sago007 2008-08-29 14:32 1622
        SFont_Write(screen,fBlueFont,x+6,y+250,"Push");
89c4a3a6 sago007 2008-08-29 14:32 1623
        keyname = getKeyName(keySettings[player].push);
89c4a3a6 sago007 2008-08-29 14:32 1624
        SFont_Write(screen,fBlueFont,x+200,y+250,keyname);
89c4a3a6 sago007 2008-08-29 14:32 1625
        SFont_Write(screen,fBlueFont,x+6,y+300,"Change");
89c4a3a6 sago007 2008-08-29 14:32 1626
        keyname = getKeyName(keySettings[player].change);
89c4a3a6 sago007 2008-08-29 14:32 1627
        SFont_Write(screen,fBlueFont,x+200,y+300,keyname);
89c4a3a6 sago007 2008-08-29 14:32 1628
        //Ask for mouse play
89c4a3a6 sago007 2008-08-29 14:32 1629
        SFont_Write(screen,fBlueFont,x+6,y+350,"Mouse play?");
89c4a3a6 sago007 2008-08-29 14:32 1630
        DrawIMG(iLevelCheckBox,screen,x+220,y+350);
89c4a3a6 sago007 2008-08-29 14:32 1631
        if (((player==0)&&(mouseplay1))||((player==2)&&(mouseplay2)))
89c4a3a6 sago007 2008-08-29 14:32 1632
            DrawIMG(iLevelCheck,screen,x+220,y+350); //iLevelCheck witdh is 42
89c4a3a6 sago007 2008-08-29 14:32 1633
        //Ask for joypad play
89c4a3a6 sago007 2008-08-29 14:32 1634
        SFont_Write(screen,fBlueFont,x+300,y+350,"Joypad?");
89c4a3a6 sago007 2008-08-29 14:32 1635
        DrawIMG(iLevelCheckBox,screen,x+460,y+350);
89c4a3a6 sago007 2008-08-29 14:32 1636
        if (((player==0)&&(joyplay1))||((player==2)&&(joyplay2)))
89c4a3a6 sago007 2008-08-29 14:32 1637
            DrawIMG(iLevelCheck,screen,x+460,y+350); //iLevelCheck witdh is 42
89c4a3a6 sago007 2008-08-29 14:32 1638
        for (int i=1; i<7; i++)
89c4a3a6 sago007 2008-08-29 14:32 1639
            DrawIMG(bChange,screen,x+420,y+50*i);
89c4a3a6 sago007 2008-08-29 14:32 1640
        SDL_Event event;
89c4a3a6 sago007 2008-08-29 14:32 1641
89c4a3a6 sago007 2008-08-29 14:32 1642
        while (SDL_PollEvent(&event))
89c4a3a6 sago007 2008-08-29 14:32 1643
        {
89c4a3a6 sago007 2008-08-29 14:32 1644
            if ( event.type == SDL_QUIT )  {
89c4a3a6 sago007 2008-08-29 14:32 1645
                done = true;
89c4a3a6 sago007 2008-08-29 14:32 1646
            }
89c4a3a6 sago007 2008-08-29 14:32 1647
89c4a3a6 sago007 2008-08-29 14:32 1648
            if (event.type == SDL_KEYDOWN)
89c4a3a6 sago007 2008-08-29 14:32 1649
            {
89c4a3a6 sago007 2008-08-29 14:32 1650
                if (event.key.keysym.sym == SDLK_ESCAPE)
89c4a3a6 sago007 2008-08-29 14:32 1651
                    done = true;
89c4a3a6 sago007 2008-08-29 14:32 1652
            }
89c4a3a6 sago007 2008-08-29 14:32 1653
        }	//PollEvent
89c4a3a6 sago007 2008-08-29 14:32 1654
89c4a3a6 sago007 2008-08-29 14:32 1655
        keys = SDL_GetKeyState(NULL);
89c4a3a6 sago007 2008-08-29 14:32 1656
89c4a3a6 sago007 2008-08-29 14:32 1657
        SDL_GetMouseState(&mousex,&mousey);
89c4a3a6 sago007 2008-08-29 14:32 1658
89c4a3a6 sago007 2008-08-29 14:32 1659
        // If the mouse button is released, make bMouseUp equal true
89c4a3a6 sago007 2008-08-29 14:32 1660
        if (!SDL_GetMouseState(NULL, NULL)&SDL_BUTTON(1))
89c4a3a6 sago007 2008-08-29 14:32 1661
        {
89c4a3a6 sago007 2008-08-29 14:32 1662
            bMouseUp=true;
89c4a3a6 sago007 2008-08-29 14:32 1663
        }
89c4a3a6 sago007 2008-08-29 14:32 1664
89c4a3a6 sago007 2008-08-29 14:32 1665
        if (SDL_GetMouseState(NULL,NULL)&SDL_BUTTON(1) && bMouseUp)
89c4a3a6 sago007 2008-08-29 14:32 1666
        {
89c4a3a6 sago007 2008-08-29 14:32 1667
            bMouseUp = false;
89c4a3a6 sago007 2008-08-29 14:32 1668
89c4a3a6 sago007 2008-08-29 14:32 1669
            if ((mousex>(420+x)) && (mousex<(540+x)) && (mousey>(50+y)) && (mousey<(90+y)))
89c4a3a6 sago007 2008-08-29 14:32 1670
            {
89c4a3a6 sago007 2008-08-29 14:32 1671
                //up
89c4a3a6 sago007 2008-08-29 14:32 1672
                bool finnish = false;
89c4a3a6 sago007 2008-08-29 14:32 1673
                while (!finnish)
89c4a3a6 sago007 2008-08-29 14:32 1674
                    while ( SDL_PollEvent(&event) )
89c4a3a6 sago007 2008-08-29 14:32 1675
                    {
89c4a3a6 sago007 2008-08-29 14:32 1676
                        if (event.type == SDL_KEYDOWN)
89c4a3a6 sago007 2008-08-29 14:32 1677
                        {
89c4a3a6 sago007 2008-08-29 14:32 1678
                            if (event.key.keysym.sym != SDLK_ESCAPE)
89c4a3a6 sago007 2008-08-29 14:32 1679
                                keySettings[player].up = event.key.keysym.sym;
89c4a3a6 sago007 2008-08-29 14:32 1680
                            finnish = true;
89c4a3a6 sago007 2008-08-29 14:32 1681
                        }
89c4a3a6 sago007 2008-08-29 14:32 1682
                    }
89c4a3a6 sago007 2008-08-29 14:32 1683
            } //up
89c4a3a6 sago007 2008-08-29 14:32 1684
            if ((mousex>(420+x)) && (mousex<(540+x)) && (mousey>(100+y)) && (mousey<(140+y)))
89c4a3a6 sago007 2008-08-29 14:32 1685
            {
89c4a3a6 sago007 2008-08-29 14:32 1686
                //down
89c4a3a6 sago007 2008-08-29 14:32 1687
                bool finnish = false;
89c4a3a6 sago007 2008-08-29 14:32 1688
                while (!finnish)
89c4a3a6 sago007 2008-08-29 14:32 1689
                    while ( SDL_PollEvent(&event) )
89c4a3a6 sago007 2008-08-29 14:32 1690
                    {
89c4a3a6 sago007 2008-08-29 14:32 1691
                        if (event.type == SDL_KEYDOWN)
89c4a3a6 sago007 2008-08-29 14:32 1692
                        {
89c4a3a6 sago007 2008-08-29 14:32 1693
                            if (event.key.keysym.sym != SDLK_ESCAPE)
89c4a3a6 sago007 2008-08-29 14:32 1694
                                keySettings[player].down = event.key.keysym.sym;
89c4a3a6 sago007 2008-08-29 14:32 1695
                            finnish = true;
89c4a3a6 sago007 2008-08-29 14:32 1696
                        }
89c4a3a6 sago007 2008-08-29 14:32 1697
                    }
89c4a3a6 sago007 2008-08-29 14:32 1698
            } //down
89c4a3a6 sago007 2008-08-29 14:32 1699
            if ((mousex>(420+x)) && (mousex<(540+x)) && (mousey>(150+y)) && (mousey<(190+y)))
89c4a3a6 sago007 2008-08-29 14:32 1700
            {
89c4a3a6 sago007 2008-08-29 14:32 1701
                //left
89c4a3a6 sago007 2008-08-29 14:32 1702
                bool finnish = false;
89c4a3a6 sago007 2008-08-29 14:32 1703
                while (!finnish)
89c4a3a6 sago007 2008-08-29 14:32 1704
                    while ( SDL_PollEvent(&event) )
89c4a3a6 sago007 2008-08-29 14:32 1705
                    {
89c4a3a6 sago007 2008-08-29 14:32 1706
                        if (event.type == SDL_KEYDOWN)
89c4a3a6 sago007 2008-08-29 14:32 1707
                        {
89c4a3a6 sago007 2008-08-29 14:32 1708
                            if (event.key.keysym.sym != SDLK_ESCAPE)
89c4a3a6 sago007 2008-08-29 14:32 1709
                                keySettings[player].left = event.key.keysym.sym;
89c4a3a6 sago007 2008-08-29 14:32 1710
                            finnish = true;
89c4a3a6 sago007 2008-08-29 14:32 1711
                        }
89c4a3a6 sago007 2008-08-29 14:32 1712
                    }
89c4a3a6 sago007 2008-08-29 14:32 1713
            } //left
89c4a3a6 sago007 2008-08-29 14:32 1714
            if ((mousex>(420+x)) && (mousex<(540+x)) && (mousey>(200+y)) && (mousey<(240+y)))
89c4a3a6 sago007 2008-08-29 14:32 1715
            {
89c4a3a6 sago007 2008-08-29 14:32 1716
                //right
89c4a3a6 sago007 2008-08-29 14:32 1717
                bool finnish = false;
89c4a3a6 sago007 2008-08-29 14:32 1718
                while (!finnish)
89c4a3a6 sago007 2008-08-29 14:32 1719
                    while ( SDL_PollEvent(&event) )
89c4a3a6 sago007 2008-08-29 14:32 1720
                    {
89c4a3a6 sago007 2008-08-29 14:32 1721
                        if (event.type == SDL_KEYDOWN)
89c4a3a6 sago007 2008-08-29 14:32 1722
                        {
89c4a3a6 sago007 2008-08-29 14:32 1723
                            if (event.key.keysym.sym != SDLK_ESCAPE)
89c4a3a6 sago007 2008-08-29 14:32 1724
                                keySettings[player].right = event.key.keysym.sym;
89c4a3a6 sago007 2008-08-29 14:32 1725
                            finnish = true;
89c4a3a6 sago007 2008-08-29 14:32 1726
                        }
89c4a3a6 sago007 2008-08-29 14:32 1727
                    }
89c4a3a6 sago007 2008-08-29 14:32 1728
            } //right
89c4a3a6 sago007 2008-08-29 14:32 1729
            if ((mousex>(420+x)) && (mousex<(540+x)) && (mousey>(250+y)) && (mousey<(290+y)))
89c4a3a6 sago007 2008-08-29 14:32 1730
            {
89c4a3a6 sago007 2008-08-29 14:32 1731
                //push
89c4a3a6 sago007 2008-08-29 14:32 1732
                bool finnish = false;
89c4a3a6 sago007 2008-08-29 14:32 1733
                while (!finnish)
89c4a3a6 sago007 2008-08-29 14:32 1734
                    while ( SDL_PollEvent(&event) )
89c4a3a6 sago007 2008-08-29 14:32 1735
                    {
89c4a3a6 sago007 2008-08-29 14:32 1736
                        if (event.type == SDL_KEYDOWN)
89c4a3a6 sago007 2008-08-29 14:32 1737
                        {
89c4a3a6 sago007 2008-08-29 14:32 1738
                            if (event.key.keysym.sym != SDLK_ESCAPE)
89c4a3a6 sago007 2008-08-29 14:32 1739
                                keySettings[player].push = event.key.keysym.sym;
89c4a3a6 sago007 2008-08-29 14:32 1740
                            finnish = true;
89c4a3a6 sago007 2008-08-29 14:32 1741
                        }
89c4a3a6 sago007 2008-08-29 14:32 1742
                    }
89c4a3a6 sago007 2008-08-29 14:32 1743
            } //push
89c4a3a6 sago007 2008-08-29 14:32 1744
            if ((mousex>(420+x)) && (mousex<(540+x)) && (mousey>(300+y)) && (mousey<(340+y)))
89c4a3a6 sago007 2008-08-29 14:32 1745
            {
89c4a3a6 sago007 2008-08-29 14:32 1746
                //change
89c4a3a6 sago007 2008-08-29 14:32 1747
                bool finnish = false;
89c4a3a6 sago007 2008-08-29 14:32 1748
                while (!finnish)
89c4a3a6 sago007 2008-08-29 14:32 1749
                    while ( SDL_PollEvent(&event) )
89c4a3a6 sago007 2008-08-29 14:32 1750
                    {
89c4a3a6 sago007 2008-08-29 14:32 1751
                        if (event.type == SDL_KEYDOWN)
89c4a3a6 sago007 2008-08-29 14:32 1752
                        {
89c4a3a6 sago007 2008-08-29 14:32 1753
                            if (event.key.keysym.sym != SDLK_ESCAPE)
89c4a3a6 sago007 2008-08-29 14:32 1754
                                keySettings[player].change = event.key.keysym.sym;
89c4a3a6 sago007 2008-08-29 14:32 1755
                            finnish = true;
89c4a3a6 sago007 2008-08-29 14:32 1756
                        }
89c4a3a6 sago007 2008-08-29 14:32 1757
                    }
89c4a3a6 sago007 2008-08-29 14:32 1758
            } //change
89c4a3a6 sago007 2008-08-29 14:32 1759
            //mouseplay:
89c4a3a6 sago007 2008-08-29 14:32 1760
            if ((mousex>(220+x)) && (mousex<(262+x)) && (mousey>(350+y)) && (mousey<(392+y)))
89c4a3a6 sago007 2008-08-29 14:32 1761
            {
89c4a3a6 sago007 2008-08-29 14:32 1762
                if (player==0)
89c4a3a6 sago007 2008-08-29 14:32 1763
                {
89c4a3a6 sago007 2008-08-29 14:32 1764
                    mouseplay1 = !mouseplay1;
89c4a3a6 sago007 2008-08-29 14:32 1765
                }
89c4a3a6 sago007 2008-08-29 14:32 1766
                else
89c4a3a6 sago007 2008-08-29 14:32 1767
                {
89c4a3a6 sago007 2008-08-29 14:32 1768
                    mouseplay2 = !mouseplay2;
89c4a3a6 sago007 2008-08-29 14:32 1769
                }
89c4a3a6 sago007 2008-08-29 14:32 1770
            }
89c4a3a6 sago007 2008-08-29 14:32 1771
            //Joyplay:
89c4a3a6 sago007 2008-08-29 14:32 1772
            if ((mousex>(460+x)) && (mousex<(502+x)) && (mousey>(350+y)) && (mousey<(392+y)))
89c4a3a6 sago007 2008-08-29 14:32 1773
            {
89c4a3a6 sago007 2008-08-29 14:32 1774
                if (player==0)
89c4a3a6 sago007 2008-08-29 14:32 1775
                {
89c4a3a6 sago007 2008-08-29 14:32 1776
                    joyplay1 = !joyplay1;
89c4a3a6 sago007 2008-08-29 14:32 1777
                }
89c4a3a6 sago007 2008-08-29 14:32 1778
                else
89c4a3a6 sago007 2008-08-29 14:32 1779
                {
89c4a3a6 sago007 2008-08-29 14:32 1780
                    joyplay2 = !joyplay2;
89c4a3a6 sago007 2008-08-29 14:32 1781
                }
89c4a3a6 sago007 2008-08-29 14:32 1782
            }
89c4a3a6 sago007 2008-08-29 14:32 1783
        }	//get mouse state
89c4a3a6 sago007 2008-08-29 14:32 1784
89c4a3a6 sago007 2008-08-29 14:32 1785
        DrawIMG(mouse,screen,mousex,mousey);
89c4a3a6 sago007 2008-08-29 14:32 1786
        SDL_Flip(screen);
89c4a3a6 sago007 2008-08-29 14:32 1787
    }	//while !done
89c4a3a6 sago007 2008-08-29 14:32 1788
    DrawIMG(background, screen, 0, 0);
89c4a3a6 sago007 2008-08-29 14:32 1789
    return 0;
89c4a3a6 sago007 2008-08-29 14:32 1790
}
89c4a3a6 sago007 2008-08-29 14:32 1791
89c4a3a6 sago007 2008-08-29 14:32 1792
89c4a3a6 sago007 2008-08-29 14:32 1793
//Dialogbox
89c4a3a6 sago007 2008-08-29 14:32 1794
bool OpenDialogbox(int x, int y, char *name)
89c4a3a6 sago007 2008-08-29 14:32 1795
{
89c4a3a6 sago007 2008-08-29 14:32 1796
    bool done = false;     //We are done!
89c4a3a6 sago007 2008-08-29 14:32 1797
    bool accept = false;   //New name is accepted! (not Cancelled)
89c4a3a6 sago007 2008-08-29 14:32 1798
    bool repeating = false; //The key is being held (BACKSPACE)
89c4a3a6 sago007 2008-08-29 14:32 1799
    const int repeatDelay = 200;    //Repeating
89c4a3a6 sago007 2008-08-29 14:32 1800
    unsigned long time = 0;
89c4a3a6 sago007 2008-08-29 14:32 1801
    ReadKeyboard rk = ReadKeyboard(name);
89c4a3a6 sago007 2008-08-29 14:32 1802
    Uint8* keys;
89c4a3a6 sago007 2008-08-29 14:32 1803
    string strHolder;
89c4a3a6 sago007 2008-08-29 14:32 1804
    MakeBackground(1024,768);
89c4a3a6 sago007 2008-08-29 14:32 1805
    DrawIMG(background,screen,0,0);
89c4a3a6 sago007 2008-08-29 14:32 1806
    while (!done)
89c4a3a6 sago007 2008-08-29 14:32 1807
    {
89c4a3a6 sago007 2008-08-29 14:32 1808
        DrawIMG(dialogBox,screen,x,y);
89c4a3a6 sago007 2008-08-29 14:32 1809
        SFont_Write(screen,fBlueFont,x+40,y+72,rk.GetString());
89c4a3a6 sago007 2008-08-29 14:32 1810
        strHolder = rk.GetString();
89c4a3a6 sago007 2008-08-29 14:32 1811
        //cout << "hej\n" << (int)rk.CharsBeforeCursor() << endl;
89c4a3a6 sago007 2008-08-29 14:32 1812
        strHolder.erase((int)rk.CharsBeforeCursor());
89c4a3a6 sago007 2008-08-29 14:32 1813
89c4a3a6 sago007 2008-08-29 14:32 1814
        if (((SDL_GetTicks()/600)%2)==1)
89c4a3a6 sago007 2008-08-29 14:32 1815
            SFont_Write(screen,fBlueFont,x+40+SFont_TextWidth(fBlueFont,strHolder.c_str()),y+69,"|");
89c4a3a6 sago007 2008-08-29 14:32 1816
89c4a3a6 sago007 2008-08-29 14:32 1817
        SDL_Event event;
89c4a3a6 sago007 2008-08-29 14:32 1818
89c4a3a6 sago007 2008-08-29 14:32 1819
        while ( SDL_PollEvent(&event) )
89c4a3a6 sago007 2008-08-29 14:32 1820
        {
89c4a3a6 sago007 2008-08-29 14:32 1821
            if ( event.type == SDL_QUIT )  {
89c4a3a6 sago007 2008-08-29 14:32 1822
                done = true;
89c4a3a6 sago007 2008-08-29 14:32 1823
                accept = false;
89c4a3a6 sago007 2008-08-29 14:32 1824
            }
89c4a3a6 sago007 2008-08-29 14:32 1825
89c4a3a6 sago007 2008-08-29 14:32 1826
            if ( event.type == SDL_KEYDOWN )
89c4a3a6 sago007 2008-08-29 14:32 1827
            {
89c4a3a6 sago007 2008-08-29 14:32 1828
                if ( (event.key.keysym.sym == SDLK_RETURN)||(event.key.keysym.sym == SDLK_KP_ENTER) ) {
89c4a3a6 sago007 2008-08-29 14:32 1829
                    done = true;
89c4a3a6 sago007 2008-08-29 14:32 1830
                    accept = true;
89c4a3a6 sago007 2008-08-29 14:32 1831
                }
89c4a3a6 sago007 2008-08-29 14:32 1832
                else
89c4a3a6 sago007 2008-08-29 14:32 1833
                    if ( (event.key.keysym.sym == SDLK_ESCAPE) ) {
89c4a3a6 sago007 2008-08-29 14:32 1834
                        done = true;
89c4a3a6 sago007 2008-08-29 14:32 1835
                        accept = false;
89c4a3a6 sago007 2008-08-29 14:32 1836
                    }
89c4a3a6 sago007 2008-08-29 14:32 1837
                    else if (!(event.key.keysym.sym == SDLK_BACKSPACE)){
89c4a3a6 sago007 2008-08-29 14:32 1838
                        if ((rk.ReadKey(event.key.keysym.sym))&&(SoundEnabled)&&(!NoSound))Mix_PlayChannel(1,typingChunk,0);
89c4a3a6 sago007 2008-08-29 14:32 1839
                    }
89c4a3a6 sago007 2008-08-29 14:32 1840
                    else if ((event.key.keysym.sym == SDLK_BACKSPACE)&&(!repeating)){
89c4a3a6 sago007 2008-08-29 14:32 1841
                        if ((rk.ReadKey(event.key.keysym.sym))&&(SoundEnabled)&&(!NoSound))Mix_PlayChannel(1,typingChunk,0);
89c4a3a6 sago007 2008-08-29 14:32 1842
                        repeating = true;
89c4a3a6 sago007 2008-08-29 14:32 1843
                        time=SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 1844
                    }
89c4a3a6 sago007 2008-08-29 14:32 1845
            }
89c4a3a6 sago007 2008-08-29 14:32 1846
89c4a3a6 sago007 2008-08-29 14:32 1847
        }	//while(event)
89c4a3a6 sago007 2008-08-29 14:32 1848
89c4a3a6 sago007 2008-08-29 14:32 1849
        if (SDL_GetTicks()>(time+repeatDelay))
89c4a3a6 sago007 2008-08-29 14:32 1850
        {
89c4a3a6 sago007 2008-08-29 14:32 1851
            time = SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 1852
            keys = SDL_GetKeyState(NULL);
89c4a3a6 sago007 2008-08-29 14:32 1853
            if ( (keys[SDLK_BACKSPACE])&&(repeating) )
89c4a3a6 sago007 2008-08-29 14:32 1854
            {
89c4a3a6 sago007 2008-08-29 14:32 1855
                if ((rk.ReadKey(SDLK_BACKSPACE))&&(SoundEnabled)&&(!NoSound))Mix_PlayChannel(1,typingChunk,0);
89c4a3a6 sago007 2008-08-29 14:32 1856
            }
89c4a3a6 sago007 2008-08-29 14:32 1857
            else
89c4a3a6 sago007 2008-08-29 14:32 1858
                repeating = false;
89c4a3a6 sago007 2008-08-29 14:32 1859
        }
89c4a3a6 sago007 2008-08-29 14:32 1860
89c4a3a6 sago007 2008-08-29 14:32 1861
        SDL_Flip(screen); //Update screen
89c4a3a6 sago007 2008-08-29 14:32 1862
    }	//while(!done)
89c4a3a6 sago007 2008-08-29 14:32 1863
    strcpy(name,rk.GetString());
89c4a3a6 sago007 2008-08-29 14:32 1864
    bScreenLocked = false;
89c4a3a6 sago007 2008-08-29 14:32 1865
    showDialog = false;
89c4a3a6 sago007 2008-08-29 14:32 1866
    return accept;
89c4a3a6 sago007 2008-08-29 14:32 1867
}
89c4a3a6 sago007 2008-08-29 14:32 1868
89c4a3a6 sago007 2008-08-29 14:32 1869
89c4a3a6 sago007 2008-08-29 14:32 1870
//Open a puzzle file
89c4a3a6 sago007 2008-08-29 14:32 1871
bool OpenFileDialogbox(int x, int y, char *name)
89c4a3a6 sago007 2008-08-29 14:32 1872
{
89c4a3a6 sago007 2008-08-29 14:32 1873
    bool done = false;	//We are done!
89c4a3a6 sago007 2008-08-29 14:32 1874
    int mousex, mousey;
89c4a3a6 sago007 2008-08-29 14:32 1875
    ListFiles lf = ListFiles();
89c4a3a6 sago007 2008-08-29 14:32 1876
#ifdef SHAREDIR
89c4a3a6 sago007 2008-08-29 14:32 1877
    string folder = (string)SHAREDIR+(string)"/res";
89c4a3a6 sago007 2008-08-29 14:32 1878
    cout << "Looking in " << folder << endl;
89c4a3a6 sago007 2008-08-29 14:32 1879
    lf.setDirectory(folder.c_str());
89c4a3a6 sago007 2008-08-29 14:32 1880
#else
89c4a3a6 sago007 2008-08-29 14:32 1881
    lf.setDirectory("./res");
89c4a3a6 sago007 2008-08-29 14:32 1882
#endif
89c4a3a6 sago007 2008-08-29 14:32 1883
#ifdef __unix__
89c4a3a6 sago007 2008-08-29 14:32 1884
    string homeFolder = (string)getenv("HOME")+(string)"/.gamesaves/blockattack/puzzles";
89c4a3a6 sago007 2008-08-29 14:32 1885
    lf.setDirectory2(homeFolder.c_str());
89c4a3a6 sago007 2008-08-29 14:32 1886
#endif
89c4a3a6 sago007 2008-08-29 14:32 1887
    Uint8* keys;
89c4a3a6 sago007 2008-08-29 14:32 1888
    string strHolder;
89c4a3a6 sago007 2008-08-29 14:32 1889
    MakeBackground(1024,768);
89c4a3a6 sago007 2008-08-29 14:32 1890
    DrawIMG(background,screen,0,0);
89c4a3a6 sago007 2008-08-29 14:32 1891
    DrawIMG(bForward,background,x+460,y+420);
89c4a3a6 sago007 2008-08-29 14:32 1892
    DrawIMG(bBack,background,x+20,y+420);
89c4a3a6 sago007 2008-08-29 14:32 1893
    while (!done)
89c4a3a6 sago007 2008-08-29 14:32 1894
    {
89c4a3a6 sago007 2008-08-29 14:32 1895
        DrawIMG(background,screen,0,0);
89c4a3a6 sago007 2008-08-29 14:32 1896
        const int nrOfFiles = 10;
89c4a3a6 sago007 2008-08-29 14:32 1897
        DrawIMG(changeButtonsBack,screen,x,y);
89c4a3a6 sago007 2008-08-29 14:32 1898
        for (int i=0;i<nrOfFiles;i++)
89c4a3a6 sago007 2008-08-29 14:32 1899
        {
89c4a3a6 sago007 2008-08-29 14:32 1900
            SFont_Write(screen,fBlueFont,x+10,y+10+36*i,lf.getFileName(i).c_str());
89c4a3a6 sago007 2008-08-29 14:32 1901
        }
89c4a3a6 sago007 2008-08-29 14:32 1902
89c4a3a6 sago007 2008-08-29 14:32 1903
        SDL_Event event;
89c4a3a6 sago007 2008-08-29 14:32 1904
89c4a3a6 sago007 2008-08-29 14:32 1905
        while ( SDL_PollEvent(&event) )
89c4a3a6 sago007 2008-08-29 14:32 1906
        {
89c4a3a6 sago007 2008-08-29 14:32 1907
            if ( event.type == SDL_QUIT )  {
89c4a3a6 sago007 2008-08-29 14:32 1908
                done = true;
89c4a3a6 sago007 2008-08-29 14:32 1909
            }
89c4a3a6 sago007 2008-08-29 14:32 1910
89c4a3a6 sago007 2008-08-29 14:32 1911
            if ( event.type == SDL_KEYDOWN )
89c4a3a6 sago007 2008-08-29 14:32 1912
            {
89c4a3a6 sago007 2008-08-29 14:32 1913
                if ( (event.key.keysym.sym == SDLK_ESCAPE) ) {
89c4a3a6 sago007 2008-08-29 14:32 1914
                    done = true;
89c4a3a6 sago007 2008-08-29 14:32 1915
                }
89c4a3a6 sago007 2008-08-29 14:32 1916
89c4a3a6 sago007 2008-08-29 14:32 1917
                if ( (event.key.keysym.sym == SDLK_RIGHT) ) {
89c4a3a6 sago007 2008-08-29 14:32 1918
                    lf.forward();
89c4a3a6 sago007 2008-08-29 14:32 1919
                }
89c4a3a6 sago007 2008-08-29 14:32 1920
89c4a3a6 sago007 2008-08-29 14:32 1921
                if ( (event.key.keysym.sym == SDLK_LEFT) ) {
89c4a3a6 sago007 2008-08-29 14:32 1922
                    lf.back();
89c4a3a6 sago007 2008-08-29 14:32 1923
                }
89c4a3a6 sago007 2008-08-29 14:32 1924
            }
89c4a3a6 sago007 2008-08-29 14:32 1925
89c4a3a6 sago007 2008-08-29 14:32 1926
        } //while(event)
89c4a3a6 sago007 2008-08-29 14:32 1927
89c4a3a6 sago007 2008-08-29 14:32 1928
        SDL_GetMouseState(&mousex,&mousey);
89c4a3a6 sago007 2008-08-29 14:32 1929
89c4a3a6 sago007 2008-08-29 14:32 1930
        // If the mouse button is released, make bMouseUp equal true
89c4a3a6 sago007 2008-08-29 14:32 1931
        if (!SDL_GetMouseState(NULL, NULL)&SDL_BUTTON(1))
89c4a3a6 sago007 2008-08-29 14:32 1932
        {
89c4a3a6 sago007 2008-08-29 14:32 1933
            bMouseUp=true;
89c4a3a6 sago007 2008-08-29 14:32 1934
        }
89c4a3a6 sago007 2008-08-29 14:32 1935
89c4a3a6 sago007 2008-08-29 14:32 1936
        if (SDL_GetMouseState(NULL,NULL)&SDL_BUTTON(1) && bMouseUp)
89c4a3a6 sago007 2008-08-29 14:32 1937
        {
89c4a3a6 sago007 2008-08-29 14:32 1938
            bMouseUp = false;
89c4a3a6 sago007 2008-08-29 14:32 1939
89c4a3a6 sago007 2008-08-29 14:32 1940
            //The Forward Button:
89c4a3a6 sago007 2008-08-29 14:32 1941
            if ( (mousex>x+460) && (mousex<x+460+120) && (mousey>y+420) && (mousey<y+420+40) )
89c4a3a6 sago007 2008-08-29 14:32 1942
            {
89c4a3a6 sago007 2008-08-29 14:32 1943
                lf.forward();
89c4a3a6 sago007 2008-08-29 14:32 1944
            }
89c4a3a6 sago007 2008-08-29 14:32 1945
89c4a3a6 sago007 2008-08-29 14:32 1946
            //The back button:
89c4a3a6 sago007 2008-08-29 14:32 1947
            if ( (mousex>x+20) && (mousex<x+20+120) && (mousey>y+420) && (mousey<y+420+40) )
89c4a3a6 sago007 2008-08-29 14:32 1948
            {
89c4a3a6 sago007 2008-08-29 14:32 1949
                lf.back();
89c4a3a6 sago007 2008-08-29 14:32 1950
            }
89c4a3a6 sago007 2008-08-29 14:32 1951
89c4a3a6 sago007 2008-08-29 14:32 1952
            for (int i=0;i<10;i++)
89c4a3a6 sago007 2008-08-29 14:32 1953
            {
89c4a3a6 sago007 2008-08-29 14:32 1954
                if ( (mousex>x+10) && (mousex<x+480) && (mousey>y+10+i*36) && (mousey<y+10+i*36+32) )
89c4a3a6 sago007 2008-08-29 14:32 1955
                {
89c4a3a6 sago007 2008-08-29 14:32 1956
                    if (lf.fileExists(i))
89c4a3a6 sago007 2008-08-29 14:32 1957
                    {
89c4a3a6 sago007 2008-08-29 14:32 1958
                        strncpy(name,lf.getFileName(i).c_str(),28); //Problems occurs then larger than 28 (maybe 29)
89c4a3a6 sago007 2008-08-29 14:32 1959
                        done=true; //The user have, clicked the purpose of this function is now complete
89c4a3a6 sago007 2008-08-29 14:32 1960
                    }
89c4a3a6 sago007 2008-08-29 14:32 1961
                }
89c4a3a6 sago007 2008-08-29 14:32 1962
            }
89c4a3a6 sago007 2008-08-29 14:32 1963
        }
89c4a3a6 sago007 2008-08-29 14:32 1964
89c4a3a6 sago007 2008-08-29 14:32 1965
        DrawIMG(mouse,screen,mousex,mousey);
89c4a3a6 sago007 2008-08-29 14:32 1966
        SDL_Flip(screen); //Update screen
89c4a3a6 sago007 2008-08-29 14:32 1967
    }
89c4a3a6 sago007 2008-08-29 14:32 1968
}
89c4a3a6 sago007 2008-08-29 14:32 1969
89c4a3a6 sago007 2008-08-29 14:32 1970
//Slelect a theme
89c4a3a6 sago007 2008-08-29 14:32 1971
bool SelectThemeDialogbox(int x, int y, char *name)
89c4a3a6 sago007 2008-08-29 14:32 1972
{
89c4a3a6 sago007 2008-08-29 14:32 1973
    bool done = false;	//We are done!
89c4a3a6 sago007 2008-08-29 14:32 1974
    int mousex, mousey;
89c4a3a6 sago007 2008-08-29 14:32 1975
    ListFiles lf = ListFiles();
89c4a3a6 sago007 2008-08-29 14:32 1976
#ifdef SHAREDIR
89c4a3a6 sago007 2008-08-29 14:32 1977
    string folder = (string)SHAREDIR+(string)"/themes";
89c4a3a6 sago007 2008-08-29 14:32 1978
    cout << "Looking in " << folder << endl;
89c4a3a6 sago007 2008-08-29 14:32 1979
    lf.setDirectory(folder.c_str());
89c4a3a6 sago007 2008-08-29 14:32 1980
#else
89c4a3a6 sago007 2008-08-29 14:32 1981
    lf.setDirectory("./themes");
89c4a3a6 sago007 2008-08-29 14:32 1982
#endif
89c4a3a6 sago007 2008-08-29 14:32 1983
#ifdef __unix__
89c4a3a6 sago007 2008-08-29 14:32 1984
    string homeFolder = (string)getenv("HOME")+(string)"/.gamesaves/blockattack/themes";
89c4a3a6 sago007 2008-08-29 14:32 1985
    lf.setDirectory2(homeFolder.c_str());
89c4a3a6 sago007 2008-08-29 14:32 1986
#endif
89c4a3a6 sago007 2008-08-29 14:32 1987
    Uint8* keys;
89c4a3a6 sago007 2008-08-29 14:32 1988
    string strHolder;
89c4a3a6 sago007 2008-08-29 14:32 1989
    MakeBackground(1024,768);
89c4a3a6 sago007 2008-08-29 14:32 1990
    DrawIMG(background,screen,0,0);
89c4a3a6 sago007 2008-08-29 14:32 1991
    DrawIMG(bForward,background,x+460,y+420);
89c4a3a6 sago007 2008-08-29 14:32 1992
    DrawIMG(bBack,background,x+20,y+420);
89c4a3a6 sago007 2008-08-29 14:32 1993
    while (!done)
89c4a3a6 sago007 2008-08-29 14:32 1994
    {
89c4a3a6 sago007 2008-08-29 14:32 1995
        DrawIMG(background,screen,0,0);
89c4a3a6 sago007 2008-08-29 14:32 1996
        const int nrOfFiles = 10;
89c4a3a6 sago007 2008-08-29 14:32 1997
        DrawIMG(changeButtonsBack,screen,x,y);
89c4a3a6 sago007 2008-08-29 14:32 1998
        for (int i=0;i<nrOfFiles;i++)
89c4a3a6 sago007 2008-08-29 14:32 1999
        {
89c4a3a6 sago007 2008-08-29 14:32 2000
            SFont_Write(screen,fBlueFont,x+10,y+10+36*i,lf.getFileName(i).c_str());
89c4a3a6 sago007 2008-08-29 14:32 2001
        }
89c4a3a6 sago007 2008-08-29 14:32 2002
89c4a3a6 sago007 2008-08-29 14:32 2003
        SDL_Event event;
89c4a3a6 sago007 2008-08-29 14:32 2004
89c4a3a6 sago007 2008-08-29 14:32 2005
        while ( SDL_PollEvent(&event) )
89c4a3a6 sago007 2008-08-29 14:32 2006
        {
89c4a3a6 sago007 2008-08-29 14:32 2007
            if ( event.type == SDL_QUIT )  {
89c4a3a6 sago007 2008-08-29 14:32 2008
                done = true;
89c4a3a6 sago007 2008-08-29 14:32 2009
            }
89c4a3a6 sago007 2008-08-29 14:32 2010
89c4a3a6 sago007 2008-08-29 14:32 2011
            if ( event.type == SDL_KEYDOWN )
89c4a3a6 sago007 2008-08-29 14:32 2012
            {
89c4a3a6 sago007 2008-08-29 14:32 2013
                if ( (event.key.keysym.sym == SDLK_ESCAPE) ) {
89c4a3a6 sago007 2008-08-29 14:32 2014
                    done = true;
89c4a3a6 sago007 2008-08-29 14:32 2015
                }
89c4a3a6 sago007 2008-08-29 14:32 2016
89c4a3a6 sago007 2008-08-29 14:32 2017
                if ( (event.key.keysym.sym == SDLK_RIGHT) ) {
89c4a3a6 sago007 2008-08-29 14:32 2018
                    lf.forward();
89c4a3a6 sago007 2008-08-29 14:32 2019
                }
89c4a3a6 sago007 2008-08-29 14:32 2020
89c4a3a6 sago007 2008-08-29 14:32 2021
                if ( (event.key.keysym.sym == SDLK_LEFT) ) {
89c4a3a6 sago007 2008-08-29 14:32 2022
                    lf.back();
89c4a3a6 sago007 2008-08-29 14:32 2023
                }
89c4a3a6 sago007 2008-08-29 14:32 2024
            }
89c4a3a6 sago007 2008-08-29 14:32 2025
89c4a3a6 sago007 2008-08-29 14:32 2026
        } //while(event)
89c4a3a6 sago007 2008-08-29 14:32 2027
89c4a3a6 sago007 2008-08-29 14:32 2028
        SDL_GetMouseState(&mousex,&mousey);
89c4a3a6 sago007 2008-08-29 14:32 2029
89c4a3a6 sago007 2008-08-29 14:32 2030
        // If the mouse button is released, make bMouseUp equal true
89c4a3a6 sago007 2008-08-29 14:32 2031
        if (!SDL_GetMouseState(NULL, NULL)&SDL_BUTTON(1))
89c4a3a6 sago007 2008-08-29 14:32 2032
        {
89c4a3a6 sago007 2008-08-29 14:32 2033
            bMouseUp=true;
89c4a3a6 sago007 2008-08-29 14:32 2034
        }
89c4a3a6 sago007 2008-08-29 14:32 2035
89c4a3a6 sago007 2008-08-29 14:32 2036
        if (SDL_GetMouseState(NULL,NULL)&SDL_BUTTON(1) && bMouseUp)
89c4a3a6 sago007 2008-08-29 14:32 2037
        {
89c4a3a6 sago007 2008-08-29 14:32 2038
            bMouseUp = false;
89c4a3a6 sago007 2008-08-29 14:32 2039
89c4a3a6 sago007 2008-08-29 14:32 2040
            //The Forward Button:
89c4a3a6 sago007 2008-08-29 14:32 2041
            if ( (mousex>x+460) && (mousex<x+460+120) && (mousey>y+420) && (mousey<y+420+40) )
89c4a3a6 sago007 2008-08-29 14:32 2042
            {
89c4a3a6 sago007 2008-08-29 14:32 2043
                lf.forward();
89c4a3a6 sago007 2008-08-29 14:32 2044
            }
89c4a3a6 sago007 2008-08-29 14:32 2045
89c4a3a6 sago007 2008-08-29 14:32 2046
            //The back button:
89c4a3a6 sago007 2008-08-29 14:32 2047
            if ( (mousex>x+20) && (mousex<x+20+120) && (mousey>y+420) && (mousey<y+420+40) )
89c4a3a6 sago007 2008-08-29 14:32 2048
            {
89c4a3a6 sago007 2008-08-29 14:32 2049
                lf.back();
89c4a3a6 sago007 2008-08-29 14:32 2050
            }
89c4a3a6 sago007 2008-08-29 14:32 2051
89c4a3a6 sago007 2008-08-29 14:32 2052
            for (int i=0;i<10;i++)
89c4a3a6 sago007 2008-08-29 14:32 2053
            {
89c4a3a6 sago007 2008-08-29 14:32 2054
                if ( (mousex>x+10) && (mousex<x+480) && (mousey>y+10+i*36) && (mousey<y+10+i*36+32) )
89c4a3a6 sago007 2008-08-29 14:32 2055
                {
89c4a3a6 sago007 2008-08-29 14:32 2056
                    if (lf.fileExists(i))
89c4a3a6 sago007 2008-08-29 14:32 2057
                    {
89c4a3a6 sago007 2008-08-29 14:32 2058
                        strncpy(name,lf.getFileName(i).c_str(),28); //Problems occurs then larger than 28 (maybe 29)
89c4a3a6 sago007 2008-08-29 14:32 2059
                        loadTheme(lf.getFileName(i));
89c4a3a6 sago007 2008-08-29 14:32 2060
                        done=true; //The user have, clicked the purpose of this function is now complete
89c4a3a6 sago007 2008-08-29 14:32 2061
                    }
89c4a3a6 sago007 2008-08-29 14:32 2062
                }
89c4a3a6 sago007 2008-08-29 14:32 2063
            }
89c4a3a6 sago007 2008-08-29 14:32 2064
        }
89c4a3a6 sago007 2008-08-29 14:32 2065
89c4a3a6 sago007 2008-08-29 14:32 2066
        DrawIMG(mouse,screen,mousex,mousey);
89c4a3a6 sago007 2008-08-29 14:32 2067
        SDL_Flip(screen); //Update screen
89c4a3a6 sago007 2008-08-29 14:32 2068
    }
89c4a3a6 sago007 2008-08-29 14:32 2069
}
89c4a3a6 sago007 2008-08-29 14:32 2070
89c4a3a6 sago007 2008-08-29 14:32 2071
//Open a saved replay
89c4a3a6 sago007 2008-08-29 14:32 2072
bool OpenReplayDialogbox(int x, int y, char *name)
89c4a3a6 sago007 2008-08-29 14:32 2073
{
89c4a3a6 sago007 2008-08-29 14:32 2074
    bool done = false;	//We are done!
89c4a3a6 sago007 2008-08-29 14:32 2075
    int mousex, mousey;
89c4a3a6 sago007 2008-08-29 14:32 2076
    ListFiles lf = ListFiles();
89c4a3a6 sago007 2008-08-29 14:32 2077
    cout << "Ready to set directory!" << endl;
89c4a3a6 sago007 2008-08-29 14:32 2078
#ifdef __unix__
89c4a3a6 sago007 2008-08-29 14:32 2079
    string directory = (string)getenv("HOME")+(string)"/.gamesaves/blockattack/replays";
89c4a3a6 sago007 2008-08-29 14:32 2080
#elif WIN32
89c4a3a6 sago007 2008-08-29 14:32 2081
    string directory = getMyDocumentsPath()+(string)"/My Games/blockattack/replays";
89c4a3a6 sago007 2008-08-29 14:32 2082
#else
89c4a3a6 sago007 2008-08-29 14:32 2083
    string directory = "./replays";
89c4a3a6 sago007 2008-08-29 14:32 2084
#endif
89c4a3a6 sago007 2008-08-29 14:32 2085
    lf.setDirectory(directory);
89c4a3a6 sago007 2008-08-29 14:32 2086
    cout << "Directory sat" << endl;
89c4a3a6 sago007 2008-08-29 14:32 2087
    Uint8* keys;
89c4a3a6 sago007 2008-08-29 14:32 2088
    string strHolder;
89c4a3a6 sago007 2008-08-29 14:32 2089
    MakeBackground(1024,768);
89c4a3a6 sago007 2008-08-29 14:32 2090
    DrawIMG(background,screen,0,0);
89c4a3a6 sago007 2008-08-29 14:32 2091
    DrawIMG(bForward,background,x+460,y+420);
89c4a3a6 sago007 2008-08-29 14:32 2092
    DrawIMG(bBack,background,x+20,y+420);
89c4a3a6 sago007 2008-08-29 14:32 2093
    while (!done)
89c4a3a6 sago007 2008-08-29 14:32 2094
    {
89c4a3a6 sago007 2008-08-29 14:32 2095
        DrawIMG(background,screen,0,0);
89c4a3a6 sago007 2008-08-29 14:32 2096
        const int nrOfFiles = 10;
89c4a3a6 sago007 2008-08-29 14:32 2097
        DrawIMG(changeButtonsBack,screen,x,y);
89c4a3a6 sago007 2008-08-29 14:32 2098
        for (int i=0;i<nrOfFiles;i++)
89c4a3a6 sago007 2008-08-29 14:32 2099
        {
89c4a3a6 sago007 2008-08-29 14:32 2100
            SFont_Write(screen,fBlueFont,x+10,y+10+36*i,lf.getFileName(i).c_str());
89c4a3a6 sago007 2008-08-29 14:32 2101
        }
89c4a3a6 sago007 2008-08-29 14:32 2102
89c4a3a6 sago007 2008-08-29 14:32 2103
        SDL_Event event;
89c4a3a6 sago007 2008-08-29 14:32 2104
89c4a3a6 sago007 2008-08-29 14:32 2105
        while ( SDL_PollEvent(&event) )
89c4a3a6 sago007 2008-08-29 14:32 2106
        {
89c4a3a6 sago007 2008-08-29 14:32 2107
            if ( event.type == SDL_QUIT )  {
89c4a3a6 sago007 2008-08-29 14:32 2108
                done = true;
89c4a3a6 sago007 2008-08-29 14:32 2109
                return false;
89c4a3a6 sago007 2008-08-29 14:32 2110
            }
89c4a3a6 sago007 2008-08-29 14:32 2111
89c4a3a6 sago007 2008-08-29 14:32 2112
            if ( event.type == SDL_KEYDOWN )
89c4a3a6 sago007 2008-08-29 14:32 2113
            {
89c4a3a6 sago007 2008-08-29 14:32 2114
                if ( (event.key.keysym.sym == SDLK_ESCAPE) ) {
89c4a3a6 sago007 2008-08-29 14:32 2115
                    done = true;
89c4a3a6 sago007 2008-08-29 14:32 2116
                    return false;
89c4a3a6 sago007 2008-08-29 14:32 2117
                }
89c4a3a6 sago007 2008-08-29 14:32 2118
89c4a3a6 sago007 2008-08-29 14:32 2119
                if ( (event.key.keysym.sym == SDLK_RIGHT) ) {
89c4a3a6 sago007 2008-08-29 14:32 2120
                    lf.forward();
89c4a3a6 sago007 2008-08-29 14:32 2121
                }
89c4a3a6 sago007 2008-08-29 14:32 2122
89c4a3a6 sago007 2008-08-29 14:32 2123
                if ( (event.key.keysym.sym == SDLK_LEFT) ) {
89c4a3a6 sago007 2008-08-29 14:32 2124
                    lf.back();
89c4a3a6 sago007 2008-08-29 14:32 2125
                }
89c4a3a6 sago007 2008-08-29 14:32 2126
            }
89c4a3a6 sago007 2008-08-29 14:32 2127
89c4a3a6 sago007 2008-08-29 14:32 2128
        } //while(event)
89c4a3a6 sago007 2008-08-29 14:32 2129
89c4a3a6 sago007 2008-08-29 14:32 2130
        SDL_GetMouseState(&mousex,&mousey);
89c4a3a6 sago007 2008-08-29 14:32 2131
89c4a3a6 sago007 2008-08-29 14:32 2132
        // If the mouse button is released, make bMouseUp equal true
89c4a3a6 sago007 2008-08-29 14:32 2133
        if (!SDL_GetMouseState(NULL, NULL)&SDL_BUTTON(1))
89c4a3a6 sago007 2008-08-29 14:32 2134
        {
89c4a3a6 sago007 2008-08-29 14:32 2135
            bMouseUp=true;
89c4a3a6 sago007 2008-08-29 14:32 2136
        }
89c4a3a6 sago007 2008-08-29 14:32 2137
89c4a3a6 sago007 2008-08-29 14:32 2138
        if (SDL_GetMouseState(NULL,NULL)&SDL_BUTTON(1) && bMouseUp)
89c4a3a6 sago007 2008-08-29 14:32 2139
        {
89c4a3a6 sago007 2008-08-29 14:32 2140
            bMouseUp = false;
89c4a3a6 sago007 2008-08-29 14:32 2141
89c4a3a6 sago007 2008-08-29 14:32 2142
            //The Forward Button:
89c4a3a6 sago007 2008-08-29 14:32 2143
            if ( (mousex>x+460) && (mousex<x+460+120) && (mousey>y+420) && (mousey<y+420+40) )
89c4a3a6 sago007 2008-08-29 14:32 2144
            {
89c4a3a6 sago007 2008-08-29 14:32 2145
                lf.forward();
89c4a3a6 sago007 2008-08-29 14:32 2146
            }
89c4a3a6 sago007 2008-08-29 14:32 2147
89c4a3a6 sago007 2008-08-29 14:32 2148
            //The back button:
89c4a3a6 sago007 2008-08-29 14:32 2149
            if ( (mousex>x+20) && (mousex<x+20+120) && (mousey>y+420) && (mousey<y+420+40) )
89c4a3a6 sago007 2008-08-29 14:32 2150
            {
89c4a3a6 sago007 2008-08-29 14:32 2151
                lf.back();
89c4a3a6 sago007 2008-08-29 14:32 2152
            }
89c4a3a6 sago007 2008-08-29 14:32 2153
89c4a3a6 sago007 2008-08-29 14:32 2154
            for (int i=0;i<10;i++)
89c4a3a6 sago007 2008-08-29 14:32 2155
            {
89c4a3a6 sago007 2008-08-29 14:32 2156
                if ( (mousex>x+10) && (mousex<x+480) && (mousey>y+10+i*36) && (mousey<y+10+i*36+32) )
89c4a3a6 sago007 2008-08-29 14:32 2157
                {
89c4a3a6 sago007 2008-08-29 14:32 2158
                    if (lf.fileExists(i))
89c4a3a6 sago007 2008-08-29 14:32 2159
                    {
89c4a3a6 sago007 2008-08-29 14:32 2160
                        strncpy(name,lf.getFileName(i).c_str(),28); //Problems occurs then larger than 28 (maybe 29)
89c4a3a6 sago007 2008-08-29 14:32 2161
                        done=true; //The user have, clicked the purpose of this function is now complete
89c4a3a6 sago007 2008-08-29 14:32 2162
                        return true;
89c4a3a6 sago007 2008-08-29 14:32 2163
                    }
89c4a3a6 sago007 2008-08-29 14:32 2164
                }
89c4a3a6 sago007 2008-08-29 14:32 2165
            }
89c4a3a6 sago007 2008-08-29 14:32 2166
        }
89c4a3a6 sago007 2008-08-29 14:32 2167
89c4a3a6 sago007 2008-08-29 14:32 2168
        DrawIMG(mouse,screen,mousex,mousey);
89c4a3a6 sago007 2008-08-29 14:32 2169
        SDL_Flip(screen); //Update screen
89c4a3a6 sago007 2008-08-29 14:32 2170
    }
89c4a3a6 sago007 2008-08-29 14:32 2171
}
89c4a3a6 sago007 2008-08-29 14:32 2172
89c4a3a6 sago007 2008-08-29 14:32 2173
89c4a3a6 sago007 2008-08-29 14:32 2174
//draws options:
89c4a3a6 sago007 2008-08-29 14:32 2175
inline void DrawOptions(int x, int y)
89c4a3a6 sago007 2008-08-29 14:32 2176
{
89c4a3a6 sago007 2008-08-29 14:32 2177
    if (MusicEnabled) DrawIMG(bOn,optionsBack,400,120);
89c4a3a6 sago007 2008-08-29 14:32 2178
    else DrawIMG(bOff,optionsBack,400,120);
89c4a3a6 sago007 2008-08-29 14:32 2179
    if (SoundEnabled) DrawIMG(bOn,optionsBack,400,170);
89c4a3a6 sago007 2008-08-29 14:32 2180
    else DrawIMG(bOff,optionsBack,400,170);
89c4a3a6 sago007 2008-08-29 14:32 2181
    if (bFullscreen) DrawIMG(bOn,optionsBack,400,220);
89c4a3a6 sago007 2008-08-29 14:32 2182
    else DrawIMG(bOff,optionsBack,400,220);
89c4a3a6 sago007 2008-08-29 14:32 2183
    DrawIMG(bChange,optionsBack,230,435);
89c4a3a6 sago007 2008-08-29 14:32 2184
    DrawIMG(bChange,optionsBack,410,435);
89c4a3a6 sago007 2008-08-29 14:32 2185
    DrawIMG(bChange,optionsBack,230,500);
89c4a3a6 sago007 2008-08-29 14:32 2186
    DrawIMG(bChange,optionsBack,410,500);
89c4a3a6 sago007 2008-08-29 14:32 2187
    DrawIMG(optionsBack,screen,x,y);
89c4a3a6 sago007 2008-08-29 14:32 2188
}  //drawOptions
89c4a3a6 sago007 2008-08-29 14:32 2189
89c4a3a6 sago007 2008-08-29 14:32 2190
//Draws the balls and explosions
89c4a3a6 sago007 2008-08-29 14:32 2191
void DrawBalls()
89c4a3a6 sago007 2008-08-29 14:32 2192
{
89c4a3a6 sago007 2008-08-29 14:32 2193
    for (int i = 0; i< maxNumberOfBalls; i++)
89c4a3a6 sago007 2008-08-29 14:32 2194
    {
89c4a3a6 sago007 2008-08-29 14:32 2195
        if (theBallManeger.ballUsed[i])
89c4a3a6 sago007 2008-08-29 14:32 2196
        {
89c4a3a6 sago007 2008-08-29 14:32 2197
            DrawIMG(balls[theBallManeger.ballArray[i].getColor()],screen,theBallManeger.ballArray[i].getX(),theBallManeger.ballArray[i].getY());
89c4a3a6 sago007 2008-08-29 14:32 2198
        } //if used
89c4a3a6 sago007 2008-08-29 14:32 2199
        if (theExplosionManeger.explosionUsed[i])
89c4a3a6 sago007 2008-08-29 14:32 2200
        {
89c4a3a6 sago007 2008-08-29 14:32 2201
            DrawIMG(explosion[theExplosionManeger.explosionArray[i].getFrame()],screen,theExplosionManeger.explosionArray[i].getX(),theExplosionManeger.explosionArray[i].getY());
89c4a3a6 sago007 2008-08-29 14:32 2202
        }
89c4a3a6 sago007 2008-08-29 14:32 2203
        if (theTextManeger.textUsed[i])
89c4a3a6 sago007 2008-08-29 14:32 2204
        {
89c4a3a6 sago007 2008-08-29 14:32 2205
            //cout << "Printing text: " << theTextManeger.textArray[i].getText() << endl;
89c4a3a6 sago007 2008-08-29 14:32 2206
            int x = theTextManeger.textArray[i].getX()-SFont_TextWidth(fSmallFont,theTextManeger.textArray[i].getText())/2;
89c4a3a6 sago007 2008-08-29 14:32 2207
            int y = theTextManeger.textArray[i].getY()-SFont_TextHeight(fSmallFont)/2;
89c4a3a6 sago007 2008-08-29 14:32 2208
            DrawIMG(iChainBack,screen,x,y);
89c4a3a6 sago007 2008-08-29 14:32 2209
            SFont_Write(screen,fSmallFont,x+(25-SFont_TextWidth(fSmallFont,theTextManeger.textArray[i].getText()))/2,y+(25-SFont_TextHeight(fSmallFont))/2,theTextManeger.textArray[i].getText());
89c4a3a6 sago007 2008-08-29 14:32 2210
        }
89c4a3a6 sago007 2008-08-29 14:32 2211
    } //for
89c4a3a6 sago007 2008-08-29 14:32 2212
}    //DrawBalls
89c4a3a6 sago007 2008-08-29 14:32 2213
89c4a3a6 sago007 2008-08-29 14:32 2214
//Removes the old balls
89c4a3a6 sago007 2008-08-29 14:32 2215
void UndrawBalls()
89c4a3a6 sago007 2008-08-29 14:32 2216
{
89c4a3a6 sago007 2008-08-29 14:32 2217
    for (int i = 0; i< maxNumberOfBalls; i++)
89c4a3a6 sago007 2008-08-29 14:32 2218
    {
89c4a3a6 sago007 2008-08-29 14:32 2219
        if (theBallManeger.oldBallUsed[i])
89c4a3a6 sago007 2008-08-29 14:32 2220
        {
89c4a3a6 sago007 2008-08-29 14:32 2221
            DrawIMG(background,screen,theBallManeger.oldBallArray[i].getX(),theBallManeger.oldBallArray[i].getY(),ballSize,ballSize,theBallManeger.oldBallArray[i].getX(),theBallManeger.oldBallArray[i].getY());
89c4a3a6 sago007 2008-08-29 14:32 2222
        } //if used
89c4a3a6 sago007 2008-08-29 14:32 2223
        if (theExplosionManeger.oldExplosionUsed[i])
89c4a3a6 sago007 2008-08-29 14:32 2224
        {
89c4a3a6 sago007 2008-08-29 14:32 2225
            DrawIMG(background,screen,theExplosionManeger.oldExplosionArray[i].getX(),theExplosionManeger.oldExplosionArray[i].getY(),70,120,theExplosionManeger.oldExplosionArray[i].getX(),theExplosionManeger.oldExplosionArray[i].getY());
89c4a3a6 sago007 2008-08-29 14:32 2226
        }
89c4a3a6 sago007 2008-08-29 14:32 2227
        if (theTextManeger.oldTextUsed[i])
89c4a3a6 sago007 2008-08-29 14:32 2228
        {
89c4a3a6 sago007 2008-08-29 14:32 2229
            int x = theTextManeger.oldTextArray[i].getX()-SFont_TextWidth(fSmallFont,theTextManeger.oldTextArray[i].getText())/2;
89c4a3a6 sago007 2008-08-29 14:32 2230
            int y = theTextManeger.oldTextArray[i].getY()-SFont_TextHeight(fSmallFont)/2;
89c4a3a6 sago007 2008-08-29 14:32 2231
            DrawIMG(background,screen,x,y,25,25,x,y);
89c4a3a6 sago007 2008-08-29 14:32 2232
        }
89c4a3a6 sago007 2008-08-29 14:32 2233
    } //for
89c4a3a6 sago007 2008-08-29 14:32 2234
}   //UndrawBalls
89c4a3a6 sago007 2008-08-29 14:32 2235
89c4a3a6 sago007 2008-08-29 14:32 2236
//draws everything
89c4a3a6 sago007 2008-08-29 14:32 2237
void DrawEverything(int xsize, int ysize,BlockGame &theGame, BlockGame &theGame2)
89c4a3a6 sago007 2008-08-29 14:32 2238
{
89c4a3a6 sago007 2008-08-29 14:32 2239
    SDL_ShowCursor(SDL_DISABLE);
89c4a3a6 sago007 2008-08-29 14:32 2240
    //draw background:
89c4a3a6 sago007 2008-08-29 14:32 2241
    if (forceredraw != 1)
89c4a3a6 sago007 2008-08-29 14:32 2242
    {
89c4a3a6 sago007 2008-08-29 14:32 2243
89c4a3a6 sago007 2008-08-29 14:32 2244
        UndrawBalls();
89c4a3a6 sago007 2008-08-29 14:32 2245
        DrawIMG(background,screen,oldMousex,oldMousey,32,32,oldMousex,oldMousey);
89c4a3a6 sago007 2008-08-29 14:32 2246
        DrawIMG(background,screen,oldBubleX,oldBubleY,140,50,oldBubleX,oldBubleY);
89c4a3a6 sago007 2008-08-29 14:32 2247
89c4a3a6 sago007 2008-08-29 14:32 2248
89c4a3a6 sago007 2008-08-29 14:32 2249
        DrawIMG(background,screen,350,200,120,200,350,200);
89c4a3a6 sago007 2008-08-29 14:32 2250
        DrawIMG(background,screen,830,200,120,200,830,200);
89c4a3a6 sago007 2008-08-29 14:32 2251
        DrawIMG(background,screen,800,0,140,50,800,0);
89c4a3a6 sago007 2008-08-29 14:32 2252
89c4a3a6 sago007 2008-08-29 14:32 2253
        DrawIMG(background,screen,50,60,300,50,50,60);
89c4a3a6 sago007 2008-08-29 14:32 2254
        DrawIMG(background,screen,510,60,300,50,510,60);
89c4a3a6 sago007 2008-08-29 14:32 2255
    }
89c4a3a6 sago007 2008-08-29 14:32 2256
    else
89c4a3a6 sago007 2008-08-29 14:32 2257
        DrawIMG(background,screen,0,0);
89c4a3a6 sago007 2008-08-29 14:32 2258
    //draw bottons (should be moves and drawn directly to background once)
89c4a3a6 sago007 2008-08-29 14:32 2259
    if (!editorMode)
89c4a3a6 sago007 2008-08-29 14:32 2260
        if (!networkActive) //We don't show the menu while running server or connected to a server
89c4a3a6 sago007 2008-08-29 14:32 2261
        {
89c4a3a6 sago007 2008-08-29 14:32 2262
            //Here we draw the menu
89c4a3a6 sago007 2008-08-29 14:32 2263
            DrawIMG(bNewGame, screen, 0, 0);
89c4a3a6 sago007 2008-08-29 14:32 2264
            DrawIMG(bOptions, screen, 120,0);
89c4a3a6 sago007 2008-08-29 14:32 2265
            DrawIMG(bHighScore, screen, 2*120,0);
89c4a3a6 sago007 2008-08-29 14:32 2266
            DrawIMG(bReplay,screen,3*120,0);
89c4a3a6 sago007 2008-08-29 14:32 2267
        }
89c4a3a6 sago007 2008-08-29 14:32 2268
        else
89c4a3a6 sago007 2008-08-29 14:32 2269
        { //If network is active
89c4a3a6 sago007 2008-08-29 14:32 2270
            DrawIMG(bBack, screen, 0, 0); //Display a disconnect button
89c4a3a6 sago007 2008-08-29 14:32 2271
        }
89c4a3a6 sago007 2008-08-29 14:32 2272
    if (!editorMode)
89c4a3a6 sago007 2008-08-29 14:32 2273
        DrawIMG(bExit, screen, xsize-120,ysize-120);
89c4a3a6 sago007 2008-08-29 14:32 2274
    //DrawIMG(boardBackBack,screen,theGame.topx-60,theGame.topy-68);
89c4a3a6 sago007 2008-08-29 14:32 2275
    DrawIMG(theGame.sBoard,screen,theGame.topx,theGame.topy);
89c4a3a6 sago007 2008-08-29 14:32 2276
    string strHolder;
89c4a3a6 sago007 2008-08-29 14:32 2277
    strHolder = itoa(theGame.score+theGame.handicap);
89c4a3a6 sago007 2008-08-29 14:32 2278
    SFont_Write(screen,fBlueFont,theGame.topx+310,theGame.topy+100,strHolder.c_str());
89c4a3a6 sago007 2008-08-29 14:32 2279
    if (theGame.AI_Enabled)
89c4a3a6 sago007 2008-08-29 14:32 2280
        SFont_Write(screen,fBlueFont,theGame.topx+10,theGame.topy-40,"CPU");
89c4a3a6 sago007 2008-08-29 14:32 2281
    else
89c4a3a6 sago007 2008-08-29 14:32 2282
        if (editorMode)
89c4a3a6 sago007 2008-08-29 14:32 2283
            SFont_Write(screen,fBlueFont,theGame.topx+10,theGame.topy-40,"Playing field");
89c4a3a6 sago007 2008-08-29 14:32 2284
        else
89c4a3a6 sago007 2008-08-29 14:32 2285
            if (!singlePuzzle)
89c4a3a6 sago007 2008-08-29 14:32 2286
                SFont_Write(screen,fBlueFont,theGame.topx+10,theGame.topy-40,player1name);
89c4a3a6 sago007 2008-08-29 14:32 2287
    if (theGame.timetrial)
89c4a3a6 sago007 2008-08-29 14:32 2288
    {
89c4a3a6 sago007 2008-08-29 14:32 2289
        int tid = (int)SDL_GetTicks()-theGame.gameStartedAt;
89c4a3a6 sago007 2008-08-29 14:32 2290
        int minutes;
89c4a3a6 sago007 2008-08-29 14:32 2291
        int seconds;
89c4a3a6 sago007 2008-08-29 14:32 2292
        if (tid>=0)
89c4a3a6 sago007 2008-08-29 14:32 2293
        {
89c4a3a6 sago007 2008-08-29 14:32 2294
            minutes = (2*60*1000-(abs((int)SDL_GetTicks()-(int)theGame.gameStartedAt)))/60/1000;
89c4a3a6 sago007 2008-08-29 14:32 2295
            seconds = ((2*60*1000-(abs((int)SDL_GetTicks()-(int)theGame.gameStartedAt)))%(60*1000))/1000;
89c4a3a6 sago007 2008-08-29 14:32 2296
        }
89c4a3a6 sago007 2008-08-29 14:32 2297
        else
89c4a3a6 sago007 2008-08-29 14:32 2298
        {
89c4a3a6 sago007 2008-08-29 14:32 2299
            minutes = ((abs((int)SDL_GetTicks()-(int)theGame.gameStartedAt)))/60/1000;
89c4a3a6 sago007 2008-08-29 14:32 2300
            seconds = (((abs((int)SDL_GetTicks()-(int)theGame.gameStartedAt)))%(60*1000))/1000;
89c4a3a6 sago007 2008-08-29 14:32 2301
        }
89c4a3a6 sago007 2008-08-29 14:32 2302
        if (theGame.bGameOver) minutes=0;
89c4a3a6 sago007 2008-08-29 14:32 2303
        if (theGame.bGameOver) seconds=0;
89c4a3a6 sago007 2008-08-29 14:32 2304
        if (seconds>9)
89c4a3a6 sago007 2008-08-29 14:32 2305
            strHolder = itoa(minutes)+":"+itoa(seconds);
89c4a3a6 sago007 2008-08-29 14:32 2306
        else strHolder = itoa(minutes)+":0"+itoa(seconds);
89c4a3a6 sago007 2008-08-29 14:32 2307
        if ((SoundEnabled)&&(!NoSound)&&(tid>0)&&(seconds<5)&&(minutes == 0)&&(seconds>1)&&(!(Mix_Playing(6)))) Mix_PlayChannel(6,heartBeat,0);
89c4a3a6 sago007 2008-08-29 14:32 2308
        SFont_Write(screen,fBlueFont,theGame.topx+310,theGame.topy+150,strHolder.c_str());
89c4a3a6 sago007 2008-08-29 14:32 2309
    }
89c4a3a6 sago007 2008-08-29 14:32 2310
    else
89c4a3a6 sago007 2008-08-29 14:32 2311
    {
89c4a3a6 sago007 2008-08-29 14:32 2312
        int minutes = ((abs((int)SDL_GetTicks()-(int)theGame.gameStartedAt)))/60/1000;
89c4a3a6 sago007 2008-08-29 14:32 2313
        int seconds = (((abs((int)SDL_GetTicks()-(int)theGame.gameStartedAt)))%(60*1000))/1000;
89c4a3a6 sago007 2008-08-29 14:32 2314
        if (theGame.bGameOver) minutes=(theGame.gameEndedAfter/1000/60)%100;
89c4a3a6 sago007 2008-08-29 14:32 2315
        if (theGame.bGameOver) seconds=(theGame.gameEndedAfter/1000)%60;
89c4a3a6 sago007 2008-08-29 14:32 2316
        if (seconds>9)
89c4a3a6 sago007 2008-08-29 14:32 2317
            strHolder = itoa(minutes)+":"+itoa(seconds);
89c4a3a6 sago007 2008-08-29 14:32 2318
        else
89c4a3a6 sago007 2008-08-29 14:32 2319
            strHolder = itoa(minutes)+":0"+itoa(seconds);
89c4a3a6 sago007 2008-08-29 14:32 2320
        SFont_Write(screen,fBlueFont,theGame.topx+310,theGame.topy+150,strHolder.c_str());
89c4a3a6 sago007 2008-08-29 14:32 2321
    }
89c4a3a6 sago007 2008-08-29 14:32 2322
    strHolder = itoa(theGame.chain);
89c4a3a6 sago007 2008-08-29 14:32 2323
    SFont_Write(screen,fBlueFont,theGame.topx+310,theGame.topy+200,strHolder.c_str());
89c4a3a6 sago007 2008-08-29 14:32 2324
    //drawspeedLevel:
89c4a3a6 sago007 2008-08-29 14:32 2325
    strHolder = itoa(theGame.speedLevel);
89c4a3a6 sago007 2008-08-29 14:32 2326
    SFont_Write(screen,fBlueFont,theGame.topx+310,theGame.topy+250,strHolder.c_str());
89c4a3a6 sago007 2008-08-29 14:32 2327
    if ((theGame.stageClear) &&(theGame.topy+700+50*(theGame.stageClearLimit-theGame.linesCleared)-theGame.pixels-1<600+theGame.topy))
89c4a3a6 sago007 2008-08-29 14:32 2328
    {
89c4a3a6 sago007 2008-08-29 14:32 2329
        oldBubleX = theGame.topx+280;
89c4a3a6 sago007 2008-08-29 14:32 2330
        oldBubleY = theGame.topy+650+50*(theGame.stageClearLimit-theGame.linesCleared)-theGame.pixels-1;
89c4a3a6 sago007 2008-08-29 14:32 2331
        DrawIMG(stageBobble,screen,theGame.topx+280,theGame.topy+650+50*(theGame.stageClearLimit-theGame.linesCleared)-theGame.pixels-1);
89c4a3a6 sago007 2008-08-29 14:32 2332
    }
89c4a3a6 sago007 2008-08-29 14:32 2333
    //player1 finnish, player2 start
89c4a3a6 sago007 2008-08-29 14:32 2334
    //DrawIMG(boardBackBack,screen,theGame2.topx-60,theGame2.topy-68);
89c4a3a6 sago007 2008-08-29 14:32 2335
    if (!editorMode)
89c4a3a6 sago007 2008-08-29 14:32 2336
    {
89c4a3a6 sago007 2008-08-29 14:32 2337
        DrawIMG(theGame2.sBoard,screen,theGame2.topx,theGame2.topy);
89c4a3a6 sago007 2008-08-29 14:32 2338
        strHolder = itoa(theGame2.score+theGame2.handicap);
89c4a3a6 sago007 2008-08-29 14:32 2339
        SFont_Write(screen,fBlueFont,theGame2.topx+310,theGame2.topy+100,strHolder.c_str());
89c4a3a6 sago007 2008-08-29 14:32 2340
        if (theGame2.AI_Enabled)
89c4a3a6 sago007 2008-08-29 14:32 2341
            SFont_Write(screen,fBlueFont,theGame2.topx+10,theGame2.topy-40,"CPU");
89c4a3a6 sago007 2008-08-29 14:32 2342
        else
89c4a3a6 sago007 2008-08-29 14:32 2343
            SFont_Write(screen,fBlueFont,theGame2.topx+10,theGame2.topy-40,theGame2.name);
89c4a3a6 sago007 2008-08-29 14:32 2344
        if (theGame2.timetrial)
89c4a3a6 sago007 2008-08-29 14:32 2345
        {
89c4a3a6 sago007 2008-08-29 14:32 2346
            int tid = (int)SDL_GetTicks()-theGame2.gameStartedAt;
89c4a3a6 sago007 2008-08-29 14:32 2347
            int minutes;
89c4a3a6 sago007 2008-08-29 14:32 2348
            int seconds;
89c4a3a6 sago007 2008-08-29 14:32 2349
            if (tid>=0)
89c4a3a6 sago007 2008-08-29 14:32 2350
            {
89c4a3a6 sago007 2008-08-29 14:32 2351
                minutes = (2*60*1000-(abs((int)SDL_GetTicks()-(int)theGame2.gameStartedAt)))/60/1000;
89c4a3a6 sago007 2008-08-29 14:32 2352
                seconds = ((2*60*1000-(abs((int)SDL_GetTicks()-(int)theGame2.gameStartedAt)))%(60*1000))/1000;
89c4a3a6 sago007 2008-08-29 14:32 2353
            }
89c4a3a6 sago007 2008-08-29 14:32 2354
            else
89c4a3a6 sago007 2008-08-29 14:32 2355
            {
89c4a3a6 sago007 2008-08-29 14:32 2356
                minutes = ((abs((int)SDL_GetTicks()-(int)theGame2.gameStartedAt)))/60/1000;
89c4a3a6 sago007 2008-08-29 14:32 2357
                seconds = (((abs((int)SDL_GetTicks()-(int)theGame2.gameStartedAt)))%(60*1000))/1000;
89c4a3a6 sago007 2008-08-29 14:32 2358
            }
89c4a3a6 sago007 2008-08-29 14:32 2359
            if (theGame2.bGameOver) minutes=0;
89c4a3a6 sago007 2008-08-29 14:32 2360
            if (theGame2.bGameOver) seconds=0;
89c4a3a6 sago007 2008-08-29 14:32 2361
            if (seconds>9)
89c4a3a6 sago007 2008-08-29 14:32 2362
                strHolder = itoa(minutes)+":"+itoa(seconds);
89c4a3a6 sago007 2008-08-29 14:32 2363
            else
89c4a3a6 sago007 2008-08-29 14:32 2364
                strHolder = itoa(minutes)+":0"+itoa(seconds);
89c4a3a6 sago007 2008-08-29 14:32 2365
            if ((SoundEnabled)&&(!NoSound)&&(tid>0)&&(seconds<5)&&(minutes == 0)&&(seconds>1)&&(!(Mix_Playing(6)))) Mix_PlayChannel(6,heartBeat,0);
89c4a3a6 sago007 2008-08-29 14:32 2366
            SFont_Write(screen,fBlueFont,theGame2.topx+310,theGame2.topy+150,strHolder.c_str());
89c4a3a6 sago007 2008-08-29 14:32 2367
        }
89c4a3a6 sago007 2008-08-29 14:32 2368
        else
89c4a3a6 sago007 2008-08-29 14:32 2369
        {
89c4a3a6 sago007 2008-08-29 14:32 2370
            int minutes = (abs((int)SDL_GetTicks()-(int)theGame2.gameStartedAt))/60/1000;
89c4a3a6 sago007 2008-08-29 14:32 2371
            int seconds = (abs((int)SDL_GetTicks()-(int)theGame2.gameStartedAt)%(60*1000))/1000;
89c4a3a6 sago007 2008-08-29 14:32 2372
            if (theGame2.bGameOver) minutes=(theGame2.gameEndedAfter/1000/60)%100;
89c4a3a6 sago007 2008-08-29 14:32 2373
            if (theGame2.bGameOver) seconds=(theGame2.gameEndedAfter/1000)%60;
89c4a3a6 sago007 2008-08-29 14:32 2374
            if (seconds>9)
89c4a3a6 sago007 2008-08-29 14:32 2375
                strHolder = itoa(minutes)+":"+itoa(seconds);
89c4a3a6 sago007 2008-08-29 14:32 2376
            else
89c4a3a6 sago007 2008-08-29 14:32 2377
                strHolder = itoa(minutes)+":0"+itoa(seconds);
89c4a3a6 sago007 2008-08-29 14:32 2378
            SFont_Write(screen,fBlueFont,theGame2.topx+310,theGame2.topy+150,strHolder.c_str());
89c4a3a6 sago007 2008-08-29 14:32 2379
        }
89c4a3a6 sago007 2008-08-29 14:32 2380
        strHolder = itoa(theGame2.chain);
89c4a3a6 sago007 2008-08-29 14:32 2381
        SFont_Write(screen,fBlueFont,theGame2.topx+310,theGame2.topy+200,strHolder.c_str());
89c4a3a6 sago007 2008-08-29 14:32 2382
        strHolder = itoa(theGame2.speedLevel);
89c4a3a6 sago007 2008-08-29 14:32 2383
        SFont_Write(screen,fBlueFont,theGame2.topx+310,theGame2.topy+250,strHolder.c_str());
89c4a3a6 sago007 2008-08-29 14:32 2384
    }
89c4a3a6 sago007 2008-08-29 14:32 2385
    //player2 finnish
89c4a3a6 sago007 2008-08-29 14:32 2386
89c4a3a6 sago007 2008-08-29 14:32 2387
    if (bNewGameOpen)
89c4a3a6 sago007 2008-08-29 14:32 2388
    {
89c4a3a6 sago007 2008-08-29 14:32 2389
        DrawIMG(b1player,screen,0,40);
89c4a3a6 sago007 2008-08-29 14:32 2390
        DrawIMG(b2players,screen,0,80);
89c4a3a6 sago007 2008-08-29 14:32 2391
#ifdef NETWORK
89c4a3a6 sago007 2008-08-29 14:32 2392
        DrawIMG(bNetwork,screen,0,120);
89c4a3a6 sago007 2008-08-29 14:32 2393
#endif
89c4a3a6 sago007 2008-08-29 14:32 2394
        if (b1playerOpen)
89c4a3a6 sago007 2008-08-29 14:32 2395
        {
89c4a3a6 sago007 2008-08-29 14:32 2396
            DrawIMG(bEndless,screen,120,40);
89c4a3a6 sago007 2008-08-29 14:32 2397
            DrawIMG(bTimeTrial,screen,120,80);
89c4a3a6 sago007 2008-08-29 14:32 2398
            DrawIMG(bStageClear,screen,120,120);
89c4a3a6 sago007 2008-08-29 14:32 2399
            DrawIMG(bPuzzle,screen,120,160);
89c4a3a6 sago007 2008-08-29 14:32 2400
            DrawIMG(bVsMode,screen,120,200);
89c4a3a6 sago007 2008-08-29 14:32 2401
        }
89c4a3a6 sago007 2008-08-29 14:32 2402
        else
89c4a3a6 sago007 2008-08-29 14:32 2403
            if (b2playersOpen)
89c4a3a6 sago007 2008-08-29 14:32 2404
            {
89c4a3a6 sago007 2008-08-29 14:32 2405
                DrawIMG(bTimeTrial,screen,120,80);
89c4a3a6 sago007 2008-08-29 14:32 2406
                DrawIMG(bVsMode,screen,120,120);
89c4a3a6 sago007 2008-08-29 14:32 2407
            }
89c4a3a6 sago007 2008-08-29 14:32 2408
#ifdef NETWORK
89c4a3a6 sago007 2008-08-29 14:32 2409
            else
89c4a3a6 sago007 2008-08-29 14:32 2410
                if (bNetworkOpen)
89c4a3a6 sago007 2008-08-29 14:32 2411
                {
89c4a3a6 sago007 2008-08-29 14:32 2412
                    DrawIMG(bHost,screen,120,120);
89c4a3a6 sago007 2008-08-29 14:32 2413
                    DrawIMG(bConnect,screen,120,160);
89c4a3a6 sago007 2008-08-29 14:32 2414
                }
89c4a3a6 sago007 2008-08-29 14:32 2415
#endif
89c4a3a6 sago007 2008-08-29 14:32 2416
    }
89c4a3a6 sago007 2008-08-29 14:32 2417
    if (bOptionsOpen)
89c4a3a6 sago007 2008-08-29 14:32 2418
    {
89c4a3a6 sago007 2008-08-29 14:32 2419
        DrawIMG(bConfigure,screen,120,40);
89c4a3a6 sago007 2008-08-29 14:32 2420
        DrawIMG(bSelectPuzzle,screen,120,80);
89c4a3a6 sago007 2008-08-29 14:32 2421
        DrawIMG(bVsMode,screen,120,120);
89c4a3a6 sago007 2008-08-29 14:32 2422
        DrawIMG(bTheme,screen,120,160);
89c4a3a6 sago007 2008-08-29 14:32 2423
    }
89c4a3a6 sago007 2008-08-29 14:32 2424
    if (bReplayOpen)
89c4a3a6 sago007 2008-08-29 14:32 2425
    {
89c4a3a6 sago007 2008-08-29 14:32 2426
        DrawIMG(bSave,screen,360,40);
89c4a3a6 sago007 2008-08-29 14:32 2427
        DrawIMG(bLoad,screen,360,80);
89c4a3a6 sago007 2008-08-29 14:32 2428
    }
89c4a3a6 sago007 2008-08-29 14:32 2429
    if (showHighscores) DrawHighscores(100,100);
89c4a3a6 sago007 2008-08-29 14:32 2430
    if (showOptions) DrawOptions(100,100);
89c4a3a6 sago007 2008-08-29 14:32 2431
89c4a3a6 sago007 2008-08-29 14:32 2432
    DrawBalls();
89c4a3a6 sago007 2008-08-29 14:32 2433
89c4a3a6 sago007 2008-08-29 14:32 2434
#if defined(DEBUG)
89c4a3a6 sago007 2008-08-29 14:32 2435
    Frames++;
89c4a3a6 sago007 2008-08-29 14:32 2436
    if (SDL_GetTicks() >= Ticks + 1000)
89c4a3a6 sago007 2008-08-29 14:32 2437
    {
89c4a3a6 sago007 2008-08-29 14:32 2438
        if (Frames > 999) Frames=999;
89c4a3a6 sago007 2008-08-29 14:32 2439
        sprintf(FPS, "%i fps", Frames);
89c4a3a6 sago007 2008-08-29 14:32 2440
        Frames = 0;
89c4a3a6 sago007 2008-08-29 14:32 2441
        Ticks = SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 2442
    }
89c4a3a6 sago007 2008-08-29 14:32 2443
89c4a3a6 sago007 2008-08-29 14:32 2444
    SFont_Write(screen,fBlueFont,800,4,FPS);
89c4a3a6 sago007 2008-08-29 14:32 2445
#endif
89c4a3a6 sago007 2008-08-29 14:32 2446
89c4a3a6 sago007 2008-08-29 14:32 2447
    //SDL_Flip(screen); Update screen is now called outside DrawEvrything, bacause the mouse needs to be painted
89c4a3a6 sago007 2008-08-29 14:32 2448
89c4a3a6 sago007 2008-08-29 14:32 2449
}
89c4a3a6 sago007 2008-08-29 14:32 2450
89c4a3a6 sago007 2008-08-29 14:32 2451
//Generates the standard background
89c4a3a6 sago007 2008-08-29 14:32 2452
void MakeBackground(int xsize,int ysize)
89c4a3a6 sago007 2008-08-29 14:32 2453
{
89c4a3a6 sago007 2008-08-29 14:32 2454
    DrawIMG(backgroundImage,background,0,0);
89c4a3a6 sago007 2008-08-29 14:32 2455
    standardBackground = true;
89c4a3a6 sago007 2008-08-29 14:32 2456
}
89c4a3a6 sago007 2008-08-29 14:32 2457
89c4a3a6 sago007 2008-08-29 14:32 2458
//Generates the background with red board backs
89c4a3a6 sago007 2008-08-29 14:32 2459
void MakeBackground(int xsize,int ysize,BlockGame &theGame, BlockGame &theGame2)
89c4a3a6 sago007 2008-08-29 14:32 2460
{
89c4a3a6 sago007 2008-08-29 14:32 2461
    DrawIMG(backgroundImage,background,0,0);
89c4a3a6 sago007 2008-08-29 14:32 2462
    DrawIMG(boardBackBack,background,theGame.topx-60,theGame.topy-68);
89c4a3a6 sago007 2008-08-29 14:32 2463
    DrawIMG(boardBackBack,background,theGame2.topx-60,theGame2.topy-68);
89c4a3a6 sago007 2008-08-29 14:32 2464
    standardBackground = false;
89c4a3a6 sago007 2008-08-29 14:32 2465
}
89c4a3a6 sago007 2008-08-29 14:32 2466
89c4a3a6 sago007 2008-08-29 14:32 2467
void MakeBackground(int xsize, int ysize, BlockGame &theGame)
89c4a3a6 sago007 2008-08-29 14:32 2468
{
89c4a3a6 sago007 2008-08-29 14:32 2469
    DrawIMG(backgroundImage,background,0,0);
89c4a3a6 sago007 2008-08-29 14:32 2470
    DrawIMG(boardBackBack,background,theGame.topx-60,theGame.topy-68);
89c4a3a6 sago007 2008-08-29 14:32 2471
    standardBackground = false;
89c4a3a6 sago007 2008-08-29 14:32 2472
}
89c4a3a6 sago007 2008-08-29 14:32 2473
89c4a3a6 sago007 2008-08-29 14:32 2474
89c4a3a6 sago007 2008-08-29 14:32 2475
//The function that allows the player to choose PuzzleLevel
89c4a3a6 sago007 2008-08-29 14:32 2476
int PuzzleLevelSelect()
89c4a3a6 sago007 2008-08-29 14:32 2477
{
89c4a3a6 sago007 2008-08-29 14:32 2478
    const int xplace = 200;
89c4a3a6 sago007 2008-08-29 14:32 2479
    const int yplace = 300;
89c4a3a6 sago007 2008-08-29 14:32 2480
    Uint8 *keys;
89c4a3a6 sago007 2008-08-29 14:32 2481
    int levelNr, mousex, mousey;
89c4a3a6 sago007 2008-08-29 14:32 2482
    bool levelSelected = false;
89c4a3a6 sago007 2008-08-29 14:32 2483
    bool tempBool;
89c4a3a6 sago007 2008-08-29 14:32 2484
89c4a3a6 sago007 2008-08-29 14:32 2485
    //Loads the levels, if they havn't been loaded:
89c4a3a6 sago007 2008-08-29 14:32 2486
    LoadPuzzleStages();
89c4a3a6 sago007 2008-08-29 14:32 2487
89c4a3a6 sago007 2008-08-29 14:32 2488
    //Keeps track of background;
89c4a3a6 sago007 2008-08-29 14:32 2489
    int nowTime=SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 2490
89c4a3a6 sago007 2008-08-29 14:32 2491
    ifstream puzzleFile(puzzleSavePath.c_str(),ios::binary);
89c4a3a6 sago007 2008-08-29 14:32 2492
    MakeBackground(1024,768);
89c4a3a6 sago007 2008-08-29 14:32 2493
    if (puzzleFile)
89c4a3a6 sago007 2008-08-29 14:32 2494
    {
89c4a3a6 sago007 2008-08-29 14:32 2495
        for (int i=0;(i<nrOfPuzzles)&&(!puzzleFile.eof()); i++)
89c4a3a6 sago007 2008-08-29 14:32 2496
        {
89c4a3a6 sago007 2008-08-29 14:32 2497
            puzzleFile.read(reinterpret_cast<char*>(&tempBool),sizeof(bool));
89c4a3a6 sago007 2008-08-29 14:32 2498
            puzzleCleared[i] = tempBool;
89c4a3a6 sago007 2008-08-29 14:32 2499
        }
89c4a3a6 sago007 2008-08-29 14:32 2500
        puzzleFile.close();
89c4a3a6 sago007 2008-08-29 14:32 2501
    }
89c4a3a6 sago007 2008-08-29 14:32 2502
    else
89c4a3a6 sago007 2008-08-29 14:32 2503
    {
89c4a3a6 sago007 2008-08-29 14:32 2504
        tempBool = false;
89c4a3a6 sago007 2008-08-29 14:32 2505
        for (int i=0; i<nrOfPuzzles; i++)
89c4a3a6 sago007 2008-08-29 14:32 2506
            puzzleCleared[i] = tempBool;
89c4a3a6 sago007 2008-08-29 14:32 2507
    }
89c4a3a6 sago007 2008-08-29 14:32 2508
89c4a3a6 sago007 2008-08-29 14:32 2509
    do
89c4a3a6 sago007 2008-08-29 14:32 2510
    {
89c4a3a6 sago007 2008-08-29 14:32 2511
        nowTime=SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 2512
89c4a3a6 sago007 2008-08-29 14:32 2513
89c4a3a6 sago007 2008-08-29 14:32 2514
        DrawIMG(background, screen, 0, 0);
89c4a3a6 sago007 2008-08-29 14:32 2515
        DrawIMG(iCheckBoxArea,screen,xplace,yplace);
89c4a3a6 sago007 2008-08-29 14:32 2516
        SFont_Write(screen,fBlueFont,xplace+12,yplace+2,"Select Puzzle");
89c4a3a6 sago007 2008-08-29 14:32 2517
        //Now drow the fields you click in (and a V if clicked):
89c4a3a6 sago007 2008-08-29 14:32 2518
        for (int i = 0; i < nrOfPuzzles;i++)
89c4a3a6 sago007 2008-08-29 14:32 2519
        {
89c4a3a6 sago007 2008-08-29 14:32 2520
            DrawIMG(iLevelCheckBox,screen,xplace+10+(i%10)*50, yplace+60+(i/10)*50);
89c4a3a6 sago007 2008-08-29 14:32 2521
            if (puzzleCleared[i]==true) DrawIMG(iLevelCheck,screen,xplace+10+(i%10)*50, yplace+60+(i/10)*50);
89c4a3a6 sago007 2008-08-29 14:32 2522
        }
89c4a3a6 sago007 2008-08-29 14:32 2523
89c4a3a6 sago007 2008-08-29 14:32 2524
        SDL_Event event;
89c4a3a6 sago007 2008-08-29 14:32 2525
        while ( SDL_PollEvent(&event) )
89c4a3a6 sago007 2008-08-29 14:32 2526
            if ( event.type == SDL_KEYDOWN )
89c4a3a6 sago007 2008-08-29 14:32 2527
            {
89c4a3a6 sago007 2008-08-29 14:32 2528
                if ( event.key.keysym.sym == SDLK_ESCAPE ) {
89c4a3a6 sago007 2008-08-29 14:32 2529
                    levelNr = -1;
89c4a3a6 sago007 2008-08-29 14:32 2530
                    levelSelected = true;
89c4a3a6 sago007 2008-08-29 14:32 2531
                }
89c4a3a6 sago007 2008-08-29 14:32 2532
            }
89c4a3a6 sago007 2008-08-29 14:32 2533
89c4a3a6 sago007 2008-08-29 14:32 2534
        keys = SDL_GetKeyState(NULL);
89c4a3a6 sago007 2008-08-29 14:32 2535
89c4a3a6 sago007 2008-08-29 14:32 2536
        SDL_GetMouseState(&mousex,&mousey);
89c4a3a6 sago007 2008-08-29 14:32 2537
89c4a3a6 sago007 2008-08-29 14:32 2538
        // If the mouse button is released, make bMouseUp equal true
89c4a3a6 sago007 2008-08-29 14:32 2539
        if (!SDL_GetMouseState(NULL, NULL)&SDL_BUTTON(1))
89c4a3a6 sago007 2008-08-29 14:32 2540
        {
89c4a3a6 sago007 2008-08-29 14:32 2541
            bMouseUp=true;
89c4a3a6 sago007 2008-08-29 14:32 2542
        }
89c4a3a6 sago007 2008-08-29 14:32 2543
89c4a3a6 sago007 2008-08-29 14:32 2544
        if (SDL_GetMouseState(NULL,NULL)&SDL_BUTTON(1) && bMouseUp)
89c4a3a6 sago007 2008-08-29 14:32 2545
        {
89c4a3a6 sago007 2008-08-29 14:32 2546
            bMouseUp = false;
89c4a3a6 sago007 2008-08-29 14:32 2547
89c4a3a6 sago007 2008-08-29 14:32 2548
            int levelClicked = -1;
89c4a3a6 sago007 2008-08-29 14:32 2549
            int i;
89c4a3a6 sago007 2008-08-29 14:32 2550
            for (i = 0; (i<nrOfPuzzles/10)||((i<nrOfPuzzles/10+1)&&(nrOfPuzzles%10 != 0)); i++)
89c4a3a6 sago007 2008-08-29 14:32 2551
                if ((60+i*50<mousey-yplace)&&(mousey-yplace<i*50+92))
89c4a3a6 sago007 2008-08-29 14:32 2552
                    levelClicked = i*10;
89c4a3a6 sago007 2008-08-29 14:32 2553
            i++;
89c4a3a6 sago007 2008-08-29 14:32 2554
            if (levelClicked != -1)
89c4a3a6 sago007 2008-08-29 14:32 2555
                for (int j = 0; ((j<nrOfStageLevels%(i*10))&&(j<10)); j++)
89c4a3a6 sago007 2008-08-29 14:32 2556
                    if ((10+j*50<mousex-xplace)&&(mousex-xplace<j*50+42))
89c4a3a6 sago007 2008-08-29 14:32 2557
                    {
89c4a3a6 sago007 2008-08-29 14:32 2558
                        levelClicked +=j;
89c4a3a6 sago007 2008-08-29 14:32 2559
                        levelSelected = true;
89c4a3a6 sago007 2008-08-29 14:32 2560
                        levelNr = levelClicked;
89c4a3a6 sago007 2008-08-29 14:32 2561
                    }
89c4a3a6 sago007 2008-08-29 14:32 2562
        }
89c4a3a6 sago007 2008-08-29 14:32 2563
89c4a3a6 sago007 2008-08-29 14:32 2564
        DrawIMG(mouse,screen,mousex,mousey);
89c4a3a6 sago007 2008-08-29 14:32 2565
        SDL_Flip(screen); //draws it all to the screen
89c4a3a6 sago007 2008-08-29 14:32 2566
89c4a3a6 sago007 2008-08-29 14:32 2567
    } while (!levelSelected);
89c4a3a6 sago007 2008-08-29 14:32 2568
    DrawIMG(background, screen, 0, 0);
89c4a3a6 sago007 2008-08-29 14:32 2569
    return levelNr;
89c4a3a6 sago007 2008-08-29 14:32 2570
}
89c4a3a6 sago007 2008-08-29 14:32 2571
89c4a3a6 sago007 2008-08-29 14:32 2572
//The function that allows the player to choose Level number
89c4a3a6 sago007 2008-08-29 14:32 2573
int StageLevelSelect()
89c4a3a6 sago007 2008-08-29 14:32 2574
{
89c4a3a6 sago007 2008-08-29 14:32 2575
    const int xplace = 200;
89c4a3a6 sago007 2008-08-29 14:32 2576
    const int yplace = 300;
89c4a3a6 sago007 2008-08-29 14:32 2577
    Uint8 *keys;
89c4a3a6 sago007 2008-08-29 14:32 2578
    int levelNr, mousex, mousey;
89c4a3a6 sago007 2008-08-29 14:32 2579
    bool levelSelected = false;
89c4a3a6 sago007 2008-08-29 14:32 2580
    bool tempBool;
89c4a3a6 sago007 2008-08-29 14:32 2581
    Uint32 tempUInt32;
89c4a3a6 sago007 2008-08-29 14:32 2582
    Uint32 totalScore = 0;
89c4a3a6 sago007 2008-08-29 14:32 2583
    Uint32 totalTime = 0;
89c4a3a6 sago007 2008-08-29 14:32 2584
89c4a3a6 sago007 2008-08-29 14:32 2585
    //Keeps track of background;
89c4a3a6 sago007 2008-08-29 14:32 2586
    //int nowTime=SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 2587
89c4a3a6 sago007 2008-08-29 14:32 2588
    MakeBackground(1024,768);
89c4a3a6 sago007 2008-08-29 14:32 2589
    ifstream stageFile(stageClearSavePath.c_str(),ios::binary);
89c4a3a6 sago007 2008-08-29 14:32 2590
    if (stageFile)
89c4a3a6 sago007 2008-08-29 14:32 2591
    {
89c4a3a6 sago007 2008-08-29 14:32 2592
        for (int i = 0; i<nrOfStageLevels; i++)
89c4a3a6 sago007 2008-08-29 14:32 2593
        {
89c4a3a6 sago007 2008-08-29 14:32 2594
            stageFile.read(reinterpret_cast<char*>(&tempBool),sizeof(bool));
89c4a3a6 sago007 2008-08-29 14:32 2595
            stageCleared[i]=tempBool;
89c4a3a6 sago007 2008-08-29 14:32 2596
        }
89c4a3a6 sago007 2008-08-29 14:32 2597
        if(!stageFile.eof())
89c4a3a6 sago007 2008-08-29 14:32 2598
        {
89c4a3a6 sago007 2008-08-29 14:32 2599
            for(int i=0; i<nrOfStageLevels; i++)
89c4a3a6 sago007 2008-08-29 14:32 2600
            {
89c4a3a6 sago007 2008-08-29 14:32 2601
                tempUInt32 = 0;
89c4a3a6 sago007 2008-08-29 14:32 2602
                if(!stageFile.eof())
89c4a3a6 sago007 2008-08-29 14:32 2603
                    stageFile.read(reinterpret_cast<char*>(&tempUInt32),sizeof(Uint32));
89c4a3a6 sago007 2008-08-29 14:32 2604
                stageScores[i]=tempUInt32;
89c4a3a6 sago007 2008-08-29 14:32 2605
                totalScore+=tempUInt32;
89c4a3a6 sago007 2008-08-29 14:32 2606
            }
89c4a3a6 sago007 2008-08-29 14:32 2607
            for(int i=0; i<nrOfStageLevels; i++)
89c4a3a6 sago007 2008-08-29 14:32 2608
            {
89c4a3a6 sago007 2008-08-29 14:32 2609
                tempUInt32 = 0;
89c4a3a6 sago007 2008-08-29 14:32 2610
                if(!stageFile.eof())
89c4a3a6 sago007 2008-08-29 14:32 2611
                    stageFile.read(reinterpret_cast<char*>(&tempUInt32),sizeof(Uint32));
89c4a3a6 sago007 2008-08-29 14:32 2612
                stageTimes[i]=tempUInt32;
89c4a3a6 sago007 2008-08-29 14:32 2613
                totalTime += tempUInt32;
89c4a3a6 sago007 2008-08-29 14:32 2614
            }
89c4a3a6 sago007 2008-08-29 14:32 2615
        }
89c4a3a6 sago007 2008-08-29 14:32 2616
        else
89c4a3a6 sago007 2008-08-29 14:32 2617
        {
89c4a3a6 sago007 2008-08-29 14:32 2618
            for(int i=0; i<nrOfStageLevels; i++)
89c4a3a6 sago007 2008-08-29 14:32 2619
            {
89c4a3a6 sago007 2008-08-29 14:32 2620
                 stageScores[i]=0;
89c4a3a6 sago007 2008-08-29 14:32 2621
                 stageTimes[i]=0;
89c4a3a6 sago007 2008-08-29 14:32 2622
            }
89c4a3a6 sago007 2008-08-29 14:32 2623
        }
89c4a3a6 sago007 2008-08-29 14:32 2624
        stageFile.close();
89c4a3a6 sago007 2008-08-29 14:32 2625
    }
89c4a3a6 sago007 2008-08-29 14:32 2626
    else
89c4a3a6 sago007 2008-08-29 14:32 2627
    {
89c4a3a6 sago007 2008-08-29 14:32 2628
        for (int i=0; i<nrOfStageLevels; i++)
89c4a3a6 sago007 2008-08-29 14:32 2629
        {
89c4a3a6 sago007 2008-08-29 14:32 2630
            stageCleared[i]= false;
89c4a3a6 sago007 2008-08-29 14:32 2631
            stageScores[i]=0;
89c4a3a6 sago007 2008-08-29 14:32 2632
            stageTimes[i]=0;
89c4a3a6 sago007 2008-08-29 14:32 2633
        }
89c4a3a6 sago007 2008-08-29 14:32 2634
    }
89c4a3a6 sago007 2008-08-29 14:32 2635
89c4a3a6 sago007 2008-08-29 14:32 2636
89c4a3a6 sago007 2008-08-29 14:32 2637
    do
89c4a3a6 sago007 2008-08-29 14:32 2638
    {
89c4a3a6 sago007 2008-08-29 14:32 2639
        //nowTime=SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 2640
        DrawIMG(background, screen, 0, 0);
89c4a3a6 sago007 2008-08-29 14:32 2641
        DrawIMG(iCheckBoxArea,screen,xplace,yplace);
89c4a3a6 sago007 2008-08-29 14:32 2642
        SFont_Write(screen,fBlueFont,xplace+12,yplace+2,"Stage Clear Level Select");
89c4a3a6 sago007 2008-08-29 14:32 2643
        for (int i = 0; i < nrOfStageLevels;i++)
89c4a3a6 sago007 2008-08-29 14:32 2644
        {
89c4a3a6 sago007 2008-08-29 14:32 2645
            DrawIMG(iLevelCheckBox,screen,xplace+10+(i%10)*50, yplace+60+(i/10)*50);
89c4a3a6 sago007 2008-08-29 14:32 2646
            if (stageCleared[i]==true) DrawIMG(iLevelCheck,screen,xplace+10+(i%10)*50, yplace+60+(i/10)*50);
89c4a3a6 sago007 2008-08-29 14:32 2647
        }
89c4a3a6 sago007 2008-08-29 14:32 2648
89c4a3a6 sago007 2008-08-29 14:32 2649
        SDL_Event event;
89c4a3a6 sago007 2008-08-29 14:32 2650
        while ( SDL_PollEvent(&event) )
89c4a3a6 sago007 2008-08-29 14:32 2651
            if ( event.type == SDL_KEYDOWN )
89c4a3a6 sago007 2008-08-29 14:32 2652
            {
89c4a3a6 sago007 2008-08-29 14:32 2653
                if ( event.key.keysym.sym == SDLK_ESCAPE ) {
89c4a3a6 sago007 2008-08-29 14:32 2654
                    levelNr = -1;
89c4a3a6 sago007 2008-08-29 14:32 2655
                    levelSelected = true;
89c4a3a6 sago007 2008-08-29 14:32 2656
                }
89c4a3a6 sago007 2008-08-29 14:32 2657
            }
89c4a3a6 sago007 2008-08-29 14:32 2658
89c4a3a6 sago007 2008-08-29 14:32 2659
        keys = SDL_GetKeyState(NULL);
89c4a3a6 sago007 2008-08-29 14:32 2660
89c4a3a6 sago007 2008-08-29 14:32 2661
        SDL_GetMouseState(&mousex,&mousey);
89c4a3a6 sago007 2008-08-29 14:32 2662
89c4a3a6 sago007 2008-08-29 14:32 2663
        // If the mouse button is released, make bMouseUp equal true
89c4a3a6 sago007 2008-08-29 14:32 2664
        if (!SDL_GetMouseState(NULL, NULL)&SDL_BUTTON(1))
89c4a3a6 sago007 2008-08-29 14:32 2665
        {
89c4a3a6 sago007 2008-08-29 14:32 2666
            bMouseUp=true;
89c4a3a6 sago007 2008-08-29 14:32 2667
        }
89c4a3a6 sago007 2008-08-29 14:32 2668
89c4a3a6 sago007 2008-08-29 14:32 2669
        if (SDL_GetMouseState(NULL,NULL)&SDL_BUTTON(1) && bMouseUp)
89c4a3a6 sago007 2008-08-29 14:32 2670
        {
89c4a3a6 sago007 2008-08-29 14:32 2671
            bMouseUp = false;
89c4a3a6 sago007 2008-08-29 14:32 2672
89c4a3a6 sago007 2008-08-29 14:32 2673
            int levelClicked = -1;
89c4a3a6 sago007 2008-08-29 14:32 2674
            int i;
89c4a3a6 sago007 2008-08-29 14:32 2675
            for (i = 0; (i<nrOfStageLevels/10)||((i<nrOfStageLevels/10+1)&&(nrOfStageLevels%10 != 0)); i++)
89c4a3a6 sago007 2008-08-29 14:32 2676
                if ((60+i*50<mousey-yplace)&&(mousey-yplace<i*50+92))
89c4a3a6 sago007 2008-08-29 14:32 2677
                    levelClicked = i*10;
89c4a3a6 sago007 2008-08-29 14:32 2678
            i++;
89c4a3a6 sago007 2008-08-29 14:32 2679
            if (levelClicked != -1)
89c4a3a6 sago007 2008-08-29 14:32 2680
                for (int j = 0; ((j<nrOfStageLevels%(i*10))&&(j<10)); j++)
89c4a3a6 sago007 2008-08-29 14:32 2681
                    if ((10+j*50<mousex-xplace)&&(mousex-xplace<j*50+42))
89c4a3a6 sago007 2008-08-29 14:32 2682
                    {
89c4a3a6 sago007 2008-08-29 14:32 2683
                        levelClicked +=j;
89c4a3a6 sago007 2008-08-29 14:32 2684
                        levelSelected = true;
89c4a3a6 sago007 2008-08-29 14:32 2685
                        levelNr = levelClicked;
89c4a3a6 sago007 2008-08-29 14:32 2686
                    }
89c4a3a6 sago007 2008-08-29 14:32 2687
        }
89c4a3a6 sago007 2008-08-29 14:32 2688
        //Find what we are over:
89c4a3a6 sago007 2008-08-29 14:32 2689
            int overLevel = -1;
89c4a3a6 sago007 2008-08-29 14:32 2690
            int i;
89c4a3a6 sago007 2008-08-29 14:32 2691
            for (i = 0; (i<nrOfStageLevels/10)||((i<nrOfStageLevels/10+1)&&(nrOfStageLevels%10 != 0)); i++)
89c4a3a6 sago007 2008-08-29 14:32 2692
                if ((60+i*50<mousey-yplace)&&(mousey-yplace<i*50+92))
89c4a3a6 sago007 2008-08-29 14:32 2693
                    overLevel = i*10;
89c4a3a6 sago007 2008-08-29 14:32 2694
            i++;
89c4a3a6 sago007 2008-08-29 14:32 2695
            if (overLevel != -1)
89c4a3a6 sago007 2008-08-29 14:32 2696
                for (int j = 0; ((j<nrOfStageLevels%(i*10))&&(j<10)); j++)
89c4a3a6 sago007 2008-08-29 14:32 2697
                    if ((10+j*50<mousex-xplace)&&(mousex-xplace<j*50+42))
89c4a3a6 sago007 2008-08-29 14:32 2698
                    {
89c4a3a6 sago007 2008-08-29 14:32 2699
                        overLevel +=j;
89c4a3a6 sago007 2008-08-29 14:32 2700
                        string scoreString = "Best score: 0";
89c4a3a6 sago007 2008-08-29 14:32 2701
                        string timeString = "Time used: -- : --";
89c4a3a6 sago007 2008-08-29 14:32 2702
                        
89c4a3a6 sago007 2008-08-29 14:32 2703
                        if(stageScores.at(overLevel)>0)
89c4a3a6 sago007 2008-08-29 14:32 2704
                            scoreString = "Best score: "+itoa(stageScores[overLevel]);
89c4a3a6 sago007 2008-08-29 14:32 2705
                        if(stageTimes[overLevel]>0)
89c4a3a6 sago007 2008-08-29 14:32 2706
                            timeString = "Time used: "+itoa(stageTimes[overLevel]/1000/60)+" : "+itoa2((stageTimes[overLevel]/1000)%60);
89c4a3a6 sago007 2008-08-29 14:32 2707
                        
89c4a3a6 sago007 2008-08-29 14:32 2708
                        SFont_Write(screen,fBlueFont,200,200,scoreString.c_str());
89c4a3a6 sago007 2008-08-29 14:32 2709
                        SFont_Write(screen,fBlueFont,200,250,timeString.c_str());
89c4a3a6 sago007 2008-08-29 14:32 2710
                        
89c4a3a6 sago007 2008-08-29 14:32 2711
                        overLevel;
89c4a3a6 sago007 2008-08-29 14:32 2712
                    }
89c4a3a6 sago007 2008-08-29 14:32 2713
            string totalString = "Total score: " +itoa(totalScore) + " in " + itoa(totalTime/1000/60) + " : " + itoa2((totalTime/1000)%60);
89c4a3a6 sago007 2008-08-29 14:32 2714
            SFont_Write(screen,fBlueFont,200,600,totalString.c_str());   
89c4a3a6 sago007 2008-08-29 14:32 2715
89c4a3a6 sago007 2008-08-29 14:32 2716
        DrawIMG(mouse,screen,mousex,mousey);
89c4a3a6 sago007 2008-08-29 14:32 2717
        SDL_Flip(screen); //draws it all to the screen
89c4a3a6 sago007 2008-08-29 14:32 2718
89c4a3a6 sago007 2008-08-29 14:32 2719
    } while (!levelSelected);
89c4a3a6 sago007 2008-08-29 14:32 2720
    DrawIMG(background, screen, 0, 0);
89c4a3a6 sago007 2008-08-29 14:32 2721
    return levelNr;
89c4a3a6 sago007 2008-08-29 14:32 2722
}
89c4a3a6 sago007 2008-08-29 14:32 2723
89c4a3a6 sago007 2008-08-29 14:32 2724
//Ask user for what AI level he will compete agains, return the number. Number must be 0..AIlevels
89c4a3a6 sago007 2008-08-29 14:32 2725
int startSingleVs()
89c4a3a6 sago007 2008-08-29 14:32 2726
{
89c4a3a6 sago007 2008-08-29 14:32 2727
    //Where to place the windows
89c4a3a6 sago007 2008-08-29 14:32 2728
    const int xplace = 200;
89c4a3a6 sago007 2008-08-29 14:32 2729
    const int yplace = 100;
89c4a3a6 sago007 2008-08-29 14:32 2730
    Uint8 *keys;	//To take keyboard input
89c4a3a6 sago007 2008-08-29 14:32 2731
    int mousex, mousey;	//To allow mouse
89c4a3a6 sago007 2008-08-29 14:32 2732
    bool done = false;	//When are we done?
89c4a3a6 sago007 2008-08-29 14:32 2733
89c4a3a6 sago007 2008-08-29 14:32 2734
    MakeBackground(1024,768);
89c4a3a6 sago007 2008-08-29 14:32 2735
    DrawIMG(changeButtonsBack,background,xplace,yplace);
89c4a3a6 sago007 2008-08-29 14:32 2736
    SFont_Write(background,fBlueFont,xplace+10,yplace+10,"1 : Very Easy");
89c4a3a6 sago007 2008-08-29 14:32 2737
    SFont_Write(background,fBlueFont,xplace+10,yplace+40,"2 : Easy");
89c4a3a6 sago007 2008-08-29 14:32 2738
    SFont_Write(background,fBlueFont,xplace+10,yplace+70,"3 : Below Normal");
89c4a3a6 sago007 2008-08-29 14:32 2739
    SFont_Write(background,fBlueFont,xplace+10,yplace+100,"4 : Normal");
89c4a3a6 sago007 2008-08-29 14:32 2740
    SFont_Write(background,fBlueFont,xplace+10,yplace+130,"5 : Above Normal");
89c4a3a6 sago007 2008-08-29 14:32 2741
    SFont_Write(background,fBlueFont,xplace+10,yplace+160,"6 : Hard");
89c4a3a6 sago007 2008-08-29 14:32 2742
    SFont_Write(background,fBlueFont,xplace+10,yplace+190,"7 : Hardest");
89c4a3a6 sago007 2008-08-29 14:32 2743
    DrawIMG(background, screen, 0, 0);
89c4a3a6 sago007 2008-08-29 14:32 2744
    SDL_Flip(screen);
89c4a3a6 sago007 2008-08-29 14:32 2745
    do
89c4a3a6 sago007 2008-08-29 14:32 2746
    {
89c4a3a6 sago007 2008-08-29 14:32 2747
89c4a3a6 sago007 2008-08-29 14:32 2748
        SDL_Delay(10);
89c4a3a6 sago007 2008-08-29 14:32 2749
        SDL_Event event;
89c4a3a6 sago007 2008-08-29 14:32 2750
        while ( SDL_PollEvent(&event) )
89c4a3a6 sago007 2008-08-29 14:32 2751
            if ( event.type == SDL_KEYDOWN )
89c4a3a6 sago007 2008-08-29 14:32 2752
            {
89c4a3a6 sago007 2008-08-29 14:32 2753
                if ( event.key.keysym.sym == SDLK_ESCAPE ) {
89c4a3a6 sago007 2008-08-29 14:32 2754
                    done = true;
89c4a3a6 sago007 2008-08-29 14:32 2755
                }
89c4a3a6 sago007 2008-08-29 14:32 2756
                if ( event.key.keysym.sym == SDLK_RETURN ) {
89c4a3a6 sago007 2008-08-29 14:32 2757
                    done = true;
89c4a3a6 sago007 2008-08-29 14:32 2758
                }
89c4a3a6 sago007 2008-08-29 14:32 2759
                if ( event.key.keysym.sym == SDLK_KP_ENTER ) {
89c4a3a6 sago007 2008-08-29 14:32 2760
                    done = true;
89c4a3a6 sago007 2008-08-29 14:32 2761
                }
89c4a3a6 sago007 2008-08-29 14:32 2762
                if ( event.key.keysym.sym == SDLK_1 ) {
89c4a3a6 sago007 2008-08-29 14:32 2763
                    return 0;
89c4a3a6 sago007 2008-08-29 14:32 2764
                }
89c4a3a6 sago007 2008-08-29 14:32 2765
                if ( event.key.keysym.sym == SDLK_2 ) {
89c4a3a6 sago007 2008-08-29 14:32 2766
                    return 1;
89c4a3a6 sago007 2008-08-29 14:32 2767
                }
89c4a3a6 sago007 2008-08-29 14:32 2768
                if ( event.key.keysym.sym == SDLK_3 ) {
89c4a3a6 sago007 2008-08-29 14:32 2769
                    return 2;
89c4a3a6 sago007 2008-08-29 14:32 2770
                }
89c4a3a6 sago007 2008-08-29 14:32 2771
                if ( event.key.keysym.sym == SDLK_4 ) {
89c4a3a6 sago007 2008-08-29 14:32 2772
                    return 3;
89c4a3a6 sago007 2008-08-29 14:32 2773
                }
89c4a3a6 sago007 2008-08-29 14:32 2774
                if ( event.key.keysym.sym == SDLK_5 ) {
89c4a3a6 sago007 2008-08-29 14:32 2775
                    return 4;
89c4a3a6 sago007 2008-08-29 14:32 2776
                }
89c4a3a6 sago007 2008-08-29 14:32 2777
                if ( event.key.keysym.sym == SDLK_6 ) {
89c4a3a6 sago007 2008-08-29 14:32 2778
                    return 5;
89c4a3a6 sago007 2008-08-29 14:32 2779
                }
89c4a3a6 sago007 2008-08-29 14:32 2780
                if ( event.key.keysym.sym == SDLK_7 ) {
89c4a3a6 sago007 2008-08-29 14:32 2781
                    return 6;
89c4a3a6 sago007 2008-08-29 14:32 2782
                }
89c4a3a6 sago007 2008-08-29 14:32 2783
                if ( event.key.keysym.sym == SDLK_KP1 ) {
89c4a3a6 sago007 2008-08-29 14:32 2784
                    return 0;
89c4a3a6 sago007 2008-08-29 14:32 2785
                }
89c4a3a6 sago007 2008-08-29 14:32 2786
                if ( event.key.keysym.sym == SDLK_KP2 ) {
89c4a3a6 sago007 2008-08-29 14:32 2787
                    return 1;
89c4a3a6 sago007 2008-08-29 14:32 2788
                }
89c4a3a6 sago007 2008-08-29 14:32 2789
                if ( event.key.keysym.sym == SDLK_KP3 ) {
89c4a3a6 sago007 2008-08-29 14:32 2790
                    return 2;
89c4a3a6 sago007 2008-08-29 14:32 2791
                }
89c4a3a6 sago007 2008-08-29 14:32 2792
                if ( event.key.keysym.sym == SDLK_KP4 ) {
89c4a3a6 sago007 2008-08-29 14:32 2793
                    return 3;
89c4a3a6 sago007 2008-08-29 14:32 2794
                }
89c4a3a6 sago007 2008-08-29 14:32 2795
                if ( event.key.keysym.sym == SDLK_KP5 ) {
89c4a3a6 sago007 2008-08-29 14:32 2796
                    return 4;
89c4a3a6 sago007 2008-08-29 14:32 2797
                }
89c4a3a6 sago007 2008-08-29 14:32 2798
                if ( event.key.keysym.sym == SDLK_KP6 ) {
89c4a3a6 sago007 2008-08-29 14:32 2799
                    return 5;
89c4a3a6 sago007 2008-08-29 14:32 2800
                }
89c4a3a6 sago007 2008-08-29 14:32 2801
                if ( event.key.keysym.sym == SDLK_KP7 ) {
89c4a3a6 sago007 2008-08-29 14:32 2802
                    return 6;
89c4a3a6 sago007 2008-08-29 14:32 2803
                }
89c4a3a6 sago007 2008-08-29 14:32 2804
89c4a3a6 sago007 2008-08-29 14:32 2805
            }
89c4a3a6 sago007 2008-08-29 14:32 2806
89c4a3a6 sago007 2008-08-29 14:32 2807
        // If the mouse button is released, make bMouseUp equal true
89c4a3a6 sago007 2008-08-29 14:32 2808
        if (!SDL_GetMouseState(NULL, NULL)&SDL_BUTTON(1))
89c4a3a6 sago007 2008-08-29 14:32 2809
        {
89c4a3a6 sago007 2008-08-29 14:32 2810
            bMouseUp=true;
89c4a3a6 sago007 2008-08-29 14:32 2811
        }
89c4a3a6 sago007 2008-08-29 14:32 2812
89c4a3a6 sago007 2008-08-29 14:32 2813
        if (SDL_GetMouseState(NULL,NULL)&SDL_BUTTON(1) && bMouseUp)
89c4a3a6 sago007 2008-08-29 14:32 2814
        {
89c4a3a6 sago007 2008-08-29 14:32 2815
            bMouseUp = false;
89c4a3a6 sago007 2008-08-29 14:32 2816
89c4a3a6 sago007 2008-08-29 14:32 2817
            for (int i=0; i<7;i++)
89c4a3a6 sago007 2008-08-29 14:32 2818
            {
89c4a3a6 sago007 2008-08-29 14:32 2819
                if ((mousex>xplace+10)&&(mousex<xplace+410)&&(mousey>yplace+10+i*30)&&(mousey<yplace+38+i*30))
89c4a3a6 sago007 2008-08-29 14:32 2820
                    return i;
89c4a3a6 sago007 2008-08-29 14:32 2821
            }
89c4a3a6 sago007 2008-08-29 14:32 2822
        }
89c4a3a6 sago007 2008-08-29 14:32 2823
89c4a3a6 sago007 2008-08-29 14:32 2824
        SDL_GetMouseState(&mousex,&mousey);
89c4a3a6 sago007 2008-08-29 14:32 2825
        DrawIMG(background, screen, 0, 0);
89c4a3a6 sago007 2008-08-29 14:32 2826
        DrawIMG(mouse,screen,mousex,mousey);
89c4a3a6 sago007 2008-08-29 14:32 2827
        SDL_Flip(screen); //draws it all to the screen
89c4a3a6 sago007 2008-08-29 14:32 2828
    }while (!done);
89c4a3a6 sago007 2008-08-29 14:32 2829
89c4a3a6 sago007 2008-08-29 14:32 2830
89c4a3a6 sago007 2008-08-29 14:32 2831
    return 3; //Returns normal
89c4a3a6 sago007 2008-08-29 14:32 2832
}
89c4a3a6 sago007 2008-08-29 14:32 2833
89c4a3a6 sago007 2008-08-29 14:32 2834
//The function that allows the player to choose Level number
89c4a3a6 sago007 2008-08-29 14:32 2835
void startVsMenu()
89c4a3a6 sago007 2008-08-29 14:32 2836
{
89c4a3a6 sago007 2008-08-29 14:32 2837
    const int xplace = 200;
89c4a3a6 sago007 2008-08-29 14:32 2838
    const int yplace = 100;
89c4a3a6 sago007 2008-08-29 14:32 2839
    Uint8 *keys;
89c4a3a6 sago007 2008-08-29 14:32 2840
    int mousex, mousey;
89c4a3a6 sago007 2008-08-29 14:32 2841
    bool done = false;
89c4a3a6 sago007 2008-08-29 14:32 2842
89c4a3a6 sago007 2008-08-29 14:32 2843
    //Keeps track of background;
89c4a3a6 sago007 2008-08-29 14:32 2844
    //int nowTime=SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 2845
89c4a3a6 sago007 2008-08-29 14:32 2846
    MakeBackground(1024,768);
89c4a3a6 sago007 2008-08-29 14:32 2847
    SFont_Write(background,fBlueFont,360,650,"Press ESC to accept");
89c4a3a6 sago007 2008-08-29 14:32 2848
    DrawIMG(bBack,background,1024/2-120/2,600);
89c4a3a6 sago007 2008-08-29 14:32 2849
    do
89c4a3a6 sago007 2008-08-29 14:32 2850
    {
89c4a3a6 sago007 2008-08-29 14:32 2851
        //nowTime=SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 2852
        DrawIMG(background, screen, 0, 0);
89c4a3a6 sago007 2008-08-29 14:32 2853
        DrawIMG(changeButtonsBack,screen,xplace,yplace);
89c4a3a6 sago007 2008-08-29 14:32 2854
        SFont_Write(screen,fBlueFont,xplace+50,yplace+20,"Player 1");
89c4a3a6 sago007 2008-08-29 14:32 2855
        SFont_Write(screen,fBlueFont,xplace+300+50,yplace+20,"Player 2");
89c4a3a6 sago007 2008-08-29 14:32 2856
        SFont_Write(screen,fBlueFont,xplace+50,yplace+70,"Speed:");
89c4a3a6 sago007 2008-08-29 14:32 2857
        SFont_Write(screen,fBlueFont,xplace+50+300,yplace+70,"Speed:");
89c4a3a6 sago007 2008-08-29 14:32 2858
        for (int i=0; i<5;i++)
89c4a3a6 sago007 2008-08-29 14:32 2859
        {
89c4a3a6 sago007 2008-08-29 14:32 2860
            char levelS[2]; //level string;
89c4a3a6 sago007 2008-08-29 14:32 2861
            levelS[0]='1'+i;
89c4a3a6 sago007 2008-08-29 14:32 2862
            levelS[1]=0;
89c4a3a6 sago007 2008-08-29 14:32 2863
            SFont_Write(screen,fBlueFont,xplace+50+i*40,yplace+110,levelS);
89c4a3a6 sago007 2008-08-29 14:32 2864
            DrawIMG(iLevelCheckBox,screen,xplace+50+i*40,yplace+150);
89c4a3a6 sago007 2008-08-29 14:32 2865
            if (player1Speed==i)
89c4a3a6 sago007 2008-08-29 14:32 2866
                DrawIMG(iLevelCheck,screen,xplace+50+i*40,yplace+150);
89c4a3a6 sago007 2008-08-29 14:32 2867
        }
89c4a3a6 sago007 2008-08-29 14:32 2868
        for (int i=0; i<5;i++)
89c4a3a6 sago007 2008-08-29 14:32 2869
        {
89c4a3a6 sago007 2008-08-29 14:32 2870
            char levelS[2]; //level string;
89c4a3a6 sago007 2008-08-29 14:32 2871
            levelS[0]='1'+i;
89c4a3a6 sago007 2008-08-29 14:32 2872
            levelS[1]=0;
89c4a3a6 sago007 2008-08-29 14:32 2873
            SFont_Write(screen,fBlueFont,xplace+300+50+i*40,yplace+110,levelS);
89c4a3a6 sago007 2008-08-29 14:32 2874
            DrawIMG(iLevelCheckBox,screen,xplace+300+50+i*40,yplace+150);
89c4a3a6 sago007 2008-08-29 14:32 2875
            if (player2Speed==i)
89c4a3a6 sago007 2008-08-29 14:32 2876
                DrawIMG(iLevelCheck,screen,xplace+300+50+i*40,yplace+150);
89c4a3a6 sago007 2008-08-29 14:32 2877
        }
89c4a3a6 sago007 2008-08-29 14:32 2878
        SFont_Write(screen,fBlueFont,xplace+50,yplace+200,"AI: ");
89c4a3a6 sago007 2008-08-29 14:32 2879
        DrawIMG(iLevelCheckBox,screen,xplace+50+70,yplace+200);
89c4a3a6 sago007 2008-08-29 14:32 2880
        if (player1AI)
89c4a3a6 sago007 2008-08-29 14:32 2881
            DrawIMG(iLevelCheck,screen,xplace+50+70,yplace+200);
89c4a3a6 sago007 2008-08-29 14:32 2882
        SFont_Write(screen,fBlueFont,xplace+50,yplace+250,"TT Handicap: ");
89c4a3a6 sago007 2008-08-29 14:32 2883
        SFont_Write(screen,fBlueFont,xplace+50+300,yplace+200,"AI: ");
89c4a3a6 sago007 2008-08-29 14:32 2884
        DrawIMG(iLevelCheckBox,screen,xplace+50+70+300,yplace+200);
89c4a3a6 sago007 2008-08-29 14:32 2885
        if (player2AI)
89c4a3a6 sago007 2008-08-29 14:32 2886
            DrawIMG(iLevelCheck,screen,xplace+50+70+300,yplace+200);
89c4a3a6 sago007 2008-08-29 14:32 2887
        SFont_Write(screen,fBlueFont,xplace+50+300,yplace+250,"TT Handicap: ");
89c4a3a6 sago007 2008-08-29 14:32 2888
        for (int i=0; i<5;i++)
89c4a3a6 sago007 2008-08-29 14:32 2889
        {
89c4a3a6 sago007 2008-08-29 14:32 2890
            char levelS[2]; //level string;
89c4a3a6 sago007 2008-08-29 14:32 2891
            levelS[0]='1'+i;
89c4a3a6 sago007 2008-08-29 14:32 2892
            levelS[1]=0;
89c4a3a6 sago007 2008-08-29 14:32 2893
            SFont_Write(screen,fBlueFont,xplace+50+i*40,yplace+290,levelS);
89c4a3a6 sago007 2008-08-29 14:32 2894
            DrawIMG(iLevelCheckBox,screen,xplace+50+i*40,yplace+330);
89c4a3a6 sago007 2008-08-29 14:32 2895
            if (player1handicap==i)
89c4a3a6 sago007 2008-08-29 14:32 2896
                DrawIMG(iLevelCheck,screen,xplace+50+i*40,yplace+330);
89c4a3a6 sago007 2008-08-29 14:32 2897
        }
89c4a3a6 sago007 2008-08-29 14:32 2898
        for (int i=0; i<5;i++)
89c4a3a6 sago007 2008-08-29 14:32 2899
        {
89c4a3a6 sago007 2008-08-29 14:32 2900
            char levelS[2]; //level string;
89c4a3a6 sago007 2008-08-29 14:32 2901
            levelS[0]='1'+i;
89c4a3a6 sago007 2008-08-29 14:32 2902
            levelS[1]=0;
89c4a3a6 sago007 2008-08-29 14:32 2903
            SFont_Write(screen,fBlueFont,xplace+50+i*40+300,yplace+290,levelS);
89c4a3a6 sago007 2008-08-29 14:32 2904
            DrawIMG(iLevelCheckBox,screen,xplace+50+i*40+300,yplace+330);
89c4a3a6 sago007 2008-08-29 14:32 2905
            if (player2handicap==i)
89c4a3a6 sago007 2008-08-29 14:32 2906
                DrawIMG(iLevelCheck,screen,xplace+50+i*40+300,yplace+330);
89c4a3a6 sago007 2008-08-29 14:32 2907
        }
89c4a3a6 sago007 2008-08-29 14:32 2908
89c4a3a6 sago007 2008-08-29 14:32 2909
        SDL_Event event;
89c4a3a6 sago007 2008-08-29 14:32 2910
        while ( SDL_PollEvent(&event) )
89c4a3a6 sago007 2008-08-29 14:32 2911
            if ( event.type == SDL_KEYDOWN )
89c4a3a6 sago007 2008-08-29 14:32 2912
            {
89c4a3a6 sago007 2008-08-29 14:32 2913
                if ( event.key.keysym.sym == SDLK_ESCAPE ) {
89c4a3a6 sago007 2008-08-29 14:32 2914
                    done = true;
89c4a3a6 sago007 2008-08-29 14:32 2915
                }
89c4a3a6 sago007 2008-08-29 14:32 2916
                if ( event.key.keysym.sym == SDLK_RETURN ) {
89c4a3a6 sago007 2008-08-29 14:32 2917
                    done = true;
89c4a3a6 sago007 2008-08-29 14:32 2918
                }
89c4a3a6 sago007 2008-08-29 14:32 2919
                if ( event.key.keysym.sym == SDLK_KP_ENTER ) {
89c4a3a6 sago007 2008-08-29 14:32 2920
                    done = true;
89c4a3a6 sago007 2008-08-29 14:32 2921
                }
89c4a3a6 sago007 2008-08-29 14:32 2922
            }
89c4a3a6 sago007 2008-08-29 14:32 2923
89c4a3a6 sago007 2008-08-29 14:32 2924
        keys = SDL_GetKeyState(NULL);
89c4a3a6 sago007 2008-08-29 14:32 2925
89c4a3a6 sago007 2008-08-29 14:32 2926
        SDL_GetMouseState(&mousex,&mousey);
89c4a3a6 sago007 2008-08-29 14:32 2927
89c4a3a6 sago007 2008-08-29 14:32 2928
        // If the mouse button is released, make bMouseUp equal true
89c4a3a6 sago007 2008-08-29 14:32 2929
        if (!SDL_GetMouseState(NULL, NULL)&SDL_BUTTON(1))
89c4a3a6 sago007 2008-08-29 14:32 2930
        {
89c4a3a6 sago007 2008-08-29 14:32 2931
            bMouseUp=true;
89c4a3a6 sago007 2008-08-29 14:32 2932
        }
89c4a3a6 sago007 2008-08-29 14:32 2933
89c4a3a6 sago007 2008-08-29 14:32 2934
        if (SDL_GetMouseState(NULL,NULL)&SDL_BUTTON(1) && bMouseUp)
89c4a3a6 sago007 2008-08-29 14:32 2935
        {
89c4a3a6 sago007 2008-08-29 14:32 2936
            bMouseUp = false;
89c4a3a6 sago007 2008-08-29 14:32 2937
89c4a3a6 sago007 2008-08-29 14:32 2938
            if ((mousex>xplace+50+70)&&(mousey>yplace+200)&&(mousex<xplace+50+70+30)&&(mousey<yplace+200+30))
89c4a3a6 sago007 2008-08-29 14:32 2939
                player1AI=!player1AI;
89c4a3a6 sago007 2008-08-29 14:32 2940
            if ((mousex>xplace+50+70+300)&&(mousey>yplace+200)&&(mousex<xplace+50+70+30+300)&&(mousey<yplace+200+30))
89c4a3a6 sago007 2008-08-29 14:32 2941
                player2AI=!player2AI;
89c4a3a6 sago007 2008-08-29 14:32 2942
            for (int i=0; i<5;i++)
89c4a3a6 sago007 2008-08-29 14:32 2943
            {
89c4a3a6 sago007 2008-08-29 14:32 2944
                if ((mousex>xplace+50+i*40)&&(mousex<xplace+50+i*40+30)&&(mousey>yplace+150)&&(mousey<yplace+150+30))
89c4a3a6 sago007 2008-08-29 14:32 2945
                    player1Speed=i;
89c4a3a6 sago007 2008-08-29 14:32 2946
            }
89c4a3a6 sago007 2008-08-29 14:32 2947
            for (int i=0; i<5;i++)
89c4a3a6 sago007 2008-08-29 14:32 2948
            {
89c4a3a6 sago007 2008-08-29 14:32 2949
                if ((mousex>xplace+50+i*40+300)&&(mousex<xplace+50+i*40+30+300)&&(mousey>yplace+150)&&(mousey<yplace+150+30))
89c4a3a6 sago007 2008-08-29 14:32 2950
                    player2Speed=i;
89c4a3a6 sago007 2008-08-29 14:32 2951
            }
89c4a3a6 sago007 2008-08-29 14:32 2952
            for (int i=0; i<5;i++)
89c4a3a6 sago007 2008-08-29 14:32 2953
            {
89c4a3a6 sago007 2008-08-29 14:32 2954
                if ((mousex>xplace+50+i*40)&&(mousex<xplace+50+i*40+30)&&(mousey>yplace+330)&&(mousey<yplace+330+30))
89c4a3a6 sago007 2008-08-29 14:32 2955
                    player1handicap=i;
89c4a3a6 sago007 2008-08-29 14:32 2956
            }
89c4a3a6 sago007 2008-08-29 14:32 2957
            for (int i=0; i<5;i++)
89c4a3a6 sago007 2008-08-29 14:32 2958
            {
89c4a3a6 sago007 2008-08-29 14:32 2959
                if ((mousex>xplace+50+i*40+300)&&(mousex<xplace+50+i*40+30+300)&&(mousey>yplace+330)&&(mousey<yplace+330+30))
89c4a3a6 sago007 2008-08-29 14:32 2960
                    player2handicap=i;
89c4a3a6 sago007 2008-08-29 14:32 2961
            }
89c4a3a6 sago007 2008-08-29 14:32 2962
            if ((mousex>1024/2-120/2)&&(mousex<1024/2+120/2)&&(mousey>600)&&(mousey<640))
89c4a3a6 sago007 2008-08-29 14:32 2963
                done = true;
89c4a3a6 sago007 2008-08-29 14:32 2964
        }
89c4a3a6 sago007 2008-08-29 14:32 2965
89c4a3a6 sago007 2008-08-29 14:32 2966
        DrawIMG(mouse,screen,mousex,mousey);
89c4a3a6 sago007 2008-08-29 14:32 2967
        SDL_Flip(screen); //draws it all to the screen
89c4a3a6 sago007 2008-08-29 14:32 2968
        SDL_Delay(10);
89c4a3a6 sago007 2008-08-29 14:32 2969
89c4a3a6 sago007 2008-08-29 14:32 2970
    } while (!done);
89c4a3a6 sago007 2008-08-29 14:32 2971
    DrawIMG(background, screen, 0, 0);
89c4a3a6 sago007 2008-08-29 14:32 2972
}
89c4a3a6 sago007 2008-08-29 14:32 2973
89c4a3a6 sago007 2008-08-29 14:32 2974
//This function will promt for the user to select another file for puzzle mode
89c4a3a6 sago007 2008-08-29 14:32 2975
void changePuzzleLevels()
89c4a3a6 sago007 2008-08-29 14:32 2976
{
89c4a3a6 sago007 2008-08-29 14:32 2977
    char theFileName[30];
89c4a3a6 sago007 2008-08-29 14:32 2978
    strcpy(theFileName,puzzleName.c_str());
89c4a3a6 sago007 2008-08-29 14:32 2979
    for (int i=puzzleName.length();i<30;i++)
89c4a3a6 sago007 2008-08-29 14:32 2980
        theFileName[i]=' ';
89c4a3a6 sago007 2008-08-29 14:32 2981
    theFileName[29]=0;
89c4a3a6 sago007 2008-08-29 14:32 2982
    if (OpenFileDialogbox(200,100,theFileName))
89c4a3a6 sago007 2008-08-29 14:32 2983
    {
89c4a3a6 sago007 2008-08-29 14:32 2984
        for (int i=28;((theFileName[i]==' ')&&(i>0));i--)
89c4a3a6 sago007 2008-08-29 14:32 2985
            theFileName[i]=0;
89c4a3a6 sago007 2008-08-29 14:32 2986
        puzzleName = theFileName;
89c4a3a6 sago007 2008-08-29 14:32 2987
#if defined(__unix__)
89c4a3a6 sago007 2008-08-29 14:32 2988
        string home = getenv("HOME");
89c4a3a6 sago007 2008-08-29 14:32 2989
        puzzleSavePath = home+"/.gamesaves/blockattack/"+puzzleName+".save";
89c4a3a6 sago007 2008-08-29 14:32 2990
#elif defined(_WIN32)
89c4a3a6 sago007 2008-08-29 14:32 2991
        string home = getMyDocumentsPath();
89c4a3a6 sago007 2008-08-29 14:32 2992
        if (&home!=NULL)
89c4a3a6 sago007 2008-08-29 14:32 2993
        {
89c4a3a6 sago007 2008-08-29 14:32 2994
            puzzleSavePath = home+"/My Games/blockattack/"+puzzleName+".save";
89c4a3a6 sago007 2008-08-29 14:32 2995
        }
89c4a3a6 sago007 2008-08-29 14:32 2996
        else
89c4a3a6 sago007 2008-08-29 14:32 2997
        {
89c4a3a6 sago007 2008-08-29 14:32 2998
            puzzleSavePath = puzzleName+".save";
89c4a3a6 sago007 2008-08-29 14:32 2999
        }
89c4a3a6 sago007 2008-08-29 14:32 3000
#else
89c4a3a6 sago007 2008-08-29 14:32 3001
        puzzleSavePath = puzzleName+".save";
89c4a3a6 sago007 2008-08-29 14:32 3002
#endif
89c4a3a6 sago007 2008-08-29 14:32 3003
    }
89c4a3a6 sago007 2008-08-29 14:32 3004
89c4a3a6 sago007 2008-08-29 14:32 3005
}
89c4a3a6 sago007 2008-08-29 14:32 3006
89c4a3a6 sago007 2008-08-29 14:32 3007
#ifdef NETWORK
89c4a3a6 sago007 2008-08-29 14:32 3008
#include "NetworkThing.hpp"
89c4a3a6 sago007 2008-08-29 14:32 3009
#endif
89c4a3a6 sago007 2008-08-29 14:32 3010
89c4a3a6 sago007 2008-08-29 14:32 3011
//#include "editor/editorMain.hpp"
89c4a3a6 sago007 2008-08-29 14:32 3012
89c4a3a6 sago007 2008-08-29 14:32 3013
//The main function, quite big... too big
89c4a3a6 sago007 2008-08-29 14:32 3014
int main(int argc, char *argv[])
89c4a3a6 sago007 2008-08-29 14:32 3015
{
89c4a3a6 sago007 2008-08-29 14:32 3016
    //We first create the folder there we will save (only on UNIX systems)
89c4a3a6 sago007 2008-08-29 14:32 3017
    //we call the external command "mkdir"... the user might have renamed this, but we hope he hasn't
89c4a3a6 sago007 2008-08-29 14:32 3018
#if defined(__unix__)
89c4a3a6 sago007 2008-08-29 14:32 3019
    system("mkdir -p ~/.gamesaves/blockattack/screenshots");
89c4a3a6 sago007 2008-08-29 14:32 3020
    system("mkdir -p ~/.gamesaves/blockattack/replays");
89c4a3a6 sago007 2008-08-29 14:32 3021
    system("mkdir -p ~/.gamesaves/blockattack/puzzles");
89c4a3a6 sago007 2008-08-29 14:32 3022
#elif defined(_WIN32)
89c4a3a6 sago007 2008-08-29 14:32 3023
    //Now for Windows NT/2k/xp/2k3 etc.
89c4a3a6 sago007 2008-08-29 14:32 3024
    string tempA = getMyDocumentsPath()+"\\My Games";
89c4a3a6 sago007 2008-08-29 14:32 3025
    CreateDirectory(tempA.c_str(),NULL);//system(tempA.c_str());
89c4a3a6 sago007 2008-08-29 14:32 3026
    tempA = getMyDocumentsPath()+"\\My Games\\blockattack";
89c4a3a6 sago007 2008-08-29 14:32 3027
    CreateDirectory(tempA.c_str(),NULL);//system(tempA.c_str());
89c4a3a6 sago007 2008-08-29 14:32 3028
    tempA = getMyDocumentsPath()+"\\My Games\\blockattack\\replays";
89c4a3a6 sago007 2008-08-29 14:32 3029
    CreateDirectory(tempA.c_str(),NULL);//system(tempA.c_str());
89c4a3a6 sago007 2008-08-29 14:32 3030
    tempA = getMyDocumentsPath()+"\\My Games\\blockattack\\screenshots";
89c4a3a6 sago007 2008-08-29 14:32 3031
    CreateDirectory(tempA.c_str(),NULL);//system(tempA.c_str());
89c4a3a6 sago007 2008-08-29 14:32 3032
#endif
89c4a3a6 sago007 2008-08-29 14:32 3033
    bool highPriority = false;	//if true the game will take most resources, but increase framerate.
89c4a3a6 sago007 2008-08-29 14:32 3034
    bFullscreen = false;
89c4a3a6 sago007 2008-08-29 14:32 3035
    if (argc > 1)
89c4a3a6 sago007 2008-08-29 14:32 3036
    {
89c4a3a6 sago007 2008-08-29 14:32 3037
        int argumentNr = 1;
89c4a3a6 sago007 2008-08-29 14:32 3038
        forceredraw = 2;
89c4a3a6 sago007 2008-08-29 14:32 3039
        while (argc>argumentNr)
89c4a3a6 sago007 2008-08-29 14:32 3040
        {
89c4a3a6 sago007 2008-08-29 14:32 3041
            char helpString[] = "--help";
89c4a3a6 sago007 2008-08-29 14:32 3042
            char priorityString[] = "-priority";
89c4a3a6 sago007 2008-08-29 14:32 3043
            char forceRedrawString[] = "-forceredraw";
89c4a3a6 sago007 2008-08-29 14:32 3044
            char forcepartdrawString[] = "-forcepartdraw";
89c4a3a6 sago007 2008-08-29 14:32 3045
            char singlePuzzleString[] = "-SP";
89c4a3a6 sago007 2008-08-29 14:32 3046
            char noSoundAtAll[] = "-nosound";
89c4a3a6 sago007 2008-08-29 14:32 3047
            char IntegratedEditor[] = "-editor";
89c4a3a6 sago007 2008-08-29 14:32 3048
            if (!(strncmp(argv[argumentNr],helpString,6)))
89c4a3a6 sago007 2008-08-29 14:32 3049
            {
89c4a3a6 sago007 2008-08-29 14:32 3050
                cout << "Block Attack Help" << endl << "--help Display this message" <<
89c4a3a6 sago007 2008-08-29 14:32 3051
                endl << "-priority  Starts game in high priority" << endl <<
89c4a3a6 sago007 2008-08-29 14:32 3052
                "-forceredraw  Redraw the whole screen every frame, prevents garbage" << endl <<
89c4a3a6 sago007 2008-08-29 14:32 3053
                "-forcepartdraw  Only draw what is changed, sometimes cause garbage" << endl <<
89c4a3a6 sago007 2008-08-29 14:32 3054
                "-nosound  No sound will be played at all, and sound hardware want be loaded (use this if game crashes because of sound)" << endl <<
89c4a3a6 sago007 2008-08-29 14:32 3055
                "-editor  Starts the build-in editor (not yet integrated)" << endl;
89c4a3a6 sago007 2008-08-29 14:32 3056
#ifdef WIN32
89c4a3a6 sago007 2008-08-29 14:32 3057
                system("Pause");
89c4a3a6 sago007 2008-08-29 14:32 3058
#endif
89c4a3a6 sago007 2008-08-29 14:32 3059
                return 0;
89c4a3a6 sago007 2008-08-29 14:32 3060
            }
89c4a3a6 sago007 2008-08-29 14:32 3061
            if (!(strncmp(argv[argumentNr],priorityString,9)))
89c4a3a6 sago007 2008-08-29 14:32 3062
            {
89c4a3a6 sago007 2008-08-29 14:32 3063
                cout << "Priority mode" << endl;
89c4a3a6 sago007 2008-08-29 14:32 3064
                highPriority = true;
89c4a3a6 sago007 2008-08-29 14:32 3065
            }
89c4a3a6 sago007 2008-08-29 14:32 3066
            if (!(strncmp(argv[argumentNr],forceRedrawString,12)))
89c4a3a6 sago007 2008-08-29 14:32 3067
            {
89c4a3a6 sago007 2008-08-29 14:32 3068
                forceredraw = 1;
89c4a3a6 sago007 2008-08-29 14:32 3069
            }
89c4a3a6 sago007 2008-08-29 14:32 3070
            if (!(strncmp(argv[argumentNr],forcepartdrawString,14)))
89c4a3a6 sago007 2008-08-29 14:32 3071
            {
89c4a3a6 sago007 2008-08-29 14:32 3072
                forceredraw = 2;
89c4a3a6 sago007 2008-08-29 14:32 3073
            }
89c4a3a6 sago007 2008-08-29 14:32 3074
            if (!(strncmp(argv[argumentNr],singlePuzzleString,3)))
89c4a3a6 sago007 2008-08-29 14:32 3075
            {
89c4a3a6 sago007 2008-08-29 14:32 3076
                singlePuzzle = true; //We will just have one puzzle
89c4a3a6 sago007 2008-08-29 14:32 3077
                if (argv[argumentNr+1][1]!=0)
89c4a3a6 sago007 2008-08-29 14:32 3078
                    singlePuzzleNr = (argv[argumentNr+1][1]-'0')+(argv[argumentNr+1][0]-'0')*10;
89c4a3a6 sago007 2008-08-29 14:32 3079
                else
89c4a3a6 sago007 2008-08-29 14:32 3080
                    singlePuzzleNr = (argv[argumentNr+1][0]-'0');
89c4a3a6 sago007 2008-08-29 14:32 3081
                singlePuzzleFile = argv[argumentNr+2];
89c4a3a6 sago007 2008-08-29 14:32 3082
                argumentNr+=2;
89c4a3a6 sago007 2008-08-29 14:32 3083
                cout << "SinglePuzzleMode, File: " << singlePuzzleFile << " and Level: " << singlePuzzleNr << endl;
89c4a3a6 sago007 2008-08-29 14:32 3084
            }
89c4a3a6 sago007 2008-08-29 14:32 3085
            if (!(strncmp(argv[argumentNr],noSoundAtAll,8)))
89c4a3a6 sago007 2008-08-29 14:32 3086
            {
89c4a3a6 sago007 2008-08-29 14:32 3087
                NoSound = true;
89c4a3a6 sago007 2008-08-29 14:32 3088
            }
89c4a3a6 sago007 2008-08-29 14:32 3089
            if (!(strncmp(argv[argumentNr],IntegratedEditor,7)))
89c4a3a6 sago007 2008-08-29 14:32 3090
            {
89c4a3a6 sago007 2008-08-29 14:32 3091
                editorMode = true;
89c4a3a6 sago007 2008-08-29 14:32 3092
                cout << "Integrated Puzzle Editor Activated" << endl;
89c4a3a6 sago007 2008-08-29 14:32 3093
            }
89c4a3a6 sago007 2008-08-29 14:32 3094
            argumentNr++;
89c4a3a6 sago007 2008-08-29 14:32 3095
        }   //while
89c4a3a6 sago007 2008-08-29 14:32 3096
    }   //if
89c4a3a6 sago007 2008-08-29 14:32 3097
89c4a3a6 sago007 2008-08-29 14:32 3098
    SoundEnabled = true;
89c4a3a6 sago007 2008-08-29 14:32 3099
    MusicEnabled = true;
89c4a3a6 sago007 2008-08-29 14:32 3100
    xsize = 1024;     //screen size x
89c4a3a6 sago007 2008-08-29 14:32 3101
    int ysize = 768;      //screen size y
89c4a3a6 sago007 2008-08-29 14:32 3102
    int mousex, mousey;   //Mouse coordinates
89c4a3a6 sago007 2008-08-29 14:32 3103
    showHighscores = false;
89c4a3a6 sago007 2008-08-29 14:32 3104
    showEndless = true;
89c4a3a6 sago007 2008-08-29 14:32 3105
    showOptions = false;
89c4a3a6 sago007 2008-08-29 14:32 3106
    b1playerOpen = false;
89c4a3a6 sago007 2008-08-29 14:32 3107
    b2playersOpen = false;
89c4a3a6 sago007 2008-08-29 14:32 3108
    bReplayOpen = false;
89c4a3a6 sago007 2008-08-29 14:32 3109
    bScreenLocked = false;
89c4a3a6 sago007 2008-08-29 14:32 3110
    bool twoPlayers = false;	//true if two players splitscreen
89c4a3a6 sago007 2008-08-29 14:32 3111
    bool vsMode = false;
89c4a3a6 sago007 2008-08-29 14:32 3112
    theTopScoresEndless = Highscore(1);
89c4a3a6 sago007 2008-08-29 14:32 3113
    theTopScoresTimeTrial = Highscore(2);
89c4a3a6 sago007 2008-08-29 14:32 3114
    drawBalls = true;
89c4a3a6 sago007 2008-08-29 14:32 3115
    puzzleLoaded = false;
89c4a3a6 sago007 2008-08-29 14:32 3116
    bool weWhereConnected = false;
89c4a3a6 sago007 2008-08-29 14:32 3117
89c4a3a6 sago007 2008-08-29 14:32 3118
    //Things used for repeating keystrokes:
89c4a3a6 sago007 2008-08-29 14:32 3119
    bool repeatingP1N = false; //The key is being held
89c4a3a6 sago007 2008-08-29 14:32 3120
    bool repeatingP1S = false; //The key is being held
89c4a3a6 sago007 2008-08-29 14:32 3121
    bool repeatingP1W = false; //The key is being held
89c4a3a6 sago007 2008-08-29 14:32 3122
    bool repeatingP1E = false; //The key is being held
89c4a3a6 sago007 2008-08-29 14:32 3123
    bool repeatingP2N = false; //The key is being held
89c4a3a6 sago007 2008-08-29 14:32 3124
    bool repeatingP2S = false; //The key is being held
89c4a3a6 sago007 2008-08-29 14:32 3125
    bool repeatingP2W = false; //The key is being held
89c4a3a6 sago007 2008-08-29 14:32 3126
    bool repeatingP2E = false; //The key is being held
89c4a3a6 sago007 2008-08-29 14:32 3127
    const int startRepeat = 200;
89c4a3a6 sago007 2008-08-29 14:32 3128
    const int repeatDelay = 100;    //Repeating
89c4a3a6 sago007 2008-08-29 14:32 3129
    unsigned long timeHeldP1N = 0;
89c4a3a6 sago007 2008-08-29 14:32 3130
    unsigned long timeHeldP1S = 0;
89c4a3a6 sago007 2008-08-29 14:32 3131
    unsigned long timeHeldP1E = 0;
89c4a3a6 sago007 2008-08-29 14:32 3132
    unsigned long timeHeldP1W = 0;
89c4a3a6 sago007 2008-08-29 14:32 3133
    unsigned long timeHeldP2N = 0;
89c4a3a6 sago007 2008-08-29 14:32 3134
    unsigned long timeHeldP2S = 0;
89c4a3a6 sago007 2008-08-29 14:32 3135
    unsigned long timeHeldP2E = 0;
89c4a3a6 sago007 2008-08-29 14:32 3136
    unsigned long timeHeldP2W = 0;
89c4a3a6 sago007 2008-08-29 14:32 3137
    unsigned long timesRepeatedP1N = 0;
89c4a3a6 sago007 2008-08-29 14:32 3138
    unsigned long timesRepeatedP1S = 0;
89c4a3a6 sago007 2008-08-29 14:32 3139
    unsigned long timesRepeatedP1E = 0;
89c4a3a6 sago007 2008-08-29 14:32 3140
    unsigned long timesRepeatedP1W = 0;
89c4a3a6 sago007 2008-08-29 14:32 3141
    unsigned long timesRepeatedP2N = 0;
89c4a3a6 sago007 2008-08-29 14:32 3142
    unsigned long timesRepeatedP2S = 0;
89c4a3a6 sago007 2008-08-29 14:32 3143
    unsigned long timesRepeatedP2E = 0;
89c4a3a6 sago007 2008-08-29 14:32 3144
    unsigned long timesRepeatedP2W = 0;
89c4a3a6 sago007 2008-08-29 14:32 3145
89c4a3a6 sago007 2008-08-29 14:32 3146
    theBallManeger = ballManeger();
89c4a3a6 sago007 2008-08-29 14:32 3147
    theExplosionManeger = explosionManeger();
89c4a3a6 sago007 2008-08-29 14:32 3148
89c4a3a6 sago007 2008-08-29 14:32 3149
//We now set the paths were we are saving, we are using the keyword __unix__ . I hope that all UNIX systems has a home folder
89c4a3a6 sago007 2008-08-29 14:32 3150
#if defined(__unix__)
89c4a3a6 sago007 2008-08-29 14:32 3151
    string home = getenv("HOME");
89c4a3a6 sago007 2008-08-29 14:32 3152
    string optionsPath = home+"/.gamesaves/blockattack/options.dat";
89c4a3a6 sago007 2008-08-29 14:32 3153
#elif defined(_WIN32)
89c4a3a6 sago007 2008-08-29 14:32 3154
    string home = getMyDocumentsPath();
89c4a3a6 sago007 2008-08-29 14:32 3155
    string optionsPath;
89c4a3a6 sago007 2008-08-29 14:32 3156
    if (&home!=NULL) //Null if no APPDATA dir exists (win 9x)
89c4a3a6 sago007 2008-08-29 14:32 3157
        optionsPath = home+"/My Games/blockattack/options.dat";
89c4a3a6 sago007 2008-08-29 14:32 3158
    else
89c4a3a6 sago007 2008-08-29 14:32 3159
        optionsPath = "options.dat";
89c4a3a6 sago007 2008-08-29 14:32 3160
#else
89c4a3a6 sago007 2008-08-29 14:32 3161
    string optionsPath = "options.dat";
89c4a3a6 sago007 2008-08-29 14:32 3162
#endif
89c4a3a6 sago007 2008-08-29 14:32 3163
89c4a3a6 sago007 2008-08-29 14:32 3164
#if defined(__unix__)
89c4a3a6 sago007 2008-08-29 14:32 3165
    stageClearSavePath = home+"/.gamesaves/blockattack/stageClear.SCsave";
89c4a3a6 sago007 2008-08-29 14:32 3166
    puzzleSavePath = home+"/.gamesaves/blockattack/puzzle.levels.save";
89c4a3a6 sago007 2008-08-29 14:32 3167
#elif defined(_WIN32)
89c4a3a6 sago007 2008-08-29 14:32 3168
    if (&home!=NULL)
89c4a3a6 sago007 2008-08-29 14:32 3169
    {
89c4a3a6 sago007 2008-08-29 14:32 3170
        stageClearSavePath = home+"/My Games/blockattack/stageClear.SCsave";
89c4a3a6 sago007 2008-08-29 14:32 3171
        puzzleSavePath = home+"/My Games/blockattack/puzzle.levels.save";
89c4a3a6 sago007 2008-08-29 14:32 3172
    }
89c4a3a6 sago007 2008-08-29 14:32 3173
    else
89c4a3a6 sago007 2008-08-29 14:32 3174
    {
89c4a3a6 sago007 2008-08-29 14:32 3175
        stageClearSavePath = "stageClear.SCsave";
89c4a3a6 sago007 2008-08-29 14:32 3176
        puzzleSavePath = "puzzle.levels.save";
89c4a3a6 sago007 2008-08-29 14:32 3177
    }
89c4a3a6 sago007 2008-08-29 14:32 3178
#else
89c4a3a6 sago007 2008-08-29 14:32 3179
    stageClearSavePath = "stageClear.SCsave";
89c4a3a6 sago007 2008-08-29 14:32 3180
    puzzleSavePath = "puzzle.levels.save";
89c4a3a6 sago007 2008-08-29 14:32 3181
#endif
89c4a3a6 sago007 2008-08-29 14:32 3182
    puzzleName="puzzle.levels";
89c4a3a6 sago007 2008-08-29 14:32 3183
89c4a3a6 sago007 2008-08-29 14:32 3184
    Uint8 *keys;
89c4a3a6 sago007 2008-08-29 14:32 3185
89c4a3a6 sago007 2008-08-29 14:32 3186
    //Init SDL
89c4a3a6 sago007 2008-08-29 14:32 3187
    if ( SDL_Init(SDL_INIT_VIDEO) < 0 )
89c4a3a6 sago007 2008-08-29 14:32 3188
    {
89c4a3a6 sago007 2008-08-29 14:32 3189
        cout << "Unable to init SDL: " << SDL_GetError() << endl;
89c4a3a6 sago007 2008-08-29 14:32 3190
        exit(1);
89c4a3a6 sago007 2008-08-29 14:32 3191
    }
89c4a3a6 sago007 2008-08-29 14:32 3192
    atexit(SDL_Quit);		//quits SDL when the game stops for some reason (like you hit exit or Esc)
89c4a3a6 sago007 2008-08-29 14:32 3193
    
89c4a3a6 sago007 2008-08-29 14:32 3194
    SDL_EventState(SDL_MOUSEMOTION, SDL_IGNORE);
89c4a3a6 sago007 2008-08-29 14:32 3195
89c4a3a6 sago007 2008-08-29 14:32 3196
    Joypad_init();    //Prepare the joysticks
89c4a3a6 sago007 2008-08-29 14:32 3197
89c4a3a6 sago007 2008-08-29 14:32 3198
    Joypad joypad1 = Joypad();    //Creates a joypad
89c4a3a6 sago007 2008-08-29 14:32 3199
    Joypad joypad2 = Joypad();    //Creates a joypad
89c4a3a6 sago007 2008-08-29 14:32 3200
89c4a3a6 sago007 2008-08-29 14:32 3201
    theTextManeger = textManeger();
89c4a3a6 sago007 2008-08-29 14:32 3202
89c4a3a6 sago007 2008-08-29 14:32 3203
    //Open Audio
89c4a3a6 sago007 2008-08-29 14:32 3204
    if (!NoSound) //If sound has not been disabled, then load the sound system
89c4a3a6 sago007 2008-08-29 14:32 3205
        if (Mix_OpenAudio(44100, AUDIO_S16SYS, 2, 2048) < 0)
89c4a3a6 sago007 2008-08-29 14:32 3206
        {
89c4a3a6 sago007 2008-08-29 14:32 3207
            cout << "Warning: Couldn't set 44100 Hz 16-bit audio - Reason: " << SDL_GetError() << endl
89c4a3a6 sago007 2008-08-29 14:32 3208
            << "Sound will be disabled!" << endl;
89c4a3a6 sago007 2008-08-29 14:32 3209
            NoSound = true; //Tries to stop all sound from playing/loading
89c4a3a6 sago007 2008-08-29 14:32 3210
        }
89c4a3a6 sago007 2008-08-29 14:32 3211
89c4a3a6 sago007 2008-08-29 14:32 3212
    SDL_WM_SetCaption("Block Attack - Rise of the Blocks", NULL); //Sets title line
89c4a3a6 sago007 2008-08-29 14:32 3213
    //Now sets the icon:
89c4a3a6 sago007 2008-08-29 14:32 3214
    SDL_Surface *icon = IMG_Load2((char*)"gfx/icon.png");
89c4a3a6 sago007 2008-08-29 14:32 3215
    SDL_WM_SetIcon(icon,NULL);
89c4a3a6 sago007 2008-08-29 14:32 3216
    //SDL_FreeSurface(icon);
89c4a3a6 sago007 2008-08-29 14:32 3217
89c4a3a6 sago007 2008-08-29 14:32 3218
    //Copyright notice:
89c4a3a6 sago007 2008-08-29 14:32 3219
    cout << "Block Attack - Rise of the Blocks (" << VERSION_NUMBER << ")" << endl << "http://blockattack.sf.net" << endl << "Copyright 2004-2007 Poul Sander" << endl <<
89c4a3a6 sago007 2008-08-29 14:32 3220
    "A SDL based game (see www.libsdl.org)" << endl <<
89c4a3a6 sago007 2008-08-29 14:32 3221
    "The game is availeble under the GPL, see COPYING for details." << endl;
89c4a3a6 sago007 2008-08-29 14:32 3222
#if defined(_WIN32)
89c4a3a6 sago007 2008-08-29 14:32 3223
    cout << "Windows build" << endl;
89c4a3a6 sago007 2008-08-29 14:32 3224
#elif defined(__linux__)
89c4a3a6 sago007 2008-08-29 14:32 3225
    cout << "Linux build" <<  endl;
89c4a3a6 sago007 2008-08-29 14:32 3226
#elif defined(__unix__)
89c4a3a6 sago007 2008-08-29 14:32 3227
    cout << "Unix build" <<  endl;
89c4a3a6 sago007 2008-08-29 14:32 3228
#else
89c4a3a6 sago007 2008-08-29 14:32 3229
    cout << "Alternative build" << endl;
89c4a3a6 sago007 2008-08-29 14:32 3230
#endif
89c4a3a6 sago007 2008-08-29 14:32 3231
    cout << "-------------------------------------------" << endl;
89c4a3a6 sago007 2008-08-29 14:32 3232
89c4a3a6 sago007 2008-08-29 14:32 3233
    keySettings[0].up= SDLK_UP;
89c4a3a6 sago007 2008-08-29 14:32 3234
    keySettings[0].down = SDLK_DOWN;
89c4a3a6 sago007 2008-08-29 14:32 3235
    keySettings[0].left = SDLK_LEFT;
89c4a3a6 sago007 2008-08-29 14:32 3236
    keySettings[0].right = SDLK_RIGHT;
89c4a3a6 sago007 2008-08-29 14:32 3237
    keySettings[0].change = SDLK_KP_ENTER;
89c4a3a6 sago007 2008-08-29 14:32 3238
    keySettings[0].push = SDLK_KP0;
89c4a3a6 sago007 2008-08-29 14:32 3239
89c4a3a6 sago007 2008-08-29 14:32 3240
    keySettings[2].up= SDLK_w;
89c4a3a6 sago007 2008-08-29 14:32 3241
    keySettings[2].down = SDLK_s;
89c4a3a6 sago007 2008-08-29 14:32 3242
    keySettings[2].left = SDLK_a;
89c4a3a6 sago007 2008-08-29 14:32 3243
    keySettings[2].right = SDLK_d;
89c4a3a6 sago007 2008-08-29 14:32 3244
    keySettings[2].change = SDLK_LCTRL;
89c4a3a6 sago007 2008-08-29 14:32 3245
    keySettings[2].push = SDLK_LSHIFT;
89c4a3a6 sago007 2008-08-29 14:32 3246
89c4a3a6 sago007 2008-08-29 14:32 3247
    player1keys=0;
89c4a3a6 sago007 2008-08-29 14:32 3248
    player2keys=2;
89c4a3a6 sago007 2008-08-29 14:32 3249
89c4a3a6 sago007 2008-08-29 14:32 3250
    strcpy(player1name, "Player 1                    \0");
89c4a3a6 sago007 2008-08-29 14:32 3251
    strcpy(player2name, "Player 2                    \0");
89c4a3a6 sago007 2008-08-29 14:32 3252
89c4a3a6 sago007 2008-08-29 14:32 3253
#ifdef NETWORK
89c4a3a6 sago007 2008-08-29 14:32 3254
    strcpy(serverAddress, "192.168.0.2                 \0");
89c4a3a6 sago007 2008-08-29 14:32 3255
#endif
89c4a3a6 sago007 2008-08-29 14:32 3256
89c4a3a6 sago007 2008-08-29 14:32 3257
    //Reads options from file:
89c4a3a6 sago007 2008-08-29 14:32 3258
    ifstream optionsFile(optionsPath.c_str(), ios::binary);
89c4a3a6 sago007 2008-08-29 14:32 3259
    if (optionsFile)
89c4a3a6 sago007 2008-08-29 14:32 3260
    {
89c4a3a6 sago007 2008-08-29 14:32 3261
        //reads data: xsize,ysize,fullescreen, player1keys, player2keys, MusicEnabled, SoundEnabled,player1name,player2name
89c4a3a6 sago007 2008-08-29 14:32 3262
        optionsFile.read(reinterpret_cast<char*>(&xsize), sizeof(int));
89c4a3a6 sago007 2008-08-29 14:32 3263
        optionsFile.read(reinterpret_cast<char*>(&ysize), sizeof(int));
89c4a3a6 sago007 2008-08-29 14:32 3264
        optionsFile.read(reinterpret_cast<char*>(&bFullscreen), sizeof(bool));
89c4a3a6 sago007 2008-08-29 14:32 3265
        optionsFile.read(reinterpret_cast<char*>(&keySettings[0].up), sizeof(SDLKey));
89c4a3a6 sago007 2008-08-29 14:32 3266
        optionsFile.read(reinterpret_cast<char*>(&keySettings[0].down), sizeof(SDLKey));
89c4a3a6 sago007 2008-08-29 14:32 3267
        optionsFile.read(reinterpret_cast<char*>(&keySettings[0].left), sizeof(SDLKey));
89c4a3a6 sago007 2008-08-29 14:32 3268
        optionsFile.read(reinterpret_cast<char*>(&keySettings[0].right), sizeof(SDLKey));
89c4a3a6 sago007 2008-08-29 14:32 3269
        optionsFile.read(reinterpret_cast<char*>(&keySettings[0].change), sizeof(SDLKey));
89c4a3a6 sago007 2008-08-29 14:32 3270
        optionsFile.read(reinterpret_cast<char*>(&keySettings[0].push), sizeof(SDLKey));
89c4a3a6 sago007 2008-08-29 14:32 3271
        optionsFile.read(reinterpret_cast<char*>(&keySettings[2].up), sizeof(SDLKey));
89c4a3a6 sago007 2008-08-29 14:32 3272
        optionsFile.read(reinterpret_cast<char*>(&keySettings[2].down), sizeof(SDLKey));
89c4a3a6 sago007 2008-08-29 14:32 3273
        optionsFile.read(reinterpret_cast<char*>(&keySettings[2].left), sizeof(SDLKey));
89c4a3a6 sago007 2008-08-29 14:32 3274
        optionsFile.read(reinterpret_cast<char*>(&keySettings[2].right), sizeof(SDLKey));
89c4a3a6 sago007 2008-08-29 14:32 3275
        optionsFile.read(reinterpret_cast<char*>(&keySettings[2].change), sizeof(SDLKey));
89c4a3a6 sago007 2008-08-29 14:32 3276
        optionsFile.read(reinterpret_cast<char*>(&keySettings[2].push), sizeof(SDLKey));
89c4a3a6 sago007 2008-08-29 14:32 3277
        optionsFile.read(reinterpret_cast<char*>(&MusicEnabled), sizeof(bool));
89c4a3a6 sago007 2008-08-29 14:32 3278
        optionsFile.read(reinterpret_cast<char*>(&SoundEnabled), sizeof(bool));
89c4a3a6 sago007 2008-08-29 14:32 3279
        optionsFile.read(player1name, 30*sizeof(char));
89c4a3a6 sago007 2008-08-29 14:32 3280
        optionsFile.read(player2name, 30*sizeof(char));
89c4a3a6 sago007 2008-08-29 14:32 3281
        //mouseplay?
89c4a3a6 sago007 2008-08-29 14:32 3282
        if (!optionsFile.eof())
89c4a3a6 sago007 2008-08-29 14:32 3283
        {
89c4a3a6 sago007 2008-08-29 14:32 3284
            optionsFile.read(reinterpret_cast<char*>(&mouseplay1), sizeof(bool));
89c4a3a6 sago007 2008-08-29 14:32 3285
            optionsFile.read(reinterpret_cast<char*>(&mouseplay2), sizeof(bool));
89c4a3a6 sago007 2008-08-29 14:32 3286
            optionsFile.read(reinterpret_cast<char*>(&joyplay1),sizeof(bool));
89c4a3a6 sago007 2008-08-29 14:32 3287
            optionsFile.read(reinterpret_cast<char*>(&joyplay2),sizeof(bool));
89c4a3a6 sago007 2008-08-29 14:32 3288
        }
89c4a3a6 sago007 2008-08-29 14:32 3289
        optionsFile.close();
89c4a3a6 sago007 2008-08-29 14:32 3290
        cout << "Data loaded from options file" << endl;
89c4a3a6 sago007 2008-08-29 14:32 3291
    }
89c4a3a6 sago007 2008-08-29 14:32 3292
    else
89c4a3a6 sago007 2008-08-29 14:32 3293
    {
89c4a3a6 sago007 2008-08-29 14:32 3294
        cout << "Unable to load options file, using default values" << endl;
89c4a3a6 sago007 2008-08-29 14:32 3295
    }
89c4a3a6 sago007 2008-08-29 14:32 3296
89c4a3a6 sago007 2008-08-29 14:32 3297
    xsize = 1024;
89c4a3a6 sago007 2008-08-29 14:32 3298
    ysize = 768;
89c4a3a6 sago007 2008-08-29 14:32 3299
    if (singlePuzzle)
89c4a3a6 sago007 2008-08-29 14:32 3300
    {
89c4a3a6 sago007 2008-08-29 14:32 3301
        xsize=300;
89c4a3a6 sago007 2008-08-29 14:32 3302
        ysize=600;
89c4a3a6 sago007 2008-08-29 14:32 3303
    }
89c4a3a6 sago007 2008-08-29 14:32 3304
    
89c4a3a6 sago007 2008-08-29 14:32 3305
    
89c4a3a6 sago007 2008-08-29 14:32 3306
    //Open video
89c4a3a6 sago007 2008-08-29 14:32 3307
    if ((bFullscreen)&&(!singlePuzzle)) screen=SDL_SetVideoMode(xsize,ysize,32,SDL_SWSURFACE|SDL_FULLSCREEN|SDL_ANYFORMAT);
89c4a3a6 sago007 2008-08-29 14:32 3308
    else screen=SDL_SetVideoMode(xsize,ysize,32,SDL_SWSURFACE|SDL_ANYFORMAT);
89c4a3a6 sago007 2008-08-29 14:32 3309
89c4a3a6 sago007 2008-08-29 14:32 3310
    if ( screen == NULL )
89c4a3a6 sago007 2008-08-29 14:32 3311
    {
89c4a3a6 sago007 2008-08-29 14:32 3312
        cout << "Unable to set " << xsize << "x" << ysize << " video: " << SDL_GetError() << endl;
89c4a3a6 sago007 2008-08-29 14:32 3313
        exit(1);
89c4a3a6 sago007 2008-08-29 14:32 3314
    }
89c4a3a6 sago007 2008-08-29 14:32 3315
89c4a3a6 sago007 2008-08-29 14:32 3316
    //Loading all images into memory
89c4a3a6 sago007 2008-08-29 14:32 3317
    InitImages();
89c4a3a6 sago007 2008-08-29 14:32 3318
89c4a3a6 sago007 2008-08-29 14:32 3319
    cout << "Images loaded" << endl;
89c4a3a6 sago007 2008-08-29 14:32 3320
89c4a3a6 sago007 2008-08-29 14:32 3321
89c4a3a6 sago007 2008-08-29 14:32 3322
    BlockGame theGame = BlockGame(50,100);			//creates game objects
89c4a3a6 sago007 2008-08-29 14:32 3323
    BlockGame theGame2 = BlockGame(xsize-500,100);
89c4a3a6 sago007 2008-08-29 14:32 3324
    if (singlePuzzle)
89c4a3a6 sago007 2008-08-29 14:32 3325
    {
89c4a3a6 sago007 2008-08-29 14:32 3326
        theGame.topy=0;
89c4a3a6 sago007 2008-08-29 14:32 3327
        theGame.topx=0;
89c4a3a6 sago007 2008-08-29 14:32 3328
        theGame2.topy=10000;
89c4a3a6 sago007 2008-08-29 14:32 3329
        theGame2.topx=10000;
89c4a3a6 sago007 2008-08-29 14:32 3330
    }
89c4a3a6 sago007 2008-08-29 14:32 3331
    theGame.DoPaintJob();			//Makes sure what there is something to paint
89c4a3a6 sago007 2008-08-29 14:32 3332
    theGame2.DoPaintJob();
89c4a3a6 sago007 2008-08-29 14:32 3333
    theGame.SetGameOver();		//sets the game over in the beginning
89c4a3a6 sago007 2008-08-29 14:32 3334
    theGame2.SetGameOver();
89c4a3a6 sago007 2008-08-29 14:32 3335
89c4a3a6 sago007 2008-08-29 14:32 3336
89c4a3a6 sago007 2008-08-29 14:32 3337
    //Takes names from file instead
89c4a3a6 sago007 2008-08-29 14:32 3338
    strcpy(theGame.name, player1name);
89c4a3a6 sago007 2008-08-29 14:32 3339
    strcpy(theGame2.name, player2name);
89c4a3a6 sago007 2008-08-29 14:32 3340
89c4a3a6 sago007 2008-08-29 14:32 3341
    //Keeps track of background;
89c4a3a6 sago007 2008-08-29 14:32 3342
    int nowTime=SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 3343
89c4a3a6 sago007 2008-08-29 14:32 3344
89c4a3a6 sago007 2008-08-29 14:32 3345
#ifdef NETWORK
89c4a3a6 sago007 2008-08-29 14:32 3346
    NetworkThing nt = NetworkThing();
89c4a3a6 sago007 2008-08-29 14:32 3347
    nt.setBGpointers(&theGame,&theGame2);
89c4a3a6 sago007 2008-08-29 14:32 3348
#endif
89c4a3a6 sago007 2008-08-29 14:32 3349
89c4a3a6 sago007 2008-08-29 14:32 3350
    if (singlePuzzle)
89c4a3a6 sago007 2008-08-29 14:32 3351
    {
89c4a3a6 sago007 2008-08-29 14:32 3352
        LoadPuzzleStages();
89c4a3a6 sago007 2008-08-29 14:32 3353
        theGame.NewPuzzleGame(singlePuzzleNr,0,0);
89c4a3a6 sago007 2008-08-29 14:32 3354
        showGame = true;
89c4a3a6 sago007 2008-08-29 14:32 3355
        vsMode = true;
89c4a3a6 sago007 2008-08-29 14:32 3356
    }
89c4a3a6 sago007 2008-08-29 14:32 3357
    //Draws everything to screen
89c4a3a6 sago007 2008-08-29 14:32 3358
    if (!editorMode)
89c4a3a6 sago007 2008-08-29 14:32 3359
        MakeBackground(xsize,ysize,theGame,theGame2);
89c4a3a6 sago007 2008-08-29 14:32 3360
    else
89c4a3a6 sago007 2008-08-29 14:32 3361
        MakeBackground(xsize,ysize,theGame);
89c4a3a6 sago007 2008-08-29 14:32 3362
    DrawIMG(background, screen, 0, 0);
89c4a3a6 sago007 2008-08-29 14:32 3363
    DrawEverything(xsize,ysize,theGame,theGame2);
89c4a3a6 sago007 2008-08-29 14:32 3364
    SDL_Flip(screen);
89c4a3a6 sago007 2008-08-29 14:32 3365
    //game loop
89c4a3a6 sago007 2008-08-29 14:32 3366
    int done = 0;
89c4a3a6 sago007 2008-08-29 14:32 3367
    cout << "Starting game loop" << endl;
89c4a3a6 sago007 2008-08-29 14:32 3368
    while (done == 0)
89c4a3a6 sago007 2008-08-29 14:32 3369
    {
89c4a3a6 sago007 2008-08-29 14:32 3370
        if (!(highPriority)) SDL_Delay(10);
89c4a3a6 sago007 2008-08-29 14:32 3371
89c4a3a6 sago007 2008-08-29 14:32 3372
        if ((standardBackground)&&(!editorMode))
89c4a3a6 sago007 2008-08-29 14:32 3373
        {
89c4a3a6 sago007 2008-08-29 14:32 3374
            MakeBackground(xsize,ysize,theGame,theGame2);
89c4a3a6 sago007 2008-08-29 14:32 3375
            DrawIMG(background, screen, 0, 0);
89c4a3a6 sago007 2008-08-29 14:32 3376
        }
89c4a3a6 sago007 2008-08-29 14:32 3377
89c4a3a6 sago007 2008-08-29 14:32 3378
        if ((standardBackground)&&(editorMode))
89c4a3a6 sago007 2008-08-29 14:32 3379
        {
89c4a3a6 sago007 2008-08-29 14:32 3380
            DrawIMG(backgroundImage, screen, 0, 0);
89c4a3a6 sago007 2008-08-29 14:32 3381
            MakeBackground(xsize,ysize,theGame);
89c4a3a6 sago007 2008-08-29 14:32 3382
            DrawIMG(background, screen, 0, 0);
89c4a3a6 sago007 2008-08-29 14:32 3383
        }
89c4a3a6 sago007 2008-08-29 14:32 3384
89c4a3a6 sago007 2008-08-29 14:32 3385
        //updates the balls and explosions:
89c4a3a6 sago007 2008-08-29 14:32 3386
        theBallManeger.update();
89c4a3a6 sago007 2008-08-29 14:32 3387
        theExplosionManeger.update();
89c4a3a6 sago007 2008-08-29 14:32 3388
        theTextManeger.update();
89c4a3a6 sago007 2008-08-29 14:32 3389
89c4a3a6 sago007 2008-08-29 14:32 3390
#ifdef NETWORK
89c4a3a6 sago007 2008-08-29 14:32 3391
        if (nt.isConnected())
89c4a3a6 sago007 2008-08-29 14:32 3392
        {
89c4a3a6 sago007 2008-08-29 14:32 3393
            nt.updateNetwork();
89c4a3a6 sago007 2008-08-29 14:32 3394
            networkActive = true;
89c4a3a6 sago007 2008-08-29 14:32 3395
            if (!nt.isConnectedToPeer())
89c4a3a6 sago007 2008-08-29 14:32 3396
                DrawIMG(background, screen, 0, 0);
89c4a3a6 sago007 2008-08-29 14:32 3397
        }
89c4a3a6 sago007 2008-08-29 14:32 3398
        else
89c4a3a6 sago007 2008-08-29 14:32 3399
            networkActive = false;
89c4a3a6 sago007 2008-08-29 14:32 3400
        if (nt.isConnectedToPeer())
89c4a3a6 sago007 2008-08-29 14:32 3401
        {
89c4a3a6 sago007 2008-08-29 14:32 3402
            networkPlay=true;
89c4a3a6 sago007 2008-08-29 14:32 3403
            if (!weWhereConnected) //We have just connected
89c4a3a6 sago007 2008-08-29 14:32 3404
            {
89c4a3a6 sago007 2008-08-29 14:32 3405
                theGame.NewVsGame(50,100,&theGame2);
89c4a3a6 sago007 2008-08-29 14:32 3406
                theGame.putStartBlocks(nt.theSeed);
89c4a3a6 sago007 2008-08-29 14:32 3407
                theGame2.playNetwork(xsize-500,100);
89c4a3a6 sago007 2008-08-29 14:32 3408
                nt.theGameHasStarted();
89c4a3a6 sago007 2008-08-29 14:32 3409
                DrawIMG(background, screen, 0, 0);
89c4a3a6 sago007 2008-08-29 14:32 3410
            }
89c4a3a6 sago007 2008-08-29 14:32 3411
            weWhereConnected = true;
89c4a3a6 sago007 2008-08-29 14:32 3412
        }
89c4a3a6 sago007 2008-08-29 14:32 3413
        else
89c4a3a6 sago007 2008-08-29 14:32 3414
        {
89c4a3a6 sago007 2008-08-29 14:32 3415
            networkPlay=false;
89c4a3a6 sago007 2008-08-29 14:32 3416
            weWhereConnected = false;
89c4a3a6 sago007 2008-08-29 14:32 3417
        }
89c4a3a6 sago007 2008-08-29 14:32 3418
#endif
89c4a3a6 sago007 2008-08-29 14:32 3419
89c4a3a6 sago007 2008-08-29 14:32 3420
        if (!bScreenLocked)
89c4a3a6 sago007 2008-08-29 14:32 3421
        {
89c4a3a6 sago007 2008-08-29 14:32 3422
            SDL_Event event;
89c4a3a6 sago007 2008-08-29 14:32 3423
89c4a3a6 sago007 2008-08-29 14:32 3424
            while ( SDL_PollEvent(&event) )
89c4a3a6 sago007 2008-08-29 14:32 3425
            {
89c4a3a6 sago007 2008-08-29 14:32 3426
                if ( event.type == SDL_QUIT )  {
89c4a3a6 sago007 2008-08-29 14:32 3427
                    done = 1;
89c4a3a6 sago007 2008-08-29 14:32 3428
                }
89c4a3a6 sago007 2008-08-29 14:32 3429
89c4a3a6 sago007 2008-08-29 14:32 3430
                if ( event.type == SDL_KEYDOWN )
89c4a3a6 sago007 2008-08-29 14:32 3431
                {
89c4a3a6 sago007 2008-08-29 14:32 3432
                    if ( event.key.keysym.sym == SDLK_ESCAPE )
89c4a3a6 sago007 2008-08-29 14:32 3433
                    {
89c4a3a6 sago007 2008-08-29 14:32 3434
                        if (showHighscores)
89c4a3a6 sago007 2008-08-29 14:32 3435
                        {
89c4a3a6 sago007 2008-08-29 14:32 3436
                            showHighscores = false;
89c4a3a6 sago007 2008-08-29 14:32 3437
                        }
89c4a3a6 sago007 2008-08-29 14:32 3438
                        else
89c4a3a6 sago007 2008-08-29 14:32 3439
                            if (showOptions)
89c4a3a6 sago007 2008-08-29 14:32 3440
                            {
89c4a3a6 sago007 2008-08-29 14:32 3441
                                showOptions = false;
89c4a3a6 sago007 2008-08-29 14:32 3442
                            }
89c4a3a6 sago007 2008-08-29 14:32 3443
                            else
89c4a3a6 sago007 2008-08-29 14:32 3444
                                done=1;
89c4a3a6 sago007 2008-08-29 14:32 3445
                        DrawIMG(background, screen, 0, 0);
89c4a3a6 sago007 2008-08-29 14:32 3446
89c4a3a6 sago007 2008-08-29 14:32 3447
                    }
89c4a3a6 sago007 2008-08-29 14:32 3448
                    if ((!editorMode)&&(!editorModeTest)&&(!theGame.AI_Enabled))
89c4a3a6 sago007 2008-08-29 14:32 3449
                    {
89c4a3a6 sago007 2008-08-29 14:32 3450
                        //player1:
89c4a3a6 sago007 2008-08-29 14:32 3451
                        if ( event.key.keysym.sym == keySettings[player1keys].up ) {
89c4a3a6 sago007 2008-08-29 14:32 3452
                            theGame.MoveCursor('N');
89c4a3a6 sago007 2008-08-29 14:32 3453
                            repeatingP1N=true;
89c4a3a6 sago007 2008-08-29 14:32 3454
                            timeHeldP1N=SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 3455
                            timesRepeatedP1N=0;
89c4a3a6 sago007 2008-08-29 14:32 3456
                        }
89c4a3a6 sago007 2008-08-29 14:32 3457
                        if ( event.key.keysym.sym == keySettings[player1keys].down ) {
89c4a3a6 sago007 2008-08-29 14:32 3458
                            theGame.MoveCursor('S');
89c4a3a6 sago007 2008-08-29 14:32 3459
                            repeatingP1S=true;
89c4a3a6 sago007 2008-08-29 14:32 3460
                            timeHeldP1S=SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 3461
                            timesRepeatedP1S=0;
89c4a3a6 sago007 2008-08-29 14:32 3462
                        }
89c4a3a6 sago007 2008-08-29 14:32 3463
                        if ( (event.key.keysym.sym == keySettings[player1keys].left) && (showGame) ) {
89c4a3a6 sago007 2008-08-29 14:32 3464
                            theGame.MoveCursor('W');
89c4a3a6 sago007 2008-08-29 14:32 3465
                            repeatingP1W=true;
89c4a3a6 sago007 2008-08-29 14:32 3466
                            timeHeldP1W=SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 3467
                            timesRepeatedP1W=0;
89c4a3a6 sago007 2008-08-29 14:32 3468
                        }
89c4a3a6 sago007 2008-08-29 14:32 3469
                        if ( (event.key.keysym.sym == keySettings[player1keys].right) && (showGame) ) {
89c4a3a6 sago007 2008-08-29 14:32 3470
                            theGame.MoveCursor('E');
89c4a3a6 sago007 2008-08-29 14:32 3471
                            repeatingP1E=true;
89c4a3a6 sago007 2008-08-29 14:32 3472
                            timeHeldP1E=SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 3473
                            timesRepeatedP1E=0;
89c4a3a6 sago007 2008-08-29 14:32 3474
                        }
89c4a3a6 sago007 2008-08-29 14:32 3475
                        if ( event.key.keysym.sym == keySettings[player1keys].push ) {
89c4a3a6 sago007 2008-08-29 14:32 3476
                            theGame.PushLine();
89c4a3a6 sago007 2008-08-29 14:32 3477
                        }
89c4a3a6 sago007 2008-08-29 14:32 3478
                        if ( event.key.keysym.sym == keySettings[player1keys].change ) {
89c4a3a6 sago007 2008-08-29 14:32 3479
                            theGame.SwitchAtCursor();
89c4a3a6 sago007 2008-08-29 14:32 3480
                        }
89c4a3a6 sago007 2008-08-29 14:32 3481
                    }
89c4a3a6 sago007 2008-08-29 14:32 3482
                    if (!editorMode && !theGame2.AI_Enabled)
89c4a3a6 sago007 2008-08-29 14:32 3483
                    {
89c4a3a6 sago007 2008-08-29 14:32 3484
                        //player2:
89c4a3a6 sago007 2008-08-29 14:32 3485
                        if ( event.key.keysym.sym == keySettings[player2keys].up ) {
89c4a3a6 sago007 2008-08-29 14:32 3486
                            theGame2.MoveCursor('N');
89c4a3a6 sago007 2008-08-29 14:32 3487
                            repeatingP2N=true;
89c4a3a6 sago007 2008-08-29 14:32 3488
                            timeHeldP2N=SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 3489
                            timesRepeatedP2N=0;
89c4a3a6 sago007 2008-08-29 14:32 3490
                        }
89c4a3a6 sago007 2008-08-29 14:32 3491
                        if ( event.key.keysym.sym == keySettings[player2keys].down ) {
89c4a3a6 sago007 2008-08-29 14:32 3492
                            theGame2.MoveCursor('S');
89c4a3a6 sago007 2008-08-29 14:32 3493
                            repeatingP2S=true;
89c4a3a6 sago007 2008-08-29 14:32 3494
                            timeHeldP2S=SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 3495
                            timesRepeatedP2S=0;
89c4a3a6 sago007 2008-08-29 14:32 3496
                        }
89c4a3a6 sago007 2008-08-29 14:32 3497
                        if ( (event.key.keysym.sym == keySettings[player2keys].left) && (showGame) ) {
89c4a3a6 sago007 2008-08-29 14:32 3498
                            theGame2.MoveCursor('W');
89c4a3a6 sago007 2008-08-29 14:32 3499
                            repeatingP2W=true;
89c4a3a6 sago007 2008-08-29 14:32 3500
                            timeHeldP2W=SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 3501
                            timesRepeatedP2W=0;
89c4a3a6 sago007 2008-08-29 14:32 3502
                        }
89c4a3a6 sago007 2008-08-29 14:32 3503
                        if ( (event.key.keysym.sym == keySettings[player2keys].right) && (showGame) ) {
89c4a3a6 sago007 2008-08-29 14:32 3504
                            theGame2.MoveCursor('E');
89c4a3a6 sago007 2008-08-29 14:32 3505
                            repeatingP2E=true;
89c4a3a6 sago007 2008-08-29 14:32 3506
                            timeHeldP2E=SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 3507
                            timesRepeatedP2E=0;
89c4a3a6 sago007 2008-08-29 14:32 3508
                        }
89c4a3a6 sago007 2008-08-29 14:32 3509
                        if ( event.key.keysym.sym == keySettings[player2keys].push ) {
89c4a3a6 sago007 2008-08-29 14:32 3510
                            theGame2.PushLine();
89c4a3a6 sago007 2008-08-29 14:32 3511
                        }
89c4a3a6 sago007 2008-08-29 14:32 3512
                        if ( event.key.keysym.sym == keySettings[player2keys].change ) {
89c4a3a6 sago007 2008-08-29 14:32 3513
                            theGame2.SwitchAtCursor();
89c4a3a6 sago007 2008-08-29 14:32 3514
                        }
89c4a3a6 sago007 2008-08-29 14:32 3515
                    }
89c4a3a6 sago007 2008-08-29 14:32 3516
                    //common:
89c4a3a6 sago007 2008-08-29 14:32 3517
                    if ((!singlePuzzle)&&(!editorMode))
89c4a3a6 sago007 2008-08-29 14:32 3518
                    {
89c4a3a6 sago007 2008-08-29 14:32 3519
                        if ( ((event.key.keysym.sym == SDLK_LEFT)||(event.key.keysym.sym == SDLK_RIGHT)) && (showHighscores) ) {
89c4a3a6 sago007 2008-08-29 14:32 3520
                            showEndless = !showEndless;
89c4a3a6 sago007 2008-08-29 14:32 3521
                        }
89c4a3a6 sago007 2008-08-29 14:32 3522
89c4a3a6 sago007 2008-08-29 14:32 3523
                        if ( event.key.keysym.sym == SDLK_F2 ) {
89c4a3a6 sago007 2008-08-29 14:32 3524
                            if ((!showHighscores)&&(!showOptions)&&(!networkActive)){
89c4a3a6 sago007 2008-08-29 14:32 3525
                                theGame.NewGame(50,100);
89c4a3a6 sago007 2008-08-29 14:32 3526
                                theGame.timetrial = false;
89c4a3a6 sago007 2008-08-29 14:32 3527
                                theGame.putStartBlocks();
89c4a3a6 sago007 2008-08-29 14:32 3528
                                closeAllMenus();
89c4a3a6 sago007 2008-08-29 14:32 3529
                                twoPlayers =false;
89c4a3a6 sago007 2008-08-29 14:32 3530
                                theGame2.SetGameOver();
89c4a3a6 sago007 2008-08-29 14:32 3531
                                showGame = true;
89c4a3a6 sago007 2008-08-29 14:32 3532
                                vsMode = false;
89c4a3a6 sago007 2008-08-29 14:32 3533
                            }}
89c4a3a6 sago007 2008-08-29 14:32 3534
                        if ( event.key.keysym.sym == SDLK_F3 ) {
89c4a3a6 sago007 2008-08-29 14:32 3535
                            if ((!showHighscores)&&(!showOptions)&&(!networkActive)){
89c4a3a6 sago007 2008-08-29 14:32 3536
                                theGame.NewGame(50,100);
89c4a3a6 sago007 2008-08-29 14:32 3537
                                theGame.timetrial = true;
89c4a3a6 sago007 2008-08-29 14:32 3538
                                theGame.putStartBlocks();
89c4a3a6 sago007 2008-08-29 14:32 3539
                                closeAllMenus();
89c4a3a6 sago007 2008-08-29 14:32 3540
                                twoPlayers =false;
89c4a3a6 sago007 2008-08-29 14:32 3541
                                theGame2.SetGameOver();
89c4a3a6 sago007 2008-08-29 14:32 3542
                                showGame = true;
89c4a3a6 sago007 2008-08-29 14:32 3543
                                vsMode = false;
89c4a3a6 sago007 2008-08-29 14:32 3544
                            }}
89c4a3a6 sago007 2008-08-29 14:32 3545
                        if ( event.key.keysym.sym == SDLK_F5 )
89c4a3a6 sago007 2008-08-29 14:32 3546
                        {
89c4a3a6 sago007 2008-08-29 14:32 3547
                            if ((!showHighscores)&&(!showOptions)&&(!networkActive))
89c4a3a6 sago007 2008-08-29 14:32 3548
                            {
89c4a3a6 sago007 2008-08-29 14:32 3549
                                int myLevel = StageLevelSelect();
89c4a3a6 sago007 2008-08-29 14:32 3550
                                theGame.NewStageGame(myLevel,50,100);
89c4a3a6 sago007 2008-08-29 14:32 3551
                                MakeBackground(xsize,ysize,theGame,theGame2);
89c4a3a6 sago007 2008-08-29 14:32 3552
                                DrawIMG(background, screen, 0, 0);
89c4a3a6 sago007 2008-08-29 14:32 3553
                                closeAllMenus();
89c4a3a6 sago007 2008-08-29 14:32 3554
                                twoPlayers =false;
89c4a3a6 sago007 2008-08-29 14:32 3555
                                theGame2.SetGameOver();
89c4a3a6 sago007 2008-08-29 14:32 3556
                                showGame = true;
89c4a3a6 sago007 2008-08-29 14:32 3557
                                vsMode = false;
89c4a3a6 sago007 2008-08-29 14:32 3558
                            }
89c4a3a6 sago007 2008-08-29 14:32 3559
                        }
89c4a3a6 sago007 2008-08-29 14:32 3560
                        if ( event.key.keysym.sym == SDLK_F6 )
89c4a3a6 sago007 2008-08-29 14:32 3561
                        {
89c4a3a6 sago007 2008-08-29 14:32 3562
                            if ((!showHighscores)&&(!showOptions)&&(!networkActive))
89c4a3a6 sago007 2008-08-29 14:32 3563
                            {
89c4a3a6 sago007 2008-08-29 14:32 3564
                                theGame.NewVsGame(50,100,&theGame2);
89c4a3a6 sago007 2008-08-29 14:32 3565
                                theGame2.NewVsGame(xsize-500,100,&theGame);
89c4a3a6 sago007 2008-08-29 14:32 3566
                                closeAllMenus();
89c4a3a6 sago007 2008-08-29 14:32 3567
                                vsMode = true;
89c4a3a6 sago007 2008-08-29 14:32 3568
                                theGame.setGameSpeed(player1Speed);
89c4a3a6 sago007 2008-08-29 14:32 3569
                                theGame2.setGameSpeed(player2Speed);
89c4a3a6 sago007 2008-08-29 14:32 3570
                                theGame.setHandicap(player1handicap);
89c4a3a6 sago007 2008-08-29 14:32 3571
                                theGame2.setHandicap(player2handicap);
89c4a3a6 sago007 2008-08-29 14:32 3572
                                theGame.AI_Enabled = player1AI;
89c4a3a6 sago007 2008-08-29 14:32 3573
                                theGame2.AI_Enabled = player2AI;
89c4a3a6 sago007 2008-08-29 14:32 3574
                                theGame.setAIlevel(player1AIlevel);
89c4a3a6 sago007 2008-08-29 14:32 3575
                                theGame2.setAIlevel(player2AIlevel);
89c4a3a6 sago007 2008-08-29 14:32 3576
                                int theTime = time(0);
89c4a3a6 sago007 2008-08-29 14:32 3577
                                theGame.putStartBlocks(theTime);
89c4a3a6 sago007 2008-08-29 14:32 3578
                                theGame2.putStartBlocks(theTime);
89c4a3a6 sago007 2008-08-29 14:32 3579
                                twoPlayers = true;
89c4a3a6 sago007 2008-08-29 14:32 3580
                            }
89c4a3a6 sago007 2008-08-29 14:32 3581
                        }
89c4a3a6 sago007 2008-08-29 14:32 3582
                        if ( event.key.keysym.sym == SDLK_F4 )
89c4a3a6 sago007 2008-08-29 14:32 3583
                        {
89c4a3a6 sago007 2008-08-29 14:32 3584
                            if ((!showHighscores)&&(!showOptions)&&(!networkActive))
89c4a3a6 sago007 2008-08-29 14:32 3585
                            {
89c4a3a6 sago007 2008-08-29 14:32 3586
                                theGame.NewGame(50,100);
89c4a3a6 sago007 2008-08-29 14:32 3587
                                theGame2.NewGame(xsize-500,100);
89c4a3a6 sago007 2008-08-29 14:32 3588
                                theGame.timetrial = true;
89c4a3a6 sago007 2008-08-29 14:32 3589
                                theGame2.timetrial = true;
89c4a3a6 sago007 2008-08-29 14:32 3590
                                int theTime = time(0);
89c4a3a6 sago007 2008-08-29 14:32 3591
                                theGame.putStartBlocks(theTime);
89c4a3a6 sago007 2008-08-29 14:32 3592
                                theGame2.putStartBlocks(theTime);
89c4a3a6 sago007 2008-08-29 14:32 3593
                                closeAllMenus();
89c4a3a6 sago007 2008-08-29 14:32 3594
                                twoPlayers = true;
89c4a3a6 sago007 2008-08-29 14:32 3595
                                theGame.setGameSpeed(player1Speed);
89c4a3a6 sago007 2008-08-29 14:32 3596
                                theGame2.setGameSpeed(player2Speed);
89c4a3a6 sago007 2008-08-29 14:32 3597
                                theGame.setHandicap(player1handicap);
89c4a3a6 sago007 2008-08-29 14:32 3598
                                theGame2.setHandicap(player2handicap);
89c4a3a6 sago007 2008-08-29 14:32 3599
                                theGame.AI_Enabled = player1AI;
89c4a3a6 sago007 2008-08-29 14:32 3600
                                theGame2.AI_Enabled = player2AI;
89c4a3a6 sago007 2008-08-29 14:32 3601
                                theGame.setAIlevel(player1AIlevel);
89c4a3a6 sago007 2008-08-29 14:32 3602
                                theGame2.setAIlevel(player2AIlevel);
89c4a3a6 sago007 2008-08-29 14:32 3603
                            }
89c4a3a6 sago007 2008-08-29 14:32 3604
                        }
89c4a3a6 sago007 2008-08-29 14:32 3605
                        if ( event.key.keysym.sym == SDLK_F7 )
89c4a3a6 sago007 2008-08-29 14:32 3606
                        {
89c4a3a6 sago007 2008-08-29 14:32 3607
                            if ((!showHighscores)&&(!showOptions)&&(!networkActive))
89c4a3a6 sago007 2008-08-29 14:32 3608
                            {
89c4a3a6 sago007 2008-08-29 14:32 3609
                                int myLevel = PuzzleLevelSelect();
89c4a3a6 sago007 2008-08-29 14:32 3610
                                theGame.NewPuzzleGame(myLevel,50,100);
89c4a3a6 sago007 2008-08-29 14:32 3611
                                MakeBackground(xsize,ysize,theGame,theGame2);
89c4a3a6 sago007 2008-08-29 14:32 3612
                                DrawIMG(background, screen, 0, 0);
89c4a3a6 sago007 2008-08-29 14:32 3613
                                closeAllMenus();
89c4a3a6 sago007 2008-08-29 14:32 3614
                                twoPlayers = false;
89c4a3a6 sago007 2008-08-29 14:32 3615
                                theGame2.SetGameOver();
89c4a3a6 sago007 2008-08-29 14:32 3616
                                showGame = true;
89c4a3a6 sago007 2008-08-29 14:32 3617
                                vsMode = true;
89c4a3a6 sago007 2008-08-29 14:32 3618
                            }
89c4a3a6 sago007 2008-08-29 14:32 3619
                        }
89c4a3a6 sago007 2008-08-29 14:32 3620
                        if ( event.key.keysym.sym == SDLK_F8 )
89c4a3a6 sago007 2008-08-29 14:32 3621
                        {
89c4a3a6 sago007 2008-08-29 14:32 3622
                            if ((!showGame)&&(!showOptions)&&(!networkActive))
89c4a3a6 sago007 2008-08-29 14:32 3623
                                if (!showHighscores)
89c4a3a6 sago007 2008-08-29 14:32 3624
                                {
89c4a3a6 sago007 2008-08-29 14:32 3625
                                    closeAllMenus();
89c4a3a6 sago007 2008-08-29 14:32 3626
                                    showHighscores = true;
89c4a3a6 sago007 2008-08-29 14:32 3627
                                    MakeBackground(xsize,ysize,theGame,theGame2);
89c4a3a6 sago007 2008-08-29 14:32 3628
                                    DrawIMG(background, screen, 0, 0);
89c4a3a6 sago007 2008-08-29 14:32 3629
                                    closeAllMenus();
89c4a3a6 sago007 2008-08-29 14:32 3630
                                    theGame2.SetGameOver();
89c4a3a6 sago007 2008-08-29 14:32 3631
                                }
89c4a3a6 sago007 2008-08-29 14:32 3632
                                else
89c4a3a6 sago007 2008-08-29 14:32 3633
                                {
89c4a3a6 sago007 2008-08-29 14:32 3634
                                    showEndless = !showEndless;
89c4a3a6 sago007 2008-08-29 14:32 3635
                                }
89c4a3a6 sago007 2008-08-29 14:32 3636
                        }
89c4a3a6 sago007 2008-08-29 14:32 3637
                        if ( event.key.keysym.sym == SDLK_F9 ) {
89c4a3a6 sago007 2008-08-29 14:32 3638
                            writeScreenShot();
89c4a3a6 sago007 2008-08-29 14:32 3639
                        }
89c4a3a6 sago007 2008-08-29 14:32 3640
                        if ( event.key.keysym.sym == SDLK_F11 ) {
89c4a3a6 sago007 2008-08-29 14:32 3641
                            /*This is the test place, place function to test here*/
89c4a3a6 sago007 2008-08-29 14:32 3642
89c4a3a6 sago007 2008-08-29 14:32 3643
                            //theGame.CreateGreyGarbage();
89c4a3a6 sago007 2008-08-29 14:32 3644
                            char mitNavn[30];
89c4a3a6 sago007 2008-08-29 14:32 3645
                            SelectThemeDialogbox(300,400,mitNavn);
89c4a3a6 sago007 2008-08-29 14:32 3646
                        } //F11
89c4a3a6 sago007 2008-08-29 14:32 3647
                    }
89c4a3a6 sago007 2008-08-29 14:32 3648
                    if ( event.key.keysym.sym == SDLK_F12 ) {
89c4a3a6 sago007 2008-08-29 14:32 3649
                        done=1;
89c4a3a6 sago007 2008-08-29 14:32 3650
                    }
89c4a3a6 sago007 2008-08-29 14:32 3651
                }
89c4a3a6 sago007 2008-08-29 14:32 3652
            } //while event PollEvent - read keys
89c4a3a6 sago007 2008-08-29 14:32 3653
89c4a3a6 sago007 2008-08-29 14:32 3654
            /**********************************************************************
89c4a3a6 sago007 2008-08-29 14:32 3655
            **************************** Repeating start **************************
89c4a3a6 sago007 2008-08-29 14:32 3656
            **********************************************************************/
89c4a3a6 sago007 2008-08-29 14:32 3657
89c4a3a6 sago007 2008-08-29 14:32 3658
            keys = SDL_GetKeyState(NULL);
89c4a3a6 sago007 2008-08-29 14:32 3659
//Also the joysticks:
89c4a3a6 sago007 2008-08-29 14:32 3660
//Repeating not implemented
89c4a3a6 sago007 2008-08-29 14:32 3661
89c4a3a6 sago007 2008-08-29 14:32 3662
//Player 1 start
89c4a3a6 sago007 2008-08-29 14:32 3663
            if (!(keys[keySettings[player1keys].up]))
89c4a3a6 sago007 2008-08-29 14:32 3664
                repeatingP1N=false;
89c4a3a6 sago007 2008-08-29 14:32 3665
            while ((repeatingP1N)&&(keys[keySettings[player1keys].up])&&(SDL_GetTicks()>timeHeldP1N+timesRepeatedP1N*repeatDelay+startRepeat))
89c4a3a6 sago007 2008-08-29 14:32 3666
            {
89c4a3a6 sago007 2008-08-29 14:32 3667
                theGame.MoveCursor('N');
89c4a3a6 sago007 2008-08-29 14:32 3668
                timesRepeatedP1N++;
89c4a3a6 sago007 2008-08-29 14:32 3669
            }
89c4a3a6 sago007 2008-08-29 14:32 3670
89c4a3a6 sago007 2008-08-29 14:32 3671
            if (!(keys[keySettings[player1keys].down]))
89c4a3a6 sago007 2008-08-29 14:32 3672
                repeatingP1S=false;
89c4a3a6 sago007 2008-08-29 14:32 3673
            while ((repeatingP1S)&&(keys[keySettings[player1keys].down])&&(SDL_GetTicks()>timeHeldP1S+timesRepeatedP1S*repeatDelay+startRepeat))
89c4a3a6 sago007 2008-08-29 14:32 3674
            {
89c4a3a6 sago007 2008-08-29 14:32 3675
                theGame.MoveCursor('S');
89c4a3a6 sago007 2008-08-29 14:32 3676
                timesRepeatedP1S++;
89c4a3a6 sago007 2008-08-29 14:32 3677
            }
89c4a3a6 sago007 2008-08-29 14:32 3678
89c4a3a6 sago007 2008-08-29 14:32 3679
            if (!(keys[keySettings[player1keys].left]))
89c4a3a6 sago007 2008-08-29 14:32 3680
                repeatingP1W=false;
89c4a3a6 sago007 2008-08-29 14:32 3681
            while ((repeatingP1W)&&(keys[keySettings[player1keys].left])&&(SDL_GetTicks()>timeHeldP1W+timesRepeatedP1W*repeatDelay+startRepeat))
89c4a3a6 sago007 2008-08-29 14:32 3682
            {
89c4a3a6 sago007 2008-08-29 14:32 3683
                timesRepeatedP1W++;
89c4a3a6 sago007 2008-08-29 14:32 3684
                theGame.MoveCursor('W');
89c4a3a6 sago007 2008-08-29 14:32 3685
            }
89c4a3a6 sago007 2008-08-29 14:32 3686
89c4a3a6 sago007 2008-08-29 14:32 3687
            if (!(keys[keySettings[player1keys].right]))
89c4a3a6 sago007 2008-08-29 14:32 3688
                repeatingP1E=false;
89c4a3a6 sago007 2008-08-29 14:32 3689
            while ((repeatingP1E)&&(keys[keySettings[player1keys].right])&&(SDL_GetTicks()>timeHeldP1E+timesRepeatedP1E*repeatDelay+startRepeat))
89c4a3a6 sago007 2008-08-29 14:32 3690
            {
89c4a3a6 sago007 2008-08-29 14:32 3691
                timesRepeatedP1E++;
89c4a3a6 sago007 2008-08-29 14:32 3692
                theGame.MoveCursor('E');
89c4a3a6 sago007 2008-08-29 14:32 3693
            }
89c4a3a6 sago007 2008-08-29 14:32 3694
89c4a3a6 sago007 2008-08-29 14:32 3695
//Player 1 end
89c4a3a6 sago007 2008-08-29 14:32 3696
89c4a3a6 sago007 2008-08-29 14:32 3697
//Player 2 start
89c4a3a6 sago007 2008-08-29 14:32 3698
            if (!(keys[keySettings[player2keys].up]))
89c4a3a6 sago007 2008-08-29 14:32 3699
                repeatingP2N=false;
89c4a3a6 sago007 2008-08-29 14:32 3700
            while ((repeatingP2N)&&(keys[keySettings[player2keys].up])&&(SDL_GetTicks()>timeHeldP2N+timesRepeatedP2N*repeatDelay+startRepeat))
89c4a3a6 sago007 2008-08-29 14:32 3701
            {
89c4a3a6 sago007 2008-08-29 14:32 3702
                theGame2.MoveCursor('N');
89c4a3a6 sago007 2008-08-29 14:32 3703
                timesRepeatedP2N++;
89c4a3a6 sago007 2008-08-29 14:32 3704
            }
89c4a3a6 sago007 2008-08-29 14:32 3705
89c4a3a6 sago007 2008-08-29 14:32 3706
            if (!(keys[keySettings[player2keys].down]))
89c4a3a6 sago007 2008-08-29 14:32 3707
                repeatingP2S=false;
89c4a3a6 sago007 2008-08-29 14:32 3708
            while ((repeatingP2S)&&(keys[keySettings[player2keys].down])&&(SDL_GetTicks()>timeHeldP2S+timesRepeatedP2S*repeatDelay+startRepeat))
89c4a3a6 sago007 2008-08-29 14:32 3709
            {
89c4a3a6 sago007 2008-08-29 14:32 3710
                theGame2.MoveCursor('S');
89c4a3a6 sago007 2008-08-29 14:32 3711
                timesRepeatedP2S++;
89c4a3a6 sago007 2008-08-29 14:32 3712
            }
89c4a3a6 sago007 2008-08-29 14:32 3713
89c4a3a6 sago007 2008-08-29 14:32 3714
            if (!(keys[keySettings[player2keys].left]))
89c4a3a6 sago007 2008-08-29 14:32 3715
                repeatingP2W=false;
89c4a3a6 sago007 2008-08-29 14:32 3716
            while ((repeatingP2W)&&(keys[keySettings[player2keys].left])&&(SDL_GetTicks()>timeHeldP2W+timesRepeatedP2W*repeatDelay+startRepeat))
89c4a3a6 sago007 2008-08-29 14:32 3717
            {
89c4a3a6 sago007 2008-08-29 14:32 3718
                theGame2.MoveCursor('W');
89c4a3a6 sago007 2008-08-29 14:32 3719
                timesRepeatedP2W++;
89c4a3a6 sago007 2008-08-29 14:32 3720
            }
89c4a3a6 sago007 2008-08-29 14:32 3721
89c4a3a6 sago007 2008-08-29 14:32 3722
            if (!(keys[keySettings[player2keys].right]))
89c4a3a6 sago007 2008-08-29 14:32 3723
                repeatingP2E=false;
89c4a3a6 sago007 2008-08-29 14:32 3724
            while ((repeatingP2E)&&(keys[keySettings[player2keys].right])&&(SDL_GetTicks()>timeHeldP2E+timesRepeatedP2E*repeatDelay+startRepeat))
89c4a3a6 sago007 2008-08-29 14:32 3725
            {
89c4a3a6 sago007 2008-08-29 14:32 3726
                theGame2.MoveCursor('E');
89c4a3a6 sago007 2008-08-29 14:32 3727
                timesRepeatedP2E++;
89c4a3a6 sago007 2008-08-29 14:32 3728
            }
89c4a3a6 sago007 2008-08-29 14:32 3729
89c4a3a6 sago007 2008-08-29 14:32 3730
//Player 2 end
89c4a3a6 sago007 2008-08-29 14:32 3731
89c4a3a6 sago007 2008-08-29 14:32 3732
            /**********************************************************************
89c4a3a6 sago007 2008-08-29 14:32 3733
            **************************** Repeating end ****************************
89c4a3a6 sago007 2008-08-29 14:32 3734
            **********************************************************************/
89c4a3a6 sago007 2008-08-29 14:32 3735
89c4a3a6 sago007 2008-08-29 14:32 3736
            /**********************************************************************
89c4a3a6 sago007 2008-08-29 14:32 3737
            ***************************** Joypad start ****************************
89c4a3a6 sago007 2008-08-29 14:32 3738
            **********************************************************************/
89c4a3a6 sago007 2008-08-29 14:32 3739
89c4a3a6 sago007 2008-08-29 14:32 3740
            if (joyplay1||joyplay2)
89c4a3a6 sago007 2008-08-29 14:32 3741
            {
89c4a3a6 sago007 2008-08-29 14:32 3742
                if (joypad1.working && !theGame.AI_Enabled)
89c4a3a6 sago007 2008-08-29 14:32 3743
                    if (joyplay1)
89c4a3a6 sago007 2008-08-29 14:32 3744
                    {
89c4a3a6 sago007 2008-08-29 14:32 3745
                        joypad1.update();
89c4a3a6 sago007 2008-08-29 14:32 3746
                        if (joypad1.up)
89c4a3a6 sago007 2008-08-29 14:32 3747
                        {
89c4a3a6 sago007 2008-08-29 14:32 3748
                            theGame.MoveCursor('N');
89c4a3a6 sago007 2008-08-29 14:32 3749
                            repeatingP1N=true;
89c4a3a6 sago007 2008-08-29 14:32 3750
                            timeHeldP1N=SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 3751
                            timesRepeatedP1N=0;
89c4a3a6 sago007 2008-08-29 14:32 3752
                        }
89c4a3a6 sago007 2008-08-29 14:32 3753
                        if (joypad1.down)
89c4a3a6 sago007 2008-08-29 14:32 3754
                        {
89c4a3a6 sago007 2008-08-29 14:32 3755
                            theGame.MoveCursor('S');
89c4a3a6 sago007 2008-08-29 14:32 3756
                            repeatingP1S=true;
89c4a3a6 sago007 2008-08-29 14:32 3757
                            timeHeldP1S=SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 3758
                            timesRepeatedP1S=0;
89c4a3a6 sago007 2008-08-29 14:32 3759
                        }
89c4a3a6 sago007 2008-08-29 14:32 3760
                        if (joypad1.left)
89c4a3a6 sago007 2008-08-29 14:32 3761
                        {
89c4a3a6 sago007 2008-08-29 14:32 3762
                            theGame.MoveCursor('W');
89c4a3a6 sago007 2008-08-29 14:32 3763
                            repeatingP1W=true;
89c4a3a6 sago007 2008-08-29 14:32 3764
                            timeHeldP1W=SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 3765
                            timesRepeatedP1W=0;
89c4a3a6 sago007 2008-08-29 14:32 3766
                        }
89c4a3a6 sago007 2008-08-29 14:32 3767
                        if (joypad1.right)
89c4a3a6 sago007 2008-08-29 14:32 3768
                        {
89c4a3a6 sago007 2008-08-29 14:32 3769
                            theGame.MoveCursor('E');
89c4a3a6 sago007 2008-08-29 14:32 3770
                            repeatingP1E=true;
89c4a3a6 sago007 2008-08-29 14:32 3771
                            timeHeldP1E=SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 3772
                            timesRepeatedP1E=0;
89c4a3a6 sago007 2008-08-29 14:32 3773
                        }
89c4a3a6 sago007 2008-08-29 14:32 3774
                        if (joypad1.but1)
89c4a3a6 sago007 2008-08-29 14:32 3775
                            theGame.SwitchAtCursor();
89c4a3a6 sago007 2008-08-29 14:32 3776
                        if (joypad1.but2)
89c4a3a6 sago007 2008-08-29 14:32 3777
                            theGame.PushLine();
89c4a3a6 sago007 2008-08-29 14:32 3778
                    }
89c4a3a6 sago007 2008-08-29 14:32 3779
                    else
89c4a3a6 sago007 2008-08-29 14:32 3780
                    {
89c4a3a6 sago007 2008-08-29 14:32 3781
                        joypad1.update();
89c4a3a6 sago007 2008-08-29 14:32 3782
                        if (joypad1.up)
89c4a3a6 sago007 2008-08-29 14:32 3783
                        {
89c4a3a6 sago007 2008-08-29 14:32 3784
                            theGame2.MoveCursor('N');
89c4a3a6 sago007 2008-08-29 14:32 3785
                            repeatingP2N=true;
89c4a3a6 sago007 2008-08-29 14:32 3786
                            timeHeldP2N=SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 3787
                            timesRepeatedP2N=0;
89c4a3a6 sago007 2008-08-29 14:32 3788
                        }
89c4a3a6 sago007 2008-08-29 14:32 3789
                        if (joypad1.down)
89c4a3a6 sago007 2008-08-29 14:32 3790
                        {
89c4a3a6 sago007 2008-08-29 14:32 3791
                            theGame2.MoveCursor('S');
89c4a3a6 sago007 2008-08-29 14:32 3792
                            repeatingP2S=true;
89c4a3a6 sago007 2008-08-29 14:32 3793
                            timeHeldP2S=SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 3794
                            timesRepeatedP2S=0;
89c4a3a6 sago007 2008-08-29 14:32 3795
                        }
89c4a3a6 sago007 2008-08-29 14:32 3796
                        if (joypad1.left)
89c4a3a6 sago007 2008-08-29 14:32 3797
                        {
89c4a3a6 sago007 2008-08-29 14:32 3798
                            theGame2.MoveCursor('W');
89c4a3a6 sago007 2008-08-29 14:32 3799
                            repeatingP2W=true;
89c4a3a6 sago007 2008-08-29 14:32 3800
                            timeHeldP2W=SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 3801
                            timesRepeatedP2W=0;
89c4a3a6 sago007 2008-08-29 14:32 3802
                        }
89c4a3a6 sago007 2008-08-29 14:32 3803
                        if (joypad1.right)
89c4a3a6 sago007 2008-08-29 14:32 3804
                        {
89c4a3a6 sago007 2008-08-29 14:32 3805
                            theGame2.MoveCursor('E');
89c4a3a6 sago007 2008-08-29 14:32 3806
                            repeatingP2E=true;
89c4a3a6 sago007 2008-08-29 14:32 3807
                            timeHeldP2E=SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 3808
                            timesRepeatedP2E=0;
89c4a3a6 sago007 2008-08-29 14:32 3809
                        }
89c4a3a6 sago007 2008-08-29 14:32 3810
                        if (joypad1.but1)
89c4a3a6 sago007 2008-08-29 14:32 3811
                            theGame2.SwitchAtCursor();
89c4a3a6 sago007 2008-08-29 14:32 3812
                        if (joypad1.but2)
89c4a3a6 sago007 2008-08-29 14:32 3813
                            theGame2.PushLine();
89c4a3a6 sago007 2008-08-29 14:32 3814
                    }
89c4a3a6 sago007 2008-08-29 14:32 3815
                if (joypad2.working && !theGame2.AI_Enabled)
89c4a3a6 sago007 2008-08-29 14:32 3816
                    if (!joyplay2)
89c4a3a6 sago007 2008-08-29 14:32 3817
                    {
89c4a3a6 sago007 2008-08-29 14:32 3818
                        joypad2.update();
89c4a3a6 sago007 2008-08-29 14:32 3819
                        if (joypad2.up)
89c4a3a6 sago007 2008-08-29 14:32 3820
                        {
89c4a3a6 sago007 2008-08-29 14:32 3821
                            theGame.MoveCursor('N');
89c4a3a6 sago007 2008-08-29 14:32 3822
                            repeatingP1N=true;
89c4a3a6 sago007 2008-08-29 14:32 3823
                            timeHeldP1N=SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 3824
                            timesRepeatedP1N=0;
89c4a3a6 sago007 2008-08-29 14:32 3825
                        }
89c4a3a6 sago007 2008-08-29 14:32 3826
                        if (joypad2.down)
89c4a3a6 sago007 2008-08-29 14:32 3827
                        {
89c4a3a6 sago007 2008-08-29 14:32 3828
                            theGame.MoveCursor('S');
89c4a3a6 sago007 2008-08-29 14:32 3829
                            repeatingP1S=true;
89c4a3a6 sago007 2008-08-29 14:32 3830
                            timeHeldP1S=SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 3831
                            timesRepeatedP1S=0;
89c4a3a6 sago007 2008-08-29 14:32 3832
                        }
89c4a3a6 sago007 2008-08-29 14:32 3833
                        if (joypad2.left)
89c4a3a6 sago007 2008-08-29 14:32 3834
                        {
89c4a3a6 sago007 2008-08-29 14:32 3835
                            theGame.MoveCursor('W');
89c4a3a6 sago007 2008-08-29 14:32 3836
                            repeatingP1W=true;
89c4a3a6 sago007 2008-08-29 14:32 3837
                            timeHeldP1W=SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 3838
                            timesRepeatedP1W=0;
89c4a3a6 sago007 2008-08-29 14:32 3839
                        }
89c4a3a6 sago007 2008-08-29 14:32 3840
                        if (joypad2.right)
89c4a3a6 sago007 2008-08-29 14:32 3841
                        {
89c4a3a6 sago007 2008-08-29 14:32 3842
                            theGame.MoveCursor('E');
89c4a3a6 sago007 2008-08-29 14:32 3843
                            repeatingP1E=true;
89c4a3a6 sago007 2008-08-29 14:32 3844
                            timeHeldP1E=SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 3845
                            timesRepeatedP1E=0;
89c4a3a6 sago007 2008-08-29 14:32 3846
                        }
89c4a3a6 sago007 2008-08-29 14:32 3847
                        if (joypad2.but1)
89c4a3a6 sago007 2008-08-29 14:32 3848
                            theGame.SwitchAtCursor();
89c4a3a6 sago007 2008-08-29 14:32 3849
                        if (joypad2.but2)
89c4a3a6 sago007 2008-08-29 14:32 3850
                            theGame.PushLine();
89c4a3a6 sago007 2008-08-29 14:32 3851
                    }
89c4a3a6 sago007 2008-08-29 14:32 3852
                    else
89c4a3a6 sago007 2008-08-29 14:32 3853
                    {
89c4a3a6 sago007 2008-08-29 14:32 3854
                        joypad2.update();
89c4a3a6 sago007 2008-08-29 14:32 3855
                        if (joypad2.up)
89c4a3a6 sago007 2008-08-29 14:32 3856
                        {
89c4a3a6 sago007 2008-08-29 14:32 3857
                            theGame2.MoveCursor('N');
89c4a3a6 sago007 2008-08-29 14:32 3858
                            repeatingP2N=true;
89c4a3a6 sago007 2008-08-29 14:32 3859
                            timeHeldP2N=SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 3860
                            timesRepeatedP2N=0;
89c4a3a6 sago007 2008-08-29 14:32 3861
                        }
89c4a3a6 sago007 2008-08-29 14:32 3862
                        if (joypad2.down)
89c4a3a6 sago007 2008-08-29 14:32 3863
                        {
89c4a3a6 sago007 2008-08-29 14:32 3864
                            theGame2.MoveCursor('S');
89c4a3a6 sago007 2008-08-29 14:32 3865
                            repeatingP2S=true;
89c4a3a6 sago007 2008-08-29 14:32 3866
                            timeHeldP2S=SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 3867
                            timesRepeatedP2S=0;
89c4a3a6 sago007 2008-08-29 14:32 3868
                        }
89c4a3a6 sago007 2008-08-29 14:32 3869
                        if (joypad2.left)
89c4a3a6 sago007 2008-08-29 14:32 3870
                        {
89c4a3a6 sago007 2008-08-29 14:32 3871
                            theGame2.MoveCursor('W');
89c4a3a6 sago007 2008-08-29 14:32 3872
                            repeatingP2W=true;
89c4a3a6 sago007 2008-08-29 14:32 3873
                            timeHeldP2W=SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 3874
                            timesRepeatedP2W=0;
89c4a3a6 sago007 2008-08-29 14:32 3875
                        }
89c4a3a6 sago007 2008-08-29 14:32 3876
                        if (joypad2.right)
89c4a3a6 sago007 2008-08-29 14:32 3877
                        {
89c4a3a6 sago007 2008-08-29 14:32 3878
                            theGame2.MoveCursor('E');
89c4a3a6 sago007 2008-08-29 14:32 3879
                            repeatingP2E=true;
89c4a3a6 sago007 2008-08-29 14:32 3880
                            timeHeldP2E=SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 3881
                            timesRepeatedP2E=0;
89c4a3a6 sago007 2008-08-29 14:32 3882
                        }
89c4a3a6 sago007 2008-08-29 14:32 3883
                        if (joypad2.but1)
89c4a3a6 sago007 2008-08-29 14:32 3884
                            theGame2.SwitchAtCursor();
89c4a3a6 sago007 2008-08-29 14:32 3885
                        if (joypad2.but2)
89c4a3a6 sago007 2008-08-29 14:32 3886
                            theGame2.PushLine();
89c4a3a6 sago007 2008-08-29 14:32 3887
                    }
89c4a3a6 sago007 2008-08-29 14:32 3888
            }
89c4a3a6 sago007 2008-08-29 14:32 3889
89c4a3a6 sago007 2008-08-29 14:32 3890
            /**********************************************************************
89c4a3a6 sago007 2008-08-29 14:32 3891
            ***************************** Joypad end ******************************
89c4a3a6 sago007 2008-08-29 14:32 3892
            **********************************************************************/
89c4a3a6 sago007 2008-08-29 14:32 3893
89c4a3a6 sago007 2008-08-29 14:32 3894
89c4a3a6 sago007 2008-08-29 14:32 3895
            keys = SDL_GetKeyState(NULL);
89c4a3a6 sago007 2008-08-29 14:32 3896
89c4a3a6 sago007 2008-08-29 14:32 3897
            SDL_GetMouseState(&mousex,&mousey);
89c4a3a6 sago007 2008-08-29 14:32 3898
89c4a3a6 sago007 2008-08-29 14:32 3899
            /********************************************************************
89c4a3a6 sago007 2008-08-29 14:32 3900
            **************** Here comes mouse play ******************************
89c4a3a6 sago007 2008-08-29 14:32 3901
            ********************************************************************/
89c4a3a6 sago007 2008-08-29 14:32 3902
89c4a3a6 sago007 2008-08-29 14:32 3903
            if ((mouseplay1)&&((!editorMode)&&(!theGame.AI_Enabled)||(editorModeTest))) //player 1
89c4a3a6 sago007 2008-08-29 14:32 3904
                if ((mousex > 50)&&(mousey>100)&&(mousex<50+300)&&(mousey<100+600))
89c4a3a6 sago007 2008-08-29 14:32 3905
                {
89c4a3a6 sago007 2008-08-29 14:32 3906
                    int yLine, xLine;
89c4a3a6 sago007 2008-08-29 14:32 3907
                    yLine = ((100+600)-(mousey-100+theGame.pixels))/50;
89c4a3a6 sago007 2008-08-29 14:32 3908
                    xLine = (mousex-50+25)/50;
89c4a3a6 sago007 2008-08-29 14:32 3909
                    yLine-=2;
89c4a3a6 sago007 2008-08-29 14:32 3910
                    xLine-=1;
89c4a3a6 sago007 2008-08-29 14:32 3911
                    if ((yLine>10)&&(theGame.TowerHeight<12))
89c4a3a6 sago007 2008-08-29 14:32 3912
                        yLine=10;
89c4a3a6 sago007 2008-08-29 14:32 3913
                    if (((theGame.pixels==50)||(theGame.pixels==0)) && (yLine>11))
89c4a3a6 sago007 2008-08-29 14:32 3914
                        yLine=11;
89c4a3a6 sago007 2008-08-29 14:32 3915
                    if (yLine<0)
89c4a3a6 sago007 2008-08-29 14:32 3916
                        yLine=0;
89c4a3a6 sago007 2008-08-29 14:32 3917
                    if (xLine<0)
89c4a3a6 sago007 2008-08-29 14:32 3918
                        xLine=0;
89c4a3a6 sago007 2008-08-29 14:32 3919
                    if (xLine>4)
89c4a3a6 sago007 2008-08-29 14:32 3920
                        xLine=4;
89c4a3a6 sago007 2008-08-29 14:32 3921
                    theGame.cursorx=xLine;
89c4a3a6 sago007 2008-08-29 14:32 3922
                    theGame.cursory=yLine;
89c4a3a6 sago007 2008-08-29 14:32 3923
                }
89c4a3a6 sago007 2008-08-29 14:32 3924
89c4a3a6 sago007 2008-08-29 14:32 3925
            if ((mouseplay2)&&(!editorMode)&&(!theGame2.AI_Enabled)) //player 2
89c4a3a6 sago007 2008-08-29 14:32 3926
                if ((mousex > xsize-500)&&(mousey>100)&&(mousex<xsize-500+300)&&(mousey<100+600))
89c4a3a6 sago007 2008-08-29 14:32 3927
                {
89c4a3a6 sago007 2008-08-29 14:32 3928
                    int yLine, xLine;
89c4a3a6 sago007 2008-08-29 14:32 3929
                    yLine = ((100+600)-(mousey-100+theGame2.pixels))/50;
89c4a3a6 sago007 2008-08-29 14:32 3930
                    xLine = (mousex-(xsize-500)+25)/50;
89c4a3a6 sago007 2008-08-29 14:32 3931
                    yLine-=2;
89c4a3a6 sago007 2008-08-29 14:32 3932
                    xLine-=1;
89c4a3a6 sago007 2008-08-29 14:32 3933
                    if ((yLine>10)&&(theGame2.TowerHeight<12))
89c4a3a6 sago007 2008-08-29 14:32 3934
                        yLine=10;
89c4a3a6 sago007 2008-08-29 14:32 3935
                    if (((theGame2.pixels==50)||(theGame2.pixels==0)) && (yLine>11))
89c4a3a6 sago007 2008-08-29 14:32 3936
                        yLine=11;
89c4a3a6 sago007 2008-08-29 14:32 3937
                    if (yLine<0)
89c4a3a6 sago007 2008-08-29 14:32 3938
                        yLine=0;
89c4a3a6 sago007 2008-08-29 14:32 3939
                    if (xLine<0)
89c4a3a6 sago007 2008-08-29 14:32 3940
                        xLine=0;
89c4a3a6 sago007 2008-08-29 14:32 3941
                    if (xLine>4)
89c4a3a6 sago007 2008-08-29 14:32 3942
                        xLine=4;
89c4a3a6 sago007 2008-08-29 14:32 3943
                    theGame2.cursorx=xLine;
89c4a3a6 sago007 2008-08-29 14:32 3944
                    theGame2.cursory=yLine;
89c4a3a6 sago007 2008-08-29 14:32 3945
                }
89c4a3a6 sago007 2008-08-29 14:32 3946
89c4a3a6 sago007 2008-08-29 14:32 3947
            /********************************************************************
89c4a3a6 sago007 2008-08-29 14:32 3948
            **************** Here ends mouse play *******************************
89c4a3a6 sago007 2008-08-29 14:32 3949
            ********************************************************************/
89c4a3a6 sago007 2008-08-29 14:32 3950
89c4a3a6 sago007 2008-08-29 14:32 3951
            // If the mouse button is released, make bMouseUp equal true
89c4a3a6 sago007 2008-08-29 14:32 3952
            if (!SDL_GetMouseState(NULL, NULL)&SDL_BUTTON(1))
89c4a3a6 sago007 2008-08-29 14:32 3953
            {
89c4a3a6 sago007 2008-08-29 14:32 3954
                bMouseUp=true;
89c4a3a6 sago007 2008-08-29 14:32 3955
            }
89c4a3a6 sago007 2008-08-29 14:32 3956
89c4a3a6 sago007 2008-08-29 14:32 3957
            // If the mouse button 2 is released, make bMouseUp2 equal true
89c4a3a6 sago007 2008-08-29 14:32 3958
            if ((SDL_GetMouseState(NULL, NULL)&SDL_BUTTON(3))!=SDL_BUTTON(3))
89c4a3a6 sago007 2008-08-29 14:32 3959
            {
89c4a3a6 sago007 2008-08-29 14:32 3960
                bMouseUp2=true;
89c4a3a6 sago007 2008-08-29 14:32 3961
            }
89c4a3a6 sago007 2008-08-29 14:32 3962
89c4a3a6 sago007 2008-08-29 14:32 3963
            if ((!singlePuzzle)&&(!editorMode))
89c4a3a6 sago007 2008-08-29 14:32 3964
            {
89c4a3a6 sago007 2008-08-29 14:32 3965
                //read mouse events
89c4a3a6 sago007 2008-08-29 14:32 3966
                if (SDL_GetMouseState(NULL,NULL)&SDL_BUTTON(1) && bMouseUp)
89c4a3a6 sago007 2008-08-29 14:32 3967
                {
89c4a3a6 sago007 2008-08-29 14:32 3968
                    bMouseUp = false;
89c4a3a6 sago007 2008-08-29 14:32 3969
                    DrawIMG(background, screen, 0, 0);
89c4a3a6 sago007 2008-08-29 14:32 3970
                    if ((0<mousex) && (mousex<120) && (0<mousey) && (mousey<40) &&(!networkActive) )
89c4a3a6 sago007 2008-08-29 14:32 3971
                    {
89c4a3a6 sago007 2008-08-29 14:32 3972
                        //New game clicked
89c4a3a6 sago007 2008-08-29 14:32 3973
                        bool state = (!bNewGameOpen);
89c4a3a6 sago007 2008-08-29 14:32 3974
                        closeAllMenus();
89c4a3a6 sago007 2008-08-29 14:32 3975
                        bNewGameOpen = state; //theGame.NewGame(50,100);
89c4a3a6 sago007 2008-08-29 14:32 3976
                        showOptions = false;
89c4a3a6 sago007 2008-08-29 14:32 3977
                        showHighscores = false;
89c4a3a6 sago007 2008-08-29 14:32 3978
                    }
89c4a3a6 sago007 2008-08-29 14:32 3979
                    else
89c4a3a6 sago007 2008-08-29 14:32 3980
#ifdef NETWORK
89c4a3a6 sago007 2008-08-29 14:32 3981
                        if ((0<mousex) && (mousex<120) && (0<mousey) && (mousey<40) &&(networkActive))
89c4a3a6 sago007 2008-08-29 14:32 3982
                        {
89c4a3a6 sago007 2008-08-29 14:32 3983
                            //Disconnect clicked!
89c4a3a6 sago007 2008-08-29 14:32 3984
                            cout << "Disconnect clicked!" << endl;
89c4a3a6 sago007 2008-08-29 14:32 3985
                            nt.ntDisconnect();
89c4a3a6 sago007 2008-08-29 14:32 3986
                        }
89c4a3a6 sago007 2008-08-29 14:32 3987
                        else
89c4a3a6 sago007 2008-08-29 14:32 3988
#endif
89c4a3a6 sago007 2008-08-29 14:32 3989
                            if ((0<mousex) && (mousex<120) && (40<mousey) && (mousey<80) && (bNewGameOpen) &&(!networkActive))
89c4a3a6 sago007 2008-08-29 14:32 3990
                            {
89c4a3a6 sago007 2008-08-29 14:32 3991
                                //1player
89c4a3a6 sago007 2008-08-29 14:32 3992
                                b1playerOpen = (!b1playerOpen);
89c4a3a6 sago007 2008-08-29 14:32 3993
                                b2playersOpen = false;
89c4a3a6 sago007 2008-08-29 14:32 3994
#ifdef NETWORK
89c4a3a6 sago007 2008-08-29 14:32 3995
                                bNetworkOpen = false;
89c4a3a6 sago007 2008-08-29 14:32 3996
#endif
89c4a3a6 sago007 2008-08-29 14:32 3997
                            }
89c4a3a6 sago007 2008-08-29 14:32 3998
                            else
89c4a3a6 sago007 2008-08-29 14:32 3999
                                if ((0<mousex) && (mousex<120) && (80<mousey) && (mousey<120) && (bNewGameOpen) &&(!networkActive))
89c4a3a6 sago007 2008-08-29 14:32 4000
                                {
89c4a3a6 sago007 2008-08-29 14:32 4001
                                    //2player
89c4a3a6 sago007 2008-08-29 14:32 4002
                                    b2playersOpen = (!b2playersOpen);
89c4a3a6 sago007 2008-08-29 14:32 4003
                                    b1playerOpen = false;
89c4a3a6 sago007 2008-08-29 14:32 4004
#ifdef NETWORK
89c4a3a6 sago007 2008-08-29 14:32 4005
                                    bNetworkOpen = false;
89c4a3a6 sago007 2008-08-29 14:32 4006
#endif
89c4a3a6 sago007 2008-08-29 14:32 4007
                                }
89c4a3a6 sago007 2008-08-29 14:32 4008
#ifdef NETWORK
89c4a3a6 sago007 2008-08-29 14:32 4009
                                else
89c4a3a6 sago007 2008-08-29 14:32 4010
                                    if ((0<mousex) && (mousex<120) && (120<mousey) && (mousey<160) && (bNewGameOpen) &&(!networkActive))
89c4a3a6 sago007 2008-08-29 14:32 4011
                                    {
89c4a3a6 sago007 2008-08-29 14:32 4012
                                        //Network
89c4a3a6 sago007 2008-08-29 14:32 4013
                                        b1playerOpen = false;
89c4a3a6 sago007 2008-08-29 14:32 4014
                                        b2playersOpen = false;
89c4a3a6 sago007 2008-08-29 14:32 4015
                                        bNetworkOpen = (!bNetworkOpen);
89c4a3a6 sago007 2008-08-29 14:32 4016
                                    }
89c4a3a6 sago007 2008-08-29 14:32 4017
#endif
89c4a3a6 sago007 2008-08-29 14:32 4018
                                    else
89c4a3a6 sago007 2008-08-29 14:32 4019
                                        if ((120<mousex) && (mousex<240) && (40<mousey) && (mousey<80) && (b1playerOpen) &&(!networkActive))
89c4a3a6 sago007 2008-08-29 14:32 4020
                                        {
89c4a3a6 sago007 2008-08-29 14:32 4021
                                            //1 player - endless
89c4a3a6 sago007 2008-08-29 14:32 4022
                                            theGame.NewGame(50,100);
89c4a3a6 sago007 2008-08-29 14:32 4023
                                            theGame.putStartBlocks();
89c4a3a6 sago007 2008-08-29 14:32 4024
                                            bNewGameOpen = false;
89c4a3a6 sago007 2008-08-29 14:32 4025
                                            b1playerOpen = false;
89c4a3a6 sago007 2008-08-29 14:32 4026
                                            twoPlayers =false;
89c4a3a6 sago007 2008-08-29 14:32 4027
                                            theGame2.SetGameOver();
89c4a3a6 sago007 2008-08-29 14:32 4028
                                            showGame = true;
89c4a3a6 sago007 2008-08-29 14:32 4029
                                        }
89c4a3a6 sago007 2008-08-29 14:32 4030
                                        else
89c4a3a6 sago007 2008-08-29 14:32 4031
                                            if ((120<mousex) && (mousex<240) && (80<mousey) && (mousey<120) && (b1playerOpen) &&(!networkActive) )
89c4a3a6 sago007 2008-08-29 14:32 4032
                                            {
89c4a3a6 sago007 2008-08-29 14:32 4033
                                                //1 player - time trial
89c4a3a6 sago007 2008-08-29 14:32 4034
                                                theGame.NewGame(50,100);
89c4a3a6 sago007 2008-08-29 14:32 4035
                                                theGame.timetrial=true;
89c4a3a6 sago007 2008-08-29 14:32 4036
                                                theGame.putStartBlocks();
89c4a3a6 sago007 2008-08-29 14:32 4037
                                                bNewGameOpen = false;
89c4a3a6 sago007 2008-08-29 14:32 4038
                                                b1playerOpen = false;
89c4a3a6 sago007 2008-08-29 14:32 4039
                                                twoPlayers =false;
89c4a3a6 sago007 2008-08-29 14:32 4040
                                                theGame2.SetGameOver();
89c4a3a6 sago007 2008-08-29 14:32 4041
                                                showGame = true;
89c4a3a6 sago007 2008-08-29 14:32 4042
                                            }
89c4a3a6 sago007 2008-08-29 14:32 4043
                                            else
89c4a3a6 sago007 2008-08-29 14:32 4044
                                                if ((120<mousex) && (mousex<240) && (120<mousey) && (mousey<160) && (b1playerOpen)&&(!networkActive) )
89c4a3a6 sago007 2008-08-29 14:32 4045
                                                {
89c4a3a6 sago007 2008-08-29 14:32 4046
                                                    //1 player - stage clear
89c4a3a6 sago007 2008-08-29 14:32 4047
                                                    bNewGameOpen = false;
89c4a3a6 sago007 2008-08-29 14:32 4048
                                                    b1playerOpen = false;
89c4a3a6 sago007 2008-08-29 14:32 4049
                                                    int myLevel = StageLevelSelect();
89c4a3a6 sago007 2008-08-29 14:32 4050
                                                    theGame.NewStageGame(myLevel,50,100);
89c4a3a6 sago007 2008-08-29 14:32 4051
                                                    MakeBackground(xsize,ysize,theGame,theGame2);
89c4a3a6 sago007 2008-08-29 14:32 4052
                                                    DrawIMG(background, screen, 0, 0);
89c4a3a6 sago007 2008-08-29 14:32 4053
                                                    twoPlayers =false;
89c4a3a6 sago007 2008-08-29 14:32 4054
                                                    theGame2.SetGameOver();
89c4a3a6 sago007 2008-08-29 14:32 4055
                                                    showGame = true;
89c4a3a6 sago007 2008-08-29 14:32 4056
                                                    vsMode = false;
89c4a3a6 sago007 2008-08-29 14:32 4057
                                                }
89c4a3a6 sago007 2008-08-29 14:32 4058
                                                else
89c4a3a6 sago007 2008-08-29 14:32 4059
                                                    if ((120<mousex) && (mousex<240) && (160<mousey) && (mousey<200) && (b1playerOpen))
89c4a3a6 sago007 2008-08-29 14:32 4060
                                                    {
89c4a3a6 sago007 2008-08-29 14:32 4061
                                                        //1 player - puzzle
89c4a3a6 sago007 2008-08-29 14:32 4062
                                                        bNewGameOpen = false;
89c4a3a6 sago007 2008-08-29 14:32 4063
                                                        b1playerOpen = false;
89c4a3a6 sago007 2008-08-29 14:32 4064
                                                        int myLevel = PuzzleLevelSelect();
89c4a3a6 sago007 2008-08-29 14:32 4065
                                                        theGame.NewPuzzleGame(myLevel,50,100);
89c4a3a6 sago007 2008-08-29 14:32 4066
                                                        MakeBackground(xsize,ysize,theGame,theGame2);
89c4a3a6 sago007 2008-08-29 14:32 4067
                                                        DrawIMG(background, screen, 0, 0);
89c4a3a6 sago007 2008-08-29 14:32 4068
                                                        twoPlayers =false;
89c4a3a6 sago007 2008-08-29 14:32 4069
                                                        theGame2.SetGameOver();
89c4a3a6 sago007 2008-08-29 14:32 4070
                                                        showGame = true;
89c4a3a6 sago007 2008-08-29 14:32 4071
                                                        vsMode = false;
89c4a3a6 sago007 2008-08-29 14:32 4072
                                                    }
89c4a3a6 sago007 2008-08-29 14:32 4073
                                                    else
89c4a3a6 sago007 2008-08-29 14:32 4074
                                                        if ((120<mousex) && (mousex<240) && (200<mousey) && (mousey<240) && (b1playerOpen))
89c4a3a6 sago007 2008-08-29 14:32 4075
                                                        {
89c4a3a6 sago007 2008-08-29 14:32 4076
                                                            //1 player - Vs mode
89c4a3a6 sago007 2008-08-29 14:32 4077
                                                            bNewGameOpen = false;
89c4a3a6 sago007 2008-08-29 14:32 4078
                                                            b1playerOpen = false;
89c4a3a6 sago007 2008-08-29 14:32 4079
                                                            int theAIlevel = startSingleVs();
89c4a3a6 sago007 2008-08-29 14:32 4080
                                                            theGame.NewVsGame(50,100,&theGame2);
89c4a3a6 sago007 2008-08-29 14:32 4081
                                                            theGame2.NewVsGame(xsize-500,100,&theGame);
89c4a3a6 sago007 2008-08-29 14:32 4082
                                                            MakeBackground(xsize,ysize,theGame,theGame2);
89c4a3a6 sago007 2008-08-29 14:32 4083
                                                            DrawIMG(background, screen, 0, 0);
89c4a3a6 sago007 2008-08-29 14:32 4084
                                                            twoPlayers = true; //Single player, but AI plays
89c4a3a6 sago007 2008-08-29 14:32 4085
                                                            showGame = true;
89c4a3a6 sago007 2008-08-29 14:32 4086
                                                            vsMode = true;
89c4a3a6 sago007 2008-08-29 14:32 4087
                                                            theGame2.AI_Enabled=true; //Of course we need an AI
89c4a3a6 sago007 2008-08-29 14:32 4088
                                                            theGame2.setAIlevel((Uint8)theAIlevel);
89c4a3a6 sago007 2008-08-29 14:32 4089
                                                            int theTime = time(0);
89c4a3a6 sago007 2008-08-29 14:32 4090
                                                            theGame.putStartBlocks(theTime);
89c4a3a6 sago007 2008-08-29 14:32 4091
                                                            theGame2.putStartBlocks(theTime);
89c4a3a6 sago007 2008-08-29 14:32 4092
                                                        }
89c4a3a6 sago007 2008-08-29 14:32 4093
                                                        else
89c4a3a6 sago007 2008-08-29 14:32 4094
                                                            if ((120<mousex) && (mousex<240) && (80<mousey) && (mousey<120) && (b2playersOpen))
89c4a3a6 sago007 2008-08-29 14:32 4095
                                                            {
89c4a3a6 sago007 2008-08-29 14:32 4096
                                                                //2 player - time trial
89c4a3a6 sago007 2008-08-29 14:32 4097
                                                                theGame.NewGame(50,100);
89c4a3a6 sago007 2008-08-29 14:32 4098
                                                                theGame.timetrial=true;
89c4a3a6 sago007 2008-08-29 14:32 4099
                                                                bNewGameOpen = false;
89c4a3a6 sago007 2008-08-29 14:32 4100
                                                                b2playersOpen = false;
89c4a3a6 sago007 2008-08-29 14:32 4101
                                                                theGame.NewGame(50,100);
89c4a3a6 sago007 2008-08-29 14:32 4102
                                                                theGame2.NewGame(xsize-500,100);
89c4a3a6 sago007 2008-08-29 14:32 4103
                                                                theGame.timetrial = true;
89c4a3a6 sago007 2008-08-29 14:32 4104
                                                                theGame2.timetrial = true;
89c4a3a6 sago007 2008-08-29 14:32 4105
                                                                int theTime = time(0);
89c4a3a6 sago007 2008-08-29 14:32 4106
                                                                theGame.putStartBlocks(theTime);
89c4a3a6 sago007 2008-08-29 14:32 4107
                                                                theGame2.putStartBlocks(theTime);
89c4a3a6 sago007 2008-08-29 14:32 4108
                                                                theGame.setGameSpeed(player1Speed);
89c4a3a6 sago007 2008-08-29 14:32 4109
                                                                theGame2.setGameSpeed(player2Speed);
89c4a3a6 sago007 2008-08-29 14:32 4110
                                                                theGame.setHandicap(player1handicap);
89c4a3a6 sago007 2008-08-29 14:32 4111
                                                                theGame2.setHandicap(player2handicap);
89c4a3a6 sago007 2008-08-29 14:32 4112
                                                                theGame.AI_Enabled = player1AI;
89c4a3a6 sago007 2008-08-29 14:32 4113
                                                                theGame2.AI_Enabled = player2AI;
89c4a3a6 sago007 2008-08-29 14:32 4114
                                                                theGame.setAIlevel(player1AIlevel);
89c4a3a6 sago007 2008-08-29 14:32 4115
                                                                theGame2.setAIlevel(player2AIlevel);
89c4a3a6 sago007 2008-08-29 14:32 4116
                                                                twoPlayers = true;
89c4a3a6 sago007 2008-08-29 14:32 4117
                                                            }
89c4a3a6 sago007 2008-08-29 14:32 4118
                                                            else
89c4a3a6 sago007 2008-08-29 14:32 4119
                                                                if ((120<mousex) && (mousex<240) && (120<mousey) && (mousey<160) && (b2playersOpen))
89c4a3a6 sago007 2008-08-29 14:32 4120
                                                                {
89c4a3a6 sago007 2008-08-29 14:32 4121
                                                                    //2 player - VsMode
89c4a3a6 sago007 2008-08-29 14:32 4122
                                                                    theGame.NewVsGame(50,100,&theGame2);
89c4a3a6 sago007 2008-08-29 14:32 4123
                                                                    theGame2.NewVsGame(xsize-500,100,&theGame);
89c4a3a6 sago007 2008-08-29 14:32 4124
                                                                    bNewGameOpen = false;
89c4a3a6 sago007 2008-08-29 14:32 4125
                                                                    vsMode = true;
89c4a3a6 sago007 2008-08-29 14:32 4126
                                                                    twoPlayers = true;
89c4a3a6 sago007 2008-08-29 14:32 4127
                                                                    b2playersOpen = false;
89c4a3a6 sago007 2008-08-29 14:32 4128
                                                                    theGame.setGameSpeed(player1Speed);
89c4a3a6 sago007 2008-08-29 14:32 4129
                                                                    theGame2.setGameSpeed(player2Speed);
89c4a3a6 sago007 2008-08-29 14:32 4130
                                                                    theGame.setHandicap(player1handicap);
89c4a3a6 sago007 2008-08-29 14:32 4131
                                                                    theGame2.setHandicap(player2handicap);
89c4a3a6 sago007 2008-08-29 14:32 4132
                                                                    theGame.AI_Enabled = player1AI;
89c4a3a6 sago007 2008-08-29 14:32 4133
                                                                    theGame2.AI_Enabled = player2AI;
89c4a3a6 sago007 2008-08-29 14:32 4134
                                                                    theGame.setAIlevel(player1AIlevel);
89c4a3a6 sago007 2008-08-29 14:32 4135
                                                                    theGame2.setAIlevel(player2AIlevel);
89c4a3a6 sago007 2008-08-29 14:32 4136
                                                                    int theTime = time(0);
89c4a3a6 sago007 2008-08-29 14:32 4137
                                                                    theGame.putStartBlocks(theTime);
89c4a3a6 sago007 2008-08-29 14:32 4138
                                                                    theGame2.putStartBlocks(theTime);
89c4a3a6 sago007 2008-08-29 14:32 4139
                                                                }
89c4a3a6 sago007 2008-08-29 14:32 4140
#ifdef NETWORK
89c4a3a6 sago007 2008-08-29 14:32 4141
                                                                else
89c4a3a6 sago007 2008-08-29 14:32 4142
                                                                    if ((120<mousex) && (mousex<240) && (120<mousey) && (mousey<160) && (bNetworkOpen))
89c4a3a6 sago007 2008-08-29 14:32 4143
                                                                    {
89c4a3a6 sago007 2008-08-29 14:32 4144
                                                                        //Host
89c4a3a6 sago007 2008-08-29 14:32 4145
                                                                        cout << "Host" << endl;
89c4a3a6 sago007 2008-08-29 14:32 4146
                                                                        closeAllMenus();
89c4a3a6 sago007 2008-08-29 14:32 4147
                                                                        theGame.SetGameOver();
89c4a3a6 sago007 2008-08-29 14:32 4148
                                                                        theGame2.SetGameOver();
89c4a3a6 sago007 2008-08-29 14:32 4149
                                                                        nt.startServer();
89c4a3a6 sago007 2008-08-29 14:32 4150
                                                                    }
89c4a3a6 sago007 2008-08-29 14:32 4151
                                                                    else
89c4a3a6 sago007 2008-08-29 14:32 4152
                                                                        if ((120<mousex) && (mousex<240) && (160<mousey) && (mousey<200) && (bNetworkOpen))
89c4a3a6 sago007 2008-08-29 14:32 4153
                                                                        {
89c4a3a6 sago007 2008-08-29 14:32 4154
                                                                            //Connect
89c4a3a6 sago007 2008-08-29 14:32 4155
                                                                            cout << "Connect" << endl;
89c4a3a6 sago007 2008-08-29 14:32 4156
                                                                            closeAllMenus();
89c4a3a6 sago007 2008-08-29 14:32 4157
                                                                            theGame.SetGameOver();
89c4a3a6 sago007 2008-08-29 14:32 4158
                                                                            theGame2.SetGameOver();
89c4a3a6 sago007 2008-08-29 14:32 4159
                                                                            if (OpenDialogbox(200,100,serverAddress))
89c4a3a6 sago007 2008-08-29 14:32 4160
                                                                            {
89c4a3a6 sago007 2008-08-29 14:32 4161
                                                                                char buf[30];
89c4a3a6 sago007 2008-08-29 14:32 4162
                                                                                memcpy(buf,serverAddress,30);
89c4a3a6 sago007 2008-08-29 14:32 4163
                                                                                nt.connectToServer(strtok(buf," "));
89c4a3a6 sago007 2008-08-29 14:32 4164
                                                                            }
89c4a3a6 sago007 2008-08-29 14:32 4165
                                                                            while ( SDL_PollEvent(&event) ); //If the user have pressed ESC or the like
89c4a3a6 sago007 2008-08-29 14:32 4166
                                                                        }
89c4a3a6 sago007 2008-08-29 14:32 4167
#endif
89c4a3a6 sago007 2008-08-29 14:32 4168
                                                                        else
89c4a3a6 sago007 2008-08-29 14:32 4169
                                                                            if ((120<mousex) && (mousex<2*120) && (0<mousey) && (mousey<40) &&(!networkActive))
89c4a3a6 sago007 2008-08-29 14:32 4170
                                                                            {
89c4a3a6 sago007 2008-08-29 14:32 4171
                                                                                //options button clicked
89c4a3a6 sago007 2008-08-29 14:32 4172
                                                                                if (bOptionsOpen)
89c4a3a6 sago007 2008-08-29 14:32 4173
                                                                                {
89c4a3a6 sago007 2008-08-29 14:32 4174
                                                                                    closeAllMenus();
89c4a3a6 sago007 2008-08-29 14:32 4175
                                                                                }
89c4a3a6 sago007 2008-08-29 14:32 4176
                                                                                else
89c4a3a6 sago007 2008-08-29 14:32 4177
                                                                                {
89c4a3a6 sago007 2008-08-29 14:32 4178
                                                                                    closeAllMenus();
89c4a3a6 sago007 2008-08-29 14:32 4179
                                                                                    bOptionsOpen = true;
89c4a3a6 sago007 2008-08-29 14:32 4180
                                                                                    DrawIMG(background, screen, 0, 0);
89c4a3a6 sago007 2008-08-29 14:32 4181
                                                                                }
89c4a3a6 sago007 2008-08-29 14:32 4182
                                                                            }
89c4a3a6 sago007 2008-08-29 14:32 4183
                                                                            else
89c4a3a6 sago007 2008-08-29 14:32 4184
                                                                                if ((120<mousex) && (mousex<2*120) && (40<mousey) && (mousey<80) && (bOptionsOpen) )
89c4a3a6 sago007 2008-08-29 14:32 4185
                                                                                {
89c4a3a6 sago007 2008-08-29 14:32 4186
                                                                                    //Configure button clicked
89c4a3a6 sago007 2008-08-29 14:32 4187
                                                                                    closeAllMenus();
89c4a3a6 sago007 2008-08-29 14:32 4188
                                                                                    if (!showOptions) {
89c4a3a6 sago007 2008-08-29 14:32 4189
                                                                                        showOptions = true;
89c4a3a6 sago007 2008-08-29 14:32 4190
                                                                                        showHighscores = false;
89c4a3a6 sago007 2008-08-29 14:32 4191
                                                                                    }
89c4a3a6 sago007 2008-08-29 14:32 4192
                                                                                    else showOptions = false;
89c4a3a6 sago007 2008-08-29 14:32 4193
                                                                                    DrawIMG(background, screen, 0, 0);
89c4a3a6 sago007 2008-08-29 14:32 4194
                                                                                }
89c4a3a6 sago007 2008-08-29 14:32 4195
                                                                                else
89c4a3a6 sago007 2008-08-29 14:32 4196
                                                                                    if ((120<mousex) && (mousex<2*120) && (80<mousey) && (mousey<120) && (bOptionsOpen) )
89c4a3a6 sago007 2008-08-29 14:32 4197
                                                                                    {
89c4a3a6 sago007 2008-08-29 14:32 4198
                                                                                        //Configure button clicked
89c4a3a6 sago007 2008-08-29 14:32 4199
                                                                                        closeAllMenus();
89c4a3a6 sago007 2008-08-29 14:32 4200
                                                                                        changePuzzleLevels();
89c4a3a6 sago007 2008-08-29 14:32 4201
                                                                                    }
89c4a3a6 sago007 2008-08-29 14:32 4202
                                                                                    else
89c4a3a6 sago007 2008-08-29 14:32 4203
                                                                                        if ((120<mousex) && (mousex<2*120) && (120<mousey) && (mousey<160) && (bOptionsOpen) )
89c4a3a6 sago007 2008-08-29 14:32 4204
                                                                                        {
89c4a3a6 sago007 2008-08-29 14:32 4205
                                                                                            //vsMode button clicked
89c4a3a6 sago007 2008-08-29 14:32 4206
                                                                                            closeAllMenus();
89c4a3a6 sago007 2008-08-29 14:32 4207
                                                                                            startVsMenu();
89c4a3a6 sago007 2008-08-29 14:32 4208
                                                                                        }
89c4a3a6 sago007 2008-08-29 14:32 4209
                                                                                        else
89c4a3a6 sago007 2008-08-29 14:32 4210
                                                                                        if ((120<mousex) && (mousex<2*120) && (160<mousey) && (mousey<200) && (bOptionsOpen) )
89c4a3a6 sago007 2008-08-29 14:32 4211
                                                                                        {
89c4a3a6 sago007 2008-08-29 14:32 4212
                                                                                            //selectThemClicked
89c4a3a6 sago007 2008-08-29 14:32 4213
                                                                                            closeAllMenus();
89c4a3a6 sago007 2008-08-29 14:32 4214
                                                                                            char temp[30];
89c4a3a6 sago007 2008-08-29 14:32 4215
                                                                                            SelectThemeDialogbox(200,100,temp);
89c4a3a6 sago007 2008-08-29 14:32 4216
                                                                                        }
89c4a3a6 sago007 2008-08-29 14:32 4217
                                                                                        else
89c4a3a6 sago007 2008-08-29 14:32 4218
                                                                                            if ((120*2<mousex) && (mousex<3*120) && (0<mousey) && (mousey<40) &&(!networkActive))
89c4a3a6 sago007 2008-08-29 14:32 4219
                                                                                            {
89c4a3a6 sago007 2008-08-29 14:32 4220
                                                                                                //highscore button clicked
89c4a3a6 sago007 2008-08-29 14:32 4221
                                                                                                bool state = showHighscores;
89c4a3a6 sago007 2008-08-29 14:32 4222
                                                                                                closeAllMenus();
89c4a3a6 sago007 2008-08-29 14:32 4223
                                                                                                if (!state) {
89c4a3a6 sago007 2008-08-29 14:32 4224
                                                                                                    showHighscores = true;
89c4a3a6 sago007 2008-08-29 14:32 4225
                                                                                                    showOptions = false;
89c4a3a6 sago007 2008-08-29 14:32 4226
                                                                                                }
89c4a3a6 sago007 2008-08-29 14:32 4227
                                                                                                DrawIMG(background, screen, 0, 0);
89c4a3a6 sago007 2008-08-29 14:32 4228
                                                                                            }
89c4a3a6 sago007 2008-08-29 14:32 4229
                                                                                            else
89c4a3a6 sago007 2008-08-29 14:32 4230
                                                                                                if ((360<mousex) && (mousex<4*120) && (0<mousey) && (mousey<40) &&(!networkActive))
89c4a3a6 sago007 2008-08-29 14:32 4231
                                                                                                {
89c4a3a6 sago007 2008-08-29 14:32 4232
                                                                                                    //Replay clicked!
89c4a3a6 sago007 2008-08-29 14:32 4233
                                                                                                    bool state = (!bReplayOpen);
89c4a3a6 sago007 2008-08-29 14:32 4234
                                                                                                    closeAllMenus();
89c4a3a6 sago007 2008-08-29 14:32 4235
                                                                                                    bReplayOpen = state; //theGame.NewGame(50,100);
89c4a3a6 sago007 2008-08-29 14:32 4236
                                                                                                    showOptions = false;
89c4a3a6 sago007 2008-08-29 14:32 4237
                                                                                                    showHighscores = false;
89c4a3a6 sago007 2008-08-29 14:32 4238
                                                                                                }
89c4a3a6 sago007 2008-08-29 14:32 4239
                                                                                                else
89c4a3a6 sago007 2008-08-29 14:32 4240
                                                                                                    if ((360<mousex) && (mousex<4*120) && (40<mousey) && (mousey<80) &&(bReplayOpen))
89c4a3a6 sago007 2008-08-29 14:32 4241
                                                                                                    {
89c4a3a6 sago007 2008-08-29 14:32 4242
                                                                                                        //Replay->Save clicked!
89c4a3a6 sago007 2008-08-29 14:32 4243
                                                                                                        //cout << "Replay->Save clicked" << endl;
89c4a3a6 sago007 2008-08-29 14:32 4244
                                                                                                        char buf[30];
89c4a3a6 sago007 2008-08-29 14:32 4245
                                                                                                        for (int i=0;i<29;i++)buf[i]=' ';
89c4a3a6 sago007 2008-08-29 14:32 4246
                                                                                                        buf[30]=0;
89c4a3a6 sago007 2008-08-29 14:32 4247
                                                                                                        OpenDialogbox(200,100,buf);
89c4a3a6 sago007 2008-08-29 14:32 4248
                                                                                                        for (int i=28;buf[i]==' ';i--)
89c4a3a6 sago007 2008-08-29 14:32 4249
                                                                                                            buf[i]=0;
89c4a3a6 sago007 2008-08-29 14:32 4250
#ifdef __unix__
89c4a3a6 sago007 2008-08-29 14:32 4251
                                                                                                        string saveHere = (string)getenv("HOME")+(string)"/.gamesaves/blockattack/replays/"+(string)buf;
89c4a3a6 sago007 2008-08-29 14:32 4252
#elif WIN32
89c4a3a6 sago007 2008-08-29 14:32 4253
                                                                                                        string saveHere = home+(string)"/My Games/blockattack/replays/"+(string)buf;
89c4a3a6 sago007 2008-08-29 14:32 4254
#else
89c4a3a6 sago007 2008-08-29 14:32 4255
                                                                                                        string saveHere = (string)"./replays"+(string)buf;
89c4a3a6 sago007 2008-08-29 14:32 4256
#endif
89c4a3a6 sago007 2008-08-29 14:32 4257
                                                                                                        if (lastNrOfPlayers<2)
89c4a3a6 sago007 2008-08-29 14:32 4258
                                                                                                            theGame.theReplay.saveReplay(saveHere);
89c4a3a6 sago007 2008-08-29 14:32 4259
                                                                                                        else
89c4a3a6 sago007 2008-08-29 14:32 4260
                                                                                                            theGame.theReplay.saveReplay(saveHere,theGame2.theReplay);
89c4a3a6 sago007 2008-08-29 14:32 4261
89c4a3a6 sago007 2008-08-29 14:32 4262
                                                                                                        closeAllMenus();
89c4a3a6 sago007 2008-08-29 14:32 4263
                                                                                                    }
89c4a3a6 sago007 2008-08-29 14:32 4264
                                                                                                    else
89c4a3a6 sago007 2008-08-29 14:32 4265
                                                                                                        if ((360<mousex) && (mousex<4*120) && (80<mousey) && (mousey<120)&&(bReplayOpen))
89c4a3a6 sago007 2008-08-29 14:32 4266
                                                                                                        {
89c4a3a6 sago007 2008-08-29 14:32 4267
                                                                                                            //Replay->Load clicked!
89c4a3a6 sago007 2008-08-29 14:32 4268
                                                                                                            //cout << "Replay->Load clicked" << endl;
89c4a3a6 sago007 2008-08-29 14:32 4269
89c4a3a6 sago007 2008-08-29 14:32 4270
                                                                                                            char buf[30];
89c4a3a6 sago007 2008-08-29 14:32 4271
                                                                                                            for (int i=0;i<29;i++)buf[i]=' ';
89c4a3a6 sago007 2008-08-29 14:32 4272
                                                                                                            buf[30]=0;
89c4a3a6 sago007 2008-08-29 14:32 4273
                                                                                                            if (OpenReplayDialogbox(50,100,buf))
89c4a3a6 sago007 2008-08-29 14:32 4274
                                                                                                            {
89c4a3a6 sago007 2008-08-29 14:32 4275
                                                                                                                //cout << "Good way" << endl;
89c4a3a6 sago007 2008-08-29 14:32 4276
                                                                                                                for (int i=28;buf[i]==' ';i--)
89c4a3a6 sago007 2008-08-29 14:32 4277
                                                                                                                    buf[i]=0;
89c4a3a6 sago007 2008-08-29 14:32 4278
#ifdef __unix__
89c4a3a6 sago007 2008-08-29 14:32 4279
                                                                                                                string loadThis = (string)getenv("HOME")+(string)"/.gamesaves/blockattack/replays/"+(string)buf;
89c4a3a6 sago007 2008-08-29 14:32 4280
#elif WIN32
89c4a3a6 sago007 2008-08-29 14:32 4281
                                                                                                                string loadThis = home+(string)"/My Games/blockattack/replays/"+(string)buf;
89c4a3a6 sago007 2008-08-29 14:32 4282
#else
89c4a3a6 sago007 2008-08-29 14:32 4283
                                                                                                                string loadThis = (string)"./replays/"+(string)buf;
89c4a3a6 sago007 2008-08-29 14:32 4284
#endif
89c4a3a6 sago007 2008-08-29 14:32 4285
                                                                                                                ifstream replayFileIn;
89c4a3a6 sago007 2008-08-29 14:32 4286
                                                                                                                replayFileIn.open(loadThis.c_str(),ios::binary);
89c4a3a6 sago007 2008-08-29 14:32 4287
                                                                                                                bool play2 = false;
89c4a3a6 sago007 2008-08-29 14:32 4288
                                                                                                                if (replayFileIn)
89c4a3a6 sago007 2008-08-29 14:32 4289
                                                                                                                {
89c4a3a6 sago007 2008-08-29 14:32 4290
                                                                                                                    Uint8 version = 0;
89c4a3a6 sago007 2008-08-29 14:32 4291
                                                                                                                    replayFileIn.read(reinterpret_cast<char*>(&version),sizeof(Uint8));                                                                                                                  replayFileIn.close();
89c4a3a6 sago007 2008-08-29 14:32 4292
                                                                                                                    Replay r1;
89c4a3a6 sago007 2008-08-29 14:32 4293
                                                                                                                    r1.loadReplay(loadThis);
89c4a3a6 sago007 2008-08-29 14:32 4294
                                                                                                                    Replay r2;
89c4a3a6 sago007 2008-08-29 14:32 4295
                                                                                                                    play2 = r2.loadReplay2(loadThis);
89c4a3a6 sago007 2008-08-29 14:32 4296
                                                                                                                    theGame.playReplay(50,100); //Fejlen sker her
89c4a3a6 sago007 2008-08-29 14:32 4297
                                                                                                                    theGame.theReplay = r1;
89c4a3a6 sago007 2008-08-29 14:32 4298
                                                                                                                    if (play2)
89c4a3a6 sago007 2008-08-29 14:32 4299
                                                                                                                    {
89c4a3a6 sago007 2008-08-29 14:32 4300
                                                                                                                        theGame2.playReplay(xsize-500,100);
89c4a3a6 sago007 2008-08-29 14:32 4301
                                                                                                                        theGame2.theReplay = r2;
89c4a3a6 sago007 2008-08-29 14:32 4302
                                                                                                                    }
89c4a3a6 sago007 2008-08-29 14:32 4303
                                                                                                                    else
89c4a3a6 sago007 2008-08-29 14:32 4304
                                                                                                                        theGame2.SetGameOver();
89c4a3a6 sago007 2008-08-29 14:32 4305
                                                                                                                    cout << "Replay should have been read" << endl;
89c4a3a6 sago007 2008-08-29 14:32 4306
                                                                                                                }
89c4a3a6 sago007 2008-08-29 14:32 4307
                                                                                                            }
89c4a3a6 sago007 2008-08-29 14:32 4308
                                                                                                            closeAllMenus();
89c4a3a6 sago007 2008-08-29 14:32 4309
                                                                                                        }
89c4a3a6 sago007 2008-08-29 14:32 4310
                                                                                                        else
89c4a3a6 sago007 2008-08-29 14:32 4311
                                                                                                            if ((xsize-120<mousex) && (xsize-20>mousex) && (ysize-120<mousey) && (ysize-20>mousey))
89c4a3a6 sago007 2008-08-29 14:32 4312
                                                                                                            {
89c4a3a6 sago007 2008-08-29 14:32 4313
                                                                                                                //Exit clicked
89c4a3a6 sago007 2008-08-29 14:32 4314
                                                                                                                done=1;
89c4a3a6 sago007 2008-08-29 14:32 4315
                                                                                                            }
89c4a3a6 sago007 2008-08-29 14:32 4316
                                                                                                            else
89c4a3a6 sago007 2008-08-29 14:32 4317
                                                                                                                if ((showOptions) && (mousex>500) && (mousex<560) && (mousey>220) && (mousey<260))
89c4a3a6 sago007 2008-08-29 14:32 4318
                                                                                                                {
89c4a3a6 sago007 2008-08-29 14:32 4319
                                                                                                                    MusicEnabled = !MusicEnabled;
89c4a3a6 sago007 2008-08-29 14:32 4320
                                                                                                                    if (!MusicEnabled) Mix_FadeOutMusic(500);
89c4a3a6 sago007 2008-08-29 14:32 4321
                                                                                                                }
89c4a3a6 sago007 2008-08-29 14:32 4322
                    if ((showOptions) && (mousex>500) && (mousex<560) && (mousey>270) && (mousey<310))
89c4a3a6 sago007 2008-08-29 14:32 4323
                    {
89c4a3a6 sago007 2008-08-29 14:32 4324
                        SoundEnabled = !SoundEnabled;
89c4a3a6 sago007 2008-08-29 14:32 4325
                    }
89c4a3a6 sago007 2008-08-29 14:32 4326
                    if ((showOptions) && (mousex>500) && (mousex<560) && (mousey>320) && (mousey<360))
89c4a3a6 sago007 2008-08-29 14:32 4327
                    {
89c4a3a6 sago007 2008-08-29 14:32 4328
                        //Fullscreen
89c4a3a6 sago007 2008-08-29 14:32 4329
                        bFullscreen = !bFullscreen;
89c4a3a6 sago007 2008-08-29 14:32 4330
#if defined(WIN32)
89c4a3a6 sago007 2008-08-29 14:32 4331
                        if (bFullscreen) screen=SDL_SetVideoMode(xsize,ysize,32,SDL_SWSURFACE|SDL_FULLSCREEN|SDL_ANYFORMAT);
89c4a3a6 sago007 2008-08-29 14:32 4332
                        else screen=SDL_SetVideoMode(xsize,ysize,32,SDL_SWSURFACE|SDL_ANYFORMAT);
89c4a3a6 sago007 2008-08-29 14:32 4333
                        DrawIMG(background, screen, 0, 0);
89c4a3a6 sago007 2008-08-29 14:32 4334
#else
89c4a3a6 sago007 2008-08-29 14:32 4335
                        SDL_WM_ToggleFullScreen(screen); //Will only work in Linux
89c4a3a6 sago007 2008-08-29 14:32 4336
#endif
89c4a3a6 sago007 2008-08-29 14:32 4337
                        SDL_ShowCursor(SDL_DISABLE);
89c4a3a6 sago007 2008-08-29 14:32 4338
                    }
89c4a3a6 sago007 2008-08-29 14:32 4339
89c4a3a6 sago007 2008-08-29 14:32 4340
                    if ((showOptions) && (mousex>330) && (mousex<470) && (mousey>535) && (mousey<585))
89c4a3a6 sago007 2008-08-29 14:32 4341
                    {
89c4a3a6 sago007 2008-08-29 14:32 4342
                        //change name
89c4a3a6 sago007 2008-08-29 14:32 4343
                        bScreenLocked = true;
89c4a3a6 sago007 2008-08-29 14:32 4344
                        showDialog = true;
89c4a3a6 sago007 2008-08-29 14:32 4345
                        if (OpenDialogbox(200,100,player1name))
89c4a3a6 sago007 2008-08-29 14:32 4346
                            strcpy(theGame.name, player1name);
89c4a3a6 sago007 2008-08-29 14:32 4347
                        else
89c4a3a6 sago007 2008-08-29 14:32 4348
                            strcpy(player1name,theGame.name);
89c4a3a6 sago007 2008-08-29 14:32 4349
                        bScreenLocked = false;
89c4a3a6 sago007 2008-08-29 14:32 4350
                        showDialog = false;
89c4a3a6 sago007 2008-08-29 14:32 4351
                        MakeBackground(xsize,ysize,theGame,theGame2);
89c4a3a6 sago007 2008-08-29 14:32 4352
                        DrawIMG(background, screen, 0, 0);
89c4a3a6 sago007 2008-08-29 14:32 4353
                    }
89c4a3a6 sago007 2008-08-29 14:32 4354
                    if ((showOptions) && (mousex>330) && (mousex<470) && (mousey>600) && (mousey<640))
89c4a3a6 sago007 2008-08-29 14:32 4355
                    {
89c4a3a6 sago007 2008-08-29 14:32 4356
                        //change name
89c4a3a6 sago007 2008-08-29 14:32 4357
                        bScreenLocked = true;
89c4a3a6 sago007 2008-08-29 14:32 4358
                        showDialog = true;
89c4a3a6 sago007 2008-08-29 14:32 4359
                        if (OpenDialogbox(200,100,player2name))
89c4a3a6 sago007 2008-08-29 14:32 4360
                            strcpy(theGame2.name, player2name);
89c4a3a6 sago007 2008-08-29 14:32 4361
                        else
89c4a3a6 sago007 2008-08-29 14:32 4362
                            strcpy(player2name,theGame2.name);
89c4a3a6 sago007 2008-08-29 14:32 4363
                        bScreenLocked = false;
89c4a3a6 sago007 2008-08-29 14:32 4364
                        showDialog = false;
89c4a3a6 sago007 2008-08-29 14:32 4365
                        MakeBackground(xsize,ysize,theGame,theGame2);
89c4a3a6 sago007 2008-08-29 14:32 4366
                        DrawIMG(background, screen, 0, 0);
89c4a3a6 sago007 2008-08-29 14:32 4367
                    }
89c4a3a6 sago007 2008-08-29 14:32 4368
                    if ((showOptions) && (mousex>510) && (mousex<630) && (mousey>535) && (mousey<585))
89c4a3a6 sago007 2008-08-29 14:32 4369
                    {
89c4a3a6 sago007 2008-08-29 14:32 4370
                        //changeControls
89c4a3a6 sago007 2008-08-29 14:32 4371
                        OpenControlsBox(200,100,0);
89c4a3a6 sago007 2008-08-29 14:32 4372
                        MakeBackground(xsize,ysize,theGame,theGame2);
89c4a3a6 sago007 2008-08-29 14:32 4373
                        DrawIMG(background, screen, 0, 0);
89c4a3a6 sago007 2008-08-29 14:32 4374
                    }
89c4a3a6 sago007 2008-08-29 14:32 4375
                    if ((showOptions) && (mousex>510) && (mousex<630) && (mousey>600) && (mousey<640))
89c4a3a6 sago007 2008-08-29 14:32 4376
                    {
89c4a3a6 sago007 2008-08-29 14:32 4377
                        //changeControls
89c4a3a6 sago007 2008-08-29 14:32 4378
                        OpenControlsBox(200,100,2);
89c4a3a6 sago007 2008-08-29 14:32 4379
                        MakeBackground(xsize,ysize,theGame,theGame2);
89c4a3a6 sago007 2008-08-29 14:32 4380
                        DrawIMG(background, screen, 0, 0);
89c4a3a6 sago007 2008-08-29 14:32 4381
                    }
89c4a3a6 sago007 2008-08-29 14:32 4382
                    if ((showHighscores)&&(((mousex>150)&&(mousex<173))||((mousex>628)&&(mousex<650)))&&(mousey<652)&&(mousey>630))
89c4a3a6 sago007 2008-08-29 14:32 4383
                    {
89c4a3a6 sago007 2008-08-29 14:32 4384
                        //small arrors on Highscore board clicked!
89c4a3a6 sago007 2008-08-29 14:32 4385
                        showEndless = !showEndless;
89c4a3a6 sago007 2008-08-29 14:32 4386
                        DrawIMG(background, screen, 0, 0);
89c4a3a6 sago007 2008-08-29 14:32 4387
                    }
89c4a3a6 sago007 2008-08-29 14:32 4388
89c4a3a6 sago007 2008-08-29 14:32 4389
                    /********************************************************************
89c4a3a6 sago007 2008-08-29 14:32 4390
                    **************** Here comes mouse play ******************************
89c4a3a6 sago007 2008-08-29 14:32 4391
                    ********************************************************************/
89c4a3a6 sago007 2008-08-29 14:32 4392
                    if ((!showOptions)&&(!showHighscores))
89c4a3a6 sago007 2008-08-29 14:32 4393
                    {
89c4a3a6 sago007 2008-08-29 14:32 4394
                        if (mouseplay1 && !theGame.AI_Enabled) //player 1
89c4a3a6 sago007 2008-08-29 14:32 4395
                            if ((mousex > 50)&&(mousey>100)&&(mousex<50+300)&&(mousey<100+600))
89c4a3a6 sago007 2008-08-29 14:32 4396
                            {
89c4a3a6 sago007 2008-08-29 14:32 4397
                                theGame.SwitchAtCursor();
89c4a3a6 sago007 2008-08-29 14:32 4398
                            }
89c4a3a6 sago007 2008-08-29 14:32 4399
                        if (mouseplay2 && !theGame2.AI_Enabled) //player 2
89c4a3a6 sago007 2008-08-29 14:32 4400
                            if ((mousex > xsize-500)&&(mousey>100)&&(mousex<xsize-500+300)&&(mousey<100+600))
89c4a3a6 sago007 2008-08-29 14:32 4401
                            {
89c4a3a6 sago007 2008-08-29 14:32 4402
                                theGame2.SwitchAtCursor();
89c4a3a6 sago007 2008-08-29 14:32 4403
                            }
89c4a3a6 sago007 2008-08-29 14:32 4404
                    }
89c4a3a6 sago007 2008-08-29 14:32 4405
                    /********************************************************************
89c4a3a6 sago007 2008-08-29 14:32 4406
                    **************** Here ends mouse play *******************************
89c4a3a6 sago007 2008-08-29 14:32 4407
                    ********************************************************************/
89c4a3a6 sago007 2008-08-29 14:32 4408
89c4a3a6 sago007 2008-08-29 14:32 4409
                    if(stageButtonStatus != SBdontShow && (mousex > theGame.topx+cordNextButton.x)
89c4a3a6 sago007 2008-08-29 14:32 4410
                            &&(mousex < theGame.topx+cordNextButton.x+cordNextButton.xsize)
89c4a3a6 sago007 2008-08-29 14:32 4411
                            &&(mousey > theGame.topy+cordNextButton.y)&&(mousey < theGame.topy+cordNextButton.y+cordNextButton.ysize))
89c4a3a6 sago007 2008-08-29 14:32 4412
                    {
89c4a3a6 sago007 2008-08-29 14:32 4413
                        //Clicked the next button after a stage clear or puzzle
89c4a3a6 sago007 2008-08-29 14:32 4414
                        theGame.nextLevel();
89c4a3a6 sago007 2008-08-29 14:32 4415
                    }
89c4a3a6 sago007 2008-08-29 14:32 4416
                    if(stageButtonStatus != SBdontShow && (mousex > theGame.topx+cordRetryButton .x)
89c4a3a6 sago007 2008-08-29 14:32 4417
                            &&(mousex < theGame.topx+cordRetryButton.x+cordRetryButton.xsize)
89c4a3a6 sago007 2008-08-29 14:32 4418
                            &&(mousey > theGame.topy+cordRetryButton.y)&&(mousey < theGame.topy+cordRetryButton.y+cordRetryButton.ysize))
89c4a3a6 sago007 2008-08-29 14:32 4419
                    {
89c4a3a6 sago007 2008-08-29 14:32 4420
                        //Clicked the retry button
89c4a3a6 sago007 2008-08-29 14:32 4421
                        theGame.retryLevel();
89c4a3a6 sago007 2008-08-29 14:32 4422
                    }
89c4a3a6 sago007 2008-08-29 14:32 4423
                        
89c4a3a6 sago007 2008-08-29 14:32 4424
                    
89c4a3a6 sago007 2008-08-29 14:32 4425
                    //cout << "Mouse x: " << mousex << ", mouse y: " << mousey << endl;
89c4a3a6 sago007 2008-08-29 14:32 4426
                }
89c4a3a6 sago007 2008-08-29 14:32 4427
89c4a3a6 sago007 2008-08-29 14:32 4428
                //Mouse button 2:
89c4a3a6 sago007 2008-08-29 14:32 4429
                if ((SDL_GetMouseState(NULL,NULL)&SDL_BUTTON(3))==SDL_BUTTON(3) && bMouseUp2)
89c4a3a6 sago007 2008-08-29 14:32 4430
                {
89c4a3a6 sago007 2008-08-29 14:32 4431
                    bMouseUp2=false; //The button is pressed
89c4a3a6 sago007 2008-08-29 14:32 4432
                    /********************************************************************
89c4a3a6 sago007 2008-08-29 14:32 4433
                    **************** Here comes mouse play ******************************
89c4a3a6 sago007 2008-08-29 14:32 4434
                    ********************************************************************/
89c4a3a6 sago007 2008-08-29 14:32 4435
                    if ((!showOptions)&&(!showHighscores))
89c4a3a6 sago007 2008-08-29 14:32 4436
                    {
89c4a3a6 sago007 2008-08-29 14:32 4437
                        if (mouseplay1 && !theGame.AI_Enabled) //player 1
89c4a3a6 sago007 2008-08-29 14:32 4438
                            if ((mousex > 50)&&(mousey>100)&&(mousex<50+300)&&(mousey<100+600))
89c4a3a6 sago007 2008-08-29 14:32 4439
                            {
89c4a3a6 sago007 2008-08-29 14:32 4440
                                theGame.PushLine();
89c4a3a6 sago007 2008-08-29 14:32 4441
                            }
89c4a3a6 sago007 2008-08-29 14:32 4442
                        if (mouseplay2 && !theGame2.AI_Enabled) //player 2
89c4a3a6 sago007 2008-08-29 14:32 4443
                            if ((mousex > xsize-500)&&(mousey>100)&&(mousex<xsize-500+300)&&(mousey<100+600))
89c4a3a6 sago007 2008-08-29 14:32 4444
                            {
89c4a3a6 sago007 2008-08-29 14:32 4445
                                theGame2.PushLine();
89c4a3a6 sago007 2008-08-29 14:32 4446
                            }
89c4a3a6 sago007 2008-08-29 14:32 4447
                    }
89c4a3a6 sago007 2008-08-29 14:32 4448
                    /********************************************************************
89c4a3a6 sago007 2008-08-29 14:32 4449
                    **************** Here ends mouse play *******************************
89c4a3a6 sago007 2008-08-29 14:32 4450
                    ********************************************************************/
89c4a3a6 sago007 2008-08-29 14:32 4451
                }
89c4a3a6 sago007 2008-08-29 14:32 4452
            } //if !singlePuzzle
89c4a3a6 sago007 2008-08-29 14:32 4453
            else
89c4a3a6 sago007 2008-08-29 14:32 4454
            {
89c4a3a6 sago007 2008-08-29 14:32 4455
89c4a3a6 sago007 2008-08-29 14:32 4456
            }
89c4a3a6 sago007 2008-08-29 14:32 4457
        } //if !bScreenBocked;
89c4a3a6 sago007 2008-08-29 14:32 4458
89c4a3a6 sago007 2008-08-29 14:32 4459
89c4a3a6 sago007 2008-08-29 14:32 4460
        //Sees if music is stopped and if music is enabled
89c4a3a6 sago007 2008-08-29 14:32 4461
        if ((!NoSound)&&(!Mix_PlayingMusic())&&(MusicEnabled))
89c4a3a6 sago007 2008-08-29 14:32 4462
        {
89c4a3a6 sago007 2008-08-29 14:32 4463
            // then starts playing it.
89c4a3a6 sago007 2008-08-29 14:32 4464
            Mix_PlayMusic(bgMusic, 0); //music loop
89c4a3a6 sago007 2008-08-29 14:32 4465
        }
89c4a3a6 sago007 2008-08-29 14:32 4466
89c4a3a6 sago007 2008-08-29 14:32 4467
        //Updates the objects
89c4a3a6 sago007 2008-08-29 14:32 4468
        theGame.Update();
89c4a3a6 sago007 2008-08-29 14:32 4469
        theGame2.Update();
89c4a3a6 sago007 2008-08-29 14:32 4470
89c4a3a6 sago007 2008-08-29 14:32 4471
//see if anyone has won (two players only)
89c4a3a6 sago007 2008-08-29 14:32 4472
        if (!networkPlay)
89c4a3a6 sago007 2008-08-29 14:32 4473
            if (twoPlayers)
89c4a3a6 sago007 2008-08-29 14:32 4474
            {
89c4a3a6 sago007 2008-08-29 14:32 4475
                lastNrOfPlayers = 2;
89c4a3a6 sago007 2008-08-29 14:32 4476
                if ((theGame.bGameOver) && (theGame2.bGameOver))
89c4a3a6 sago007 2008-08-29 14:32 4477
                {
89c4a3a6 sago007 2008-08-29 14:32 4478
                    if (theGame.score+theGame.handicap>theGame2.score+theGame2.handicap)
89c4a3a6 sago007 2008-08-29 14:32 4479
                        theGame.setPlayerWon();
89c4a3a6 sago007 2008-08-29 14:32 4480
                    else
89c4a3a6 sago007 2008-08-29 14:32 4481
                        if (theGame.score+theGame.handicap<theGame2.score+theGame2.handicap)
89c4a3a6 sago007 2008-08-29 14:32 4482
                            theGame2.setPlayerWon();
89c4a3a6 sago007 2008-08-29 14:32 4483
                        else {
89c4a3a6 sago007 2008-08-29 14:32 4484
                            theGame.setDraw();
89c4a3a6 sago007 2008-08-29 14:32 4485
                            theGame2.setDraw();
89c4a3a6 sago007 2008-08-29 14:32 4486
                        }
89c4a3a6 sago007 2008-08-29 14:32 4487
                    twoPlayers = false;
89c4a3a6 sago007 2008-08-29 14:32 4488
                }
89c4a3a6 sago007 2008-08-29 14:32 4489
                if ((theGame.bGameOver) && (!theGame2.bGameOver))
89c4a3a6 sago007 2008-08-29 14:32 4490
                {
89c4a3a6 sago007 2008-08-29 14:32 4491
                    theGame2.setPlayerWon();
89c4a3a6 sago007 2008-08-29 14:32 4492
                    twoPlayers = false;
89c4a3a6 sago007 2008-08-29 14:32 4493
                }
89c4a3a6 sago007 2008-08-29 14:32 4494
                if ((!theGame.bGameOver) && (theGame2.bGameOver))
89c4a3a6 sago007 2008-08-29 14:32 4495
                {
89c4a3a6 sago007 2008-08-29 14:32 4496
                    theGame.setPlayerWon();
89c4a3a6 sago007 2008-08-29 14:32 4497
                    twoPlayers = false;
89c4a3a6 sago007 2008-08-29 14:32 4498
                }
89c4a3a6 sago007 2008-08-29 14:32 4499
            }
89c4a3a6 sago007 2008-08-29 14:32 4500
89c4a3a6 sago007 2008-08-29 14:32 4501
        //Once evrything has been checked, update graphics
89c4a3a6 sago007 2008-08-29 14:32 4502
        DrawEverything(xsize,ysize,theGame, theGame2);
89c4a3a6 sago007 2008-08-29 14:32 4503
        SDL_GetMouseState(&mousex,&mousey);
89c4a3a6 sago007 2008-08-29 14:32 4504
        //Remember mouse placement
89c4a3a6 sago007 2008-08-29 14:32 4505
        oldMousex = mousex;
89c4a3a6 sago007 2008-08-29 14:32 4506
        oldMousey = mousey;
89c4a3a6 sago007 2008-08-29 14:32 4507
        //Draw the mouse:
89c4a3a6 sago007 2008-08-29 14:32 4508
        DrawIMG(mouse,screen,mousex,mousey);
89c4a3a6 sago007 2008-08-29 14:32 4509
        SDL_Flip(screen);
89c4a3a6 sago007 2008-08-29 14:32 4510
    } //game loop
89c4a3a6 sago007 2008-08-29 14:32 4511
89c4a3a6 sago007 2008-08-29 14:32 4512
89c4a3a6 sago007 2008-08-29 14:32 4513
89c4a3a6 sago007 2008-08-29 14:32 4514
    //Saves options
89c4a3a6 sago007 2008-08-29 14:32 4515
    if (!editorMode)
89c4a3a6 sago007 2008-08-29 14:32 4516
    {
89c4a3a6 sago007 2008-08-29 14:32 4517
        ofstream optionsFileOut;
89c4a3a6 sago007 2008-08-29 14:32 4518
        optionsFileOut.open(optionsPath.c_str(),ios::binary|ios::trunc);
89c4a3a6 sago007 2008-08-29 14:32 4519
        if (optionsFileOut)
89c4a3a6 sago007 2008-08-29 14:32 4520
        {
89c4a3a6 sago007 2008-08-29 14:32 4521
            //writes data: xsize,ysize,fullescreen, player1keys, player2keys, MusicEnabled, SoundEnabled,player1name,player2name
89c4a3a6 sago007 2008-08-29 14:32 4522
            optionsFileOut.write(reinterpret_cast<char*>(&xsize),sizeof(int));
89c4a3a6 sago007 2008-08-29 14:32 4523
            optionsFileOut.write(reinterpret_cast<char*>(&ysize),sizeof(int));
89c4a3a6 sago007 2008-08-29 14:32 4524
            optionsFileOut.write(reinterpret_cast<char*>(&bFullscreen),sizeof(bool));
89c4a3a6 sago007 2008-08-29 14:32 4525
            optionsFileOut.write(reinterpret_cast<char*>(&keySettings[0].up), sizeof(SDLKey));
89c4a3a6 sago007 2008-08-29 14:32 4526
            optionsFileOut.write(reinterpret_cast<char*>(&keySettings[0].down), sizeof(SDLKey));
89c4a3a6 sago007 2008-08-29 14:32 4527
            optionsFileOut.write(reinterpret_cast<char*>(&keySettings[0].left), sizeof(SDLKey));
89c4a3a6 sago007 2008-08-29 14:32 4528
            optionsFileOut.write(reinterpret_cast<char*>(&keySettings[0].right), sizeof(SDLKey));
89c4a3a6 sago007 2008-08-29 14:32 4529
            optionsFileOut.write(reinterpret_cast<char*>(&keySettings[0].change), sizeof(SDLKey));
89c4a3a6 sago007 2008-08-29 14:32 4530
            optionsFileOut.write(reinterpret_cast<char*>(&keySettings[0].push), sizeof(SDLKey));
89c4a3a6 sago007 2008-08-29 14:32 4531
            optionsFileOut.write(reinterpret_cast<char*>(&keySettings[2].up), sizeof(SDLKey));
89c4a3a6 sago007 2008-08-29 14:32 4532
            optionsFileOut.write(reinterpret_cast<char*>(&keySettings[2].down), sizeof(SDLKey));
89c4a3a6 sago007 2008-08-29 14:32 4533
            optionsFileOut.write(reinterpret_cast<char*>(&keySettings[2].left), sizeof(SDLKey));
89c4a3a6 sago007 2008-08-29 14:32 4534
            optionsFileOut.write(reinterpret_cast<char*>(&keySettings[2].right), sizeof(SDLKey));
89c4a3a6 sago007 2008-08-29 14:32 4535
            optionsFileOut.write(reinterpret_cast<char*>(&keySettings[2].change), sizeof(SDLKey));
89c4a3a6 sago007 2008-08-29 14:32 4536
            optionsFileOut.write(reinterpret_cast<char*>(&keySettings[2].push), sizeof(SDLKey));
89c4a3a6 sago007 2008-08-29 14:32 4537
            optionsFileOut.write(reinterpret_cast<char*>(&MusicEnabled),sizeof(bool));
89c4a3a6 sago007 2008-08-29 14:32 4538
            optionsFileOut.write(reinterpret_cast<char*>(&SoundEnabled),sizeof(bool));
89c4a3a6 sago007 2008-08-29 14:32 4539
            optionsFileOut.write(player1name,30*sizeof(char));
89c4a3a6 sago007 2008-08-29 14:32 4540
            optionsFileOut.write(player2name,30*sizeof(char));
89c4a3a6 sago007 2008-08-29 14:32 4541
            optionsFileOut.write(reinterpret_cast<char*>(&mouseplay1),sizeof(bool));
89c4a3a6 sago007 2008-08-29 14:32 4542
            optionsFileOut.write(reinterpret_cast<char*>(&mouseplay2),sizeof(bool));
89c4a3a6 sago007 2008-08-29 14:32 4543
            optionsFileOut.write(reinterpret_cast<char*>(&joyplay1),sizeof(bool));
89c4a3a6 sago007 2008-08-29 14:32 4544
            optionsFileOut.write(reinterpret_cast<char*>(&joyplay2),sizeof(bool));
89c4a3a6 sago007 2008-08-29 14:32 4545
            optionsFileOut.close();
89c4a3a6 sago007 2008-08-29 14:32 4546
            cout << "options written to file" << endl;
89c4a3a6 sago007 2008-08-29 14:32 4547
        }
89c4a3a6 sago007 2008-08-29 14:32 4548
        else
89c4a3a6 sago007 2008-08-29 14:32 4549
        {
89c4a3a6 sago007 2008-08-29 14:32 4550
            cout << "Failed to write options" << endl;
89c4a3a6 sago007 2008-08-29 14:32 4551
        }
89c4a3a6 sago007 2008-08-29 14:32 4552
    }
89c4a3a6 sago007 2008-08-29 14:32 4553
89c4a3a6 sago007 2008-08-29 14:32 4554
    Stats::getInstance()->save();
89c4a3a6 sago007 2008-08-29 14:32 4555
    
89c4a3a6 sago007 2008-08-29 14:32 4556
    //Frees memory from music and fonts
89c4a3a6 sago007 2008-08-29 14:32 4557
    //This is done after writing of options since it often crashes the program :(
89c4a3a6 sago007 2008-08-29 14:32 4558
    UnloadImages();
89c4a3a6 sago007 2008-08-29 14:32 4559
    
89c4a3a6 sago007 2008-08-29 14:32 4560
    
89c4a3a6 sago007 2008-08-29 14:32 4561
    //calculate uptime:
89c4a3a6 sago007 2008-08-29 14:32 4562
    //int hours, mins, secs, 
89c4a3a6 sago007 2008-08-29 14:32 4563
    int time;
89c4a3a6 sago007 2008-08-29 14:32 4564
    commonTime ct;
89c4a3a6 sago007 2008-08-29 14:32 4565
    ct.days = 0;
89c4a3a6 sago007 2008-08-29 14:32 4566
    time = SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 4567
    ct.hours = time/(1000*60*60);
89c4a3a6 sago007 2008-08-29 14:32 4568
    time = time % (1000*60*60);
89c4a3a6 sago007 2008-08-29 14:32 4569
    ct.minutes = time/(1000*60);
89c4a3a6 sago007 2008-08-29 14:32 4570
    time = time % (1000*60);
89c4a3a6 sago007 2008-08-29 14:32 4571
    ct.seconds = time/1000;
89c4a3a6 sago007 2008-08-29 14:32 4572
89c4a3a6 sago007 2008-08-29 14:32 4573
    cout << "Block Attack - Rise of the Blocks ran for: " << ct.hours << " hours " << ct.minutes << " mins and " << ct.seconds << " secs" << endl;
89c4a3a6 sago007 2008-08-29 14:32 4574
        
89c4a3a6 sago007 2008-08-29 14:32 4575
    ct = addTotalTime(ct);
89c4a3a6 sago007 2008-08-29 14:32 4576
    
89c4a3a6 sago007 2008-08-29 14:32 4577
    cout << "Total run time is now: " << ct.days << " days " << ct.hours << " hours " << ct.minutes << " mins and " << ct.seconds << " secs" << endl;
89c4a3a6 sago007 2008-08-29 14:32 4578
    
89c4a3a6 sago007 2008-08-29 14:32 4579
    return 0;
89c4a3a6 sago007 2008-08-29 14:32 4580
}
1970-01-01 00:00 4581