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
215ca7b3 sago007 2009-03-06 16:37 27
#include "common.h"
215ca7b3 sago007 2009-03-06 16:37 28
215ca7b3 sago007 2009-03-06 16:37 29
27ae0175 sago007 2009-01-30 06:02 30
#include <string.h>
27ae0175 sago007 2009-01-30 06:02 31
27ae0175 sago007 2009-01-30 06:02 32
91886cae sago007 2008-09-12 16:28 33
1572de2b sago007 2008-09-11 18:15 34
1572de2b sago007 2008-09-11 18:15 35
1572de2b sago007 2008-09-11 18:15 36
#ifndef VERSION_NUMBER
64ea862c sago007 2009-05-05 02:45 37
    #define VERSION_NUMBER "version 1.4.1 BETA"
1572de2b sago007 2008-09-11 18:15 38
#endif
89c4a3a6 sago007 2008-08-29 14:32 39
89c4a3a6 sago007 2008-08-29 14:32 40
//If DEBUG is defined: AI info and FPS will be written to screen
1572de2b sago007 2008-09-11 18:15 41
#ifndef DEBUG
2f30c381 sago007 2008-09-14 13:08 42
    #define DEBUG 0
1572de2b sago007 2008-09-11 18:15 43
#endif
89c4a3a6 sago007 2008-08-29 14:32 44
89c4a3a6 sago007 2008-08-29 14:32 45
//If NETWORK id defined: enet will be used
1572de2b sago007 2008-09-11 18:15 46
#ifndef NETWORK
1572de2b sago007 2008-09-11 18:15 47
    #define NETWORK 1
1572de2b sago007 2008-09-11 18:15 48
#endif
1572de2b sago007 2008-09-11 18:15 49
769a41a0 sago007 2008-09-24 12:54 50
//Abstract layer is experimental and appears to cause trouble in some cercumstances. And it is not implemented
91886cae sago007 2008-09-12 16:28 51
#ifndef USE_ABSTRACT_FS
64ea862c sago007 2009-05-05 02:45 52
    #define USE_ABSTRACT_FS 1
91886cae sago007 2008-09-12 16:28 53
#endif
91886cae sago007 2008-09-12 16:28 54
1572de2b sago007 2008-09-11 18:15 55
//Build-in level editor is still experimental!
1572de2b sago007 2008-09-11 18:15 56
#ifndef LEVELEDITOR
1572de2b sago007 2008-09-11 18:15 57
    #define LEVELEDITOR 0
1572de2b sago007 2008-09-11 18:15 58
#endif
89c4a3a6 sago007 2008-08-29 14:32 59
89c4a3a6 sago007 2008-08-29 14:32 60
//Macros to convert surfaces (for faster drawing)
89c4a3a6 sago007 2008-08-29 14:32 61
#define CONVERT(n) tmp = SDL_DisplayFormat(n); SDL_FreeSurface(n); n = tmp
89c4a3a6 sago007 2008-08-29 14:32 62
#define CONVERTA(n) tmp = SDL_DisplayFormatAlpha(n); SDL_FreeSurface(n); n = tmp
89c4a3a6 sago007 2008-08-29 14:32 63
89c4a3a6 sago007 2008-08-29 14:32 64
#include <iostream>
89c4a3a6 sago007 2008-08-29 14:32 65
#include <stdlib.h>
89c4a3a6 sago007 2008-08-29 14:32 66
#include <time.h>           //Used for srand()
769a41a0 sago007 2008-09-24 12:54 67
#include <sstream>          //Still used by itoa2
89c4a3a6 sago007 2008-08-29 14:32 68
#include <string>
89c4a3a6 sago007 2008-08-29 14:32 69
#include "SDL.h"            //The SDL libary, used for most things
89c4a3a6 sago007 2008-08-29 14:32 70
#include <SDL_mixer.h>      //Used for sound & music
89c4a3a6 sago007 2008-08-29 14:32 71
#include <SDL_image.h>      //To load PNG images!
91886cae sago007 2008-09-12 16:28 72
#if USE_ABSTRACT_FS
91886cae sago007 2008-09-12 16:28 73
    #include <physfs.h>         //Abstract file system. To use containers
91886cae sago007 2008-09-12 16:28 74
#endif
47529580 sago007 2008-12-09 02:34 75
//#include "ttfont.h"        //To use True Type Fonts in SDL
89c4a3a6 sago007 2008-08-29 14:32 76
//#include "config.h"
89c4a3a6 sago007 2008-08-29 14:32 77
#include <vector>
95bc02ff sago007 2009-03-15 02:46 78
#include <SDL/SDL_timer.h>
78d03b38 sago007 2008-11-13 19:56 79
//#include "MenuSystem.h"
89c4a3a6 sago007 2008-08-29 14:32 80
89c4a3a6 sago007 2008-08-29 14:32 81
//if SHAREDIR is not used we look in current directory
89c4a3a6 sago007 2008-08-29 14:32 82
#ifndef SHAREDIR
89c4a3a6 sago007 2008-08-29 14:32 83
#define SHAREDIR "."
89c4a3a6 sago007 2008-08-29 14:32 84
#endif
89c4a3a6 sago007 2008-08-29 14:32 85
89c4a3a6 sago007 2008-08-29 14:32 86
89c4a3a6 sago007 2008-08-29 14:32 87
89c4a3a6 sago007 2008-08-29 14:32 88
//enet things
1572de2b sago007 2008-09-11 18:15 89
#if NETWORK
89c4a3a6 sago007 2008-08-29 14:32 90
#include "enet/enet.h"
89c4a3a6 sago007 2008-08-29 14:32 91
#endif
89c4a3a6 sago007 2008-08-29 14:32 92
//enet things end
89c4a3a6 sago007 2008-08-29 14:32 93
89c4a3a6 sago007 2008-08-29 14:32 94
#include "SFont.h"          //Used to write on screen
89c4a3a6 sago007 2008-08-29 14:32 95
#include "highscore.h"      //Stores highscores
89c4a3a6 sago007 2008-08-29 14:32 96
#include "ReadKeyboard.h"   //Reads text from keyboard
89c4a3a6 sago007 2008-08-29 14:32 97
#include "joypad.h"         //Used for joypads
89c4a3a6 sago007 2008-08-29 14:32 98
#include "listFiles.h"	    //Used to show files on screen
89c4a3a6 sago007 2008-08-29 14:32 99
#include "replay.h"			//Used for replays
89c4a3a6 sago007 2008-08-29 14:32 100
#include "stats.h"          //Saves general stats 
1572de2b sago007 2008-09-11 18:15 101
#if LEVELEDITOR
1572de2b sago007 2008-09-11 18:15 102
#include "editor/editorMain.hpp" //The level editor
1572de2b sago007 2008-09-11 18:15 103
#endif
bc9ea011 sago007 2009-04-12 17:43 104
//#include "uploadReplay.h"   //Takes care of everything libcurl related
89c4a3a6 sago007 2008-08-29 14:32 105
89c4a3a6 sago007 2008-08-29 14:32 106
#include "common.h"
89c4a3a6 sago007 2008-08-29 14:32 107
89c4a3a6 sago007 2008-08-29 14:32 108
/*******************************************************************************
89c4a3a6 sago007 2008-08-29 14:32 109
* All variables and constant has been moved to mainVars.hpp for the overview.  *
89c4a3a6 sago007 2008-08-29 14:32 110
*******************************************************************************/
89c4a3a6 sago007 2008-08-29 14:32 111
#include "mainVars.hpp"
89c4a3a6 sago007 2008-08-29 14:32 112
89c4a3a6 sago007 2008-08-29 14:32 113
void MakeBackground(int,int);
89c4a3a6 sago007 2008-08-29 14:32 114
89c4a3a6 sago007 2008-08-29 14:32 115
void closeAllMenus()
89c4a3a6 sago007 2008-08-29 14:32 116
{
89c4a3a6 sago007 2008-08-29 14:32 117
    bNewGameOpen=false;          //show sub menues
89c4a3a6 sago007 2008-08-29 14:32 118
    bOptionsOpen=false;          //Show OptionsMenu (Configure and Select Puzzle)
89c4a3a6 sago007 2008-08-29 14:32 119
    b1playerOpen=false;			//show submenu
89c4a3a6 sago007 2008-08-29 14:32 120
    b2playersOpen=false;
89c4a3a6 sago007 2008-08-29 14:32 121
    bReplayOpen = false;
1572de2b sago007 2008-09-11 18:15 122
#if NETWORK
89c4a3a6 sago007 2008-08-29 14:32 123
    bNetworkOpen = false;
89c4a3a6 sago007 2008-08-29 14:32 124
#endif
89c4a3a6 sago007 2008-08-29 14:32 125
    showOptions = false;
89c4a3a6 sago007 2008-08-29 14:32 126
89c4a3a6 sago007 2008-08-29 14:32 127
}
89c4a3a6 sago007 2008-08-29 14:32 128
89c4a3a6 sago007 2008-08-29 14:32 129
64ea862c sago007 2009-05-05 02:45 130
#if USE_ABSTRACT_FS
64ea862c sago007 2009-05-05 02:45 131
SDL_Surface * IMG_Load2(char* path)
64ea862c sago007 2009-05-05 02:45 132
{
64ea862c sago007 2009-05-05 02:45 133
    if (!PHYSFS_exists(path))
64ea862c sago007 2009-05-05 02:45 134
    {
64ea862c sago007 2009-05-05 02:45 135
        cout << "File not in blockattack.data: " << path << endl;
64ea862c sago007 2009-05-05 02:45 136
        return NULL; //file doesn't exist
64ea862c sago007 2009-05-05 02:45 137
    }
64ea862c sago007 2009-05-05 02:45 138
64ea862c sago007 2009-05-05 02:45 139
    PHYSFS_file* myfile = PHYSFS_openRead(path);
64ea862c sago007 2009-05-05 02:45 140
64ea862c sago007 2009-05-05 02:45 141
    // Get the lenght of the file
64ea862c sago007 2009-05-05 02:45 142
    unsigned int m_size = PHYSFS_fileLength(myfile);
64ea862c sago007 2009-05-05 02:45 143
64ea862c sago007 2009-05-05 02:45 144
    // Get the file data.
64ea862c sago007 2009-05-05 02:45 145
    char *m_data = new char[m_size];
64ea862c sago007 2009-05-05 02:45 146
64ea862c sago007 2009-05-05 02:45 147
    int length_read = PHYSFS_read (myfile, m_data, 1, m_size);
64ea862c sago007 2009-05-05 02:45 148
64ea862c sago007 2009-05-05 02:45 149
    if (length_read != (int)m_size)
64ea862c sago007 2009-05-05 02:45 150
    {
64ea862c sago007 2009-05-05 02:45 151
            delete [] m_data;
64ea862c sago007 2009-05-05 02:45 152
            m_data = 0;
64ea862c sago007 2009-05-05 02:45 153
            PHYSFS_close(myfile);
64ea862c sago007 2009-05-05 02:45 154
            cout << "Error. Curropt data file!" << endl;
64ea862c sago007 2009-05-05 02:45 155
            return NULL;
64ea862c sago007 2009-05-05 02:45 156
    }
89c4a3a6 sago007 2008-08-29 14:32 157
64ea862c sago007 2009-05-05 02:45 158
    PHYSFS_close(myfile);
64ea862c sago007 2009-05-05 02:45 159
64ea862c sago007 2009-05-05 02:45 160
// And this is how you load an image from a memory buffer with SDL
64ea862c sago007 2009-05-05 02:45 161
    SDL_RWops *rw = SDL_RWFromMem (m_data, m_size);
64ea862c sago007 2009-05-05 02:45 162
64ea862c sago007 2009-05-05 02:45 163
    //The above might fail an return null.
64ea862c sago007 2009-05-05 02:45 164
    if(!rw)
64ea862c sago007 2009-05-05 02:45 165
    {
64ea862c sago007 2009-05-05 02:45 166
        delete [] m_data;
64ea862c sago007 2009-05-05 02:45 167
        m_data = 0;
64ea862c sago007 2009-05-05 02:45 168
        PHYSFS_close(myfile);
64ea862c sago007 2009-05-05 02:45 169
        cout << "Error. Curropt data file!" << endl;
64ea862c sago007 2009-05-05 02:45 170
        return NULL;
64ea862c sago007 2009-05-05 02:45 171
    }
64ea862c sago007 2009-05-05 02:45 172
adaf31bf sago007 2009-05-05 16:01 173
    SDL_Surface* surface = IMG_Load_RW(rw,true); //the second argument tells the function to three RWops
64ea862c sago007 2009-05-05 02:45 174
64ea862c sago007 2009-05-05 02:45 175
    return surface;
64ea862c sago007 2009-05-05 02:45 176
}
64ea862c sago007 2009-05-05 02:45 177
#else
89c4a3a6 sago007 2008-08-29 14:32 178
//Because we use the SHAREDIR we need:
89c4a3a6 sago007 2008-08-29 14:32 179
SDL_Surface * IMG_Load2(char* path) {
89c4a3a6 sago007 2008-08-29 14:32 180
1572de2b sago007 2008-09-11 18:15 181
    string tmp = "";
89c4a3a6 sago007 2008-08-29 14:32 182
    SDL_Surface * ret=NULL;
1572de2b sago007 2008-09-11 18:15 183
    tmp = (string)""+sharedir+(string)"/"+path;
1572de2b sago007 2008-09-11 18:15 184
#if DEBUG
1572de2b sago007 2008-09-11 18:15 185
    cout << "loading " << tmp << endl;
89c4a3a6 sago007 2008-08-29 14:32 186
#endif
1572de2b sago007 2008-09-11 18:15 187
    if (!(ret = IMG_Load(tmp.c_str())))
89c4a3a6 sago007 2008-08-29 14:32 188
        ret = IMG_Load(path);
89c4a3a6 sago007 2008-08-29 14:32 189
    return ret;
89c4a3a6 sago007 2008-08-29 14:32 190
}
64ea862c sago007 2009-05-05 02:45 191
#endif
89c4a3a6 sago007 2008-08-29 14:32 192
89c4a3a6 sago007 2008-08-29 14:32 193
//Function to replace an image (ie. for a theme). Return true if replacing
89c4a3a6 sago007 2008-08-29 14:32 194
bool reloadIMG(SDL_Surface **surface2replace, string replaceWith)
89c4a3a6 sago007 2008-08-29 14:32 195
{
89c4a3a6 sago007 2008-08-29 14:32 196
    string fullPath = SHAREDIR+(string)"/themes/"+replaceWith;
1572de2b sago007 2008-09-11 18:15 197
    #if DEBUG
89c4a3a6 sago007 2008-08-29 14:32 198
    cout << "Trying to load " << fullPath << endl;
89c4a3a6 sago007 2008-08-29 14:32 199
    #endif
89c4a3a6 sago007 2008-08-29 14:32 200
    SDL_Surface * temp = NULL;
89c4a3a6 sago007 2008-08-29 14:32 201
    temp = IMG_Load(fullPath.c_str());
89c4a3a6 sago007 2008-08-29 14:32 202
    if(temp) //If we loaded a new image
89c4a3a6 sago007 2008-08-29 14:32 203
    {
1572de2b sago007 2008-09-11 18:15 204
        #if DEBUG
89c4a3a6 sago007 2008-08-29 14:32 205
        cout << "Found in game folder: " << fullPath << endl;
89c4a3a6 sago007 2008-08-29 14:32 206
        #endif
89c4a3a6 sago007 2008-08-29 14:32 207
        SDL_FreeSurface(*surface2replace);
89c4a3a6 sago007 2008-08-29 14:32 208
        *surface2replace = temp;
89c4a3a6 sago007 2008-08-29 14:32 209
        return true;
89c4a3a6 sago007 2008-08-29 14:32 210
    }
89c4a3a6 sago007 2008-08-29 14:32 211
    //Stop if under windows:
89c4a3a6 sago007 2008-08-29 14:32 212
    #ifdef __unix__
89c4a3a6 sago007 2008-08-29 14:32 213
    fullPath = (string)getenv("HOME")+(string)"/.gamesaves/blockattack/themes/"+replaceWith;
1572de2b sago007 2008-09-11 18:15 214
    #if DEBUG
89c4a3a6 sago007 2008-08-29 14:32 215
    cout << "Trying to load " << fullPath << endl;
89c4a3a6 sago007 2008-08-29 14:32 216
    #endif
89c4a3a6 sago007 2008-08-29 14:32 217
    temp = IMG_Load(fullPath.c_str());
89c4a3a6 sago007 2008-08-29 14:32 218
    if(temp) //If we loaded a new image
89c4a3a6 sago007 2008-08-29 14:32 219
    {
1572de2b sago007 2008-09-11 18:15 220
        #if DEBUG
89c4a3a6 sago007 2008-08-29 14:32 221
        cout << "Found in home folder: " << fullPath << endl;
89c4a3a6 sago007 2008-08-29 14:32 222
        #endif
89c4a3a6 sago007 2008-08-29 14:32 223
        SDL_FreeSurface(*surface2replace);
89c4a3a6 sago007 2008-08-29 14:32 224
        *surface2replace = temp;
89c4a3a6 sago007 2008-08-29 14:32 225
        return true;
89c4a3a6 sago007 2008-08-29 14:32 226
    }
89c4a3a6 sago007 2008-08-29 14:32 227
    #endif
89c4a3a6 sago007 2008-08-29 14:32 228
    *surface2replace = * surface2replace;
89c4a3a6 sago007 2008-08-29 14:32 229
    return false;
a3671ee6 sago007 2009-04-03 23:23 230
} 
89c4a3a6 sago007 2008-08-29 14:32 231
89c4a3a6 sago007 2008-08-29 14:32 232
void loadTheme(string themeName)
89c4a3a6 sago007 2008-08-29 14:32 233
{
c96f480e sago007 2009-03-28 18:59 234
    if(themeName.compare("default")==0)
a3671ee6 sago007 2009-04-03 23:23 235
        themeName = "..";
a3671ee6 sago007 2009-04-03 23:23 236
    reloadIMG(&backgroundImage,themeName+"/gfx/background.png");
a3671ee6 sago007 2009-04-03 23:23 237
    reloadIMG(&backgroundImage,themeName+"/gfx/background.jpg");
89c4a3a6 sago007 2008-08-29 14:32 238
    CONVERT(backgroundImage); //We should always convert even if we don't have to or else: SEGFAULT!
a3671ee6 sago007 2009-04-03 23:23 239
    reloadIMG(&bNewGame,themeName+"/gfx/bNewGame.png");
89c4a3a6 sago007 2008-08-29 14:32 240
    CONVERT(bNewGame);
a3671ee6 sago007 2009-04-03 23:23 241
    reloadIMG(&b1player,themeName+"/gfx/bOnePlayer.png");
89c4a3a6 sago007 2008-08-29 14:32 242
    CONVERT(b1player);
a3671ee6 sago007 2009-04-03 23:23 243
    reloadIMG(&b2players,themeName+"/gfx/bTwoPlayers.png");
89c4a3a6 sago007 2008-08-29 14:32 244
    CONVERT(b2players);
a3671ee6 sago007 2009-04-03 23:23 245
    reloadIMG(&bVsMode,themeName+"/gfx/bVsGame.png");
89c4a3a6 sago007 2008-08-29 14:32 246
    CONVERT(bVsMode);
a3671ee6 sago007 2009-04-03 23:23 247
    reloadIMG(&bVsModeConfig,themeName+"/gfx/bVsGameConfig.png");
e3e0644e sago007 2008-09-25 14:00 248
    CONVERT(bVsModeConfig);
a3671ee6 sago007 2009-04-03 23:23 249
    reloadIMG(&bPuzzle,themeName+"/gfx/bPuzzle.png");
89c4a3a6 sago007 2008-08-29 14:32 250
    CONVERT(bPuzzle);
a3671ee6 sago007 2009-04-03 23:23 251
    reloadIMG(&bStageClear,themeName+"/gfx/bStageClear.png");
89c4a3a6 sago007 2008-08-29 14:32 252
    CONVERT(bStageClear);
a3671ee6 sago007 2009-04-03 23:23 253
    reloadIMG(&bTimeTrial,themeName+"/gfx/bTimeTrial.png");
89c4a3a6 sago007 2008-08-29 14:32 254
    CONVERT(bTimeTrial);
a3671ee6 sago007 2009-04-03 23:23 255
    reloadIMG(&bEndless,themeName+"/gfx/bEndless.png");
89c4a3a6 sago007 2008-08-29 14:32 256
    CONVERT(bEndless);
a3671ee6 sago007 2009-04-03 23:23 257
    reloadIMG(&bOptions,themeName+"/gfx/bOptions.png");
89c4a3a6 sago007 2008-08-29 14:32 258
    CONVERT(bOptions);
a3671ee6 sago007 2009-04-03 23:23 259
    reloadIMG(&bConfigure,themeName+"/gfx/bConfigure.png");
89c4a3a6 sago007 2008-08-29 14:32 260
    CONVERTA(bConfigure);
a3671ee6 sago007 2009-04-03 23:23 261
    reloadIMG(&bSelectPuzzle,themeName+"/gfx/bSelectPuzzle.png");
89c4a3a6 sago007 2008-08-29 14:32 262
    CONVERTA(bSelectPuzzle);
a3671ee6 sago007 2009-04-03 23:23 263
    reloadIMG(&bReplay,themeName+"/gfx/bReplays.png");
89c4a3a6 sago007 2008-08-29 14:32 264
    CONVERTA(bReplay);
a3671ee6 sago007 2009-04-03 23:23 265
    reloadIMG(&bSave,themeName+"/gfx/bSave.png");
89c4a3a6 sago007 2008-08-29 14:32 266
    CONVERTA(bSave);
a3671ee6 sago007 2009-04-03 23:23 267
    reloadIMG(&bLoad,themeName+"/gfx/bLoad.png");
89c4a3a6 sago007 2008-08-29 14:32 268
    CONVERTA(bLoad);
1572de2b sago007 2008-09-11 18:15 269
#if NETWORK
a3671ee6 sago007 2009-04-03 23:23 270
    reloadIMG(&bNetwork,themeName+"/gfx/bNetwork.png");
89c4a3a6 sago007 2008-08-29 14:32 271
    CONVERTA(bNetwork);
a3671ee6 sago007 2009-04-03 23:23 272
    reloadIMG(&bHost,themeName+"/gfx/bHost.png");
89c4a3a6 sago007 2008-08-29 14:32 273
    CONVERTA(bHost);
a3671ee6 sago007 2009-04-03 23:23 274
    reloadIMG(&bConnect,themeName+"/gfx/bConnect.png");
89c4a3a6 sago007 2008-08-29 14:32 275
    CONVERTA(bConnect);
89c4a3a6 sago007 2008-08-29 14:32 276
#endif
a3671ee6 sago007 2009-04-03 23:23 277
    reloadIMG(&bHighScore,themeName+"/gfx/bHighScore.png");
89c4a3a6 sago007 2008-08-29 14:32 278
    CONVERT(bHighScore);
a3671ee6 sago007 2009-04-03 23:23 279
    reloadIMG(&boardBackBack,themeName+"/gfx/boardBackBack.png");
89c4a3a6 sago007 2008-08-29 14:32 280
    CONVERTA(boardBackBack);
a3671ee6 sago007 2009-04-03 23:23 281
    reloadIMG(&backBoard,themeName+"/gfx/BackBoard.png");
89c4a3a6 sago007 2008-08-29 14:32 282
    CONVERT(backBoard);
a3671ee6 sago007 2009-04-03 23:23 283
    reloadIMG(&blackLine,themeName+"/gfx/blackLine.png");
89c4a3a6 sago007 2008-08-29 14:32 284
    CONVERT(blackLine);
a3671ee6 sago007 2009-04-03 23:23 285
    reloadIMG(&changeButtonsBack,themeName+"/gfx/changeButtonsBack.png");
89c4a3a6 sago007 2008-08-29 14:32 286
    CONVERTA(changeButtonsBack);
a3671ee6 sago007 2009-04-03 23:23 287
    reloadIMG(&cursor[0],themeName+"/gfx/animations/cursor/1.png");
89c4a3a6 sago007 2008-08-29 14:32 288
    CONVERTA(cursor[0]);
a3671ee6 sago007 2009-04-03 23:23 289
    reloadIMG(&cursor[1],themeName+"/gfx/animations/cursor/2.png");
89c4a3a6 sago007 2008-08-29 14:32 290
    CONVERTA(cursor[1]);
a3671ee6 sago007 2009-04-03 23:23 291
    reloadIMG(&cursor[0],themeName+"/gfx/animations/counter/1.png");
89c4a3a6 sago007 2008-08-29 14:32 292
    CONVERTA(counter[0]);
a3671ee6 sago007 2009-04-03 23:23 293
    reloadIMG(&cursor[1],themeName+"/gfx/animations/counter/2.png");
89c4a3a6 sago007 2008-08-29 14:32 294
    CONVERTA(counter[1]);
a3671ee6 sago007 2009-04-03 23:23 295
    reloadIMG(&cursor[2],themeName+"/gfx/animations/counter/3.png");
89c4a3a6 sago007 2008-08-29 14:32 296
    CONVERTA(counter[2]);
a3671ee6 sago007 2009-04-03 23:23 297
    reloadIMG(&optionsBack,themeName+"/gfx/options.png");
89c4a3a6 sago007 2008-08-29 14:32 298
    CONVERTA(optionsBack);
a3671ee6 sago007 2009-04-03 23:23 299
    reloadIMG(&bExit,themeName+"/gfx/bExit.png");
89c4a3a6 sago007 2008-08-29 14:32 300
    CONVERT(bExit);
a3671ee6 sago007 2009-04-03 23:23 301
    reloadIMG(&bOn,themeName+"/gfx/bOn.png");
89c4a3a6 sago007 2008-08-29 14:32 302
    CONVERT(bOn);
a3671ee6 sago007 2009-04-03 23:23 303
    reloadIMG(&bOff,themeName+"/gfx/bOff.png");
89c4a3a6 sago007 2008-08-29 14:32 304
    CONVERT(bOff);
a3671ee6 sago007 2009-04-03 23:23 305
    reloadIMG(&bChange,themeName+"/gfx/bChange.png");
89c4a3a6 sago007 2008-08-29 14:32 306
    CONVERT(bChange);
a3671ee6 sago007 2009-04-03 23:23 307
    reloadIMG(&b1024,themeName+"/gfx/b1024.png");
89c4a3a6 sago007 2008-08-29 14:32 308
    CONVERT(b1024);
a3671ee6 sago007 2009-04-03 23:23 309
    reloadIMG(&dialogBox,themeName+"/gfx/dialogbox.png");
89c4a3a6 sago007 2008-08-29 14:32 310
    CONVERTA(dialogBox);
89c4a3a6 sago007 2008-08-29 14:32 311
//	CONVERTA(fileDialogBox);
a3671ee6 sago007 2009-04-03 23:23 312
    reloadIMG(&iLevelCheck,themeName+"/gfx/iLevelCheck.png");
89c4a3a6 sago007 2008-08-29 14:32 313
    CONVERTA(iLevelCheck);
a3671ee6 sago007 2009-04-03 23:23 314
    reloadIMG(&iLevelCheckBox,themeName+"/gfx/iLevelCheckBox.png");
89c4a3a6 sago007 2008-08-29 14:32 315
    CONVERT(iLevelCheckBox);
a3671ee6 sago007 2009-04-03 23:23 316
    reloadIMG(&iCheckBoxArea,themeName+"/gfx/iCheckBoxArea.png");
89c4a3a6 sago007 2008-08-29 14:32 317
    CONVERTA(iCheckBoxArea);
89c4a3a6 sago007 2008-08-29 14:32 318
    for (int i = 0;i<4;i++)
89c4a3a6 sago007 2008-08-29 14:32 319
    {
a3671ee6 sago007 2009-04-03 23:23 320
        reloadIMG(&explosion[i],themeName+"/gfx/animations/explosion/"+(char)('0'+i)+".png");
89c4a3a6 sago007 2008-08-29 14:32 321
        CONVERTA(explosion[i]);
89c4a3a6 sago007 2008-08-29 14:32 322
    }
a3671ee6 sago007 2009-04-03 23:23 323
    reloadIMG(&bricks[0],themeName+"/gfx/bricks/blue.png");
a3671ee6 sago007 2009-04-03 23:23 324
    reloadIMG(&bricks[1],themeName+"/gfx/bricks/green.png");
a3671ee6 sago007 2009-04-03 23:23 325
    reloadIMG(&bricks[2],themeName+"/gfx/bricks/purple.png");
a3671ee6 sago007 2009-04-03 23:23 326
    reloadIMG(&bricks[3],themeName+"/gfx/bricks/red.png");
a3671ee6 sago007 2009-04-03 23:23 327
    reloadIMG(&bricks[4],themeName+"/gfx/bricks/turkish.png");
a3671ee6 sago007 2009-04-03 23:23 328
    reloadIMG(&bricks[5],themeName+"/gfx/bricks/yellow.png");
a3671ee6 sago007 2009-04-03 23:23 329
    reloadIMG(&bricks[6],themeName+"/gfx/bricks/grey.png");
a3671ee6 sago007 2009-04-03 23:23 330
    reloadIMG(&balls[0],themeName+"/gfx/balls/ballBlue.png");
a3671ee6 sago007 2009-04-03 23:23 331
    reloadIMG(&balls[1],themeName+"/gfx/balls/ballGreen.png");
a3671ee6 sago007 2009-04-03 23:23 332
    reloadIMG(&balls[2],themeName+"/gfx/balls/ballPurple.png");
a3671ee6 sago007 2009-04-03 23:23 333
    reloadIMG(&balls[3],themeName+"/gfx/balls/ballRed.png");
a3671ee6 sago007 2009-04-03 23:23 334
    reloadIMG(&balls[4],themeName+"/gfx/balls/ballTurkish.png");
a3671ee6 sago007 2009-04-03 23:23 335
    reloadIMG(&balls[5],themeName+"/gfx/balls/ballYellow.png");
a3671ee6 sago007 2009-04-03 23:23 336
    reloadIMG(&balls[6],themeName+"/gfx/balls/ballGray.png");
89c4a3a6 sago007 2008-08-29 14:32 337
    for (int i = 0; i<7; i++)
89c4a3a6 sago007 2008-08-29 14:32 338
    {
89c4a3a6 sago007 2008-08-29 14:32 339
        CONVERTA(bricks[i]);
89c4a3a6 sago007 2008-08-29 14:32 340
        CONVERTA(balls[i]);
89c4a3a6 sago007 2008-08-29 14:32 341
    }
a3671ee6 sago007 2009-04-03 23:23 342
    reloadIMG(&crossover,themeName+"/gfx/crossover.png");
89c4a3a6 sago007 2008-08-29 14:32 343
    CONVERTA(crossover);
a3671ee6 sago007 2009-04-03 23:23 344
    reloadIMG(&garbageTL,themeName+"/gfx/garbage/garbageTL.png");
89c4a3a6 sago007 2008-08-29 14:32 345
    CONVERTA(garbageTL);
a3671ee6 sago007 2009-04-03 23:23 346
    reloadIMG(&garbageT,themeName+"/gfx/garbage/garbageT.png");
89c4a3a6 sago007 2008-08-29 14:32 347
    CONVERTA(garbageT);
a3671ee6 sago007 2009-04-03 23:23 348
    reloadIMG(&garbageTR,themeName+"/gfx/garbage/garbageTR.png");
89c4a3a6 sago007 2008-08-29 14:32 349
    CONVERTA(garbageTR);
a3671ee6 sago007 2009-04-03 23:23 350
    reloadIMG(&garbageR,themeName+"/gfx/garbage/garbageR.png");
89c4a3a6 sago007 2008-08-29 14:32 351
    CONVERTA(garbageR);
a3671ee6 sago007 2009-04-03 23:23 352
    reloadIMG(&garbageBR,themeName+"/gfx/garbage/garbageBR.png");
89c4a3a6 sago007 2008-08-29 14:32 353
    CONVERTA(garbageBR);
a3671ee6 sago007 2009-04-03 23:23 354
    reloadIMG(&garbageB,themeName+"/gfx/garbage/garbageB.png");
89c4a3a6 sago007 2008-08-29 14:32 355
    CONVERTA(garbageB);
a3671ee6 sago007 2009-04-03 23:23 356
    reloadIMG(&garbageBL,themeName+"/gfx/garbage/garbageBL.png");
89c4a3a6 sago007 2008-08-29 14:32 357
    CONVERTA(garbageBL);
a3671ee6 sago007 2009-04-03 23:23 358
    reloadIMG(&garbageL,themeName+"/gfx/garbage/garbageL.png");
89c4a3a6 sago007 2008-08-29 14:32 359
    CONVERTA(garbageL);
a3671ee6 sago007 2009-04-03 23:23 360
    reloadIMG(&garbageFill,themeName+"/gfx/garbage/garbageFill.png");
89c4a3a6 sago007 2008-08-29 14:32 361
    CONVERTA(garbageFill);
a3671ee6 sago007 2009-04-03 23:23 362
    reloadIMG(&garbageML,themeName+"/gfx/garbage/garbageML.png");
89c4a3a6 sago007 2008-08-29 14:32 363
    CONVERTA(garbageML);
a3671ee6 sago007 2009-04-03 23:23 364
    reloadIMG(&garbageMR,themeName+"/gfx/garbage/garbageMR.png");
89c4a3a6 sago007 2008-08-29 14:32 365
    CONVERTA(garbageMR);
a3671ee6 sago007 2009-04-03 23:23 366
    reloadIMG(&garbageM,themeName+"/gfx/garbage/garbageM.png");
89c4a3a6 sago007 2008-08-29 14:32 367
    CONVERTA(garbageM);
a3671ee6 sago007 2009-04-03 23:23 368
    reloadIMG(&garbageGML,themeName+"/gfx/garbage/garbageGML.png");
89c4a3a6 sago007 2008-08-29 14:32 369
    CONVERTA(garbageGML);
a3671ee6 sago007 2009-04-03 23:23 370
    reloadIMG(&garbageGMR,themeName+"/gfx/garbage/garbageGMR.png");
89c4a3a6 sago007 2008-08-29 14:32 371
    CONVERTA(garbageGMR);
a3671ee6 sago007 2009-04-03 23:23 372
    reloadIMG(&garbageGM,themeName+"/gfx/garbage/garbageGM.png");
89c4a3a6 sago007 2008-08-29 14:32 373
    CONVERTA(garbageGM);
a3671ee6 sago007 2009-04-03 23:23 374
    reloadIMG(&smiley[0],themeName+"/gfx/smileys/0.png");
89c4a3a6 sago007 2008-08-29 14:32 375
    CONVERTA(smiley[0]);
a3671ee6 sago007 2009-04-03 23:23 376
    reloadIMG(&smiley[1],themeName+"/gfx/smileys/1.png");
89c4a3a6 sago007 2008-08-29 14:32 377
    CONVERTA(smiley[1]);
a3671ee6 sago007 2009-04-03 23:23 378
    reloadIMG(&smiley[2],themeName+"/gfx/smileys/2.png");
89c4a3a6 sago007 2008-08-29 14:32 379
    CONVERTA(smiley[2]);
a3671ee6 sago007 2009-04-03 23:23 380
    reloadIMG(&smiley[3],themeName+"/gfx/smileys/3.png");
89c4a3a6 sago007 2008-08-29 14:32 381
    CONVERTA(smiley[3]);
a3671ee6 sago007 2009-04-03 23:23 382
    reloadIMG(&iWinner,themeName+"/gfx/iWinner.png");
89c4a3a6 sago007 2008-08-29 14:32 383
    CONVERTA(iWinner);
a3671ee6 sago007 2009-04-03 23:23 384
    reloadIMG(&iDraw,themeName+"/gfx/iDraw.png");
89c4a3a6 sago007 2008-08-29 14:32 385
    CONVERTA(iDraw);
a3671ee6 sago007 2009-04-03 23:23 386
    reloadIMG(&iLoser,themeName+"/gfx/iLoser.png");
89c4a3a6 sago007 2008-08-29 14:32 387
    CONVERTA(iLoser);
a3671ee6 sago007 2009-04-03 23:23 388
    reloadIMG(&iChainBack,themeName+"/gfx/chainFrame.png");
89c4a3a6 sago007 2008-08-29 14:32 389
    CONVERTA(iChainBack);
a3671ee6 sago007 2009-04-03 23:23 390
    reloadIMG(&iGameOver,themeName+"/gfx/iGameOver.png");
89c4a3a6 sago007 2008-08-29 14:32 391
    CONVERTA(iGameOver);
a3671ee6 sago007 2009-04-03 23:23 392
    reloadIMG(&mouse,themeName+"/gfx/mouse.png");
89c4a3a6 sago007 2008-08-29 14:32 393
    CONVERTA(mouse);
a3671ee6 sago007 2009-04-03 23:23 394
    reloadIMG(&stageBobble,themeName+"/gfx/iStageClearLimit.png");
89c4a3a6 sago007 2008-08-29 14:32 395
    CONVERTA(stageBobble);
a3671ee6 sago007 2009-04-03 23:23 396
    reloadIMG(&bTheme,themeName+"/gfx/bTheme.png");
89c4a3a6 sago007 2008-08-29 14:32 397
    CONVERTA(bTheme);
a3671ee6 sago007 2009-04-03 23:23 398
    reloadIMG(&bSkip,themeName+"/gfx/bSkip.png");
89c4a3a6 sago007 2008-08-29 14:32 399
    CONVERTA(bSkip);
a3671ee6 sago007 2009-04-03 23:23 400
    reloadIMG(&bRetry,themeName+"/gfx/bRetry.png");
89c4a3a6 sago007 2008-08-29 14:32 401
    CONVERTA(bRetry);
a3671ee6 sago007 2009-04-03 23:23 402
    reloadIMG(&bNext,themeName+"/gfx/bNext.png");
89c4a3a6 sago007 2008-08-29 14:32 403
    CONVERTA(bNext);
89c4a3a6 sago007 2008-08-29 14:32 404
    /**
89c4a3a6 sago007 2008-08-29 14:32 405
     *Fonts is a special case
89c4a3a6 sago007 2008-08-29 14:32 406
     */
89c4a3a6 sago007 2008-08-29 14:32 407
    //First we free them:
1572de2b sago007 2008-09-11 18:15 408
    SFont_FreeFont(fBlueFont);
89c4a3a6 sago007 2008-08-29 14:32 409
    SFont_FreeFont(fSmallFont);
1572de2b sago007 2008-09-11 18:15 410
//SFont frees the surfaces then it frees the Font! So we start by loading the fonts we know are there:
1572de2b sago007 2008-09-11 18:15 411
    iBlueFont = IMG_Load2((char*)"gfx/24P_Arial_Blue.png");
1572de2b sago007 2008-09-11 18:15 412
    iSmallFont = IMG_Load2((char*)"gfx/14P_Arial_Angle_Red.png");
1572de2b sago007 2008-09-11 18:15 413
//Then we reload the images:
a3671ee6 sago007 2009-04-03 23:23 414
    reloadIMG(&iBlueFont,themeName+"/gfx/24P_Arial_Blue.png");
a3671ee6 sago007 2009-04-03 23:23 415
    reloadIMG(&iSmallFont,themeName+"/gfx/14P_Arial_Angle_Red.png");
89c4a3a6 sago007 2008-08-29 14:32 416
    //Then we convert them:
89c4a3a6 sago007 2008-08-29 14:32 417
    CONVERTA(iBlueFont);
89c4a3a6 sago007 2008-08-29 14:32 418
    CONVERTA(iSmallFont);
89c4a3a6 sago007 2008-08-29 14:32 419
    //Then create the fonts again:
89c4a3a6 sago007 2008-08-29 14:32 420
    fBlueFont = SFont_InitFont(iBlueFont);
1572de2b sago007 2008-09-11 18:15 421
    fSmallFont = SFont_InitFont(iSmallFont);
89c4a3a6 sago007 2008-08-29 14:32 422
    //Editor:
1572de2b sago007 2008-09-11 18:15 423
    #if LEVELEDITOR
1572de2b sago007 2008-09-11 18:15 424
    CONVERTA(bCreateFile);
89c4a3a6 sago007 2008-08-29 14:32 425
    CONVERTA(bDeletePuzzle);
89c4a3a6 sago007 2008-08-29 14:32 426
    CONVERTA(bLoadFile);
89c4a3a6 sago007 2008-08-29 14:32 427
    CONVERTA(bMoveBack);
89c4a3a6 sago007 2008-08-29 14:32 428
    CONVERTA(bMoveDown);
89c4a3a6 sago007 2008-08-29 14:32 429
    CONVERTA(bMoveForward);
89c4a3a6 sago007 2008-08-29 14:32 430
    CONVERTA(bMoveLeft);
89c4a3a6 sago007 2008-08-29 14:32 431
    CONVERTA(bMoveRight);
89c4a3a6 sago007 2008-08-29 14:32 432
    CONVERTA(bMoveUp);
89c4a3a6 sago007 2008-08-29 14:32 433
    CONVERTA(bNewPuzzle);
89c4a3a6 sago007 2008-08-29 14:32 434
    CONVERTA(bSaveFileAs);
89c4a3a6 sago007 2008-08-29 14:32 435
    CONVERTA(bSavePuzzle);
89c4a3a6 sago007 2008-08-29 14:32 436
    CONVERTA(bSaveToFile);
1572de2b sago007 2008-09-11 18:15 437
    CONVERTA(bTestPuzzle);
1572de2b sago007 2008-09-11 18:15 438
    #endif
1572de2b sago007 2008-09-11 18:15 439
    #if DEBUG
89c4a3a6 sago007 2008-08-29 14:32 440
    cout << "Loading succeded" << endl;
89c4a3a6 sago007 2008-08-29 14:32 441
    #endif
89c4a3a6 sago007 2008-08-29 14:32 442
}
89c4a3a6 sago007 2008-08-29 14:32 443
47529580 sago007 2008-12-09 02:34 444
/*TTF_Font * TTF_OpenFont2(char* path, int ptsize) {
89c4a3a6 sago007 2008-08-29 14:32 445
89c4a3a6 sago007 2008-08-29 14:32 446
    char * tmp;
89c4a3a6 sago007 2008-08-29 14:32 447
    TTF_Font * ret=NULL;
89c4a3a6 sago007 2008-08-29 14:32 448
    tmp = (char*)malloc (sizeof(char)*(strlen(path)+strlen(sharedir)+2));
89c4a3a6 sago007 2008-08-29 14:32 449
    strcpy(tmp, sharedir);
89c4a3a6 sago007 2008-08-29 14:32 450
    strcat(tmp, "/");
89c4a3a6 sago007 2008-08-29 14:32 451
    strcat(tmp, path);
1572de2b sago007 2008-09-11 18:15 452
#if DEBUG
89c4a3a6 sago007 2008-08-29 14:32 453
    printf("loading %s\n",tmp);
89c4a3a6 sago007 2008-08-29 14:32 454
#endif
89c4a3a6 sago007 2008-08-29 14:32 455
    if(!(TTF_WasInit()))
89c4a3a6 sago007 2008-08-29 14:32 456
       TTF_Init();
89c4a3a6 sago007 2008-08-29 14:32 457
    if (!(ret = TTF_OpenFont(tmp, ptsize)))
89c4a3a6 sago007 2008-08-29 14:32 458
        ret = TTF_OpenFont(path, ptsize);
89c4a3a6 sago007 2008-08-29 14:32 459
    if(!ret)
89c4a3a6 sago007 2008-08-29 14:32 460
        cout << "failed to load font: " << TTF_GetError() << endl;
89c4a3a6 sago007 2008-08-29 14:32 461
    free(tmp);
89c4a3a6 sago007 2008-08-29 14:32 462
    return ret;
47529580 sago007 2008-12-09 02:34 463
}*/
89c4a3a6 sago007 2008-08-29 14:32 464
adaf31bf sago007 2009-05-05 16:01 465
#if USE_ABSTRACT_FS
adaf31bf sago007 2009-05-05 16:01 466
Mix_Music * Mix_LoadMUS2(char* path)
adaf31bf sago007 2009-05-05 16:01 467
{
adaf31bf sago007 2009-05-05 16:01 468
    if (!PHYSFS_exists(path))
adaf31bf sago007 2009-05-05 16:01 469
    {
adaf31bf sago007 2009-05-05 16:01 470
        cout << "File not in blockattack.data: " << path << endl;
adaf31bf sago007 2009-05-05 16:01 471
        return NULL; //file doesn't exist
adaf31bf sago007 2009-05-05 16:01 472
    }
adaf31bf sago007 2009-05-05 16:01 473
adaf31bf sago007 2009-05-05 16:01 474
    PHYSFS_file* myfile = PHYSFS_openRead(path);
adaf31bf sago007 2009-05-05 16:01 475
adaf31bf sago007 2009-05-05 16:01 476
    // Get the lenght of the file
adaf31bf sago007 2009-05-05 16:01 477
    unsigned int m_size = PHYSFS_fileLength(myfile);
adaf31bf sago007 2009-05-05 16:01 478
adaf31bf sago007 2009-05-05 16:01 479
    // Get the file data.
adaf31bf sago007 2009-05-05 16:01 480
    char *m_data = new char[m_size];
adaf31bf sago007 2009-05-05 16:01 481
adaf31bf sago007 2009-05-05 16:01 482
    int length_read = PHYSFS_read (myfile, m_data, 1, m_size);
adaf31bf sago007 2009-05-05 16:01 483
adaf31bf sago007 2009-05-05 16:01 484
    if (length_read != (int)m_size)
adaf31bf sago007 2009-05-05 16:01 485
    {
adaf31bf sago007 2009-05-05 16:01 486
            delete [] m_data;
adaf31bf sago007 2009-05-05 16:01 487
            m_data = 0;
adaf31bf sago007 2009-05-05 16:01 488
            PHYSFS_close(myfile);
adaf31bf sago007 2009-05-05 16:01 489
            cout << "Error. Curropt data file!" << endl;
adaf31bf sago007 2009-05-05 16:01 490
            return NULL;
adaf31bf sago007 2009-05-05 16:01 491
    }
adaf31bf sago007 2009-05-05 16:01 492
adaf31bf sago007 2009-05-05 16:01 493
    PHYSFS_close(myfile);
adaf31bf sago007 2009-05-05 16:01 494
adaf31bf sago007 2009-05-05 16:01 495
// And this is how you load from a memory buffer with SDL
adaf31bf sago007 2009-05-05 16:01 496
    SDL_RWops *rw = SDL_RWFromMem (m_data, m_size);
adaf31bf sago007 2009-05-05 16:01 497
adaf31bf sago007 2009-05-05 16:01 498
    //The above might fail an return null.
adaf31bf sago007 2009-05-05 16:01 499
    if(!rw)
adaf31bf sago007 2009-05-05 16:01 500
    {
adaf31bf sago007 2009-05-05 16:01 501
        delete [] m_data;
adaf31bf sago007 2009-05-05 16:01 502
        m_data = 0;
adaf31bf sago007 2009-05-05 16:01 503
        PHYSFS_close(myfile);
adaf31bf sago007 2009-05-05 16:01 504
        cout << "Error. Curropt data file!" << endl;
adaf31bf sago007 2009-05-05 16:01 505
        return NULL;
adaf31bf sago007 2009-05-05 16:01 506
    }
adaf31bf sago007 2009-05-05 16:01 507
adaf31bf sago007 2009-05-05 16:01 508
    Mix_Music* ret = Mix_LoadMUS_RW(rw);
adaf31bf sago007 2009-05-05 16:01 509
adaf31bf sago007 2009-05-05 16:01 510
    return ret;
adaf31bf sago007 2009-05-05 16:01 511
}
adaf31bf sago007 2009-05-05 16:01 512
#else
89c4a3a6 sago007 2008-08-29 14:32 513
Mix_Music * Mix_LoadMUS2(char* path)
89c4a3a6 sago007 2008-08-29 14:32 514
{
89c4a3a6 sago007 2008-08-29 14:32 515
    Mix_Music * ret=NULL;
1572de2b sago007 2008-09-11 18:15 516
    string tmp = (string)""+sharedir+(string)"/"+path;
1572de2b sago007 2008-09-11 18:15 517
#if DEBUG
1572de2b sago007 2008-09-11 18:15 518
    cout << "loading " << tmp << endl;
89c4a3a6 sago007 2008-08-29 14:32 519
#endif
1572de2b sago007 2008-09-11 18:15 520
    if (!(ret = Mix_LoadMUS(tmp.c_str())))
89c4a3a6 sago007 2008-08-29 14:32 521
        ret = Mix_LoadMUS(path);
89c4a3a6 sago007 2008-08-29 14:32 522
89c4a3a6 sago007 2008-08-29 14:32 523
    return ret;
89c4a3a6 sago007 2008-08-29 14:32 524
}
adaf31bf sago007 2009-05-05 16:01 525
#endif
89c4a3a6 sago007 2008-08-29 14:32 526
adaf31bf sago007 2009-05-05 16:01 527
#if USE_ABSTRACT_FS
adaf31bf sago007 2009-05-05 16:01 528
Mix_Chunk * Mix_LoadWAV2(char* path)
adaf31bf sago007 2009-05-05 16:01 529
{
adaf31bf sago007 2009-05-05 16:01 530
    if (!PHYSFS_exists(path))
adaf31bf sago007 2009-05-05 16:01 531
    {
adaf31bf sago007 2009-05-05 16:01 532
        cout << "File not in blockattack.data: " << path << endl;
adaf31bf sago007 2009-05-05 16:01 533
        return NULL; //file doesn't exist
adaf31bf sago007 2009-05-05 16:01 534
    }
adaf31bf sago007 2009-05-05 16:01 535
adaf31bf sago007 2009-05-05 16:01 536
    PHYSFS_file* myfile = PHYSFS_openRead(path);
adaf31bf sago007 2009-05-05 16:01 537
adaf31bf sago007 2009-05-05 16:01 538
    // Get the lenght of the file
adaf31bf sago007 2009-05-05 16:01 539
    unsigned int m_size = PHYSFS_fileLength(myfile);
adaf31bf sago007 2009-05-05 16:01 540
adaf31bf sago007 2009-05-05 16:01 541
    // Get the file data.
adaf31bf sago007 2009-05-05 16:01 542
    char *m_data = new char[m_size];
adaf31bf sago007 2009-05-05 16:01 543
adaf31bf sago007 2009-05-05 16:01 544
    int length_read = PHYSFS_read (myfile, m_data, 1, m_size);
adaf31bf sago007 2009-05-05 16:01 545
adaf31bf sago007 2009-05-05 16:01 546
    if (length_read != (int)m_size)
adaf31bf sago007 2009-05-05 16:01 547
    {
adaf31bf sago007 2009-05-05 16:01 548
            delete [] m_data;
adaf31bf sago007 2009-05-05 16:01 549
            m_data = 0;
adaf31bf sago007 2009-05-05 16:01 550
            PHYSFS_close(myfile);
adaf31bf sago007 2009-05-05 16:01 551
            cout << "Error. Curropt data file!" << endl;
adaf31bf sago007 2009-05-05 16:01 552
            return NULL;
adaf31bf sago007 2009-05-05 16:01 553
    }
adaf31bf sago007 2009-05-05 16:01 554
adaf31bf sago007 2009-05-05 16:01 555
    PHYSFS_close(myfile);
adaf31bf sago007 2009-05-05 16:01 556
adaf31bf sago007 2009-05-05 16:01 557
// And this is how you load from a memory buffer with SDL
adaf31bf sago007 2009-05-05 16:01 558
    SDL_RWops *rw = SDL_RWFromMem (m_data, m_size);
adaf31bf sago007 2009-05-05 16:01 559
adaf31bf sago007 2009-05-05 16:01 560
    //The above might fail an return null.
adaf31bf sago007 2009-05-05 16:01 561
    if(!rw)
adaf31bf sago007 2009-05-05 16:01 562
    {
adaf31bf sago007 2009-05-05 16:01 563
        delete [] m_data;
adaf31bf sago007 2009-05-05 16:01 564
        m_data = 0;
adaf31bf sago007 2009-05-05 16:01 565
        PHYSFS_close(myfile);
adaf31bf sago007 2009-05-05 16:01 566
        cout << "Error. Curropt data file!" << endl;
adaf31bf sago007 2009-05-05 16:01 567
        return NULL;
adaf31bf sago007 2009-05-05 16:01 568
    }
adaf31bf sago007 2009-05-05 16:01 569
adaf31bf sago007 2009-05-05 16:01 570
    Mix_Chunk* ret = Mix_LoadWAV_RW(rw,true); //the second argument tells the function to three RWops
adaf31bf sago007 2009-05-05 16:01 571
adaf31bf sago007 2009-05-05 16:01 572
    return ret;
adaf31bf sago007 2009-05-05 16:01 573
}
adaf31bf sago007 2009-05-05 16:01 574
#else
89c4a3a6 sago007 2008-08-29 14:32 575
Mix_Chunk * Mix_LoadWAV2(char* path)
89c4a3a6 sago007 2008-08-29 14:32 576
{
89c4a3a6 sago007 2008-08-29 14:32 577
    Mix_Chunk * ret=NULL;
1572de2b sago007 2008-09-11 18:15 578
    string tmp = (string)""+sharedir+(string)"/"+path;
1572de2b sago007 2008-09-11 18:15 579
#if DEBUG
1572de2b sago007 2008-09-11 18:15 580
    cout << "loading " << tmp << endl;
89c4a3a6 sago007 2008-08-29 14:32 581
#endif
1572de2b sago007 2008-09-11 18:15 582
    if (!(ret = Mix_LoadWAV(tmp.c_str())))
89c4a3a6 sago007 2008-08-29 14:32 583
        ret = Mix_LoadWAV(path);
89c4a3a6 sago007 2008-08-29 14:32 584
89c4a3a6 sago007 2008-08-29 14:32 585
    return ret;
89c4a3a6 sago007 2008-08-29 14:32 586
}
adaf31bf sago007 2009-05-05 16:01 587
#endif
89c4a3a6 sago007 2008-08-29 14:32 588
89c4a3a6 sago007 2008-08-29 14:32 589
//Load all image files to memory
89c4a3a6 sago007 2008-08-29 14:32 590
int InitImages()
89c4a3a6 sago007 2008-08-29 14:32 591
{
89c4a3a6 sago007 2008-08-29 14:32 592
    if (!((backgroundImage = IMG_Load2((char*)"gfx/background.png"))
89c4a3a6 sago007 2008-08-29 14:32 593
            && (background = IMG_Load2((char*)"gfx/blackBackGround.png"))
89c4a3a6 sago007 2008-08-29 14:32 594
            && (bNewGame = IMG_Load2((char*)"gfx/bNewGame.png"))
89c4a3a6 sago007 2008-08-29 14:32 595
            && (b1player = IMG_Load2((char*)"gfx/bOnePlayer.png"))
89c4a3a6 sago007 2008-08-29 14:32 596
            && (b2players = IMG_Load2((char*)"gfx/bTwoPlayers.png"))
89c4a3a6 sago007 2008-08-29 14:32 597
            && (bVsMode = IMG_Load2((char*)"gfx/bVsGame.png"))
e3e0644e sago007 2008-09-25 14:00 598
            && (bVsModeConfig = IMG_Load2((char*)"gfx/bVsGameConfig.png"))
89c4a3a6 sago007 2008-08-29 14:32 599
            && (bPuzzle = IMG_Load2((char*)"gfx/bPuzzle.png"))
89c4a3a6 sago007 2008-08-29 14:32 600
            && (bStageClear = IMG_Load2((char*)"gfx/bStageClear.png"))
89c4a3a6 sago007 2008-08-29 14:32 601
            && (bTimeTrial = IMG_Load2((char*)"gfx/bTimeTrial.png"))
89c4a3a6 sago007 2008-08-29 14:32 602
            && (bEndless = IMG_Load2((char*)"gfx/bEndless.png"))
89c4a3a6 sago007 2008-08-29 14:32 603
            && (bOptions = IMG_Load2((char*)"gfx/bOptions.png"))
89c4a3a6 sago007 2008-08-29 14:32 604
            && (bConfigure = IMG_Load2((char*)"gfx/bConfigure.png"))
89c4a3a6 sago007 2008-08-29 14:32 605
            && (bSelectPuzzle = IMG_Load2((char*)"gfx/bSelectPuzzle.png"))
89c4a3a6 sago007 2008-08-29 14:32 606
            && (bHighScore = IMG_Load2((char*)"gfx/bHighScore.png"))
89c4a3a6 sago007 2008-08-29 14:32 607
            && (bExit = IMG_Load2((char*)"gfx/bExit.png"))
89c4a3a6 sago007 2008-08-29 14:32 608
            && (bBack = IMG_Load2((char*)"gfx/bBack.png"))
89c4a3a6 sago007 2008-08-29 14:32 609
            && (bForward = IMG_Load2((char*)"gfx/bForward.png"))
89c4a3a6 sago007 2008-08-29 14:32 610
            && (bReplay = IMG_Load2((char*)"gfx/bReplays.png"))
89c4a3a6 sago007 2008-08-29 14:32 611
            && (bSave = IMG_Load2((char*)"gfx/bSave.png"))
89c4a3a6 sago007 2008-08-29 14:32 612
            && (bLoad = IMG_Load2((char*)"gfx/bLoad.png"))
1572de2b sago007 2008-09-11 18:15 613
#if NETWORK
89c4a3a6 sago007 2008-08-29 14:32 614
            && (bNetwork = IMG_Load2((char*)"gfx/bNetwork.png"))
89c4a3a6 sago007 2008-08-29 14:32 615
            && (bHost = IMG_Load2((char*)"gfx/bHost.png"))
89c4a3a6 sago007 2008-08-29 14:32 616
            && (bConnect = IMG_Load2((char*)"gfx/bConnect.png"))
89c4a3a6 sago007 2008-08-29 14:32 617
#endif
89c4a3a6 sago007 2008-08-29 14:32 618
            && (blackLine = IMG_Load2((char*)"gfx/blackLine.png"))
89c4a3a6 sago007 2008-08-29 14:32 619
            && (stageBobble = IMG_Load2((char*)"gfx/iStageClearLimit.png"))
a039f5c4 sago007 2008-09-19 23:12 620
            && (bricks[0] = IMG_Load2((char*)"gfx/bricks/blue.png"))
a039f5c4 sago007 2008-09-19 23:12 621
            && (bricks[1] = IMG_Load2((char*)"gfx/bricks/green.png"))
a039f5c4 sago007 2008-09-19 23:12 622
            && (bricks[2] = IMG_Load2((char*)"gfx/bricks/purple.png"))
a039f5c4 sago007 2008-09-19 23:12 623
            && (bricks[3] = IMG_Load2((char*)"gfx/bricks/red.png"))
a039f5c4 sago007 2008-09-19 23:12 624
            && (bricks[4] = IMG_Load2((char*)"gfx/bricks/turkish.png"))
a039f5c4 sago007 2008-09-19 23:12 625
            && (bricks[5] = IMG_Load2((char*)"gfx/bricks/yellow.png"))
a039f5c4 sago007 2008-09-19 23:12 626
            && (bricks[6] = IMG_Load2((char*)"gfx/bricks/grey.png"))
89c4a3a6 sago007 2008-08-29 14:32 627
            && (crossover = IMG_Load2((char*)"gfx/crossover.png"))
89c4a3a6 sago007 2008-08-29 14:32 628
            && (balls[0] = IMG_Load2((char*)"gfx/balls/ballBlue.png"))
89c4a3a6 sago007 2008-08-29 14:32 629
            && (balls[1] = IMG_Load2((char*)"gfx/balls/ballGreen.png"))
89c4a3a6 sago007 2008-08-29 14:32 630
            && (balls[2] = IMG_Load2((char*)"gfx/balls/ballPurple.png"))
89c4a3a6 sago007 2008-08-29 14:32 631
            && (balls[3] = IMG_Load2((char*)"gfx/balls/ballRed.png"))
89c4a3a6 sago007 2008-08-29 14:32 632
            && (balls[4] = IMG_Load2((char*)"gfx/balls/ballTurkish.png"))
89c4a3a6 sago007 2008-08-29 14:32 633
            && (balls[5] = IMG_Load2((char*)"gfx/balls/ballYellow.png"))
89c4a3a6 sago007 2008-08-29 14:32 634
            && (balls[6] = IMG_Load2((char*)"gfx/balls/ballGray.png"))
89c4a3a6 sago007 2008-08-29 14:32 635
            && (cursor[0] = IMG_Load2((char*)"gfx/animations/cursor/1.png"))
89c4a3a6 sago007 2008-08-29 14:32 636
            && (cursor[1] = IMG_Load2((char*)"gfx/animations/cursor/2.png"))
89c4a3a6 sago007 2008-08-29 14:32 637
            && (bomb[0] = IMG_Load2((char*)"gfx/animations/bomb/bomb_1.png"))
89c4a3a6 sago007 2008-08-29 14:32 638
            && (bomb[1] = IMG_Load2((char*)"gfx/animations/bomb/bomb_2.png"))
89c4a3a6 sago007 2008-08-29 14:32 639
            && (ready[0] = IMG_Load2((char*)"gfx/animations/ready/ready_1.png"))
89c4a3a6 sago007 2008-08-29 14:32 640
            && (ready[1] = IMG_Load2((char*)"gfx/animations/ready/ready_2.png"))
89c4a3a6 sago007 2008-08-29 14:32 641
            && (explosion[0] = IMG_Load2((char*)"gfx/animations/explosion/0.png"))
89c4a3a6 sago007 2008-08-29 14:32 642
            && (explosion[1] = IMG_Load2((char*)"gfx/animations/explosion/1.png"))
89c4a3a6 sago007 2008-08-29 14:32 643
            && (explosion[2] = IMG_Load2((char*)"gfx/animations/explosion/2.png"))
89c4a3a6 sago007 2008-08-29 14:32 644
            && (explosion[3] = IMG_Load2((char*)"gfx/animations/explosion/3.png"))
89c4a3a6 sago007 2008-08-29 14:32 645
            && (counter[0] = IMG_Load2((char*)"gfx/counter/1.png"))
89c4a3a6 sago007 2008-08-29 14:32 646
            && (counter[1] = IMG_Load2((char*)"gfx/counter/2.png"))
89c4a3a6 sago007 2008-08-29 14:32 647
            && (counter[2] = IMG_Load2((char*)"gfx/counter/3.png"))
89c4a3a6 sago007 2008-08-29 14:32 648
            && (backBoard = IMG_Load2((char*)"gfx/BackBoard.png")) //not used, we just test if it exists :)
89c4a3a6 sago007 2008-08-29 14:32 649
            && (iGameOver = IMG_Load2((char*)"gfx/iGameOver.png"))
89c4a3a6 sago007 2008-08-29 14:32 650
            && (iWinner = IMG_Load2((char*)"gfx/iWinner.png"))
89c4a3a6 sago007 2008-08-29 14:32 651
            && (iDraw = IMG_Load2((char*)"gfx/iDraw.png"))
89c4a3a6 sago007 2008-08-29 14:32 652
            && (iLoser = IMG_Load2((char*)"gfx/iLoser.png"))
89c4a3a6 sago007 2008-08-29 14:32 653
            && (iChainBack = IMG_Load2((char*)"gfx/chainFrame.png"))
89c4a3a6 sago007 2008-08-29 14:32 654
            && (iBlueFont = IMG_Load2((char*)"gfx/24P_Arial_Blue.png"))
89c4a3a6 sago007 2008-08-29 14:32 655
            && (iSmallFont = IMG_Load2((char*)"gfx/14P_Arial_Angle_Red.png"))
89c4a3a6 sago007 2008-08-29 14:32 656
            && (optionsBack = IMG_Load2((char*)"gfx/options.png"))
89c4a3a6 sago007 2008-08-29 14:32 657
            && (bOn = IMG_Load2((char*)"gfx/bOn.png"))
89c4a3a6 sago007 2008-08-29 14:32 658
            && (bOff = IMG_Load2((char*)"gfx/bOff.png"))
89c4a3a6 sago007 2008-08-29 14:32 659
            && (bChange = IMG_Load2((char*)"gfx/bChange.png"))
89c4a3a6 sago007 2008-08-29 14:32 660
            && (b1024 = IMG_Load2((char*)"gfx/b1024.png"))
89c4a3a6 sago007 2008-08-29 14:32 661
            && (dialogBox = IMG_Load2((char*)"gfx/dialogbox.png"))
89c4a3a6 sago007 2008-08-29 14:32 662
//	&& (fileDialogBox = IMG_Load2("gfx/fileDialogbox.png"))
89c4a3a6 sago007 2008-08-29 14:32 663
            && (iLevelCheck = IMG_Load2((char*)"gfx/iLevelCheck.png"))
89c4a3a6 sago007 2008-08-29 14:32 664
            && (iLevelCheckBox = IMG_Load2((char*)"gfx/iLevelCheckBox.png"))
89c4a3a6 sago007 2008-08-29 14:32 665
            && (iCheckBoxArea = IMG_Load2((char*)"gfx/iCheckBoxArea.png"))
89c4a3a6 sago007 2008-08-29 14:32 666
            && (boardBackBack = IMG_Load2((char*)"gfx/boardBackBack.png"))
89c4a3a6 sago007 2008-08-29 14:32 667
            && (changeButtonsBack = IMG_Load2((char*)"gfx/changeButtonsBack.png"))
89c4a3a6 sago007 2008-08-29 14:32 668
            && (garbageTL = IMG_Load2((char*)"gfx/garbage/garbageTL.png"))
89c4a3a6 sago007 2008-08-29 14:32 669
            && (garbageT = IMG_Load2((char*)"gfx/garbage/garbageT.png"))
89c4a3a6 sago007 2008-08-29 14:32 670
            && (garbageTR = IMG_Load2((char*)"gfx/garbage/garbageTR.png"))
89c4a3a6 sago007 2008-08-29 14:32 671
            && (garbageR = IMG_Load2((char*)"gfx/garbage/garbageR.png"))
89c4a3a6 sago007 2008-08-29 14:32 672
            && (garbageBR = IMG_Load2((char*)"gfx/garbage/garbageBR.png"))
89c4a3a6 sago007 2008-08-29 14:32 673
            && (garbageB = IMG_Load2((char*)"gfx/garbage/garbageB.png"))
89c4a3a6 sago007 2008-08-29 14:32 674
            && (garbageBL = IMG_Load2((char*)"gfx/garbage/garbageBL.png"))
89c4a3a6 sago007 2008-08-29 14:32 675
            && (garbageL = IMG_Load2((char*)"gfx/garbage/garbageL.png"))
89c4a3a6 sago007 2008-08-29 14:32 676
            && (garbageFill = IMG_Load2((char*)"gfx/garbage/garbageFill.png"))
89c4a3a6 sago007 2008-08-29 14:32 677
            && (garbageML = IMG_Load2((char*)"gfx/garbage/garbageML.png"))
89c4a3a6 sago007 2008-08-29 14:32 678
            && (garbageM = IMG_Load2((char*)"gfx/garbage/garbageM.png"))
89c4a3a6 sago007 2008-08-29 14:32 679
            && (garbageMR = IMG_Load2((char*)"gfx/garbage/garbageMR.png"))
89c4a3a6 sago007 2008-08-29 14:32 680
            && (garbageGM = IMG_Load2((char*)"gfx/garbage/garbageGM.png"))
89c4a3a6 sago007 2008-08-29 14:32 681
            && (garbageGML = IMG_Load2((char*)"gfx/garbage/garbageGML.png"))
89c4a3a6 sago007 2008-08-29 14:32 682
            && (garbageGMR = IMG_Load2((char*)"gfx/garbage/garbageGMR.png"))
89c4a3a6 sago007 2008-08-29 14:32 683
            && (smiley[0] = IMG_Load2((char*)"gfx/smileys/0.png"))
89c4a3a6 sago007 2008-08-29 14:32 684
            && (smiley[1] = IMG_Load2((char*)"gfx/smileys/1.png"))
89c4a3a6 sago007 2008-08-29 14:32 685
            && (smiley[2] = IMG_Load2((char*)"gfx/smileys/2.png"))
89c4a3a6 sago007 2008-08-29 14:32 686
            && (smiley[3] = IMG_Load2((char*)"gfx/smileys/3.png"))
89c4a3a6 sago007 2008-08-29 14:32 687
            //new in 1.3.2
89c4a3a6 sago007 2008-08-29 14:32 688
            && (transCover = IMG_Load2((char*)"gfx/transCover.png"))
1572de2b sago007 2008-09-11 18:15 689
            #if LEVELEDITOR
1572de2b sago007 2008-09-11 18:15 690
            && (bCreateFile = IMG_Load2((char*)"gfx/editor/bCreateFile.png"))
89c4a3a6 sago007 2008-08-29 14:32 691
            && (bDeletePuzzle = IMG_Load2((char*)"gfx/editor/bDeletePuzzle.png"))
89c4a3a6 sago007 2008-08-29 14:32 692
            && (bLoadFile = IMG_Load2((char*)"gfx/editor/bLoadFile.png"))
89c4a3a6 sago007 2008-08-29 14:32 693
            && (bMoveBack = IMG_Load2((char*)"gfx/editor/bMoveBack.png"))
89c4a3a6 sago007 2008-08-29 14:32 694
            && (bMoveDown = IMG_Load2((char*)"gfx/editor/bMoveDown.png"))
89c4a3a6 sago007 2008-08-29 14:32 695
            && (bMoveForward = IMG_Load2((char*)"gfx/editor/bMoveForward.png"))
89c4a3a6 sago007 2008-08-29 14:32 696
            && (bMoveLeft = IMG_Load2((char*)"gfx/editor/bMoveLeft.png"))
89c4a3a6 sago007 2008-08-29 14:32 697
            && (bMoveRight = IMG_Load2((char*)"gfx/editor/bMoveRight.png"))
89c4a3a6 sago007 2008-08-29 14:32 698
            && (bMoveUp = IMG_Load2((char*)"gfx/editor/bMoveUp.png"))
89c4a3a6 sago007 2008-08-29 14:32 699
            && (bNewPuzzle = IMG_Load2((char*)"gfx/editor/bNewPuzzle.png"))
89c4a3a6 sago007 2008-08-29 14:32 700
            && (bSaveFileAs = IMG_Load2((char*)"gfx/editor/bSaveFileAs.png"))
89c4a3a6 sago007 2008-08-29 14:32 701
            && (bSavePuzzle = IMG_Load2((char*)"gfx/editor/bSavePuzzle.png"))
89c4a3a6 sago007 2008-08-29 14:32 702
            && (bSaveToFile = IMG_Load2((char*)"gfx/editor/bSaveToFile.png"))
1572de2b sago007 2008-09-11 18:15 703
            && (bTestPuzzle = IMG_Load2((char*)"gfx/editor/bTestPuzzle.png"))
1572de2b sago007 2008-09-11 18:15 704
            #endif
89c4a3a6 sago007 2008-08-29 14:32 705
            //end new in 1.3.2
89c4a3a6 sago007 2008-08-29 14:32 706
            //new in 1.4.0
89c4a3a6 sago007 2008-08-29 14:32 707
            && (bTheme = IMG_Load2((char*)"gfx/bTheme.png"))
89c4a3a6 sago007 2008-08-29 14:32 708
            && (bSkip = IMG_Load2((char*)"gfx/bSkip.png"))
89c4a3a6 sago007 2008-08-29 14:32 709
            && (bNext = IMG_Load2((char*)"gfx/bNext.png"))
89c4a3a6 sago007 2008-08-29 14:32 710
            && (bRetry = IMG_Load2((char*)"gfx/bRetry.png"))
78d03b38 sago007 2008-11-13 19:56 711
            //&& (menuMarked = IMG_Load2((char*)"gfx/menu/marked.png"))
78d03b38 sago007 2008-11-13 19:56 712
            //&& (menuUnmarked = IMG_Load2((char*)"gfx/menu/unmarked.png"))
89c4a3a6 sago007 2008-08-29 14:32 713
            //end new in 1.4.0
89c4a3a6 sago007 2008-08-29 14:32 714
            && (mouse = IMG_Load2((char*)"gfx/mouse.png"))
89c4a3a6 sago007 2008-08-29 14:32 715
         ))
89c4a3a6 sago007 2008-08-29 14:32 716
        //if there was a problem ie. "File not found"
89c4a3a6 sago007 2008-08-29 14:32 717
    {
89c4a3a6 sago007 2008-08-29 14:32 718
        cout << "Error loading image file: " << SDL_GetError() << endl;
89c4a3a6 sago007 2008-08-29 14:32 719
        exit(1);
89c4a3a6 sago007 2008-08-29 14:32 720
    }
89c4a3a6 sago007 2008-08-29 14:32 721
89c4a3a6 sago007 2008-08-29 14:32 722
89c4a3a6 sago007 2008-08-29 14:32 723
    //Prepare for fast blittering!
89c4a3a6 sago007 2008-08-29 14:32 724
    CONVERT(background);
89c4a3a6 sago007 2008-08-29 14:32 725
    CONVERT(bNewGame);
89c4a3a6 sago007 2008-08-29 14:32 726
    CONVERT(backgroundImage);
89c4a3a6 sago007 2008-08-29 14:32 727
    CONVERT(b1player);
89c4a3a6 sago007 2008-08-29 14:32 728
    CONVERT(b2players);
89c4a3a6 sago007 2008-08-29 14:32 729
    CONVERT(bVsMode);
e3e0644e sago007 2008-09-25 14:00 730
    CONVERT(bVsModeConfig);
89c4a3a6 sago007 2008-08-29 14:32 731
    CONVERT(bPuzzle);
89c4a3a6 sago007 2008-08-29 14:32 732
    CONVERT(bStageClear);
89c4a3a6 sago007 2008-08-29 14:32 733
    CONVERT(bTimeTrial);
89c4a3a6 sago007 2008-08-29 14:32 734
    CONVERT(bEndless);
89c4a3a6 sago007 2008-08-29 14:32 735
    CONVERT(bOptions);
89c4a3a6 sago007 2008-08-29 14:32 736
    CONVERTA(bConfigure);
89c4a3a6 sago007 2008-08-29 14:32 737
    CONVERTA(bSelectPuzzle);
89c4a3a6 sago007 2008-08-29 14:32 738
    CONVERTA(bReplay);
89c4a3a6 sago007 2008-08-29 14:32 739
    CONVERTA(bSave);
89c4a3a6 sago007 2008-08-29 14:32 740
    CONVERTA(bLoad);
89c4a3a6 sago007 2008-08-29 14:32 741
    CONVERTA(bTheme);
89c4a3a6 sago007 2008-08-29 14:32 742
    CONVERTA(bSkip);
89c4a3a6 sago007 2008-08-29 14:32 743
    CONVERTA(bRetry);
89c4a3a6 sago007 2008-08-29 14:32 744
    CONVERTA(bNext);
78d03b38 sago007 2008-11-13 19:56 745
    //CONVERTA(menuMarked);
78d03b38 sago007 2008-11-13 19:56 746
    //CONVERTA(menuUnmarked);
1572de2b sago007 2008-09-11 18:15 747
#if NETWORK
89c4a3a6 sago007 2008-08-29 14:32 748
    CONVERTA(bNetwork);
89c4a3a6 sago007 2008-08-29 14:32 749
    CONVERTA(bHost);
89c4a3a6 sago007 2008-08-29 14:32 750
    CONVERTA(bConnect);
89c4a3a6 sago007 2008-08-29 14:32 751
#endif
89c4a3a6 sago007 2008-08-29 14:32 752
    CONVERT(bHighScore);
89c4a3a6 sago007 2008-08-29 14:32 753
    CONVERTA(boardBackBack);
89c4a3a6 sago007 2008-08-29 14:32 754
    CONVERT(backBoard);
89c4a3a6 sago007 2008-08-29 14:32 755
    CONVERT(blackLine);
89c4a3a6 sago007 2008-08-29 14:32 756
    CONVERTA(changeButtonsBack);
89c4a3a6 sago007 2008-08-29 14:32 757
    CONVERTA(cursor[0]);
89c4a3a6 sago007 2008-08-29 14:32 758
    CONVERTA(cursor[1]);
89c4a3a6 sago007 2008-08-29 14:32 759
    CONVERTA(counter[0]);
89c4a3a6 sago007 2008-08-29 14:32 760
    CONVERTA(counter[1]);
89c4a3a6 sago007 2008-08-29 14:32 761
    CONVERTA(counter[2]);
89c4a3a6 sago007 2008-08-29 14:32 762
    CONVERTA(optionsBack);
89c4a3a6 sago007 2008-08-29 14:32 763
    CONVERT(bExit);
89c4a3a6 sago007 2008-08-29 14:32 764
    CONVERT(bOn);
89c4a3a6 sago007 2008-08-29 14:32 765
    CONVERT(bOff);
89c4a3a6 sago007 2008-08-29 14:32 766
    CONVERT(bChange);
89c4a3a6 sago007 2008-08-29 14:32 767
    CONVERT(b1024);
89c4a3a6 sago007 2008-08-29 14:32 768
    CONVERTA(dialogBox);
89c4a3a6 sago007 2008-08-29 14:32 769
//	CONVERTA(fileDialogBox);
89c4a3a6 sago007 2008-08-29 14:32 770
    CONVERTA(iLevelCheck);
89c4a3a6 sago007 2008-08-29 14:32 771
    CONVERT(iLevelCheckBox);
89c4a3a6 sago007 2008-08-29 14:32 772
    CONVERTA(iCheckBoxArea);
89c4a3a6 sago007 2008-08-29 14:32 773
    for (int i = 0;i<4;i++)
89c4a3a6 sago007 2008-08-29 14:32 774
    {
89c4a3a6 sago007 2008-08-29 14:32 775
        CONVERTA(explosion[i]);
89c4a3a6 sago007 2008-08-29 14:32 776
    }
89c4a3a6 sago007 2008-08-29 14:32 777
    for (int i = 0; i<7; i++)
89c4a3a6 sago007 2008-08-29 14:32 778
    {
89c4a3a6 sago007 2008-08-29 14:32 779
        CONVERTA(bricks[i]);
89c4a3a6 sago007 2008-08-29 14:32 780
        CONVERTA(balls[i]);
89c4a3a6 sago007 2008-08-29 14:32 781
    }
89c4a3a6 sago007 2008-08-29 14:32 782
    CONVERTA(crossover);
89c4a3a6 sago007 2008-08-29 14:32 783
    CONVERTA(garbageTL);
89c4a3a6 sago007 2008-08-29 14:32 784
    CONVERTA(garbageT);
89c4a3a6 sago007 2008-08-29 14:32 785
    CONVERTA(garbageTR);
89c4a3a6 sago007 2008-08-29 14:32 786
    CONVERTA(garbageR);
89c4a3a6 sago007 2008-08-29 14:32 787
    CONVERTA(garbageBR);
89c4a3a6 sago007 2008-08-29 14:32 788
    CONVERTA(garbageB);
89c4a3a6 sago007 2008-08-29 14:32 789
    CONVERTA(garbageBL);
89c4a3a6 sago007 2008-08-29 14:32 790
    CONVERTA(garbageL);
89c4a3a6 sago007 2008-08-29 14:32 791
    CONVERTA(garbageFill);
89c4a3a6 sago007 2008-08-29 14:32 792
    CONVERTA(garbageML);
89c4a3a6 sago007 2008-08-29 14:32 793
    CONVERTA(garbageMR);
89c4a3a6 sago007 2008-08-29 14:32 794
    CONVERTA(garbageM);
89c4a3a6 sago007 2008-08-29 14:32 795
    CONVERTA(garbageGML);
89c4a3a6 sago007 2008-08-29 14:32 796
    CONVERTA(garbageGMR);
89c4a3a6 sago007 2008-08-29 14:32 797
    CONVERTA(garbageGM);
89c4a3a6 sago007 2008-08-29 14:32 798
    CONVERTA(smiley[0]);
89c4a3a6 sago007 2008-08-29 14:32 799
    CONVERTA(smiley[1]);
89c4a3a6 sago007 2008-08-29 14:32 800
    CONVERTA(smiley[2]);
89c4a3a6 sago007 2008-08-29 14:32 801
    CONVERTA(smiley[3]);
89c4a3a6 sago007 2008-08-29 14:32 802
    CONVERTA(iWinner);
89c4a3a6 sago007 2008-08-29 14:32 803
    CONVERTA(iDraw);
89c4a3a6 sago007 2008-08-29 14:32 804
    CONVERTA(iLoser);
89c4a3a6 sago007 2008-08-29 14:32 805
    CONVERTA(iChainBack);
89c4a3a6 sago007 2008-08-29 14:32 806
    CONVERTA(iBlueFont);
89c4a3a6 sago007 2008-08-29 14:32 807
    CONVERTA(iSmallFont);
89c4a3a6 sago007 2008-08-29 14:32 808
    CONVERTA(iGameOver);
89c4a3a6 sago007 2008-08-29 14:32 809
    CONVERTA(mouse);
89c4a3a6 sago007 2008-08-29 14:32 810
    CONVERTA(stageBobble);
89c4a3a6 sago007 2008-08-29 14:32 811
    CONVERTA(transCover);
89c4a3a6 sago007 2008-08-29 14:32 812
    //Editor:
1572de2b sago007 2008-09-11 18:15 813
    #if LEVELEDITOR
1572de2b sago007 2008-09-11 18:15 814
    CONVERTA(bCreateFile);
89c4a3a6 sago007 2008-08-29 14:32 815
    CONVERTA(bDeletePuzzle);
89c4a3a6 sago007 2008-08-29 14:32 816
    CONVERTA(bLoadFile);
89c4a3a6 sago007 2008-08-29 14:32 817
    CONVERTA(bMoveBack);
89c4a3a6 sago007 2008-08-29 14:32 818
    CONVERTA(bMoveDown);
89c4a3a6 sago007 2008-08-29 14:32 819
    CONVERTA(bMoveForward);
89c4a3a6 sago007 2008-08-29 14:32 820
    CONVERTA(bMoveLeft);
89c4a3a6 sago007 2008-08-29 14:32 821
    CONVERTA(bMoveRight);
89c4a3a6 sago007 2008-08-29 14:32 822
    CONVERTA(bMoveUp);
89c4a3a6 sago007 2008-08-29 14:32 823
    CONVERTA(bNewPuzzle);
89c4a3a6 sago007 2008-08-29 14:32 824
    CONVERTA(bSaveFileAs);
89c4a3a6 sago007 2008-08-29 14:32 825
    CONVERTA(bSavePuzzle);
89c4a3a6 sago007 2008-08-29 14:32 826
    CONVERTA(bSaveToFile);
1572de2b sago007 2008-09-11 18:15 827
    CONVERTA(bTestPuzzle);
1572de2b sago007 2008-09-11 18:15 828
    #endif
1572de2b sago007 2008-09-11 18:15 829
    
89c4a3a6 sago007 2008-08-29 14:32 830
    //Here comes the fonts:
89c4a3a6 sago007 2008-08-29 14:32 831
    fBlueFont = SFont_InitFont(iBlueFont);
89c4a3a6 sago007 2008-08-29 14:32 832
    fSmallFont = SFont_InitFont(iSmallFont);
89c4a3a6 sago007 2008-08-29 14:32 833
    
89c4a3a6 sago007 2008-08-29 14:32 834
    //And the ttf font:
78d03b38 sago007 2008-11-13 19:56 835
    /*TTF_Font *ttFont1 = TTF_OpenFont2((char*)"fonts/FreeSerif.ttf", 24);
78d03b38 sago007 2008-11-13 19:56 836
    TTF_SetFontStyle(ttFont1,TTF_STYLE_BOLD);
78d03b38 sago007 2008-11-13 19:56 837
    ttfont = TTFont(ttFont1);*/
89c4a3a6 sago007 2008-08-29 14:32 838
89c4a3a6 sago007 2008-08-29 14:32 839
//Loads the sound if sound present
89c4a3a6 sago007 2008-08-29 14:32 840
    if (!NoSound)
89c4a3a6 sago007 2008-08-29 14:32 841
    {
89c4a3a6 sago007 2008-08-29 14:32 842
        //And here the music:
89c4a3a6 sago007 2008-08-29 14:32 843
        bgMusic = Mix_LoadMUS2((char*)"music/bgMusic.ogg");
6d48320c sago007 2009-03-28 17:06 844
        highbeatMusic = Mix_LoadMUS2((char*)"music/highbeat.ogg");
89c4a3a6 sago007 2008-08-29 14:32 845
        //the music... we just hope it exists, else the user won't hear anything
89c4a3a6 sago007 2008-08-29 14:32 846
        //Same goes for the sounds
89c4a3a6 sago007 2008-08-29 14:32 847
        boing = Mix_LoadWAV2((char*)"sound/pop.ogg");
89c4a3a6 sago007 2008-08-29 14:32 848
        applause = Mix_LoadWAV2((char*)"sound/applause.ogg");
89c4a3a6 sago007 2008-08-29 14:32 849
        photoClick = Mix_LoadWAV2((char*)"sound/cameraclick.ogg");
89c4a3a6 sago007 2008-08-29 14:32 850
        typingChunk = Mix_LoadWAV2((char*)"sound/typing.ogg");
89c4a3a6 sago007 2008-08-29 14:32 851
        counterChunk = Mix_LoadWAV2((char*)"sound/counter.ogg");
24a6ea5f sago007 2008-11-13 22:28 852
        counterFinalChunk = Mix_LoadWAV2((char*)"sound/counterFinal.ogg");
89c4a3a6 sago007 2008-08-29 14:32 853
    } //All sound has been loaded or not
89c4a3a6 sago007 2008-08-29 14:32 854
    return 0;
89c4a3a6 sago007 2008-08-29 14:32 855
} //InitImages()
89c4a3a6 sago007 2008-08-29 14:32 856
89c4a3a6 sago007 2008-08-29 14:32 857
89c4a3a6 sago007 2008-08-29 14:32 858
//Unload images and fonts and sounds
89c4a3a6 sago007 2008-08-29 14:32 859
void UnloadImages()
89c4a3a6 sago007 2008-08-29 14:32 860
{
89c4a3a6 sago007 2008-08-29 14:32 861
    //Fonts and Sounds needs to be freed
89c4a3a6 sago007 2008-08-29 14:32 862
    SFont_FreeFont(fBlueFont);
89c4a3a6 sago007 2008-08-29 14:32 863
    SFont_FreeFont(fSmallFont);
89c4a3a6 sago007 2008-08-29 14:32 864
    if (!NoSound) //Only unload then it has been loaded!
89c4a3a6 sago007 2008-08-29 14:32 865
    {
89c4a3a6 sago007 2008-08-29 14:32 866
        Mix_FreeMusic(bgMusic);
6d48320c sago007 2009-03-28 17:06 867
        Mix_FreeMusic(highbeatMusic);
89c4a3a6 sago007 2008-08-29 14:32 868
        Mix_FreeChunk(boing);
89c4a3a6 sago007 2008-08-29 14:32 869
        Mix_FreeChunk(applause);
89c4a3a6 sago007 2008-08-29 14:32 870
        Mix_FreeChunk(photoClick);
89c4a3a6 sago007 2008-08-29 14:32 871
        Mix_FreeChunk(counterChunk);
24a6ea5f sago007 2008-11-13 22:28 872
        Mix_FreeChunk(counterFinalChunk);
89c4a3a6 sago007 2008-08-29 14:32 873
        Mix_FreeChunk(typingChunk);
89c4a3a6 sago007 2008-08-29 14:32 874
    }
89c4a3a6 sago007 2008-08-29 14:32 875
    //Free surfaces:
89c4a3a6 sago007 2008-08-29 14:32 876
    //I think this will crash, at least it happend to me...
89c4a3a6 sago007 2008-08-29 14:32 877
    SDL_FreeSurface(backgroundImage);
89c4a3a6 sago007 2008-08-29 14:32 878
    SDL_FreeSurface(background);
89c4a3a6 sago007 2008-08-29 14:32 879
    SDL_FreeSurface(bNewGame);
89c4a3a6 sago007 2008-08-29 14:32 880
    SDL_FreeSurface(b1player);
89c4a3a6 sago007 2008-08-29 14:32 881
    SDL_FreeSurface(b2players);
89c4a3a6 sago007 2008-08-29 14:32 882
    SDL_FreeSurface(bVsMode);
e3e0644e sago007 2008-09-25 14:00 883
    SDL_FreeSurface(bVsModeConfig);
89c4a3a6 sago007 2008-08-29 14:32 884
    SDL_FreeSurface(bPuzzle);
89c4a3a6 sago007 2008-08-29 14:32 885
    SDL_FreeSurface(bStageClear);
89c4a3a6 sago007 2008-08-29 14:32 886
    SDL_FreeSurface(bTimeTrial);
89c4a3a6 sago007 2008-08-29 14:32 887
    SDL_FreeSurface(bEndless);
89c4a3a6 sago007 2008-08-29 14:32 888
    SDL_FreeSurface(bOptions);
89c4a3a6 sago007 2008-08-29 14:32 889
    SDL_FreeSurface(bConfigure);
89c4a3a6 sago007 2008-08-29 14:32 890
    SDL_FreeSurface(bSelectPuzzle);
89c4a3a6 sago007 2008-08-29 14:32 891
    SDL_FreeSurface(bHighScore);
89c4a3a6 sago007 2008-08-29 14:32 892
    SDL_FreeSurface(bReplay);
89c4a3a6 sago007 2008-08-29 14:32 893
    SDL_FreeSurface(bSave);
89c4a3a6 sago007 2008-08-29 14:32 894
    SDL_FreeSurface(bLoad);
1572de2b sago007 2008-09-11 18:15 895
    #if NETWORK
89c4a3a6 sago007 2008-08-29 14:32 896
    SDL_FreeSurface(bNetwork);
89c4a3a6 sago007 2008-08-29 14:32 897
    SDL_FreeSurface(bHost);
89c4a3a6 sago007 2008-08-29 14:32 898
    SDL_FreeSurface(bConnect);
89c4a3a6 sago007 2008-08-29 14:32 899
    #endif
89c4a3a6 sago007 2008-08-29 14:32 900
    SDL_FreeSurface(bExit);
89c4a3a6 sago007 2008-08-29 14:32 901
    SDL_FreeSurface(blackLine);
89c4a3a6 sago007 2008-08-29 14:32 902
    SDL_FreeSurface(stageBobble);
89c4a3a6 sago007 2008-08-29 14:32 903
    SDL_FreeSurface(bricks[0]);
89c4a3a6 sago007 2008-08-29 14:32 904
    SDL_FreeSurface(bricks[1]);
89c4a3a6 sago007 2008-08-29 14:32 905
    SDL_FreeSurface(bricks[2]);
89c4a3a6 sago007 2008-08-29 14:32 906
    SDL_FreeSurface(bricks[3]);
89c4a3a6 sago007 2008-08-29 14:32 907
    SDL_FreeSurface(bricks[4]);
89c4a3a6 sago007 2008-08-29 14:32 908
    SDL_FreeSurface(bricks[5]);
89c4a3a6 sago007 2008-08-29 14:32 909
    SDL_FreeSurface(bricks[6]);
89c4a3a6 sago007 2008-08-29 14:32 910
    SDL_FreeSurface(crossover);
89c4a3a6 sago007 2008-08-29 14:32 911
    SDL_FreeSurface(balls[0]);
89c4a3a6 sago007 2008-08-29 14:32 912
    SDL_FreeSurface(balls[1]);
89c4a3a6 sago007 2008-08-29 14:32 913
    SDL_FreeSurface(balls[2]);
89c4a3a6 sago007 2008-08-29 14:32 914
    SDL_FreeSurface(balls[3]);
89c4a3a6 sago007 2008-08-29 14:32 915
    SDL_FreeSurface(balls[4]);
89c4a3a6 sago007 2008-08-29 14:32 916
    SDL_FreeSurface(balls[5]);
89c4a3a6 sago007 2008-08-29 14:32 917
    SDL_FreeSurface(balls[6]);
89c4a3a6 sago007 2008-08-29 14:32 918
    SDL_FreeSurface(cursor[0]);
89c4a3a6 sago007 2008-08-29 14:32 919
    SDL_FreeSurface(cursor[1]);
89c4a3a6 sago007 2008-08-29 14:32 920
    SDL_FreeSurface(backBoard); //not used, we just test if it exists :)
89c4a3a6 sago007 2008-08-29 14:32 921
    SDL_FreeSurface(iGameOver);
89c4a3a6 sago007 2008-08-29 14:32 922
    SDL_FreeSurface(iWinner);
89c4a3a6 sago007 2008-08-29 14:32 923
    SDL_FreeSurface(iDraw);
89c4a3a6 sago007 2008-08-29 14:32 924
    SDL_FreeSurface(iLoser);
89c4a3a6 sago007 2008-08-29 14:32 925
    SDL_FreeSurface(iChainBack);
89c4a3a6 sago007 2008-08-29 14:32 926
    //SDL_FreeSurface(iBlueFont); //Segfault
89c4a3a6 sago007 2008-08-29 14:32 927
    //SDL_FreeSurface(iSmallFont); //Segfault
89c4a3a6 sago007 2008-08-29 14:32 928
    SDL_FreeSurface(optionsBack);
89c4a3a6 sago007 2008-08-29 14:32 929
    SDL_FreeSurface(bOn);
89c4a3a6 sago007 2008-08-29 14:32 930
    SDL_FreeSurface(bOff);
89c4a3a6 sago007 2008-08-29 14:32 931
    SDL_FreeSurface(bChange);
89c4a3a6 sago007 2008-08-29 14:32 932
    SDL_FreeSurface(b1024);
89c4a3a6 sago007 2008-08-29 14:32 933
    SDL_FreeSurface(dialogBox);
89c4a3a6 sago007 2008-08-29 14:32 934
    //SDL_FreeSurface(fileDialogBox);
89c4a3a6 sago007 2008-08-29 14:32 935
    SDL_FreeSurface(iLevelCheck);
89c4a3a6 sago007 2008-08-29 14:32 936
    SDL_FreeSurface(iLevelCheckBox);
89c4a3a6 sago007 2008-08-29 14:32 937
    SDL_FreeSurface(iCheckBoxArea);
89c4a3a6 sago007 2008-08-29 14:32 938
    SDL_FreeSurface(boardBackBack);
89c4a3a6 sago007 2008-08-29 14:32 939
    SDL_FreeSurface(changeButtonsBack);
89c4a3a6 sago007 2008-08-29 14:32 940
    SDL_FreeSurface(garbageTL);
89c4a3a6 sago007 2008-08-29 14:32 941
    SDL_FreeSurface(garbageT);
89c4a3a6 sago007 2008-08-29 14:32 942
    SDL_FreeSurface(garbageTR);
89c4a3a6 sago007 2008-08-29 14:32 943
    SDL_FreeSurface(garbageR);
89c4a3a6 sago007 2008-08-29 14:32 944
    SDL_FreeSurface(garbageBR);
89c4a3a6 sago007 2008-08-29 14:32 945
    SDL_FreeSurface(garbageB);
89c4a3a6 sago007 2008-08-29 14:32 946
    SDL_FreeSurface(garbageBL);
89c4a3a6 sago007 2008-08-29 14:32 947
    SDL_FreeSurface(garbageL);
89c4a3a6 sago007 2008-08-29 14:32 948
    SDL_FreeSurface(garbageFill);
89c4a3a6 sago007 2008-08-29 14:32 949
    SDL_FreeSurface(garbageML);
89c4a3a6 sago007 2008-08-29 14:32 950
    SDL_FreeSurface(garbageM);
89c4a3a6 sago007 2008-08-29 14:32 951
    SDL_FreeSurface(garbageMR);
89c4a3a6 sago007 2008-08-29 14:32 952
    SDL_FreeSurface(garbageGML);
89c4a3a6 sago007 2008-08-29 14:32 953
    SDL_FreeSurface(garbageGM);
89c4a3a6 sago007 2008-08-29 14:32 954
    SDL_FreeSurface(garbageGMR);
89c4a3a6 sago007 2008-08-29 14:32 955
    SDL_FreeSurface(smiley[0]);
89c4a3a6 sago007 2008-08-29 14:32 956
    SDL_FreeSurface(smiley[1]);
89c4a3a6 sago007 2008-08-29 14:32 957
    SDL_FreeSurface(smiley[2]);
89c4a3a6 sago007 2008-08-29 14:32 958
    SDL_FreeSurface(smiley[3]);
89c4a3a6 sago007 2008-08-29 14:32 959
    SDL_FreeSurface(transCover);
89c4a3a6 sago007 2008-08-29 14:32 960
    SDL_FreeSurface(mouse);
89c4a3a6 sago007 2008-08-29 14:32 961
    
89c4a3a6 sago007 2008-08-29 14:32 962
}
89c4a3a6 sago007 2008-08-29 14:32 963
89c4a3a6 sago007 2008-08-29 14:32 964
//Function to convert numbers to string
769a41a0 sago007 2008-09-24 12:54 965
/*string itoa(int num)
89c4a3a6 sago007 2008-08-29 14:32 966
{
89c4a3a6 sago007 2008-08-29 14:32 967
    stringstream converter;
89c4a3a6 sago007 2008-08-29 14:32 968
    converter << num;
89c4a3a6 sago007 2008-08-29 14:32 969
    return converter.str();
769a41a0 sago007 2008-09-24 12:54 970
}*/
89c4a3a6 sago007 2008-08-29 14:32 971
89c4a3a6 sago007 2008-08-29 14:32 972
//Function to convert numbers to string (2 diget)
89c4a3a6 sago007 2008-08-29 14:32 973
string itoa2(int num)
89c4a3a6 sago007 2008-08-29 14:32 974
{
89c4a3a6 sago007 2008-08-29 14:32 975
    stringstream converter;
89c4a3a6 sago007 2008-08-29 14:32 976
    if(num<10)
89c4a3a6 sago007 2008-08-29 14:32 977
        converter << "0";
89c4a3a6 sago007 2008-08-29 14:32 978
    converter << num;
89c4a3a6 sago007 2008-08-29 14:32 979
    return converter.str();
89c4a3a6 sago007 2008-08-29 14:32 980
}
89c4a3a6 sago007 2008-08-29 14:32 981
89c4a3a6 sago007 2008-08-29 14:32 982
/*Loads all the puzzle levels*/
89c4a3a6 sago007 2008-08-29 14:32 983
int LoadPuzzleStages()
89c4a3a6 sago007 2008-08-29 14:32 984
{
89c4a3a6 sago007 2008-08-29 14:32 985
    //if(puzzleLoaded)
89c4a3a6 sago007 2008-08-29 14:32 986
    //    return 1;
89c4a3a6 sago007 2008-08-29 14:32 987
#ifdef __unix__
89c4a3a6 sago007 2008-08-29 14:32 988
    string filename0 = (string)getenv("HOME")+(string)"/.gamesaves/blockattack/puzzles/";
89c4a3a6 sago007 2008-08-29 14:32 989
    filename0 = filename0+puzzleName;
89c4a3a6 sago007 2008-08-29 14:32 990
    if (singlePuzzle)
89c4a3a6 sago007 2008-08-29 14:32 991
        filename0 = singlePuzzleFile;
89c4a3a6 sago007 2008-08-29 14:32 992
#endif //__unix__
89c4a3a6 sago007 2008-08-29 14:32 993
    string filename = (string)SHAREDIR+(string)"/res/";
89c4a3a6 sago007 2008-08-29 14:32 994
    filename = filename+puzzleName;
89c4a3a6 sago007 2008-08-29 14:32 995
#ifdef __unix__
89c4a3a6 sago007 2008-08-29 14:32 996
    ifstream inFile(filename0.c_str());
89c4a3a6 sago007 2008-08-29 14:32 997
    if (!inFile)
89c4a3a6 sago007 2008-08-29 14:32 998
        inFile.open(filename.c_str());
89c4a3a6 sago007 2008-08-29 14:32 999
#else
89c4a3a6 sago007 2008-08-29 14:32 1000
    ifstream inFile(filename.c_str());
89c4a3a6 sago007 2008-08-29 14:32 1001
#endif
89c4a3a6 sago007 2008-08-29 14:32 1002
    inFile >> nrOfPuzzles;
89c4a3a6 sago007 2008-08-29 14:32 1003
    if (nrOfPuzzles>maxNrOfPuzzleStages)
89c4a3a6 sago007 2008-08-29 14:32 1004
        nrOfPuzzles=maxNrOfPuzzleStages;
89c4a3a6 sago007 2008-08-29 14:32 1005
    for (int k=0; (k<nrOfPuzzles)&&(!inFile.eof()); k++)
89c4a3a6 sago007 2008-08-29 14:32 1006
    {
89c4a3a6 sago007 2008-08-29 14:32 1007
        inFile >> nrOfMovesAllowed[k];
89c4a3a6 sago007 2008-08-29 14:32 1008
        for (int i=11;i>=0;i--)
89c4a3a6 sago007 2008-08-29 14:32 1009
            for (int j=0;j<6;j++)
89c4a3a6 sago007 2008-08-29 14:32 1010
            {
89c4a3a6 sago007 2008-08-29 14:32 1011
                inFile >> puzzleLevels[k][j][i];
89c4a3a6 sago007 2008-08-29 14:32 1012
            }
89c4a3a6 sago007 2008-08-29 14:32 1013
    }
89c4a3a6 sago007 2008-08-29 14:32 1014
    puzzleLoaded = true;
89c4a3a6 sago007 2008-08-29 14:32 1015
    return 0;
89c4a3a6 sago007 2008-08-29 14:32 1016
}
89c4a3a6 sago007 2008-08-29 14:32 1017
89c4a3a6 sago007 2008-08-29 14:32 1018
/*Draws a image from on a given Surface. Takes source image, destination surface and coordinates*/
89c4a3a6 sago007 2008-08-29 14:32 1019
inline void DrawIMG(SDL_Surface *img, SDL_Surface *target, int x, int y)
89c4a3a6 sago007 2008-08-29 14:32 1020
{
89c4a3a6 sago007 2008-08-29 14:32 1021
    SDL_Rect dest;
89c4a3a6 sago007 2008-08-29 14:32 1022
    dest.x = x;
89c4a3a6 sago007 2008-08-29 14:32 1023
    dest.y = y;
89c4a3a6 sago007 2008-08-29 14:32 1024
    SDL_BlitSurface(img, NULL, target, &dest);
89c4a3a6 sago007 2008-08-29 14:32 1025
}
89c4a3a6 sago007 2008-08-29 14:32 1026
89c4a3a6 sago007 2008-08-29 14:32 1027
/*Draws a part of an image on a surface of choice*/
89c4a3a6 sago007 2008-08-29 14:32 1028
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 1029
{
89c4a3a6 sago007 2008-08-29 14:32 1030
    SDL_Rect dest;
89c4a3a6 sago007 2008-08-29 14:32 1031
    dest.x = x;
89c4a3a6 sago007 2008-08-29 14:32 1032
    dest.y = y;
89c4a3a6 sago007 2008-08-29 14:32 1033
    SDL_Rect dest2;
89c4a3a6 sago007 2008-08-29 14:32 1034
    dest2.x = x2;
89c4a3a6 sago007 2008-08-29 14:32 1035
    dest2.y = y2;
89c4a3a6 sago007 2008-08-29 14:32 1036
    dest2.w = w;
89c4a3a6 sago007 2008-08-29 14:32 1037
    dest2.h = h;
89c4a3a6 sago007 2008-08-29 14:32 1038
    SDL_BlitSurface(img, &dest2, target, &dest);
89c4a3a6 sago007 2008-08-29 14:32 1039
}
89c4a3a6 sago007 2008-08-29 14:32 1040
78d03b38 sago007 2008-11-13 19:56 1041
//Menu
78d03b38 sago007 2008-11-13 19:56 1042
/*void PrintHi()
78d03b38 sago007 2008-11-13 19:56 1043
{
78d03b38 sago007 2008-11-13 19:56 1044
    cout << "Hi" <<endl;
78d03b38 sago007 2008-11-13 19:56 1045
}
78d03b38 sago007 2008-11-13 19:56 1046
78d03b38 sago007 2008-11-13 19:56 1047
void InitMenues()
78d03b38 sago007 2008-11-13 19:56 1048
{
78d03b38 sago007 2008-11-13 19:56 1049
    ButtonGfx::setSurfaces(&menuMarked,&menuUnmarked);
78d03b38 sago007 2008-11-13 19:56 1050
    ButtonGfx::ttf = &ttfont;
78d03b38 sago007 2008-11-13 19:56 1051
}
78d03b38 sago007 2008-11-13 19:56 1052
78d03b38 sago007 2008-11-13 19:56 1053
void MainMenu()
78d03b38 sago007 2008-11-13 19:56 1054
{
78d03b38 sago007 2008-11-13 19:56 1055
    Menu m(&screen,true);
78d03b38 sago007 2008-11-13 19:56 1056
    Button bHi;
78d03b38 sago007 2008-11-13 19:56 1057
    bHi.setLabel("Write hi");
78d03b38 sago007 2008-11-13 19:56 1058
    bHi.setAction(PrintHi);
78d03b38 sago007 2008-11-13 19:56 1059
    m.addButton(bHi);
78d03b38 sago007 2008-11-13 19:56 1060
    m.run();
78d03b38 sago007 2008-11-13 19:56 1061
}*/
78d03b38 sago007 2008-11-13 19:56 1062
89c4a3a6 sago007 2008-08-29 14:32 1063
//The small things that are faaling when you clear something
89c4a3a6 sago007 2008-08-29 14:32 1064
class aBall
89c4a3a6 sago007 2008-08-29 14:32 1065
{
89c4a3a6 sago007 2008-08-29 14:32 1066
private:
89c4a3a6 sago007 2008-08-29 14:32 1067
    double x;
89c4a3a6 sago007 2008-08-29 14:32 1068
    double y;
89c4a3a6 sago007 2008-08-29 14:32 1069
    double velocityY;
89c4a3a6 sago007 2008-08-29 14:32 1070
    double velocityX;
89c4a3a6 sago007 2008-08-29 14:32 1071
    int color;
89c4a3a6 sago007 2008-08-29 14:32 1072
    unsigned long int lastTime;
89c4a3a6 sago007 2008-08-29 14:32 1073
public:
89c4a3a6 sago007 2008-08-29 14:32 1074
89c4a3a6 sago007 2008-08-29 14:32 1075
    aBall()
89c4a3a6 sago007 2008-08-29 14:32 1076
    {}
89c4a3a6 sago007 2008-08-29 14:32 1077
89c4a3a6 sago007 2008-08-29 14:32 1078
    //constructor:
89c4a3a6 sago007 2008-08-29 14:32 1079
    aBall(int X, int Y, bool right, int coulor)
89c4a3a6 sago007 2008-08-29 14:32 1080
    {
89c4a3a6 sago007 2008-08-29 14:32 1081
        double tal = 1.0;
89c4a3a6 sago007 2008-08-29 14:32 1082
        velocityY = -tal*startVelocityY;
89c4a3a6 sago007 2008-08-29 14:32 1083
        lastTime = currentTime;
89c4a3a6 sago007 2008-08-29 14:32 1084
        x = (double)X;
89c4a3a6 sago007 2008-08-29 14:32 1085
        y = (double)Y;
89c4a3a6 sago007 2008-08-29 14:32 1086
        color = coulor;
89c4a3a6 sago007 2008-08-29 14:32 1087
        if (right)
89c4a3a6 sago007 2008-08-29 14:32 1088
            velocityX = tal*VelocityX;
89c4a3a6 sago007 2008-08-29 14:32 1089
        else
89c4a3a6 sago007 2008-08-29 14:32 1090
            velocityX = -tal*VelocityX;
89c4a3a6 sago007 2008-08-29 14:32 1091
    }  //constructor
89c4a3a6 sago007 2008-08-29 14:32 1092
89c4a3a6 sago007 2008-08-29 14:32 1093
    //Deconstructor
89c4a3a6 sago007 2008-08-29 14:32 1094
    ~aBall()
89c4a3a6 sago007 2008-08-29 14:32 1095
    {
89c4a3a6 sago007 2008-08-29 14:32 1096
    }   //Deconstructor
89c4a3a6 sago007 2008-08-29 14:32 1097
89c4a3a6 sago007 2008-08-29 14:32 1098
    void update()
89c4a3a6 sago007 2008-08-29 14:32 1099
    {
89c4a3a6 sago007 2008-08-29 14:32 1100
        double timePassed = (((double)(currentTime-lastTime))/1000.0);  //time passed in seconds
89c4a3a6 sago007 2008-08-29 14:32 1101
        x = x+timePassed*velocityX;
89c4a3a6 sago007 2008-08-29 14:32 1102
        y = y+timePassed*velocityY;
89c4a3a6 sago007 2008-08-29 14:32 1103
        velocityY = velocityY + gravity*timePassed;
89c4a3a6 sago007 2008-08-29 14:32 1104
        if (y<1.0)
89c4a3a6 sago007 2008-08-29 14:32 1105
            velocityY=10.0;
89c4a3a6 sago007 2008-08-29 14:32 1106
        if ((velocityY>minVelocity) && (y>(double)(768-ballSize)) && (y<768.0))
89c4a3a6 sago007 2008-08-29 14:32 1107
        {
89c4a3a6 sago007 2008-08-29 14:32 1108
            velocityY = -0.70*velocityY;
89c4a3a6 sago007 2008-08-29 14:32 1109
            y = 768.0-ballSize;
89c4a3a6 sago007 2008-08-29 14:32 1110
        }
89c4a3a6 sago007 2008-08-29 14:32 1111
        lastTime = currentTime;
89c4a3a6 sago007 2008-08-29 14:32 1112
    }
89c4a3a6 sago007 2008-08-29 14:32 1113
89c4a3a6 sago007 2008-08-29 14:32 1114
    int getX()
89c4a3a6 sago007 2008-08-29 14:32 1115
    {
89c4a3a6 sago007 2008-08-29 14:32 1116
        return (int)x;
89c4a3a6 sago007 2008-08-29 14:32 1117
    }
89c4a3a6 sago007 2008-08-29 14:32 1118
89c4a3a6 sago007 2008-08-29 14:32 1119
    int getY()
89c4a3a6 sago007 2008-08-29 14:32 1120
    {
89c4a3a6 sago007 2008-08-29 14:32 1121
        return (int)y;
89c4a3a6 sago007 2008-08-29 14:32 1122
    }
89c4a3a6 sago007 2008-08-29 14:32 1123
89c4a3a6 sago007 2008-08-29 14:32 1124
    int getColor()
89c4a3a6 sago007 2008-08-29 14:32 1125
    {
89c4a3a6 sago007 2008-08-29 14:32 1126
        return color;
89c4a3a6 sago007 2008-08-29 14:32 1127
    }
89c4a3a6 sago007 2008-08-29 14:32 1128
};  //aBall
89c4a3a6 sago007 2008-08-29 14:32 1129
6d48320c sago007 2009-03-28 17:06 1130
const int maxNumberOfBalls = 6*12*2*2;
89c4a3a6 sago007 2008-08-29 14:32 1131
89c4a3a6 sago007 2008-08-29 14:32 1132
class ballManeger
89c4a3a6 sago007 2008-08-29 14:32 1133
{
89c4a3a6 sago007 2008-08-29 14:32 1134
public:
89c4a3a6 sago007 2008-08-29 14:32 1135
    aBall ballArray[maxNumberOfBalls];
89c4a3a6 sago007 2008-08-29 14:32 1136
    bool ballUsed[maxNumberOfBalls];
89c4a3a6 sago007 2008-08-29 14:32 1137
    //The old ball information is also saved so balls can be deleted!
89c4a3a6 sago007 2008-08-29 14:32 1138
    aBall oldBallArray[maxNumberOfBalls];
89c4a3a6 sago007 2008-08-29 14:32 1139
    bool oldBallUsed[maxNumberOfBalls];
89c4a3a6 sago007 2008-08-29 14:32 1140
89c4a3a6 sago007 2008-08-29 14:32 1141
    ballManeger()
89c4a3a6 sago007 2008-08-29 14:32 1142
    {
89c4a3a6 sago007 2008-08-29 14:32 1143
        for (int i=0; i<maxNumberOfBalls; i++)
89c4a3a6 sago007 2008-08-29 14:32 1144
        {
89c4a3a6 sago007 2008-08-29 14:32 1145
            ballUsed[i] = false;
89c4a3a6 sago007 2008-08-29 14:32 1146
            oldBallUsed[i] = false;
89c4a3a6 sago007 2008-08-29 14:32 1147
        }
89c4a3a6 sago007 2008-08-29 14:32 1148
    }
89c4a3a6 sago007 2008-08-29 14:32 1149
6d48320c sago007 2009-03-28 17:06 1150
    //Adds a ball to the screen at given coordiantes, traveling right or not with color
89c4a3a6 sago007 2008-08-29 14:32 1151
    int addBall(int x, int y,bool right,int color)
89c4a3a6 sago007 2008-08-29 14:32 1152
    {
89c4a3a6 sago007 2008-08-29 14:32 1153
        int ballNumber = 0;
6d48320c sago007 2009-03-28 17:06 1154
        //Find a free ball
89c4a3a6 sago007 2008-08-29 14:32 1155
        while ((ballUsed[ballNumber])&&(ballNumber<maxNumberOfBalls))
89c4a3a6 sago007 2008-08-29 14:32 1156
            ballNumber++;
6d48320c sago007 2009-03-28 17:06 1157
        //Could not find a free ball, return -1
89c4a3a6 sago007 2008-08-29 14:32 1158
        if (ballNumber==maxNumberOfBalls)
89c4a3a6 sago007 2008-08-29 14:32 1159
            return -1;
89c4a3a6 sago007 2008-08-29 14:32 1160
        currentTime = SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 1161
        ballArray[ballNumber] = aBall(x,y,right,color);
89c4a3a6 sago007 2008-08-29 14:32 1162
        ballUsed[ballNumber] = true;
89c4a3a6 sago007 2008-08-29 14:32 1163
        return 1;
89c4a3a6 sago007 2008-08-29 14:32 1164
    }  //addBall
89c4a3a6 sago007 2008-08-29 14:32 1165
89c4a3a6 sago007 2008-08-29 14:32 1166
    void update()
89c4a3a6 sago007 2008-08-29 14:32 1167
    {
89c4a3a6 sago007 2008-08-29 14:32 1168
        currentTime = SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 1169
        for (int i = 0; i<maxNumberOfBalls; i++)
89c4a3a6 sago007 2008-08-29 14:32 1170
        {
89c4a3a6 sago007 2008-08-29 14:32 1171
89c4a3a6 sago007 2008-08-29 14:32 1172
            if (ballUsed[i])
89c4a3a6 sago007 2008-08-29 14:32 1173
            {
89c4a3a6 sago007 2008-08-29 14:32 1174
                oldBallUsed[i] = true;
89c4a3a6 sago007 2008-08-29 14:32 1175
                oldBallArray[i] = ballArray[i];
89c4a3a6 sago007 2008-08-29 14:32 1176
                ballArray[i].update();
6d48320c sago007 2009-03-28 17:06 1177
                if (ballArray[i].getY()>800 || ballArray[i].getX()>xsize || ballArray[i].getX()<-ballSize)
89c4a3a6 sago007 2008-08-29 14:32 1178
                {
89c4a3a6 sago007 2008-08-29 14:32 1179
                    ballArray[i].~aBall();
89c4a3a6 sago007 2008-08-29 14:32 1180
                    ballUsed[i] = false;
89c4a3a6 sago007 2008-08-29 14:32 1181
                    //cout << "Ball removed" << endl;
89c4a3a6 sago007 2008-08-29 14:32 1182
                }
89c4a3a6 sago007 2008-08-29 14:32 1183
            }
89c4a3a6 sago007 2008-08-29 14:32 1184
            else
89c4a3a6 sago007 2008-08-29 14:32 1185
            {
89c4a3a6 sago007 2008-08-29 14:32 1186
                oldBallUsed[i] = false;
89c4a3a6 sago007 2008-08-29 14:32 1187
            }
89c4a3a6 sago007 2008-08-29 14:32 1188
        }
89c4a3a6 sago007 2008-08-29 14:32 1189
    } //update
89c4a3a6 sago007 2008-08-29 14:32 1190
89c4a3a6 sago007 2008-08-29 14:32 1191
89c4a3a6 sago007 2008-08-29 14:32 1192
}; //theBallManeger
89c4a3a6 sago007 2008-08-29 14:32 1193
89c4a3a6 sago007 2008-08-29 14:32 1194
ballManeger theBallManeger;
89c4a3a6 sago007 2008-08-29 14:32 1195
89c4a3a6 sago007 2008-08-29 14:32 1196
//a explosions, non moving
89c4a3a6 sago007 2008-08-29 14:32 1197
class anExplosion
89c4a3a6 sago007 2008-08-29 14:32 1198
{
89c4a3a6 sago007 2008-08-29 14:32 1199
private:
89c4a3a6 sago007 2008-08-29 14:32 1200
    int x;
89c4a3a6 sago007 2008-08-29 14:32 1201
    int y;
89c4a3a6 sago007 2008-08-29 14:32 1202
    Uint8 frameNumber;
89c4a3a6 sago007 2008-08-29 14:32 1203
#define frameLength 80
89c4a3a6 sago007 2008-08-29 14:32 1204
    //How long an image in an animation should be showed
89c4a3a6 sago007 2008-08-29 14:32 1205
#define maxFrame 4
89c4a3a6 sago007 2008-08-29 14:32 1206
    //How many images there are in the animation
89c4a3a6 sago007 2008-08-29 14:32 1207
    unsigned long int placeTime; //Then the explosion occored
89c4a3a6 sago007 2008-08-29 14:32 1208
public:
89c4a3a6 sago007 2008-08-29 14:32 1209
89c4a3a6 sago007 2008-08-29 14:32 1210
    anExplosion()
89c4a3a6 sago007 2008-08-29 14:32 1211
    {}
89c4a3a6 sago007 2008-08-29 14:32 1212
89c4a3a6 sago007 2008-08-29 14:32 1213
    //constructor:
89c4a3a6 sago007 2008-08-29 14:32 1214
    anExplosion(int X, int Y)
89c4a3a6 sago007 2008-08-29 14:32 1215
    {
89c4a3a6 sago007 2008-08-29 14:32 1216
        placeTime = currentTime;
89c4a3a6 sago007 2008-08-29 14:32 1217
        x = X;
89c4a3a6 sago007 2008-08-29 14:32 1218
        y = Y;
89c4a3a6 sago007 2008-08-29 14:32 1219
        frameNumber=0;
89c4a3a6 sago007 2008-08-29 14:32 1220
    }  //constructor
89c4a3a6 sago007 2008-08-29 14:32 1221
89c4a3a6 sago007 2008-08-29 14:32 1222
    //Deconstructor
89c4a3a6 sago007 2008-08-29 14:32 1223
    ~anExplosion()
89c4a3a6 sago007 2008-08-29 14:32 1224
    {
89c4a3a6 sago007 2008-08-29 14:32 1225
    }   //Deconstructor
89c4a3a6 sago007 2008-08-29 14:32 1226
89c4a3a6 sago007 2008-08-29 14:32 1227
    //true if animation has played and object should be removed from the screen
89c4a3a6 sago007 2008-08-29 14:32 1228
    bool removeMe()
89c4a3a6 sago007 2008-08-29 14:32 1229
    {
89c4a3a6 sago007 2008-08-29 14:32 1230
        frameNumber = (currentTime-placeTime)/frameLength;
89c4a3a6 sago007 2008-08-29 14:32 1231
        return (!(frameNumber<maxFrame));
89c4a3a6 sago007 2008-08-29 14:32 1232
    }
89c4a3a6 sago007 2008-08-29 14:32 1233
89c4a3a6 sago007 2008-08-29 14:32 1234
    int getX()
89c4a3a6 sago007 2008-08-29 14:32 1235
    {
89c4a3a6 sago007 2008-08-29 14:32 1236
        return (int)x;
89c4a3a6 sago007 2008-08-29 14:32 1237
    }
89c4a3a6 sago007 2008-08-29 14:32 1238
89c4a3a6 sago007 2008-08-29 14:32 1239
    int getY()
89c4a3a6 sago007 2008-08-29 14:32 1240
    {
89c4a3a6 sago007 2008-08-29 14:32 1241
        return (int)y;
89c4a3a6 sago007 2008-08-29 14:32 1242
    }
89c4a3a6 sago007 2008-08-29 14:32 1243
89c4a3a6 sago007 2008-08-29 14:32 1244
    int getFrame()
89c4a3a6 sago007 2008-08-29 14:32 1245
    {
89c4a3a6 sago007 2008-08-29 14:32 1246
        return frameNumber;
89c4a3a6 sago007 2008-08-29 14:32 1247
    }
89c4a3a6 sago007 2008-08-29 14:32 1248
};  //nExplosion
89c4a3a6 sago007 2008-08-29 14:32 1249
89c4a3a6 sago007 2008-08-29 14:32 1250
class explosionManeger
89c4a3a6 sago007 2008-08-29 14:32 1251
{
89c4a3a6 sago007 2008-08-29 14:32 1252
public:
89c4a3a6 sago007 2008-08-29 14:32 1253
    anExplosion explosionArray[maxNumberOfBalls];
89c4a3a6 sago007 2008-08-29 14:32 1254
    bool explosionUsed[maxNumberOfBalls];
89c4a3a6 sago007 2008-08-29 14:32 1255
    //The old explosion information is also saved so explosions can be deleted!
89c4a3a6 sago007 2008-08-29 14:32 1256
    anExplosion oldExplosionArray[maxNumberOfBalls];
89c4a3a6 sago007 2008-08-29 14:32 1257
    bool oldExplosionUsed[maxNumberOfBalls];
89c4a3a6 sago007 2008-08-29 14:32 1258
89c4a3a6 sago007 2008-08-29 14:32 1259
    explosionManeger()
89c4a3a6 sago007 2008-08-29 14:32 1260
    {
89c4a3a6 sago007 2008-08-29 14:32 1261
        for (int i=0; i<maxNumberOfBalls; i++)
89c4a3a6 sago007 2008-08-29 14:32 1262
        {
89c4a3a6 sago007 2008-08-29 14:32 1263
            explosionUsed[i] = false;
89c4a3a6 sago007 2008-08-29 14:32 1264
            oldExplosionUsed[i] = false;
89c4a3a6 sago007 2008-08-29 14:32 1265
        }
89c4a3a6 sago007 2008-08-29 14:32 1266
    }
89c4a3a6 sago007 2008-08-29 14:32 1267
89c4a3a6 sago007 2008-08-29 14:32 1268
    int addExplosion(int x, int y)
89c4a3a6 sago007 2008-08-29 14:32 1269
    {
89c4a3a6 sago007 2008-08-29 14:32 1270
        //cout << "Tries to add an explosion" << endl;
89c4a3a6 sago007 2008-08-29 14:32 1271
        int explosionNumber = 0;
89c4a3a6 sago007 2008-08-29 14:32 1272
        while ((explosionUsed[explosionNumber])&&(explosionNumber<maxNumberOfBalls))
89c4a3a6 sago007 2008-08-29 14:32 1273
            explosionNumber++;
89c4a3a6 sago007 2008-08-29 14:32 1274
        if (explosionNumber==maxNumberOfBalls)
89c4a3a6 sago007 2008-08-29 14:32 1275
            return -1;
89c4a3a6 sago007 2008-08-29 14:32 1276
        currentTime = SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 1277
        explosionArray[explosionNumber] = anExplosion(x,y);
89c4a3a6 sago007 2008-08-29 14:32 1278
        explosionUsed[explosionNumber] = true;
89c4a3a6 sago007 2008-08-29 14:32 1279
        //cout << "Explosion added" << endl;
89c4a3a6 sago007 2008-08-29 14:32 1280
        return 1;
89c4a3a6 sago007 2008-08-29 14:32 1281
    }  //addBall
89c4a3a6 sago007 2008-08-29 14:32 1282
89c4a3a6 sago007 2008-08-29 14:32 1283
    void update()
89c4a3a6 sago007 2008-08-29 14:32 1284
    {
89c4a3a6 sago007 2008-08-29 14:32 1285
        currentTime = SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 1286
        for (int i = 0; i<maxNumberOfBalls; i++)
89c4a3a6 sago007 2008-08-29 14:32 1287
        {
89c4a3a6 sago007 2008-08-29 14:32 1288
89c4a3a6 sago007 2008-08-29 14:32 1289
            if (explosionUsed[i])
89c4a3a6 sago007 2008-08-29 14:32 1290
            {
89c4a3a6 sago007 2008-08-29 14:32 1291
                oldExplosionUsed[i] = true;
89c4a3a6 sago007 2008-08-29 14:32 1292
                oldExplosionArray[i] = explosionArray[i];
89c4a3a6 sago007 2008-08-29 14:32 1293
                if (explosionArray[i].removeMe())
89c4a3a6 sago007 2008-08-29 14:32 1294
                {
89c4a3a6 sago007 2008-08-29 14:32 1295
                    explosionArray[i].~anExplosion();
89c4a3a6 sago007 2008-08-29 14:32 1296
                    explosionUsed[i] = false;
89c4a3a6 sago007 2008-08-29 14:32 1297
                    //cout << "Explosion removed" << endl;
89c4a3a6 sago007 2008-08-29 14:32 1298
                }
89c4a3a6 sago007 2008-08-29 14:32 1299
            }
89c4a3a6 sago007 2008-08-29 14:32 1300
            else
89c4a3a6 sago007 2008-08-29 14:32 1301
            {
89c4a3a6 sago007 2008-08-29 14:32 1302
                oldExplosionUsed[i] = false;
89c4a3a6 sago007 2008-08-29 14:32 1303
            }
89c4a3a6 sago007 2008-08-29 14:32 1304
        }
89c4a3a6 sago007 2008-08-29 14:32 1305
    } //update
89c4a3a6 sago007 2008-08-29 14:32 1306
89c4a3a6 sago007 2008-08-29 14:32 1307
89c4a3a6 sago007 2008-08-29 14:32 1308
}; //explosionManeger
89c4a3a6 sago007 2008-08-29 14:32 1309
89c4a3a6 sago007 2008-08-29 14:32 1310
explosionManeger theExplosionManeger;
89c4a3a6 sago007 2008-08-29 14:32 1311
89c4a3a6 sago007 2008-08-29 14:32 1312
//text pop-up
89c4a3a6 sago007 2008-08-29 14:32 1313
class textMessage
89c4a3a6 sago007 2008-08-29 14:32 1314
{
89c4a3a6 sago007 2008-08-29 14:32 1315
private:
89c4a3a6 sago007 2008-08-29 14:32 1316
    int x;
89c4a3a6 sago007 2008-08-29 14:32 1317
    int y;
89c4a3a6 sago007 2008-08-29 14:32 1318
    char textt[10];
89c4a3a6 sago007 2008-08-29 14:32 1319
    unsigned long int time;
89c4a3a6 sago007 2008-08-29 14:32 1320
    unsigned long int placeTime; //Then the text was placed
89c4a3a6 sago007 2008-08-29 14:32 1321
public:
89c4a3a6 sago007 2008-08-29 14:32 1322
89c4a3a6 sago007 2008-08-29 14:32 1323
    textMessage()
89c4a3a6 sago007 2008-08-29 14:32 1324
    {}
89c4a3a6 sago007 2008-08-29 14:32 1325
89c4a3a6 sago007 2008-08-29 14:32 1326
    //constructor:
89c4a3a6 sago007 2008-08-29 14:32 1327
    textMessage(int X, int Y,const char* Text,unsigned int Time)
89c4a3a6 sago007 2008-08-29 14:32 1328
    {
89c4a3a6 sago007 2008-08-29 14:32 1329
        placeTime = currentTime;
89c4a3a6 sago007 2008-08-29 14:32 1330
        x = X;
89c4a3a6 sago007 2008-08-29 14:32 1331
        y = Y;
89c4a3a6 sago007 2008-08-29 14:32 1332
        strncpy(textt,Text,10);
89c4a3a6 sago007 2008-08-29 14:32 1333
        textt[9]=0;
89c4a3a6 sago007 2008-08-29 14:32 1334
        time = Time;
89c4a3a6 sago007 2008-08-29 14:32 1335
    }  //constructor
89c4a3a6 sago007 2008-08-29 14:32 1336
89c4a3a6 sago007 2008-08-29 14:32 1337
    //true if the text has expired
89c4a3a6 sago007 2008-08-29 14:32 1338
    bool removeMe()
89c4a3a6 sago007 2008-08-29 14:32 1339
    {
89c4a3a6 sago007 2008-08-29 14:32 1340
        return currentTime-placeTime>time;
89c4a3a6 sago007 2008-08-29 14:32 1341
    }
89c4a3a6 sago007 2008-08-29 14:32 1342
89c4a3a6 sago007 2008-08-29 14:32 1343
    int getX()
89c4a3a6 sago007 2008-08-29 14:32 1344
    {
89c4a3a6 sago007 2008-08-29 14:32 1345
        return x;
89c4a3a6 sago007 2008-08-29 14:32 1346
    }
89c4a3a6 sago007 2008-08-29 14:32 1347
89c4a3a6 sago007 2008-08-29 14:32 1348
    int getY()
89c4a3a6 sago007 2008-08-29 14:32 1349
    {
89c4a3a6 sago007 2008-08-29 14:32 1350
        return y;
89c4a3a6 sago007 2008-08-29 14:32 1351
    }
89c4a3a6 sago007 2008-08-29 14:32 1352
89c4a3a6 sago007 2008-08-29 14:32 1353
    char* getText()
89c4a3a6 sago007 2008-08-29 14:32 1354
    {
89c4a3a6 sago007 2008-08-29 14:32 1355
        return textt;
89c4a3a6 sago007 2008-08-29 14:32 1356
    }
89c4a3a6 sago007 2008-08-29 14:32 1357
};  //text popup
89c4a3a6 sago007 2008-08-29 14:32 1358
89c4a3a6 sago007 2008-08-29 14:32 1359
class textManeger
89c4a3a6 sago007 2008-08-29 14:32 1360
{
89c4a3a6 sago007 2008-08-29 14:32 1361
public:
89c4a3a6 sago007 2008-08-29 14:32 1362
    textMessage textArray[maxNumberOfBalls];
89c4a3a6 sago007 2008-08-29 14:32 1363
    bool textUsed[maxNumberOfBalls];
89c4a3a6 sago007 2008-08-29 14:32 1364
    //The old text information is also saved so text can be deleted!
89c4a3a6 sago007 2008-08-29 14:32 1365
    textMessage oldTextArray[maxNumberOfBalls];
89c4a3a6 sago007 2008-08-29 14:32 1366
    bool oldTextUsed[maxNumberOfBalls];
89c4a3a6 sago007 2008-08-29 14:32 1367
89c4a3a6 sago007 2008-08-29 14:32 1368
    textManeger()
89c4a3a6 sago007 2008-08-29 14:32 1369
    {
89c4a3a6 sago007 2008-08-29 14:32 1370
        for (int i=0; i<maxNumberOfBalls; i++)
89c4a3a6 sago007 2008-08-29 14:32 1371
        {
89c4a3a6 sago007 2008-08-29 14:32 1372
            textUsed[i] = false;
89c4a3a6 sago007 2008-08-29 14:32 1373
            oldTextUsed[i] = false;
89c4a3a6 sago007 2008-08-29 14:32 1374
        }
89c4a3a6 sago007 2008-08-29 14:32 1375
    }
89c4a3a6 sago007 2008-08-29 14:32 1376
89c4a3a6 sago007 2008-08-29 14:32 1377
    int addText(int x, int y,string Text,unsigned int Time)
89c4a3a6 sago007 2008-08-29 14:32 1378
    {
89c4a3a6 sago007 2008-08-29 14:32 1379
        //cout << "Tries to add text" << endl;
89c4a3a6 sago007 2008-08-29 14:32 1380
        int textNumber = 0;
89c4a3a6 sago007 2008-08-29 14:32 1381
        while ((textNumber<maxNumberOfBalls)&&((textUsed[textNumber])||(oldTextUsed[textNumber])))
89c4a3a6 sago007 2008-08-29 14:32 1382
            textNumber++;
89c4a3a6 sago007 2008-08-29 14:32 1383
        if (textNumber==maxNumberOfBalls)
89c4a3a6 sago007 2008-08-29 14:32 1384
            return -1;
89c4a3a6 sago007 2008-08-29 14:32 1385
        //cout << "adding to: " << textNumber << ":" << textUsed[textNumber] << ":" << &textArray[textNumber] << endl;
89c4a3a6 sago007 2008-08-29 14:32 1386
        currentTime = SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 1387
        textArray[textNumber] = textMessage(x,y,Text.c_str(),Time);
89c4a3a6 sago007 2008-08-29 14:32 1388
        textUsed[textNumber] = true;
89c4a3a6 sago007 2008-08-29 14:32 1389
        return 1;
89c4a3a6 sago007 2008-08-29 14:32 1390
    }  //addText
89c4a3a6 sago007 2008-08-29 14:32 1391
89c4a3a6 sago007 2008-08-29 14:32 1392
    void update()
89c4a3a6 sago007 2008-08-29 14:32 1393
    {
89c4a3a6 sago007 2008-08-29 14:32 1394
        //cout << "Running update" << endl;
89c4a3a6 sago007 2008-08-29 14:32 1395
        currentTime = SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 1396
        for (int i = 0; i<maxNumberOfBalls; i++)
89c4a3a6 sago007 2008-08-29 14:32 1397
        {
89c4a3a6 sago007 2008-08-29 14:32 1398
89c4a3a6 sago007 2008-08-29 14:32 1399
            if (textUsed[i])
89c4a3a6 sago007 2008-08-29 14:32 1400
            {
89c4a3a6 sago007 2008-08-29 14:32 1401
                if (!oldTextUsed[i])
89c4a3a6 sago007 2008-08-29 14:32 1402
                {
89c4a3a6 sago007 2008-08-29 14:32 1403
                    oldTextUsed[i] = true;
89c4a3a6 sago007 2008-08-29 14:32 1404
                    oldTextArray[i] = textMessage(textArray[i]);
89c4a3a6 sago007 2008-08-29 14:32 1405
                }
89c4a3a6 sago007 2008-08-29 14:32 1406
                if (textArray[i].removeMe())
89c4a3a6 sago007 2008-08-29 14:32 1407
                {
89c4a3a6 sago007 2008-08-29 14:32 1408
                    textArray[i].~textMessage();
89c4a3a6 sago007 2008-08-29 14:32 1409
                    textUsed[i] = false;
89c4a3a6 sago007 2008-08-29 14:32 1410
                }
89c4a3a6 sago007 2008-08-29 14:32 1411
            }
89c4a3a6 sago007 2008-08-29 14:32 1412
            else
89c4a3a6 sago007 2008-08-29 14:32 1413
                if (oldTextUsed[i])
89c4a3a6 sago007 2008-08-29 14:32 1414
                {
89c4a3a6 sago007 2008-08-29 14:32 1415
                    oldTextUsed[i] = false;
89c4a3a6 sago007 2008-08-29 14:32 1416
                    oldTextArray[i].~textMessage();
89c4a3a6 sago007 2008-08-29 14:32 1417
                }
89c4a3a6 sago007 2008-08-29 14:32 1418
        }
89c4a3a6 sago007 2008-08-29 14:32 1419
    } //update
89c4a3a6 sago007 2008-08-29 14:32 1420
89c4a3a6 sago007 2008-08-29 14:32 1421
89c4a3a6 sago007 2008-08-29 14:32 1422
}; //textManeger
89c4a3a6 sago007 2008-08-29 14:32 1423
89c4a3a6 sago007 2008-08-29 14:32 1424
textManeger theTextManeger;
89c4a3a6 sago007 2008-08-29 14:32 1425
89c4a3a6 sago007 2008-08-29 14:32 1426
//Here comes the Block Game object
89c4a3a6 sago007 2008-08-29 14:32 1427
#include "BlockGame.hpp"
7ca669ac sago007 2008-12-09 16:30 1428
#include "SFont.h"
89c4a3a6 sago007 2008-08-29 14:32 1429
89c4a3a6 sago007 2008-08-29 14:32 1430
//writeScreenShot saves the screen as a bmp file, it uses the time to get a unique filename
89c4a3a6 sago007 2008-08-29 14:32 1431
void writeScreenShot()
89c4a3a6 sago007 2008-08-29 14:32 1432
{
89c4a3a6 sago007 2008-08-29 14:32 1433
    cout << "Saving screenshot" << endl;
89c4a3a6 sago007 2008-08-29 14:32 1434
    int rightNow = (int)time(NULL);
215ca7b3 sago007 2009-03-06 16:37 1435
/*#if defined(__unix__)
89c4a3a6 sago007 2008-08-29 14:32 1436
    char buf[514];
89c4a3a6 sago007 2008-08-29 14:32 1437
    sprintf( buf, "%s/.gamesaves/blockattack/screenshots/screenshot%i.bmp", getenv("HOME"), rightNow );
91886cae sago007 2008-09-12 16:28 1438
#elif defined(__win32__)
89c4a3a6 sago007 2008-08-29 14:32 1439
    char buf[MAX_PATH];
89c4a3a6 sago007 2008-08-29 14:32 1440
    sprintf( buf, "%s\\My Games\\blockattack\\screenshots\\screenshot%i.bmp", (getMyDocumentsPath()).c_str(), rightNow );
91886cae sago007 2008-09-12 16:28 1441
#else
91886cae sago007 2008-09-12 16:28 1442
    char buf[MAX_PATH];
91886cae sago007 2008-09-12 16:28 1443
    sprintf( buf, "screenshot%i.bmp", rightNow );
215ca7b3 sago007 2009-03-06 16:37 1444
#endif*/
215ca7b3 sago007 2009-03-06 16:37 1445
#if defined(__unix__)
215ca7b3 sago007 2009-03-06 16:37 1446
    string buf = (string)getenv("HOME")+"/.gamesaves/blockattack/screenshots/screenshot"+itoa(rightNow)+".bmp";
215ca7b3 sago007 2009-03-06 16:37 1447
#elif defined(__win32__)
215ca7b3 sago007 2009-03-06 16:37 1448
    string buf = getMyDocumentsPath()+"\\My Games\\blockattack\\screenshots\\screenshot"+itoa(rightNow)+".bmp";
215ca7b3 sago007 2009-03-06 16:37 1449
#else
215ca7b3 sago007 2009-03-06 16:37 1450
    string buf = "screenshot"+itoa(rightNow)+".bmp";
89c4a3a6 sago007 2008-08-29 14:32 1451
#endif
215ca7b3 sago007 2009-03-06 16:37 1452
    SDL_SaveBMP( screen, buf.c_str() );
89c4a3a6 sago007 2008-08-29 14:32 1453
    if (!NoSound)
89c4a3a6 sago007 2008-08-29 14:32 1454
        if (SoundEnabled)Mix_PlayChannel(1,photoClick,0);
89c4a3a6 sago007 2008-08-29 14:32 1455
}
89c4a3a6 sago007 2008-08-29 14:32 1456
89c4a3a6 sago007 2008-08-29 14:32 1457
//Function to return the name of a key, to be displayed...
215ca7b3 sago007 2009-03-06 16:37 1458
string getKeyName(SDLKey key)
89c4a3a6 sago007 2008-08-29 14:32 1459
{
215ca7b3 sago007 2009-03-06 16:37 1460
    string keyname;
89c4a3a6 sago007 2008-08-29 14:32 1461
    char charToPut = '\0';
89c4a3a6 sago007 2008-08-29 14:32 1462
    switch (key)
89c4a3a6 sago007 2008-08-29 14:32 1463
    {
89c4a3a6 sago007 2008-08-29 14:32 1464
    case SDLK_a:
89c4a3a6 sago007 2008-08-29 14:32 1465
        charToPut = 'A';
89c4a3a6 sago007 2008-08-29 14:32 1466
        break;
89c4a3a6 sago007 2008-08-29 14:32 1467
    case SDLK_b:
89c4a3a6 sago007 2008-08-29 14:32 1468
        charToPut = 'B';
89c4a3a6 sago007 2008-08-29 14:32 1469
        break;
89c4a3a6 sago007 2008-08-29 14:32 1470
    case SDLK_c:
89c4a3a6 sago007 2008-08-29 14:32 1471
        charToPut = 'C';
89c4a3a6 sago007 2008-08-29 14:32 1472
        break;
89c4a3a6 sago007 2008-08-29 14:32 1473
    case SDLK_d:
89c4a3a6 sago007 2008-08-29 14:32 1474
        charToPut = 'D';
89c4a3a6 sago007 2008-08-29 14:32 1475
        break;
89c4a3a6 sago007 2008-08-29 14:32 1476
    case SDLK_e:
89c4a3a6 sago007 2008-08-29 14:32 1477
        charToPut = 'E';
89c4a3a6 sago007 2008-08-29 14:32 1478
        break;
89c4a3a6 sago007 2008-08-29 14:32 1479
    case SDLK_f:
89c4a3a6 sago007 2008-08-29 14:32 1480
        charToPut = 'F';
89c4a3a6 sago007 2008-08-29 14:32 1481
        break;
89c4a3a6 sago007 2008-08-29 14:32 1482
    case SDLK_g:
89c4a3a6 sago007 2008-08-29 14:32 1483
        charToPut = 'G';
89c4a3a6 sago007 2008-08-29 14:32 1484
        break;
89c4a3a6 sago007 2008-08-29 14:32 1485
    case SDLK_h:
89c4a3a6 sago007 2008-08-29 14:32 1486
        charToPut = 'H';
89c4a3a6 sago007 2008-08-29 14:32 1487
        break;
89c4a3a6 sago007 2008-08-29 14:32 1488
    case SDLK_i:
89c4a3a6 sago007 2008-08-29 14:32 1489
        charToPut = 'I';
89c4a3a6 sago007 2008-08-29 14:32 1490
        break;
89c4a3a6 sago007 2008-08-29 14:32 1491
    case SDLK_j:
89c4a3a6 sago007 2008-08-29 14:32 1492
        charToPut = 'J';
89c4a3a6 sago007 2008-08-29 14:32 1493
        break;
89c4a3a6 sago007 2008-08-29 14:32 1494
    case SDLK_k:
89c4a3a6 sago007 2008-08-29 14:32 1495
        charToPut = 'K';
89c4a3a6 sago007 2008-08-29 14:32 1496
        break;
89c4a3a6 sago007 2008-08-29 14:32 1497
    case SDLK_l:
89c4a3a6 sago007 2008-08-29 14:32 1498
        charToPut = 'L';
89c4a3a6 sago007 2008-08-29 14:32 1499
        break;
89c4a3a6 sago007 2008-08-29 14:32 1500
    case SDLK_m:
89c4a3a6 sago007 2008-08-29 14:32 1501
        charToPut = 'M';
89c4a3a6 sago007 2008-08-29 14:32 1502
        break;
89c4a3a6 sago007 2008-08-29 14:32 1503
    case SDLK_n:
89c4a3a6 sago007 2008-08-29 14:32 1504
        charToPut = 'N';
89c4a3a6 sago007 2008-08-29 14:32 1505
        break;
89c4a3a6 sago007 2008-08-29 14:32 1506
    case SDLK_o:
89c4a3a6 sago007 2008-08-29 14:32 1507
        charToPut = 'O';
89c4a3a6 sago007 2008-08-29 14:32 1508
        break;
89c4a3a6 sago007 2008-08-29 14:32 1509
    case SDLK_p:
89c4a3a6 sago007 2008-08-29 14:32 1510
        charToPut = 'P';
89c4a3a6 sago007 2008-08-29 14:32 1511
        break;
89c4a3a6 sago007 2008-08-29 14:32 1512
    case SDLK_q:
89c4a3a6 sago007 2008-08-29 14:32 1513
        charToPut = 'Q';
89c4a3a6 sago007 2008-08-29 14:32 1514
        break;
89c4a3a6 sago007 2008-08-29 14:32 1515
    case SDLK_r:
89c4a3a6 sago007 2008-08-29 14:32 1516
        charToPut = 'R';
89c4a3a6 sago007 2008-08-29 14:32 1517
        break;
89c4a3a6 sago007 2008-08-29 14:32 1518
    case SDLK_s:
89c4a3a6 sago007 2008-08-29 14:32 1519
        charToPut = 'S';
89c4a3a6 sago007 2008-08-29 14:32 1520
        break;
89c4a3a6 sago007 2008-08-29 14:32 1521
    case SDLK_t:
89c4a3a6 sago007 2008-08-29 14:32 1522
        charToPut = 'T';
89c4a3a6 sago007 2008-08-29 14:32 1523
        break;
89c4a3a6 sago007 2008-08-29 14:32 1524
    case SDLK_u:
89c4a3a6 sago007 2008-08-29 14:32 1525
        charToPut = 'U';
89c4a3a6 sago007 2008-08-29 14:32 1526
        break;
89c4a3a6 sago007 2008-08-29 14:32 1527
    case SDLK_v:
89c4a3a6 sago007 2008-08-29 14:32 1528
        charToPut = 'V';
89c4a3a6 sago007 2008-08-29 14:32 1529
        break;
89c4a3a6 sago007 2008-08-29 14:32 1530
    case SDLK_w:
89c4a3a6 sago007 2008-08-29 14:32 1531
        charToPut = 'W';
89c4a3a6 sago007 2008-08-29 14:32 1532
        break;
89c4a3a6 sago007 2008-08-29 14:32 1533
    case SDLK_x:
89c4a3a6 sago007 2008-08-29 14:32 1534
        charToPut = 'X';
89c4a3a6 sago007 2008-08-29 14:32 1535
        break;
89c4a3a6 sago007 2008-08-29 14:32 1536
    case SDLK_y:
89c4a3a6 sago007 2008-08-29 14:32 1537
        charToPut = 'Y';
89c4a3a6 sago007 2008-08-29 14:32 1538
        break;
89c4a3a6 sago007 2008-08-29 14:32 1539
    case SDLK_z:
89c4a3a6 sago007 2008-08-29 14:32 1540
        charToPut = 'Z';
89c4a3a6 sago007 2008-08-29 14:32 1541
        break;
89c4a3a6 sago007 2008-08-29 14:32 1542
    case SDLK_0:
89c4a3a6 sago007 2008-08-29 14:32 1543
        charToPut = '0';
89c4a3a6 sago007 2008-08-29 14:32 1544
        break;
89c4a3a6 sago007 2008-08-29 14:32 1545
    case SDLK_1:
89c4a3a6 sago007 2008-08-29 14:32 1546
        charToPut = '1';
89c4a3a6 sago007 2008-08-29 14:32 1547
        break;
89c4a3a6 sago007 2008-08-29 14:32 1548
    case SDLK_2:
89c4a3a6 sago007 2008-08-29 14:32 1549
        charToPut = '2';
89c4a3a6 sago007 2008-08-29 14:32 1550
        break;
89c4a3a6 sago007 2008-08-29 14:32 1551
    case SDLK_3:
89c4a3a6 sago007 2008-08-29 14:32 1552
        charToPut = '3';
89c4a3a6 sago007 2008-08-29 14:32 1553
        break;
89c4a3a6 sago007 2008-08-29 14:32 1554
    case SDLK_4:
89c4a3a6 sago007 2008-08-29 14:32 1555
        charToPut = '4';
89c4a3a6 sago007 2008-08-29 14:32 1556
        break;
89c4a3a6 sago007 2008-08-29 14:32 1557
    case SDLK_5:
89c4a3a6 sago007 2008-08-29 14:32 1558
        charToPut = '5';
89c4a3a6 sago007 2008-08-29 14:32 1559
        break;
89c4a3a6 sago007 2008-08-29 14:32 1560
    case SDLK_6:
89c4a3a6 sago007 2008-08-29 14:32 1561
        charToPut = '6';
89c4a3a6 sago007 2008-08-29 14:32 1562
        break;
89c4a3a6 sago007 2008-08-29 14:32 1563
    case SDLK_7:
89c4a3a6 sago007 2008-08-29 14:32 1564
        charToPut = '7';
89c4a3a6 sago007 2008-08-29 14:32 1565
        break;
89c4a3a6 sago007 2008-08-29 14:32 1566
    case SDLK_8:
89c4a3a6 sago007 2008-08-29 14:32 1567
        charToPut = '8';
89c4a3a6 sago007 2008-08-29 14:32 1568
        break;
89c4a3a6 sago007 2008-08-29 14:32 1569
    case SDLK_9:
89c4a3a6 sago007 2008-08-29 14:32 1570
        charToPut = '9';
89c4a3a6 sago007 2008-08-29 14:32 1571
        break;
89c4a3a6 sago007 2008-08-29 14:32 1572
    case SDLK_KP0:
215ca7b3 sago007 2009-03-06 16:37 1573
        keyname = "NP_0";
89c4a3a6 sago007 2008-08-29 14:32 1574
        break;
89c4a3a6 sago007 2008-08-29 14:32 1575
    case SDLK_KP1:
215ca7b3 sago007 2009-03-06 16:37 1576
        keyname = "NP_1";
89c4a3a6 sago007 2008-08-29 14:32 1577
        break;
89c4a3a6 sago007 2008-08-29 14:32 1578
    case SDLK_KP2:
215ca7b3 sago007 2009-03-06 16:37 1579
        keyname = "NP_2";
89c4a3a6 sago007 2008-08-29 14:32 1580
        break;
89c4a3a6 sago007 2008-08-29 14:32 1581
    case SDLK_KP3:
215ca7b3 sago007 2009-03-06 16:37 1582
        keyname = "NP_3";
89c4a3a6 sago007 2008-08-29 14:32 1583
        break;
89c4a3a6 sago007 2008-08-29 14:32 1584
    case SDLK_KP4:
215ca7b3 sago007 2009-03-06 16:37 1585
        keyname = "NP_4";
89c4a3a6 sago007 2008-08-29 14:32 1586
        break;
89c4a3a6 sago007 2008-08-29 14:32 1587
    case SDLK_KP5:
215ca7b3 sago007 2009-03-06 16:37 1588
        keyname = "NP_5";
89c4a3a6 sago007 2008-08-29 14:32 1589
        break;
89c4a3a6 sago007 2008-08-29 14:32 1590
    case SDLK_KP6:
215ca7b3 sago007 2009-03-06 16:37 1591
        keyname = "NP_6";
89c4a3a6 sago007 2008-08-29 14:32 1592
        break;
89c4a3a6 sago007 2008-08-29 14:32 1593
    case SDLK_KP7:
215ca7b3 sago007 2009-03-06 16:37 1594
        keyname = "NP_7";
89c4a3a6 sago007 2008-08-29 14:32 1595
        break;
89c4a3a6 sago007 2008-08-29 14:32 1596
    case SDLK_KP8:
215ca7b3 sago007 2009-03-06 16:37 1597
        keyname = "NP_8";
89c4a3a6 sago007 2008-08-29 14:32 1598
        break;
89c4a3a6 sago007 2008-08-29 14:32 1599
    case SDLK_KP9:
215ca7b3 sago007 2009-03-06 16:37 1600
        keyname = "NP_9";
89c4a3a6 sago007 2008-08-29 14:32 1601
        break;
89c4a3a6 sago007 2008-08-29 14:32 1602
    case SDLK_BACKSPACE:
215ca7b3 sago007 2009-03-06 16:37 1603
        keyname = "Backspace";
89c4a3a6 sago007 2008-08-29 14:32 1604
        break;
89c4a3a6 sago007 2008-08-29 14:32 1605
    case SDLK_TAB:
215ca7b3 sago007 2009-03-06 16:37 1606
        keyname = "Tab";
89c4a3a6 sago007 2008-08-29 14:32 1607
        break;
89c4a3a6 sago007 2008-08-29 14:32 1608
    case SDLK_CLEAR:
215ca7b3 sago007 2009-03-06 16:37 1609
        keyname = "Clear";
89c4a3a6 sago007 2008-08-29 14:32 1610
        break;
89c4a3a6 sago007 2008-08-29 14:32 1611
    case SDLK_RETURN:
215ca7b3 sago007 2009-03-06 16:37 1612
        keyname = "Return";
89c4a3a6 sago007 2008-08-29 14:32 1613
        break;
89c4a3a6 sago007 2008-08-29 14:32 1614
    case SDLK_PAUSE:
215ca7b3 sago007 2009-03-06 16:37 1615
        keyname = "Pause";
89c4a3a6 sago007 2008-08-29 14:32 1616
        break;
89c4a3a6 sago007 2008-08-29 14:32 1617
    case SDLK_SPACE:
215ca7b3 sago007 2009-03-06 16:37 1618
        keyname = "Space";
89c4a3a6 sago007 2008-08-29 14:32 1619
        break;
89c4a3a6 sago007 2008-08-29 14:32 1620
    case SDLK_EXCLAIM:
89c4a3a6 sago007 2008-08-29 14:32 1621
        charToPut = '!';
89c4a3a6 sago007 2008-08-29 14:32 1622
        break;
89c4a3a6 sago007 2008-08-29 14:32 1623
    case SDLK_QUOTEDBL:
215ca7b3 sago007 2009-03-06 16:37 1624
        keyname = "QuoteDBL";
89c4a3a6 sago007 2008-08-29 14:32 1625
        break;
89c4a3a6 sago007 2008-08-29 14:32 1626
    case SDLK_HASH:
89c4a3a6 sago007 2008-08-29 14:32 1627
        charToPut = '#';
89c4a3a6 sago007 2008-08-29 14:32 1628
        break;
89c4a3a6 sago007 2008-08-29 14:32 1629
    case SDLK_DOLLAR:
215ca7b3 sago007 2009-03-06 16:37 1630
        keyname = "$";
89c4a3a6 sago007 2008-08-29 14:32 1631
        break;
89c4a3a6 sago007 2008-08-29 14:32 1632
    case SDLK_ASTERISK:
215ca7b3 sago007 2009-03-06 16:37 1633
        keyname = "Asterisk";
89c4a3a6 sago007 2008-08-29 14:32 1634
        break;
89c4a3a6 sago007 2008-08-29 14:32 1635
    case SDLK_PLUS:
215ca7b3 sago007 2009-03-06 16:37 1636
        keyname = "Plus";
89c4a3a6 sago007 2008-08-29 14:32 1637
        break;
89c4a3a6 sago007 2008-08-29 14:32 1638
    case SDLK_COMMA:
215ca7b3 sago007 2009-03-06 16:37 1639
        keyname = "Comma";
89c4a3a6 sago007 2008-08-29 14:32 1640
        break;
89c4a3a6 sago007 2008-08-29 14:32 1641
    case SDLK_MINUS:
215ca7b3 sago007 2009-03-06 16:37 1642
        keyname = "Minus";
89c4a3a6 sago007 2008-08-29 14:32 1643
        break;
89c4a3a6 sago007 2008-08-29 14:32 1644
    case SDLK_PERIOD:
215ca7b3 sago007 2009-03-06 16:37 1645
        keyname = "Period";
89c4a3a6 sago007 2008-08-29 14:32 1646
        break;
89c4a3a6 sago007 2008-08-29 14:32 1647
    case SDLK_SLASH:
89c4a3a6 sago007 2008-08-29 14:32 1648
        charToPut ='/';
89c4a3a6 sago007 2008-08-29 14:32 1649
        break;
89c4a3a6 sago007 2008-08-29 14:32 1650
    case SDLK_COLON:
215ca7b3 sago007 2009-03-06 16:37 1651
        keyname = "Colon";
89c4a3a6 sago007 2008-08-29 14:32 1652
        break;
89c4a3a6 sago007 2008-08-29 14:32 1653
    case SDLK_SEMICOLON:
215ca7b3 sago007 2009-03-06 16:37 1654
        keyname = "SemiColon";
89c4a3a6 sago007 2008-08-29 14:32 1655
        break;
89c4a3a6 sago007 2008-08-29 14:32 1656
    case SDLK_LESS:
89c4a3a6 sago007 2008-08-29 14:32 1657
        charToPut = '<';
89c4a3a6 sago007 2008-08-29 14:32 1658
        break;
89c4a3a6 sago007 2008-08-29 14:32 1659
    case SDLK_EQUALS:
215ca7b3 sago007 2009-03-06 16:37 1660
        keyname = "Equals";
89c4a3a6 sago007 2008-08-29 14:32 1661
        break;
89c4a3a6 sago007 2008-08-29 14:32 1662
    case SDLK_DELETE:
215ca7b3 sago007 2009-03-06 16:37 1663
        keyname = "Delete";
89c4a3a6 sago007 2008-08-29 14:32 1664
        break;
89c4a3a6 sago007 2008-08-29 14:32 1665
    case SDLK_KP_PERIOD:
215ca7b3 sago007 2009-03-06 16:37 1666
        keyname = "NPperiod";
89c4a3a6 sago007 2008-08-29 14:32 1667
        break;
89c4a3a6 sago007 2008-08-29 14:32 1668
    case SDLK_KP_DIVIDE:
215ca7b3 sago007 2009-03-06 16:37 1669
        keyname = "NPdivide";
89c4a3a6 sago007 2008-08-29 14:32 1670
        break;
89c4a3a6 sago007 2008-08-29 14:32 1671
    case SDLK_KP_MULTIPLY:
215ca7b3 sago007 2009-03-06 16:37 1672
        keyname = "NPmultiply";
89c4a3a6 sago007 2008-08-29 14:32 1673
        break;
89c4a3a6 sago007 2008-08-29 14:32 1674
    case SDLK_KP_MINUS:
215ca7b3 sago007 2009-03-06 16:37 1675
        keyname = "NPminus";
89c4a3a6 sago007 2008-08-29 14:32 1676
        break;
89c4a3a6 sago007 2008-08-29 14:32 1677
    case SDLK_KP_PLUS:
215ca7b3 sago007 2009-03-06 16:37 1678
        keyname = "NPplus";
89c4a3a6 sago007 2008-08-29 14:32 1679
        break;
89c4a3a6 sago007 2008-08-29 14:32 1680
    case SDLK_KP_ENTER:
215ca7b3 sago007 2009-03-06 16:37 1681
        keyname = "NP_Enter";
89c4a3a6 sago007 2008-08-29 14:32 1682
        break;
89c4a3a6 sago007 2008-08-29 14:32 1683
    case SDLK_KP_EQUALS:
215ca7b3 sago007 2009-03-06 16:37 1684
        keyname = "NP=";
89c4a3a6 sago007 2008-08-29 14:32 1685
        break;
89c4a3a6 sago007 2008-08-29 14:32 1686
    case SDLK_UP:
215ca7b3 sago007 2009-03-06 16:37 1687
        keyname = "UP";
89c4a3a6 sago007 2008-08-29 14:32 1688
        break;
89c4a3a6 sago007 2008-08-29 14:32 1689
    case SDLK_DOWN:
215ca7b3 sago007 2009-03-06 16:37 1690
        keyname = "DOWN";
89c4a3a6 sago007 2008-08-29 14:32 1691
        break;
89c4a3a6 sago007 2008-08-29 14:32 1692
    case SDLK_RIGHT:
215ca7b3 sago007 2009-03-06 16:37 1693
        keyname = "RIGHT";
89c4a3a6 sago007 2008-08-29 14:32 1694
        break;
89c4a3a6 sago007 2008-08-29 14:32 1695
    case SDLK_LEFT:
215ca7b3 sago007 2009-03-06 16:37 1696
        keyname = "LEFT";
89c4a3a6 sago007 2008-08-29 14:32 1697
        break;
89c4a3a6 sago007 2008-08-29 14:32 1698
    case SDLK_INSERT:
215ca7b3 sago007 2009-03-06 16:37 1699
        keyname = "Insert";
89c4a3a6 sago007 2008-08-29 14:32 1700
        break;
89c4a3a6 sago007 2008-08-29 14:32 1701
    case SDLK_HOME:
215ca7b3 sago007 2009-03-06 16:37 1702
        keyname = "Home";
89c4a3a6 sago007 2008-08-29 14:32 1703
        break;
89c4a3a6 sago007 2008-08-29 14:32 1704
    case SDLK_END:
215ca7b3 sago007 2009-03-06 16:37 1705
        keyname = "End";
89c4a3a6 sago007 2008-08-29 14:32 1706
        break;
89c4a3a6 sago007 2008-08-29 14:32 1707
    case SDLK_PAGEUP:
215ca7b3 sago007 2009-03-06 16:37 1708
        keyname = "PageUp";
89c4a3a6 sago007 2008-08-29 14:32 1709
        break;
89c4a3a6 sago007 2008-08-29 14:32 1710
    case SDLK_PAGEDOWN:
215ca7b3 sago007 2009-03-06 16:37 1711
        keyname = "PageDown";
89c4a3a6 sago007 2008-08-29 14:32 1712
        break;
89c4a3a6 sago007 2008-08-29 14:32 1713
    case SDLK_NUMLOCK:
215ca7b3 sago007 2009-03-06 16:37 1714
        keyname = "NumLock";
89c4a3a6 sago007 2008-08-29 14:32 1715
        break;
89c4a3a6 sago007 2008-08-29 14:32 1716
    case SDLK_CAPSLOCK:
215ca7b3 sago007 2009-03-06 16:37 1717
        keyname = "CapsLock";
89c4a3a6 sago007 2008-08-29 14:32 1718
        break;
89c4a3a6 sago007 2008-08-29 14:32 1719
    case SDLK_SCROLLOCK:
215ca7b3 sago007 2009-03-06 16:37 1720
        keyname = "ScrolLock";
89c4a3a6 sago007 2008-08-29 14:32 1721
        break;
89c4a3a6 sago007 2008-08-29 14:32 1722
    case SDLK_RSHIFT:
215ca7b3 sago007 2009-03-06 16:37 1723
        keyname = "Rshift";
89c4a3a6 sago007 2008-08-29 14:32 1724
        break;
89c4a3a6 sago007 2008-08-29 14:32 1725
    case SDLK_LSHIFT:
215ca7b3 sago007 2009-03-06 16:37 1726
        keyname = "Lshift";
89c4a3a6 sago007 2008-08-29 14:32 1727
        break;
89c4a3a6 sago007 2008-08-29 14:32 1728
    case SDLK_RCTRL:
215ca7b3 sago007 2009-03-06 16:37 1729
        keyname = "Rctrl";
89c4a3a6 sago007 2008-08-29 14:32 1730
        break;
89c4a3a6 sago007 2008-08-29 14:32 1731
    case SDLK_LCTRL:
215ca7b3 sago007 2009-03-06 16:37 1732
        keyname = "Lctrl";
89c4a3a6 sago007 2008-08-29 14:32 1733
        break;
89c4a3a6 sago007 2008-08-29 14:32 1734
    case SDLK_RALT:
215ca7b3 sago007 2009-03-06 16:37 1735
        keyname = "Ralt";
89c4a3a6 sago007 2008-08-29 14:32 1736
        break;
89c4a3a6 sago007 2008-08-29 14:32 1737
    case SDLK_LALT:
215ca7b3 sago007 2009-03-06 16:37 1738
        keyname = "Lalt";
89c4a3a6 sago007 2008-08-29 14:32 1739
        break;
89c4a3a6 sago007 2008-08-29 14:32 1740
    case SDLK_RMETA:
215ca7b3 sago007 2009-03-06 16:37 1741
        keyname = "Rmeta";
89c4a3a6 sago007 2008-08-29 14:32 1742
        break;
89c4a3a6 sago007 2008-08-29 14:32 1743
    case SDLK_LMETA:
215ca7b3 sago007 2009-03-06 16:37 1744
        keyname = "Lmeta";
89c4a3a6 sago007 2008-08-29 14:32 1745
        break;
89c4a3a6 sago007 2008-08-29 14:32 1746
    case SDLK_LSUPER:
215ca7b3 sago007 2009-03-06 16:37 1747
        keyname = "Lwin";
89c4a3a6 sago007 2008-08-29 14:32 1748
        break;
89c4a3a6 sago007 2008-08-29 14:32 1749
    case SDLK_RSUPER:
215ca7b3 sago007 2009-03-06 16:37 1750
        keyname = "Rwin";
89c4a3a6 sago007 2008-08-29 14:32 1751
        break;
89c4a3a6 sago007 2008-08-29 14:32 1752
    case SDLK_MODE:
215ca7b3 sago007 2009-03-06 16:37 1753
        keyname = "Mode";
89c4a3a6 sago007 2008-08-29 14:32 1754
        break;
89c4a3a6 sago007 2008-08-29 14:32 1755
    case SDLK_HELP:
215ca7b3 sago007 2009-03-06 16:37 1756
        keyname = "Help";
89c4a3a6 sago007 2008-08-29 14:32 1757
        break;
89c4a3a6 sago007 2008-08-29 14:32 1758
    default:
215ca7b3 sago007 2009-03-06 16:37 1759
        keyname = "Unknown";
89c4a3a6 sago007 2008-08-29 14:32 1760
        break;
89c4a3a6 sago007 2008-08-29 14:32 1761
    }
89c4a3a6 sago007 2008-08-29 14:32 1762
    if (charToPut != '\0')
215ca7b3 sago007 2009-03-06 16:37 1763
    {
215ca7b3 sago007 2009-03-06 16:37 1764
        keyname.clear();
215ca7b3 sago007 2009-03-06 16:37 1765
        keyname.append(1,charToPut);
215ca7b3 sago007 2009-03-06 16:37 1766
    }
215ca7b3 sago007 2009-03-06 16:37 1767
    return keyname;
89c4a3a6 sago007 2008-08-29 14:32 1768
}
89c4a3a6 sago007 2008-08-29 14:32 1769
89c4a3a6 sago007 2008-08-29 14:32 1770
void MakeBackground(int xsize,int ysize,BlockGame &theGame, BlockGame &theGame2);
89c4a3a6 sago007 2008-08-29 14:32 1771
89c4a3a6 sago007 2008-08-29 14:32 1772
int OpenControlsBox(int x, int y, int player)
89c4a3a6 sago007 2008-08-29 14:32 1773
{
89c4a3a6 sago007 2008-08-29 14:32 1774
    int mousex, mousey;
89c4a3a6 sago007 2008-08-29 14:32 1775
    Uint8 *keys;
89c4a3a6 sago007 2008-08-29 14:32 1776
    bool done =false;
215ca7b3 sago007 2009-03-06 16:37 1777
    string keyname;
27ae0175 sago007 2009-01-30 06:02 1778
    MakeBackground(xsize,ysize);
89c4a3a6 sago007 2008-08-29 14:32 1779
    while (!done)
89c4a3a6 sago007 2008-08-29 14:32 1780
    {
89c4a3a6 sago007 2008-08-29 14:32 1781
        SDL_Delay(10);
89c4a3a6 sago007 2008-08-29 14:32 1782
        DrawIMG(background, screen, 0, 0);
89c4a3a6 sago007 2008-08-29 14:32 1783
        DrawIMG(changeButtonsBack,screen,x,y);
89c4a3a6 sago007 2008-08-29 14:32 1784
        if (player == 0)
89c4a3a6 sago007 2008-08-29 14:32 1785
            SFont_Write(screen,fBlueFont,x+40,y+2,"Player 1 keys");
89c4a3a6 sago007 2008-08-29 14:32 1786
        else
89c4a3a6 sago007 2008-08-29 14:32 1787
            SFont_Write(screen,fBlueFont,x+40,y+2,"Player 2 keys");
89c4a3a6 sago007 2008-08-29 14:32 1788
        SFont_Write(screen,fBlueFont,x+6,y+50,"Up");
89c4a3a6 sago007 2008-08-29 14:32 1789
        keyname = getKeyName(keySettings[player].up);
215ca7b3 sago007 2009-03-06 16:37 1790
        SFont_Write(screen,fBlueFont,x+200,y+50,keyname.c_str());
89c4a3a6 sago007 2008-08-29 14:32 1791
        SFont_Write(screen,fBlueFont,x+6,y+100,"Down");
89c4a3a6 sago007 2008-08-29 14:32 1792
        keyname = getKeyName(keySettings[player].down);
215ca7b3 sago007 2009-03-06 16:37 1793
        SFont_Write(screen,fBlueFont,x+200,y+100,keyname.c_str());
89c4a3a6 sago007 2008-08-29 14:32 1794
        SFont_Write(screen,fBlueFont,x+6,y+150,"Left");
89c4a3a6 sago007 2008-08-29 14:32 1795
        keyname = getKeyName(keySettings[player].left);
215ca7b3 sago007 2009-03-06 16:37 1796
        SFont_Write(screen,fBlueFont,x+200,y+150,keyname.c_str());
89c4a3a6 sago007 2008-08-29 14:32 1797
        SFont_Write(screen,fBlueFont,x+6,y+200,"Right");
89c4a3a6 sago007 2008-08-29 14:32 1798
        keyname = getKeyName(keySettings[player].right);
215ca7b3 sago007 2009-03-06 16:37 1799
        SFont_Write(screen,fBlueFont,x+200,y+200,keyname.c_str());
89c4a3a6 sago007 2008-08-29 14:32 1800
        SFont_Write(screen,fBlueFont,x+6,y+250,"Push");
89c4a3a6 sago007 2008-08-29 14:32 1801
        keyname = getKeyName(keySettings[player].push);
215ca7b3 sago007 2009-03-06 16:37 1802
        SFont_Write(screen,fBlueFont,x+200,y+250,keyname.c_str());
89c4a3a6 sago007 2008-08-29 14:32 1803
        SFont_Write(screen,fBlueFont,x+6,y+300,"Change");
89c4a3a6 sago007 2008-08-29 14:32 1804
        keyname = getKeyName(keySettings[player].change);
215ca7b3 sago007 2009-03-06 16:37 1805
        SFont_Write(screen,fBlueFont,x+200,y+300,keyname.c_str());
89c4a3a6 sago007 2008-08-29 14:32 1806
        //Ask for mouse play
89c4a3a6 sago007 2008-08-29 14:32 1807
        SFont_Write(screen,fBlueFont,x+6,y+350,"Mouse play?");
89c4a3a6 sago007 2008-08-29 14:32 1808
        DrawIMG(iLevelCheckBox,screen,x+220,y+350);
89c4a3a6 sago007 2008-08-29 14:32 1809
        if (((player==0)&&(mouseplay1))||((player==2)&&(mouseplay2)))
89c4a3a6 sago007 2008-08-29 14:32 1810
            DrawIMG(iLevelCheck,screen,x+220,y+350); //iLevelCheck witdh is 42
89c4a3a6 sago007 2008-08-29 14:32 1811
        //Ask for joypad play
89c4a3a6 sago007 2008-08-29 14:32 1812
        SFont_Write(screen,fBlueFont,x+300,y+350,"Joypad?");
89c4a3a6 sago007 2008-08-29 14:32 1813
        DrawIMG(iLevelCheckBox,screen,x+460,y+350);
89c4a3a6 sago007 2008-08-29 14:32 1814
        if (((player==0)&&(joyplay1))||((player==2)&&(joyplay2)))
89c4a3a6 sago007 2008-08-29 14:32 1815
            DrawIMG(iLevelCheck,screen,x+460,y+350); //iLevelCheck witdh is 42
89c4a3a6 sago007 2008-08-29 14:32 1816
        for (int i=1; i<7; i++)
89c4a3a6 sago007 2008-08-29 14:32 1817
            DrawIMG(bChange,screen,x+420,y+50*i);
89c4a3a6 sago007 2008-08-29 14:32 1818
        SDL_Event event;
89c4a3a6 sago007 2008-08-29 14:32 1819
89c4a3a6 sago007 2008-08-29 14:32 1820
        while (SDL_PollEvent(&event))
89c4a3a6 sago007 2008-08-29 14:32 1821
        {
89c4a3a6 sago007 2008-08-29 14:32 1822
            if ( event.type == SDL_QUIT )  {
89c4a3a6 sago007 2008-08-29 14:32 1823
                done = true;
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_ESCAPE)
89c4a3a6 sago007 2008-08-29 14:32 1829
                    done = true;
89c4a3a6 sago007 2008-08-29 14:32 1830
            }
89c4a3a6 sago007 2008-08-29 14:32 1831
        }	//PollEvent
89c4a3a6 sago007 2008-08-29 14:32 1832
89c4a3a6 sago007 2008-08-29 14:32 1833
        keys = SDL_GetKeyState(NULL);
89c4a3a6 sago007 2008-08-29 14:32 1834
89c4a3a6 sago007 2008-08-29 14:32 1835
        SDL_GetMouseState(&mousex,&mousey);
89c4a3a6 sago007 2008-08-29 14:32 1836
89c4a3a6 sago007 2008-08-29 14:32 1837
        // If the mouse button is released, make bMouseUp equal true
89c4a3a6 sago007 2008-08-29 14:32 1838
        if (!SDL_GetMouseState(NULL, NULL)&SDL_BUTTON(1))
89c4a3a6 sago007 2008-08-29 14:32 1839
        {
89c4a3a6 sago007 2008-08-29 14:32 1840
            bMouseUp=true;
89c4a3a6 sago007 2008-08-29 14:32 1841
        }
89c4a3a6 sago007 2008-08-29 14:32 1842
89c4a3a6 sago007 2008-08-29 14:32 1843
        if (SDL_GetMouseState(NULL,NULL)&SDL_BUTTON(1) && bMouseUp)
89c4a3a6 sago007 2008-08-29 14:32 1844
        {
89c4a3a6 sago007 2008-08-29 14:32 1845
            bMouseUp = false;
89c4a3a6 sago007 2008-08-29 14:32 1846
89c4a3a6 sago007 2008-08-29 14:32 1847
            if ((mousex>(420+x)) && (mousex<(540+x)) && (mousey>(50+y)) && (mousey<(90+y)))
89c4a3a6 sago007 2008-08-29 14:32 1848
            {
89c4a3a6 sago007 2008-08-29 14:32 1849
                //up
89c4a3a6 sago007 2008-08-29 14:32 1850
                bool finnish = false;
89c4a3a6 sago007 2008-08-29 14:32 1851
                while (!finnish)
89c4a3a6 sago007 2008-08-29 14:32 1852
                    while ( SDL_PollEvent(&event) )
89c4a3a6 sago007 2008-08-29 14:32 1853
                    {
89c4a3a6 sago007 2008-08-29 14:32 1854
                        if (event.type == SDL_KEYDOWN)
89c4a3a6 sago007 2008-08-29 14:32 1855
                        {
89c4a3a6 sago007 2008-08-29 14:32 1856
                            if (event.key.keysym.sym != SDLK_ESCAPE)
89c4a3a6 sago007 2008-08-29 14:32 1857
                                keySettings[player].up = event.key.keysym.sym;
89c4a3a6 sago007 2008-08-29 14:32 1858
                            finnish = true;
89c4a3a6 sago007 2008-08-29 14:32 1859
                        }
89c4a3a6 sago007 2008-08-29 14:32 1860
                    }
89c4a3a6 sago007 2008-08-29 14:32 1861
            } //up
89c4a3a6 sago007 2008-08-29 14:32 1862
            if ((mousex>(420+x)) && (mousex<(540+x)) && (mousey>(100+y)) && (mousey<(140+y)))
89c4a3a6 sago007 2008-08-29 14:32 1863
            {
89c4a3a6 sago007 2008-08-29 14:32 1864
                //down
89c4a3a6 sago007 2008-08-29 14:32 1865
                bool finnish = false;
89c4a3a6 sago007 2008-08-29 14:32 1866
                while (!finnish)
89c4a3a6 sago007 2008-08-29 14:32 1867
                    while ( SDL_PollEvent(&event) )
89c4a3a6 sago007 2008-08-29 14:32 1868
                    {
89c4a3a6 sago007 2008-08-29 14:32 1869
                        if (event.type == SDL_KEYDOWN)
89c4a3a6 sago007 2008-08-29 14:32 1870
                        {
89c4a3a6 sago007 2008-08-29 14:32 1871
                            if (event.key.keysym.sym != SDLK_ESCAPE)
89c4a3a6 sago007 2008-08-29 14:32 1872
                                keySettings[player].down = event.key.keysym.sym;
89c4a3a6 sago007 2008-08-29 14:32 1873
                            finnish = true;
89c4a3a6 sago007 2008-08-29 14:32 1874
                        }
89c4a3a6 sago007 2008-08-29 14:32 1875
                    }
89c4a3a6 sago007 2008-08-29 14:32 1876
            } //down
89c4a3a6 sago007 2008-08-29 14:32 1877
            if ((mousex>(420+x)) && (mousex<(540+x)) && (mousey>(150+y)) && (mousey<(190+y)))
89c4a3a6 sago007 2008-08-29 14:32 1878
            {
89c4a3a6 sago007 2008-08-29 14:32 1879
                //left
89c4a3a6 sago007 2008-08-29 14:32 1880
                bool finnish = false;
89c4a3a6 sago007 2008-08-29 14:32 1881
                while (!finnish)
89c4a3a6 sago007 2008-08-29 14:32 1882
                    while ( SDL_PollEvent(&event) )
89c4a3a6 sago007 2008-08-29 14:32 1883
                    {
89c4a3a6 sago007 2008-08-29 14:32 1884
                        if (event.type == SDL_KEYDOWN)
89c4a3a6 sago007 2008-08-29 14:32 1885
                        {
89c4a3a6 sago007 2008-08-29 14:32 1886
                            if (event.key.keysym.sym != SDLK_ESCAPE)
89c4a3a6 sago007 2008-08-29 14:32 1887
                                keySettings[player].left = event.key.keysym.sym;
89c4a3a6 sago007 2008-08-29 14:32 1888
                            finnish = true;
89c4a3a6 sago007 2008-08-29 14:32 1889
                        }
89c4a3a6 sago007 2008-08-29 14:32 1890
                    }
89c4a3a6 sago007 2008-08-29 14:32 1891
            } //left
89c4a3a6 sago007 2008-08-29 14:32 1892
            if ((mousex>(420+x)) && (mousex<(540+x)) && (mousey>(200+y)) && (mousey<(240+y)))
89c4a3a6 sago007 2008-08-29 14:32 1893
            {
89c4a3a6 sago007 2008-08-29 14:32 1894
                //right
89c4a3a6 sago007 2008-08-29 14:32 1895
                bool finnish = false;
89c4a3a6 sago007 2008-08-29 14:32 1896
                while (!finnish)
89c4a3a6 sago007 2008-08-29 14:32 1897
                    while ( SDL_PollEvent(&event) )
89c4a3a6 sago007 2008-08-29 14:32 1898
                    {
89c4a3a6 sago007 2008-08-29 14:32 1899
                        if (event.type == SDL_KEYDOWN)
89c4a3a6 sago007 2008-08-29 14:32 1900
                        {
89c4a3a6 sago007 2008-08-29 14:32 1901
                            if (event.key.keysym.sym != SDLK_ESCAPE)
89c4a3a6 sago007 2008-08-29 14:32 1902
                                keySettings[player].right = event.key.keysym.sym;
89c4a3a6 sago007 2008-08-29 14:32 1903
                            finnish = true;
89c4a3a6 sago007 2008-08-29 14:32 1904
                        }
89c4a3a6 sago007 2008-08-29 14:32 1905
                    }
89c4a3a6 sago007 2008-08-29 14:32 1906
            } //right
89c4a3a6 sago007 2008-08-29 14:32 1907
            if ((mousex>(420+x)) && (mousex<(540+x)) && (mousey>(250+y)) && (mousey<(290+y)))
89c4a3a6 sago007 2008-08-29 14:32 1908
            {
89c4a3a6 sago007 2008-08-29 14:32 1909
                //push
89c4a3a6 sago007 2008-08-29 14:32 1910
                bool finnish = false;
89c4a3a6 sago007 2008-08-29 14:32 1911
                while (!finnish)
89c4a3a6 sago007 2008-08-29 14:32 1912
                    while ( SDL_PollEvent(&event) )
89c4a3a6 sago007 2008-08-29 14:32 1913
                    {
89c4a3a6 sago007 2008-08-29 14:32 1914
                        if (event.type == SDL_KEYDOWN)
89c4a3a6 sago007 2008-08-29 14:32 1915
                        {
89c4a3a6 sago007 2008-08-29 14:32 1916
                            if (event.key.keysym.sym != SDLK_ESCAPE)
89c4a3a6 sago007 2008-08-29 14:32 1917
                                keySettings[player].push = event.key.keysym.sym;
89c4a3a6 sago007 2008-08-29 14:32 1918
                            finnish = true;
89c4a3a6 sago007 2008-08-29 14:32 1919
                        }
89c4a3a6 sago007 2008-08-29 14:32 1920
                    }
89c4a3a6 sago007 2008-08-29 14:32 1921
            } //push
89c4a3a6 sago007 2008-08-29 14:32 1922
            if ((mousex>(420+x)) && (mousex<(540+x)) && (mousey>(300+y)) && (mousey<(340+y)))
89c4a3a6 sago007 2008-08-29 14:32 1923
            {
89c4a3a6 sago007 2008-08-29 14:32 1924
                //change
89c4a3a6 sago007 2008-08-29 14:32 1925
                bool finnish = false;
89c4a3a6 sago007 2008-08-29 14:32 1926
                while (!finnish)
89c4a3a6 sago007 2008-08-29 14:32 1927
                    while ( SDL_PollEvent(&event) )
89c4a3a6 sago007 2008-08-29 14:32 1928
                    {
89c4a3a6 sago007 2008-08-29 14:32 1929
                        if (event.type == SDL_KEYDOWN)
89c4a3a6 sago007 2008-08-29 14:32 1930
                        {
89c4a3a6 sago007 2008-08-29 14:32 1931
                            if (event.key.keysym.sym != SDLK_ESCAPE)
89c4a3a6 sago007 2008-08-29 14:32 1932
                                keySettings[player].change = event.key.keysym.sym;
89c4a3a6 sago007 2008-08-29 14:32 1933
                            finnish = 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
            } //change
89c4a3a6 sago007 2008-08-29 14:32 1937
            //mouseplay:
89c4a3a6 sago007 2008-08-29 14:32 1938
            if ((mousex>(220+x)) && (mousex<(262+x)) && (mousey>(350+y)) && (mousey<(392+y)))
89c4a3a6 sago007 2008-08-29 14:32 1939
            {
89c4a3a6 sago007 2008-08-29 14:32 1940
                if (player==0)
89c4a3a6 sago007 2008-08-29 14:32 1941
                {
89c4a3a6 sago007 2008-08-29 14:32 1942
                    mouseplay1 = !mouseplay1;
89c4a3a6 sago007 2008-08-29 14:32 1943
                }
89c4a3a6 sago007 2008-08-29 14:32 1944
                else
89c4a3a6 sago007 2008-08-29 14:32 1945
                {
89c4a3a6 sago007 2008-08-29 14:32 1946
                    mouseplay2 = !mouseplay2;
89c4a3a6 sago007 2008-08-29 14:32 1947
                }
89c4a3a6 sago007 2008-08-29 14:32 1948
            }
89c4a3a6 sago007 2008-08-29 14:32 1949
            //Joyplay:
89c4a3a6 sago007 2008-08-29 14:32 1950
            if ((mousex>(460+x)) && (mousex<(502+x)) && (mousey>(350+y)) && (mousey<(392+y)))
89c4a3a6 sago007 2008-08-29 14:32 1951
            {
89c4a3a6 sago007 2008-08-29 14:32 1952
                if (player==0)
89c4a3a6 sago007 2008-08-29 14:32 1953
                {
89c4a3a6 sago007 2008-08-29 14:32 1954
                    joyplay1 = !joyplay1;
89c4a3a6 sago007 2008-08-29 14:32 1955
                }
89c4a3a6 sago007 2008-08-29 14:32 1956
                else
89c4a3a6 sago007 2008-08-29 14:32 1957
                {
89c4a3a6 sago007 2008-08-29 14:32 1958
                    joyplay2 = !joyplay2;
89c4a3a6 sago007 2008-08-29 14:32 1959
                }
89c4a3a6 sago007 2008-08-29 14:32 1960
            }
89c4a3a6 sago007 2008-08-29 14:32 1961
        }	//get mouse state
89c4a3a6 sago007 2008-08-29 14:32 1962
89c4a3a6 sago007 2008-08-29 14:32 1963
        DrawIMG(mouse,screen,mousex,mousey);
89c4a3a6 sago007 2008-08-29 14:32 1964
        SDL_Flip(screen);
89c4a3a6 sago007 2008-08-29 14:32 1965
    }	//while !done
89c4a3a6 sago007 2008-08-29 14:32 1966
    DrawIMG(background, screen, 0, 0);
89c4a3a6 sago007 2008-08-29 14:32 1967
    return 0;
89c4a3a6 sago007 2008-08-29 14:32 1968
}
89c4a3a6 sago007 2008-08-29 14:32 1969
89c4a3a6 sago007 2008-08-29 14:32 1970
89c4a3a6 sago007 2008-08-29 14:32 1971
//Dialogbox
89c4a3a6 sago007 2008-08-29 14:32 1972
bool OpenDialogbox(int x, int y, char *name)
89c4a3a6 sago007 2008-08-29 14:32 1973
{
89c4a3a6 sago007 2008-08-29 14:32 1974
    bool done = false;     //We are done!
89c4a3a6 sago007 2008-08-29 14:32 1975
    bool accept = false;   //New name is accepted! (not Cancelled)
89c4a3a6 sago007 2008-08-29 14:32 1976
    bool repeating = false; //The key is being held (BACKSPACE)
89c4a3a6 sago007 2008-08-29 14:32 1977
    const int repeatDelay = 200;    //Repeating
89c4a3a6 sago007 2008-08-29 14:32 1978
    unsigned long time = 0;
89c4a3a6 sago007 2008-08-29 14:32 1979
    ReadKeyboard rk = ReadKeyboard(name);
89c4a3a6 sago007 2008-08-29 14:32 1980
    Uint8* keys;
89c4a3a6 sago007 2008-08-29 14:32 1981
    string strHolder;
27ae0175 sago007 2009-01-30 06:02 1982
    MakeBackground(xsize,ysize);
89c4a3a6 sago007 2008-08-29 14:32 1983
    DrawIMG(background,screen,0,0);
89c4a3a6 sago007 2008-08-29 14:32 1984
    while (!done)
89c4a3a6 sago007 2008-08-29 14:32 1985
    {
89c4a3a6 sago007 2008-08-29 14:32 1986
        DrawIMG(dialogBox,screen,x,y);
89c4a3a6 sago007 2008-08-29 14:32 1987
        SFont_Write(screen,fBlueFont,x+40,y+72,rk.GetString());
89c4a3a6 sago007 2008-08-29 14:32 1988
        strHolder = rk.GetString();
89c4a3a6 sago007 2008-08-29 14:32 1989
        strHolder.erase((int)rk.CharsBeforeCursor());
89c4a3a6 sago007 2008-08-29 14:32 1990
89c4a3a6 sago007 2008-08-29 14:32 1991
        if (((SDL_GetTicks()/600)%2)==1)
89c4a3a6 sago007 2008-08-29 14:32 1992
            SFont_Write(screen,fBlueFont,x+40+SFont_TextWidth(fBlueFont,strHolder.c_str()),y+69,"|");
89c4a3a6 sago007 2008-08-29 14:32 1993
89c4a3a6 sago007 2008-08-29 14:32 1994
        SDL_Event event;
89c4a3a6 sago007 2008-08-29 14:32 1995
89c4a3a6 sago007 2008-08-29 14:32 1996
        while ( SDL_PollEvent(&event) )
89c4a3a6 sago007 2008-08-29 14:32 1997
        {
89c4a3a6 sago007 2008-08-29 14:32 1998
            if ( event.type == SDL_QUIT )  {
89c4a3a6 sago007 2008-08-29 14:32 1999
                done = true;
89c4a3a6 sago007 2008-08-29 14:32 2000
                accept = false;
89c4a3a6 sago007 2008-08-29 14:32 2001
            }
89c4a3a6 sago007 2008-08-29 14:32 2002
89c4a3a6 sago007 2008-08-29 14:32 2003
            if ( event.type == SDL_KEYDOWN )
89c4a3a6 sago007 2008-08-29 14:32 2004
            {
89c4a3a6 sago007 2008-08-29 14:32 2005
                if ( (event.key.keysym.sym == SDLK_RETURN)||(event.key.keysym.sym == SDLK_KP_ENTER) ) {
89c4a3a6 sago007 2008-08-29 14:32 2006
                    done = true;
89c4a3a6 sago007 2008-08-29 14:32 2007
                    accept = true;
89c4a3a6 sago007 2008-08-29 14:32 2008
                }
89c4a3a6 sago007 2008-08-29 14:32 2009
                else
89c4a3a6 sago007 2008-08-29 14:32 2010
                    if ( (event.key.keysym.sym == SDLK_ESCAPE) ) {
89c4a3a6 sago007 2008-08-29 14:32 2011
                        done = true;
89c4a3a6 sago007 2008-08-29 14:32 2012
                        accept = false;
89c4a3a6 sago007 2008-08-29 14:32 2013
                    }
89c4a3a6 sago007 2008-08-29 14:32 2014
                    else if (!(event.key.keysym.sym == SDLK_BACKSPACE)){
89c4a3a6 sago007 2008-08-29 14:32 2015
                        if ((rk.ReadKey(event.key.keysym.sym))&&(SoundEnabled)&&(!NoSound))Mix_PlayChannel(1,typingChunk,0);
89c4a3a6 sago007 2008-08-29 14:32 2016
                    }
89c4a3a6 sago007 2008-08-29 14:32 2017
                    else if ((event.key.keysym.sym == SDLK_BACKSPACE)&&(!repeating)){
89c4a3a6 sago007 2008-08-29 14:32 2018
                        if ((rk.ReadKey(event.key.keysym.sym))&&(SoundEnabled)&&(!NoSound))Mix_PlayChannel(1,typingChunk,0);
89c4a3a6 sago007 2008-08-29 14:32 2019
                        repeating = true;
89c4a3a6 sago007 2008-08-29 14:32 2020
                        time=SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 2021
                    }
89c4a3a6 sago007 2008-08-29 14:32 2022
            }
89c4a3a6 sago007 2008-08-29 14:32 2023
89c4a3a6 sago007 2008-08-29 14:32 2024
        }	//while(event)
89c4a3a6 sago007 2008-08-29 14:32 2025
89c4a3a6 sago007 2008-08-29 14:32 2026
        if (SDL_GetTicks()>(time+repeatDelay))
89c4a3a6 sago007 2008-08-29 14:32 2027
        {
89c4a3a6 sago007 2008-08-29 14:32 2028
            time = SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 2029
            keys = SDL_GetKeyState(NULL);
89c4a3a6 sago007 2008-08-29 14:32 2030
            if ( (keys[SDLK_BACKSPACE])&&(repeating) )
89c4a3a6 sago007 2008-08-29 14:32 2031
            {
89c4a3a6 sago007 2008-08-29 14:32 2032
                if ((rk.ReadKey(SDLK_BACKSPACE))&&(SoundEnabled)&&(!NoSound))Mix_PlayChannel(1,typingChunk,0);
89c4a3a6 sago007 2008-08-29 14:32 2033
            }
89c4a3a6 sago007 2008-08-29 14:32 2034
            else
89c4a3a6 sago007 2008-08-29 14:32 2035
                repeating = false;
89c4a3a6 sago007 2008-08-29 14:32 2036
        }
89c4a3a6 sago007 2008-08-29 14:32 2037
89c4a3a6 sago007 2008-08-29 14:32 2038
        SDL_Flip(screen); //Update screen
89c4a3a6 sago007 2008-08-29 14:32 2039
    }	//while(!done)
89c4a3a6 sago007 2008-08-29 14:32 2040
    strcpy(name,rk.GetString());
89c4a3a6 sago007 2008-08-29 14:32 2041
    bScreenLocked = false;
89c4a3a6 sago007 2008-08-29 14:32 2042
    showDialog = false;
89c4a3a6 sago007 2008-08-29 14:32 2043
    return accept;
89c4a3a6 sago007 2008-08-29 14:32 2044
}
89c4a3a6 sago007 2008-08-29 14:32 2045
47529580 sago007 2008-12-09 02:34 2046
//Draws the highscores
47529580 sago007 2008-12-09 02:34 2047
void DrawHighscores(int x, int y, bool endless)
47529580 sago007 2008-12-09 02:34 2048
{
27ae0175 sago007 2009-01-30 06:02 2049
    MakeBackground(xsize,ysize);
47529580 sago007 2008-12-09 02:34 2050
    DrawIMG(background,screen,0,0);
47529580 sago007 2008-12-09 02:34 2051
    if (endless) SFont_Write(screen,fBlueFont,x+100,y+100,"Endless:");
47529580 sago007 2008-12-09 02:34 2052
    else SFont_Write(screen,fBlueFont,x+100,y+100,"Time Trial:");
47529580 sago007 2008-12-09 02:34 2053
    for (int i =0;i<10;i++)
47529580 sago007 2008-12-09 02:34 2054
    {
47529580 sago007 2008-12-09 02:34 2055
        char playerScore[32];
47529580 sago007 2008-12-09 02:34 2056
        char playerName[32];
47529580 sago007 2008-12-09 02:34 2057
        if (endless)
47529580 sago007 2008-12-09 02:34 2058
        {
47529580 sago007 2008-12-09 02:34 2059
            sprintf(playerScore, "%i", theTopScoresEndless.getScoreNumber(i));
47529580 sago007 2008-12-09 02:34 2060
        }
47529580 sago007 2008-12-09 02:34 2061
        else
47529580 sago007 2008-12-09 02:34 2062
        {
47529580 sago007 2008-12-09 02:34 2063
            sprintf(playerScore, "%i", theTopScoresTimeTrial.getScoreNumber(i));
47529580 sago007 2008-12-09 02:34 2064
        }
47529580 sago007 2008-12-09 02:34 2065
        if (endless)
47529580 sago007 2008-12-09 02:34 2066
        {
47529580 sago007 2008-12-09 02:34 2067
            strcpy(playerName,theTopScoresEndless.getScoreName(i));
47529580 sago007 2008-12-09 02:34 2068
        }
47529580 sago007 2008-12-09 02:34 2069
        else
47529580 sago007 2008-12-09 02:34 2070
        {
47529580 sago007 2008-12-09 02:34 2071
            strcpy(playerName,theTopScoresTimeTrial.getScoreName(i));
47529580 sago007 2008-12-09 02:34 2072
        }
47529580 sago007 2008-12-09 02:34 2073
        SFont_Write(screen,fBlueFont,x+420,y+150+i*35,playerScore);
47529580 sago007 2008-12-09 02:34 2074
        SFont_Write(screen,fBlueFont,x+60,y+150+i*35,playerName);
47529580 sago007 2008-12-09 02:34 2075
    }
47529580 sago007 2008-12-09 02:34 2076
}
47529580 sago007 2008-12-09 02:34 2077
47529580 sago007 2008-12-09 02:34 2078
void DrawStats()
81d9c25d sago007 2008-11-24 09:50 2079
{
27ae0175 sago007 2009-01-30 06:02 2080
    MakeBackground(xsize,ysize);
81d9c25d sago007 2008-11-24 09:50 2081
    DrawIMG(background,screen,0,0);
81d9c25d sago007 2008-11-24 09:50 2082
    int y = 5;
81d9c25d sago007 2008-11-24 09:50 2083
    const int y_spacing = 30;
81d9c25d sago007 2008-11-24 09:50 2084
    SFont_Write(screen,fBlueFont,10,y,"Stats");
81d9c25d sago007 2008-11-24 09:50 2085
    y+=y_spacing*2;
81d9c25d sago007 2008-11-24 09:50 2086
    SFont_Write(screen,fBlueFont,10,y,"Chains");
81d9c25d sago007 2008-11-24 09:50 2087
    for(int i=2;i<13;i++)
81d9c25d sago007 2008-11-24 09:50 2088
    {
81d9c25d sago007 2008-11-24 09:50 2089
        y+=y_spacing;
81d9c25d sago007 2008-11-24 09:50 2090
        SFont_Write(screen,fBlueFont,10,y,(itoa(i)+"X").c_str());
81d9c25d sago007 2008-11-24 09:50 2091
        string numberAsString = itoa(Stats::getInstance()->getNumberOf("chainX"+itoa(i)));
81d9c25d sago007 2008-11-24 09:50 2092
        SFont_Write(screen,fBlueFont,300,y,numberAsString.c_str());
81d9c25d sago007 2008-11-24 09:50 2093
    }
81d9c25d sago007 2008-11-24 09:50 2094
    y+=y_spacing*2;
81d9c25d sago007 2008-11-24 09:50 2095
    SFont_Write(screen,fBlueFont,10,y,"Lines Pushed: ");
81d9c25d sago007 2008-11-24 09:50 2096
    string numberAsString = itoa(Stats::getInstance()->getNumberOf("linesPushed"));
81d9c25d sago007 2008-11-24 09:50 2097
    SFont_Write(screen,fBlueFont,300,y,numberAsString.c_str());
47529580 sago007 2008-12-09 02:34 2098
81d9c25d sago007 2008-11-24 09:50 2099
    y+=y_spacing;
81d9c25d sago007 2008-11-24 09:50 2100
    SFont_Write(screen,fBlueFont,10,y,"Puzzles solved: ");
81d9c25d sago007 2008-11-24 09:50 2101
    numberAsString = itoa(Stats::getInstance()->getNumberOf("puzzlesSolved"));
81d9c25d sago007 2008-11-24 09:50 2102
    SFont_Write(screen,fBlueFont,300,y,numberAsString.c_str());
47529580 sago007 2008-12-09 02:34 2103
d07b805e sago007 2009-01-27 13:15 2104
    y+=y_spacing*2;
d07b805e sago007 2009-01-27 13:15 2105
    SFont_Write(screen,fBlueFont,10,y,"Run time: ");
cd12e0fe sago007 2009-01-29 08:47 2106
    commonTime ct = TimeHandler::peekTime("totalTime",TimeHandler::ms2ct(SDL_GetTicks()));
d07b805e sago007 2009-01-27 13:15 2107
    y+=y_spacing;
d07b805e sago007 2009-01-27 13:15 2108
    SFont_Write(screen,fBlueFont,10,y,((string)("Days: "+itoa(ct.days))).c_str());
d07b805e sago007 2009-01-27 13:15 2109
    y+=y_spacing;
d07b805e sago007 2009-01-27 13:15 2110
    SFont_Write(screen,fBlueFont,10,y,((string)("Hours: "+itoa(ct.hours))).c_str());
d07b805e sago007 2009-01-27 13:15 2111
    y+=y_spacing;
d07b805e sago007 2009-01-27 13:15 2112
    SFont_Write(screen,fBlueFont,10,y,((string)("Minutes: "+itoa(ct.minutes))).c_str());
d07b805e sago007 2009-01-27 13:15 2113
    y+=y_spacing;
d07b805e sago007 2009-01-27 13:15 2114
    SFont_Write(screen,fBlueFont,10,y,((string)("Seconds: "+itoa(ct.seconds))).c_str());
d07b805e sago007 2009-01-27 13:15 2115
cd12e0fe sago007 2009-01-29 08:47 2116
    y-=y_spacing*4; //Four rows back
27ae0175 sago007 2009-01-30 06:02 2117
    const int x_offset3 = xsize/3+10; //Ofset for three rows
cd12e0fe sago007 2009-01-29 08:47 2118
    SFont_Write(screen,fBlueFont,x_offset3,y,"Play time: ");
cd12e0fe sago007 2009-01-29 08:47 2119
    ct = TimeHandler::getTime("playTime");
cd12e0fe sago007 2009-01-29 08:47 2120
    y+=y_spacing;
cd12e0fe sago007 2009-01-29 08:47 2121
    SFont_Write(screen,fBlueFont,x_offset3,y,((string)("Days: "+itoa(ct.days))).c_str());
cd12e0fe sago007 2009-01-29 08:47 2122
    y+=y_spacing;
cd12e0fe sago007 2009-01-29 08:47 2123
    SFont_Write(screen,fBlueFont,x_offset3,y,((string)("Hours: "+itoa(ct.hours))).c_str());
cd12e0fe sago007 2009-01-29 08:47 2124
    y+=y_spacing;
cd12e0fe sago007 2009-01-29 08:47 2125
    SFont_Write(screen,fBlueFont,x_offset3,y,((string)("Minutes: "+itoa(ct.minutes))).c_str());
cd12e0fe sago007 2009-01-29 08:47 2126
    y+=y_spacing;
cd12e0fe sago007 2009-01-29 08:47 2127
    SFont_Write(screen,fBlueFont,x_offset3,y,((string)("Seconds: "+itoa(ct.seconds))).c_str());
cd12e0fe sago007 2009-01-29 08:47 2128
27ae0175 sago007 2009-01-30 06:02 2129
    const int x_offset = xsize/2+10;
81d9c25d sago007 2008-11-24 09:50 2130
    y = 5+y_spacing*2;
81d9c25d sago007 2008-11-24 09:50 2131
    SFont_Write(screen,fBlueFont,x_offset,y,"VS CPU (win/loss)");
81d9c25d sago007 2008-11-24 09:50 2132
    for(int i=0;i<7;i++)
81d9c25d sago007 2008-11-24 09:50 2133
    {
81d9c25d sago007 2008-11-24 09:50 2134
        y += y_spacing;
81d9c25d sago007 2008-11-24 09:50 2135
        SFont_Write(screen,fBlueFont,x_offset,y,("AI "+itoa(i+1)).c_str());
81d9c25d sago007 2008-11-24 09:50 2136
        numberAsString = itoa(Stats::getInstance()->getNumberOf("defeatedAI"+itoa(i)));
81d9c25d sago007 2008-11-24 09:50 2137
        string numberAsString2 = itoa(Stats::getInstance()->getNumberOf("defeatedByAI"+itoa(i)));
81d9c25d sago007 2008-11-24 09:50 2138
        string toPrint = numberAsString + "/" + numberAsString2;
81d9c25d sago007 2008-11-24 09:50 2139
        SFont_Write(screen,fBlueFont,x_offset+230,y,toPrint.c_str());
81d9c25d sago007 2008-11-24 09:50 2140
    }
47529580 sago007 2008-12-09 02:34 2141
}
47529580 sago007 2008-12-09 02:34 2142
47529580 sago007 2008-12-09 02:34 2143
void OpenScoresDisplay()
47529580 sago007 2008-12-09 02:34 2144
{
9050a50a sago007 2008-12-09 13:35 2145
    int mousex,mousey;
47529580 sago007 2008-12-09 02:34 2146
    bool done = false;     //We are done!
47529580 sago007 2008-12-09 02:34 2147
    int page = 0;
47529580 sago007 2008-12-09 02:34 2148
    const int numberOfPages = 3;
7ca669ac sago007 2008-12-09 16:30 2149
    //button coodinates:
7ca669ac sago007 2008-12-09 16:30 2150
    const int scoreX = buttonXsize*2;
7ca669ac sago007 2008-12-09 16:30 2151
    const int scoreY = 0;
7ca669ac sago007 2008-12-09 16:30 2152
    const int backX = 20;
7ca669ac sago007 2008-12-09 16:30 2153
    const int backY = ysize-buttonYsize-20;
7ca669ac sago007 2008-12-09 16:30 2154
    const int nextX = xsize-buttonXsize-20;
7ca669ac sago007 2008-12-09 16:30 2155
    const int nextY = backY;
81d9c25d sago007 2008-11-24 09:50 2156
    while (!done)
81d9c25d sago007 2008-11-24 09:50 2157
    {
47529580 sago007 2008-12-09 02:34 2158
        switch(page)
47529580 sago007 2008-12-09 02:34 2159
        {
47529580 sago007 2008-12-09 02:34 2160
            case 0:
47529580 sago007 2008-12-09 02:34 2161
                //Highscores, endless
47529580 sago007 2008-12-09 02:34 2162
                DrawHighscores(100,100,true);
47529580 sago007 2008-12-09 02:34 2163
                break;
47529580 sago007 2008-12-09 02:34 2164
            case 1:
47529580 sago007 2008-12-09 02:34 2165
                //Highscores, Time Trial
47529580 sago007 2008-12-09 02:34 2166
                DrawHighscores(100,100,false);
47529580 sago007 2008-12-09 02:34 2167
                break;
47529580 sago007 2008-12-09 02:34 2168
            case 2:
47529580 sago007 2008-12-09 02:34 2169
            default:
47529580 sago007 2008-12-09 02:34 2170
                DrawStats();
47529580 sago007 2008-12-09 02:34 2171
        };
47529580 sago007 2008-12-09 02:34 2172
7ca669ac sago007 2008-12-09 16:30 2173
        //Draw buttons:
7ca669ac sago007 2008-12-09 16:30 2174
        DrawIMG(bHighScore,screen,scoreX,scoreY);
7ca669ac sago007 2008-12-09 16:30 2175
        DrawIMG(bBack,screen,backX,backY);
7ca669ac sago007 2008-12-09 16:30 2176
        DrawIMG(bNext,screen,nextX,nextY);
7ca669ac sago007 2008-12-09 16:30 2177
7ca669ac sago007 2008-12-09 16:30 2178
        //Draw page number
7ca669ac sago007 2008-12-09 16:30 2179
        string pageXofY = ((string)"Page ")+itoa(page+1)+((string)" of ")+itoa(numberOfPages);
7ca669ac sago007 2008-12-09 16:30 2180
        SFont_Write(screen,fBlueFont,xsize/2-SFont_TextWidth(fBlueFont,pageXofY.c_str())/2,ysize-60,pageXofY.c_str());
9050a50a sago007 2008-12-09 13:35 2181
        
81d9c25d sago007 2008-11-24 09:50 2182
        SDL_Delay(10);
81d9c25d sago007 2008-11-24 09:50 2183
        SDL_Event event;
9050a50a sago007 2008-12-09 13:35 2184
9050a50a sago007 2008-12-09 13:35 2185
        SDL_GetMouseState(&mousex,&mousey);
81d9c25d sago007 2008-11-24 09:50 2186
        
81d9c25d sago007 2008-11-24 09:50 2187
        while ( SDL_PollEvent(&event) )
81d9c25d sago007 2008-11-24 09:50 2188
        {
9050a50a sago007 2008-12-09 13:35 2189
9050a50a sago007 2008-12-09 13:35 2190
81d9c25d sago007 2008-11-24 09:50 2191
            if ( event.type == SDL_QUIT )  {
81d9c25d sago007 2008-11-24 09:50 2192
                done = true;
81d9c25d sago007 2008-11-24 09:50 2193
            }
81d9c25d sago007 2008-11-24 09:50 2194
81d9c25d sago007 2008-11-24 09:50 2195
            if ( event.type == SDL_KEYDOWN )
81d9c25d sago007 2008-11-24 09:50 2196
            {
47529580 sago007 2008-12-09 02:34 2197
                if( (event.key.keysym.sym == SDLK_RIGHT))
47529580 sago007 2008-12-09 02:34 2198
                {
47529580 sago007 2008-12-09 02:34 2199
                    page++;
47529580 sago007 2008-12-09 02:34 2200
                    if(page>=numberOfPages)
47529580 sago007 2008-12-09 02:34 2201
                        page = 0;
47529580 sago007 2008-12-09 02:34 2202
                }
7ca669ac sago007 2008-12-09 16:30 2203
                else
47529580 sago007 2008-12-09 02:34 2204
                if( (event.key.keysym.sym == SDLK_LEFT))
47529580 sago007 2008-12-09 02:34 2205
                {
47529580 sago007 2008-12-09 02:34 2206
                    page--;
47529580 sago007 2008-12-09 02:34 2207
                    if(page<0)
47529580 sago007 2008-12-09 02:34 2208
                        page = numberOfPages-1;
47529580 sago007 2008-12-09 02:34 2209
                }
7ca669ac sago007 2008-12-09 16:30 2210
                else
7ca669ac sago007 2008-12-09 16:30 2211
                    done = true;
fcd5a134 sago007 2008-12-19 01:11 2212
                
fcd5a134 sago007 2008-12-19 01:11 2213
                if ( event.key.keysym.sym == SDLK_F9 ) {
fcd5a134 sago007 2008-12-19 01:11 2214
                    writeScreenShot();
fcd5a134 sago007 2008-12-19 01:11 2215
                }
47529580 sago007 2008-12-09 02:34 2216
81d9c25d sago007 2008-11-24 09:50 2217
                if ( (event.key.keysym.sym == SDLK_RETURN)||(event.key.keysym.sym == SDLK_KP_ENTER) ) {
81d9c25d sago007 2008-11-24 09:50 2218
                    done = true;
81d9c25d sago007 2008-11-24 09:50 2219
                }
81d9c25d sago007 2008-11-24 09:50 2220
                else
81d9c25d sago007 2008-11-24 09:50 2221
                    if ( (event.key.keysym.sym == SDLK_ESCAPE) ) {
81d9c25d sago007 2008-11-24 09:50 2222
                        done = true;
81d9c25d sago007 2008-11-24 09:50 2223
                    }
81d9c25d sago007 2008-11-24 09:50 2224
            }
81d9c25d sago007 2008-11-24 09:50 2225
81d9c25d sago007 2008-11-24 09:50 2226
        }	//while(event)
7ca669ac sago007 2008-12-09 16:30 2227
7ca669ac sago007 2008-12-09 16:30 2228
        // If the mouse button is released, make bMouseUp equal true
7ca669ac sago007 2008-12-09 16:30 2229
        if (!SDL_GetMouseState(NULL, NULL)&SDL_BUTTON(1))
7ca669ac sago007 2008-12-09 16:30 2230
        {
7ca669ac sago007 2008-12-09 16:30 2231
            bMouseUp=true;
7ca669ac sago007 2008-12-09 16:30 2232
        }
7ca669ac sago007 2008-12-09 16:30 2233
7ca669ac sago007 2008-12-09 16:30 2234
        if (SDL_GetMouseState(NULL,NULL)&SDL_BUTTON(1) && bMouseUp)
7ca669ac sago007 2008-12-09 16:30 2235
        {
7ca669ac sago007 2008-12-09 16:30 2236
            bMouseUp = false;
7ca669ac sago007 2008-12-09 16:30 2237
7ca669ac sago007 2008-12-09 16:30 2238
            //The Score button:
7ca669ac sago007 2008-12-09 16:30 2239
            if((mousex>scoreX) && (mousex<scoreX+buttonXsize) && (mousey>scoreY) && (mousey<scoreY+buttonYsize))
7ca669ac sago007 2008-12-09 16:30 2240
                done =true;
7ca669ac sago007 2008-12-09 16:30 2241
7ca669ac sago007 2008-12-09 16:30 2242
            //The back button:
7ca669ac sago007 2008-12-09 16:30 2243
            if((mousex>backX) && (mousex<backX+buttonXsize) && (mousey>backY) && (mousey<backY+buttonYsize))
7ca669ac sago007 2008-12-09 16:30 2244
            {
7ca669ac sago007 2008-12-09 16:30 2245
                page--;
7ca669ac sago007 2008-12-09 16:30 2246
                if(page<0)
7ca669ac sago007 2008-12-09 16:30 2247
                    page = numberOfPages-1;
7ca669ac sago007 2008-12-09 16:30 2248
            }
7ca669ac sago007 2008-12-09 16:30 2249
7ca669ac sago007 2008-12-09 16:30 2250
            //The next button:
7ca669ac sago007 2008-12-09 16:30 2251
            if((mousex>nextX) && (mousex<nextX+buttonXsize) && (mousey>nextY) && (mousey<nextY+buttonYsize))
7ca669ac sago007 2008-12-09 16:30 2252
            {
7ca669ac sago007 2008-12-09 16:30 2253
                page++;
7ca669ac sago007 2008-12-09 16:30 2254
                if(page>=numberOfPages)
7ca669ac sago007 2008-12-09 16:30 2255
                    page = 0;
7ca669ac sago007 2008-12-09 16:30 2256
            }
7ca669ac sago007 2008-12-09 16:30 2257
        }
7ca669ac sago007 2008-12-09 16:30 2258
9050a50a sago007 2008-12-09 13:35 2259
        DrawIMG(mouse,screen,mousex,mousey);
9050a50a sago007 2008-12-09 13:35 2260
        SDL_Flip(screen); //Update screen
81d9c25d sago007 2008-11-24 09:50 2261
    }
81d9c25d sago007 2008-11-24 09:50 2262
}
81d9c25d sago007 2008-11-24 09:50 2263
89c4a3a6 sago007 2008-08-29 14:32 2264
89c4a3a6 sago007 2008-08-29 14:32 2265
//Open a puzzle file
89c4a3a6 sago007 2008-08-29 14:32 2266
bool OpenFileDialogbox(int x, int y, char *name)
89c4a3a6 sago007 2008-08-29 14:32 2267
{
89c4a3a6 sago007 2008-08-29 14:32 2268
    bool done = false;	//We are done!
89c4a3a6 sago007 2008-08-29 14:32 2269
    int mousex, mousey;
89c4a3a6 sago007 2008-08-29 14:32 2270
    ListFiles lf = ListFiles();
89c4a3a6 sago007 2008-08-29 14:32 2271
    string folder = (string)SHAREDIR+(string)"/res";
89c4a3a6 sago007 2008-08-29 14:32 2272
    cout << "Looking in " << folder << endl;
89c4a3a6 sago007 2008-08-29 14:32 2273
    lf.setDirectory(folder.c_str());
89c4a3a6 sago007 2008-08-29 14:32 2274
#ifdef __unix__
89c4a3a6 sago007 2008-08-29 14:32 2275
    string homeFolder = (string)getenv("HOME")+(string)"/.gamesaves/blockattack/puzzles";
89c4a3a6 sago007 2008-08-29 14:32 2276
    lf.setDirectory2(homeFolder.c_str());
89c4a3a6 sago007 2008-08-29 14:32 2277
#endif
89c4a3a6 sago007 2008-08-29 14:32 2278
    Uint8* keys;
89c4a3a6 sago007 2008-08-29 14:32 2279
    string strHolder;
27ae0175 sago007 2009-01-30 06:02 2280
    MakeBackground(xsize,ysize);
89c4a3a6 sago007 2008-08-29 14:32 2281
    DrawIMG(background,screen,0,0);
89c4a3a6 sago007 2008-08-29 14:32 2282
    DrawIMG(bForward,background,x+460,y+420);
89c4a3a6 sago007 2008-08-29 14:32 2283
    DrawIMG(bBack,background,x+20,y+420);
89c4a3a6 sago007 2008-08-29 14:32 2284
    while (!done)
89c4a3a6 sago007 2008-08-29 14:32 2285
    {
89c4a3a6 sago007 2008-08-29 14:32 2286
        DrawIMG(background,screen,0,0);
89c4a3a6 sago007 2008-08-29 14:32 2287
        const int nrOfFiles = 10;
89c4a3a6 sago007 2008-08-29 14:32 2288
        DrawIMG(changeButtonsBack,screen,x,y);
89c4a3a6 sago007 2008-08-29 14:32 2289
        for (int i=0;i<nrOfFiles;i++)
89c4a3a6 sago007 2008-08-29 14:32 2290
        {
89c4a3a6 sago007 2008-08-29 14:32 2291
            SFont_Write(screen,fBlueFont,x+10,y+10+36*i,lf.getFileName(i).c_str());
89c4a3a6 sago007 2008-08-29 14:32 2292
        }
89c4a3a6 sago007 2008-08-29 14:32 2293
89c4a3a6 sago007 2008-08-29 14:32 2294
        SDL_Event event;
89c4a3a6 sago007 2008-08-29 14:32 2295
89c4a3a6 sago007 2008-08-29 14:32 2296
        while ( SDL_PollEvent(&event) )
89c4a3a6 sago007 2008-08-29 14:32 2297
        {
89c4a3a6 sago007 2008-08-29 14:32 2298
            if ( event.type == SDL_QUIT )  {
89c4a3a6 sago007 2008-08-29 14:32 2299
                done = true;
89c4a3a6 sago007 2008-08-29 14:32 2300
            }
89c4a3a6 sago007 2008-08-29 14:32 2301
89c4a3a6 sago007 2008-08-29 14:32 2302
            if ( event.type == SDL_KEYDOWN )
89c4a3a6 sago007 2008-08-29 14:32 2303
            {
89c4a3a6 sago007 2008-08-29 14:32 2304
                if ( (event.key.keysym.sym == SDLK_ESCAPE) ) {
89c4a3a6 sago007 2008-08-29 14:32 2305
                    done = true;
89c4a3a6 sago007 2008-08-29 14:32 2306
                }
89c4a3a6 sago007 2008-08-29 14:32 2307
89c4a3a6 sago007 2008-08-29 14:32 2308
                if ( (event.key.keysym.sym == SDLK_RIGHT) ) {
89c4a3a6 sago007 2008-08-29 14:32 2309
                    lf.forward();
89c4a3a6 sago007 2008-08-29 14:32 2310
                }
89c4a3a6 sago007 2008-08-29 14:32 2311
89c4a3a6 sago007 2008-08-29 14:32 2312
                if ( (event.key.keysym.sym == SDLK_LEFT) ) {
89c4a3a6 sago007 2008-08-29 14:32 2313
                    lf.back();
89c4a3a6 sago007 2008-08-29 14:32 2314
                }
89c4a3a6 sago007 2008-08-29 14:32 2315
            }
89c4a3a6 sago007 2008-08-29 14:32 2316
89c4a3a6 sago007 2008-08-29 14:32 2317
        } //while(event)
89c4a3a6 sago007 2008-08-29 14:32 2318
89c4a3a6 sago007 2008-08-29 14:32 2319
        SDL_GetMouseState(&mousex,&mousey);
89c4a3a6 sago007 2008-08-29 14:32 2320
89c4a3a6 sago007 2008-08-29 14:32 2321
        // If the mouse button is released, make bMouseUp equal true
89c4a3a6 sago007 2008-08-29 14:32 2322
        if (!SDL_GetMouseState(NULL, NULL)&SDL_BUTTON(1))
89c4a3a6 sago007 2008-08-29 14:32 2323
        {
89c4a3a6 sago007 2008-08-29 14:32 2324
            bMouseUp=true;
89c4a3a6 sago007 2008-08-29 14:32 2325
        }
89c4a3a6 sago007 2008-08-29 14:32 2326
89c4a3a6 sago007 2008-08-29 14:32 2327
        if (SDL_GetMouseState(NULL,NULL)&SDL_BUTTON(1) && bMouseUp)
89c4a3a6 sago007 2008-08-29 14:32 2328
        {
89c4a3a6 sago007 2008-08-29 14:32 2329
            bMouseUp = false;
89c4a3a6 sago007 2008-08-29 14:32 2330
89c4a3a6 sago007 2008-08-29 14:32 2331
            //The Forward Button:
9050a50a sago007 2008-12-09 13:35 2332
            if ( (mousex>x+460) && (mousex<x+460+buttonXsize) && (mousey>y+420) && (mousey<y+420+40) )
89c4a3a6 sago007 2008-08-29 14:32 2333
            {
89c4a3a6 sago007 2008-08-29 14:32 2334
                lf.forward();
89c4a3a6 sago007 2008-08-29 14:32 2335
            }
89c4a3a6 sago007 2008-08-29 14:32 2336
89c4a3a6 sago007 2008-08-29 14:32 2337
            //The back button:
9050a50a sago007 2008-12-09 13:35 2338
            if ( (mousex>x+20) && (mousex<x+20+buttonXsize) && (mousey>y+420) && (mousey<y+420+40) )
89c4a3a6 sago007 2008-08-29 14:32 2339
            {
89c4a3a6 sago007 2008-08-29 14:32 2340
                lf.back();
89c4a3a6 sago007 2008-08-29 14:32 2341
            }
89c4a3a6 sago007 2008-08-29 14:32 2342
89c4a3a6 sago007 2008-08-29 14:32 2343
            for (int i=0;i<10;i++)
89c4a3a6 sago007 2008-08-29 14:32 2344
            {
89c4a3a6 sago007 2008-08-29 14:32 2345
                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 2346
                {
89c4a3a6 sago007 2008-08-29 14:32 2347
                    if (lf.fileExists(i))
89c4a3a6 sago007 2008-08-29 14:32 2348
                    {
89c4a3a6 sago007 2008-08-29 14:32 2349
                        strncpy(name,lf.getFileName(i).c_str(),28); //Problems occurs then larger than 28 (maybe 29)
89c4a3a6 sago007 2008-08-29 14:32 2350
                        done=true; //The user have, clicked the purpose of this function is now complete
89c4a3a6 sago007 2008-08-29 14:32 2351
                    }
89c4a3a6 sago007 2008-08-29 14:32 2352
                }
89c4a3a6 sago007 2008-08-29 14:32 2353
            }
89c4a3a6 sago007 2008-08-29 14:32 2354
        }
89c4a3a6 sago007 2008-08-29 14:32 2355
89c4a3a6 sago007 2008-08-29 14:32 2356
        DrawIMG(mouse,screen,mousex,mousey);
89c4a3a6 sago007 2008-08-29 14:32 2357
        SDL_Flip(screen); //Update screen
89c4a3a6 sago007 2008-08-29 14:32 2358
    }
89c4a3a6 sago007 2008-08-29 14:32 2359
}
89c4a3a6 sago007 2008-08-29 14:32 2360
89c4a3a6 sago007 2008-08-29 14:32 2361
//Slelect a theme
89c4a3a6 sago007 2008-08-29 14:32 2362
bool SelectThemeDialogbox(int x, int y, char *name)
89c4a3a6 sago007 2008-08-29 14:32 2363
{
89c4a3a6 sago007 2008-08-29 14:32 2364
    bool done = false;	//We are done!
89c4a3a6 sago007 2008-08-29 14:32 2365
    int mousex, mousey;
89c4a3a6 sago007 2008-08-29 14:32 2366
    ListFiles lf = ListFiles();
89c4a3a6 sago007 2008-08-29 14:32 2367
    string folder = (string)SHAREDIR+(string)"/themes";
89c4a3a6 sago007 2008-08-29 14:32 2368
    cout << "Looking in " << folder << endl;
89c4a3a6 sago007 2008-08-29 14:32 2369
    lf.setDirectory(folder.c_str());
89c4a3a6 sago007 2008-08-29 14:32 2370
#ifdef __unix__
89c4a3a6 sago007 2008-08-29 14:32 2371
    string homeFolder = (string)getenv("HOME")+(string)"/.gamesaves/blockattack/themes";
89c4a3a6 sago007 2008-08-29 14:32 2372
    lf.setDirectory2(homeFolder.c_str());
89c4a3a6 sago007 2008-08-29 14:32 2373
#endif
89c4a3a6 sago007 2008-08-29 14:32 2374
    Uint8* keys;
89c4a3a6 sago007 2008-08-29 14:32 2375
    string strHolder;
27ae0175 sago007 2009-01-30 06:02 2376
    MakeBackground(xsize,ysize);
89c4a3a6 sago007 2008-08-29 14:32 2377
    DrawIMG(background,screen,0,0);
89c4a3a6 sago007 2008-08-29 14:32 2378
    DrawIMG(bForward,background,x+460,y+420);
89c4a3a6 sago007 2008-08-29 14:32 2379
    DrawIMG(bBack,background,x+20,y+420);
89c4a3a6 sago007 2008-08-29 14:32 2380
    while (!done)
89c4a3a6 sago007 2008-08-29 14:32 2381
    {
89c4a3a6 sago007 2008-08-29 14:32 2382
        DrawIMG(background,screen,0,0);
89c4a3a6 sago007 2008-08-29 14:32 2383
        const int nrOfFiles = 10;
89c4a3a6 sago007 2008-08-29 14:32 2384
        DrawIMG(changeButtonsBack,screen,x,y);
89c4a3a6 sago007 2008-08-29 14:32 2385
        for (int i=0;i<nrOfFiles;i++)
89c4a3a6 sago007 2008-08-29 14:32 2386
        {
89c4a3a6 sago007 2008-08-29 14:32 2387
            SFont_Write(screen,fBlueFont,x+10,y+10+36*i,lf.getFileName(i).c_str());
89c4a3a6 sago007 2008-08-29 14:32 2388
        }
89c4a3a6 sago007 2008-08-29 14:32 2389
89c4a3a6 sago007 2008-08-29 14:32 2390
        SDL_Event event;
89c4a3a6 sago007 2008-08-29 14:32 2391
89c4a3a6 sago007 2008-08-29 14:32 2392
        while ( SDL_PollEvent(&event) )
89c4a3a6 sago007 2008-08-29 14:32 2393
        {
89c4a3a6 sago007 2008-08-29 14:32 2394
            if ( event.type == SDL_QUIT )  {
89c4a3a6 sago007 2008-08-29 14:32 2395
                done = true;
89c4a3a6 sago007 2008-08-29 14:32 2396
            }
89c4a3a6 sago007 2008-08-29 14:32 2397
89c4a3a6 sago007 2008-08-29 14:32 2398
            if ( event.type == SDL_KEYDOWN )
89c4a3a6 sago007 2008-08-29 14:32 2399
            {
89c4a3a6 sago007 2008-08-29 14:32 2400
                if ( (event.key.keysym.sym == SDLK_ESCAPE) ) {
89c4a3a6 sago007 2008-08-29 14:32 2401
                    done = true;
89c4a3a6 sago007 2008-08-29 14:32 2402
                }
89c4a3a6 sago007 2008-08-29 14:32 2403
89c4a3a6 sago007 2008-08-29 14:32 2404
                if ( (event.key.keysym.sym == SDLK_RIGHT) ) {
89c4a3a6 sago007 2008-08-29 14:32 2405
                    lf.forward();
89c4a3a6 sago007 2008-08-29 14:32 2406
                }
89c4a3a6 sago007 2008-08-29 14:32 2407
89c4a3a6 sago007 2008-08-29 14:32 2408
                if ( (event.key.keysym.sym == SDLK_LEFT) ) {
89c4a3a6 sago007 2008-08-29 14:32 2409
                    lf.back();
89c4a3a6 sago007 2008-08-29 14:32 2410
                }
89c4a3a6 sago007 2008-08-29 14:32 2411
            }
89c4a3a6 sago007 2008-08-29 14:32 2412
89c4a3a6 sago007 2008-08-29 14:32 2413
        } //while(event)
89c4a3a6 sago007 2008-08-29 14:32 2414
89c4a3a6 sago007 2008-08-29 14:32 2415
        SDL_GetMouseState(&mousex,&mousey);
89c4a3a6 sago007 2008-08-29 14:32 2416
89c4a3a6 sago007 2008-08-29 14:32 2417
        // If the mouse button is released, make bMouseUp equal true
89c4a3a6 sago007 2008-08-29 14:32 2418
        if (!SDL_GetMouseState(NULL, NULL)&SDL_BUTTON(1))
89c4a3a6 sago007 2008-08-29 14:32 2419
        {
89c4a3a6 sago007 2008-08-29 14:32 2420
            bMouseUp=true;
89c4a3a6 sago007 2008-08-29 14:32 2421
        }
89c4a3a6 sago007 2008-08-29 14:32 2422
89c4a3a6 sago007 2008-08-29 14:32 2423
        if (SDL_GetMouseState(NULL,NULL)&SDL_BUTTON(1) && bMouseUp)
89c4a3a6 sago007 2008-08-29 14:32 2424
        {
89c4a3a6 sago007 2008-08-29 14:32 2425
            bMouseUp = false;
89c4a3a6 sago007 2008-08-29 14:32 2426
89c4a3a6 sago007 2008-08-29 14:32 2427
            //The Forward Button:
9050a50a sago007 2008-12-09 13:35 2428
            if ( (mousex>x+460) && (mousex<x+460+buttonXsize) && (mousey>y+420) && (mousey<y+420+40) )
89c4a3a6 sago007 2008-08-29 14:32 2429
            {
89c4a3a6 sago007 2008-08-29 14:32 2430
                lf.forward();
89c4a3a6 sago007 2008-08-29 14:32 2431
            }
89c4a3a6 sago007 2008-08-29 14:32 2432
89c4a3a6 sago007 2008-08-29 14:32 2433
            //The back button:
9050a50a sago007 2008-12-09 13:35 2434
            if ( (mousex>x+20) && (mousex<x+20+buttonXsize) && (mousey>y+420) && (mousey<y+420+40) )
89c4a3a6 sago007 2008-08-29 14:32 2435
            {
89c4a3a6 sago007 2008-08-29 14:32 2436
                lf.back();
89c4a3a6 sago007 2008-08-29 14:32 2437
            }
89c4a3a6 sago007 2008-08-29 14:32 2438
89c4a3a6 sago007 2008-08-29 14:32 2439
            for (int i=0;i<10;i++)
89c4a3a6 sago007 2008-08-29 14:32 2440
            {
89c4a3a6 sago007 2008-08-29 14:32 2441
                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 2442
                {
89c4a3a6 sago007 2008-08-29 14:32 2443
                    if (lf.fileExists(i))
89c4a3a6 sago007 2008-08-29 14:32 2444
                    {
89c4a3a6 sago007 2008-08-29 14:32 2445
                        strncpy(name,lf.getFileName(i).c_str(),28); //Problems occurs then larger than 28 (maybe 29)
89c4a3a6 sago007 2008-08-29 14:32 2446
                        loadTheme(lf.getFileName(i));
89c4a3a6 sago007 2008-08-29 14:32 2447
                        done=true; //The user have, clicked the purpose of this function is now complete
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
        }
89c4a3a6 sago007 2008-08-29 14:32 2452
89c4a3a6 sago007 2008-08-29 14:32 2453
        DrawIMG(mouse,screen,mousex,mousey);
89c4a3a6 sago007 2008-08-29 14:32 2454
        SDL_Flip(screen); //Update screen
89c4a3a6 sago007 2008-08-29 14:32 2455
    }
89c4a3a6 sago007 2008-08-29 14:32 2456
}
89c4a3a6 sago007 2008-08-29 14:32 2457
89c4a3a6 sago007 2008-08-29 14:32 2458
//Open a saved replay
89c4a3a6 sago007 2008-08-29 14:32 2459
bool OpenReplayDialogbox(int x, int y, char *name)
89c4a3a6 sago007 2008-08-29 14:32 2460
{
89c4a3a6 sago007 2008-08-29 14:32 2461
    bool done = false;	//We are done!
89c4a3a6 sago007 2008-08-29 14:32 2462
    int mousex, mousey;
89c4a3a6 sago007 2008-08-29 14:32 2463
    ListFiles lf = ListFiles();
89c4a3a6 sago007 2008-08-29 14:32 2464
    cout << "Ready to set directory!" << endl;
89c4a3a6 sago007 2008-08-29 14:32 2465
#ifdef __unix__
89c4a3a6 sago007 2008-08-29 14:32 2466
    string directory = (string)getenv("HOME")+(string)"/.gamesaves/blockattack/replays";
89c4a3a6 sago007 2008-08-29 14:32 2467
#elif WIN32
89c4a3a6 sago007 2008-08-29 14:32 2468
    string directory = getMyDocumentsPath()+(string)"/My Games/blockattack/replays";
89c4a3a6 sago007 2008-08-29 14:32 2469
#else
89c4a3a6 sago007 2008-08-29 14:32 2470
    string directory = "./replays";
89c4a3a6 sago007 2008-08-29 14:32 2471
#endif
89c4a3a6 sago007 2008-08-29 14:32 2472
    lf.setDirectory(directory);
89c4a3a6 sago007 2008-08-29 14:32 2473
    cout << "Directory sat" << endl;
89c4a3a6 sago007 2008-08-29 14:32 2474
    Uint8* keys;
89c4a3a6 sago007 2008-08-29 14:32 2475
    string strHolder;
27ae0175 sago007 2009-01-30 06:02 2476
    MakeBackground(xsize,ysize);
89c4a3a6 sago007 2008-08-29 14:32 2477
    DrawIMG(background,screen,0,0);
89c4a3a6 sago007 2008-08-29 14:32 2478
    DrawIMG(bForward,background,x+460,y+420);
89c4a3a6 sago007 2008-08-29 14:32 2479
    DrawIMG(bBack,background,x+20,y+420);
89c4a3a6 sago007 2008-08-29 14:32 2480
    while (!done)
89c4a3a6 sago007 2008-08-29 14:32 2481
    {
89c4a3a6 sago007 2008-08-29 14:32 2482
        DrawIMG(background,screen,0,0);
89c4a3a6 sago007 2008-08-29 14:32 2483
        const int nrOfFiles = 10;
89c4a3a6 sago007 2008-08-29 14:32 2484
        DrawIMG(changeButtonsBack,screen,x,y);
89c4a3a6 sago007 2008-08-29 14:32 2485
        for (int i=0;i<nrOfFiles;i++)
89c4a3a6 sago007 2008-08-29 14:32 2486
        {
89c4a3a6 sago007 2008-08-29 14:32 2487
            SFont_Write(screen,fBlueFont,x+10,y+10+36*i,lf.getFileName(i).c_str());
89c4a3a6 sago007 2008-08-29 14:32 2488
        }
89c4a3a6 sago007 2008-08-29 14:32 2489
89c4a3a6 sago007 2008-08-29 14:32 2490
        SDL_Event event;
89c4a3a6 sago007 2008-08-29 14:32 2491
89c4a3a6 sago007 2008-08-29 14:32 2492
        while ( SDL_PollEvent(&event) )
89c4a3a6 sago007 2008-08-29 14:32 2493
        {
89c4a3a6 sago007 2008-08-29 14:32 2494
            if ( event.type == SDL_QUIT )  {
89c4a3a6 sago007 2008-08-29 14:32 2495
                done = true;
89c4a3a6 sago007 2008-08-29 14:32 2496
                return false;
89c4a3a6 sago007 2008-08-29 14:32 2497
            }
89c4a3a6 sago007 2008-08-29 14:32 2498
89c4a3a6 sago007 2008-08-29 14:32 2499
            if ( event.type == SDL_KEYDOWN )
89c4a3a6 sago007 2008-08-29 14:32 2500
            {
89c4a3a6 sago007 2008-08-29 14:32 2501
                if ( (event.key.keysym.sym == SDLK_ESCAPE) ) {
89c4a3a6 sago007 2008-08-29 14:32 2502
                    done = true;
89c4a3a6 sago007 2008-08-29 14:32 2503
                    return false;
89c4a3a6 sago007 2008-08-29 14:32 2504
                }
89c4a3a6 sago007 2008-08-29 14:32 2505
89c4a3a6 sago007 2008-08-29 14:32 2506
                if ( (event.key.keysym.sym == SDLK_RIGHT) ) {
89c4a3a6 sago007 2008-08-29 14:32 2507
                    lf.forward();
89c4a3a6 sago007 2008-08-29 14:32 2508
                }
89c4a3a6 sago007 2008-08-29 14:32 2509
89c4a3a6 sago007 2008-08-29 14:32 2510
                if ( (event.key.keysym.sym == SDLK_LEFT) ) {
89c4a3a6 sago007 2008-08-29 14:32 2511
                    lf.back();
89c4a3a6 sago007 2008-08-29 14:32 2512
                }
89c4a3a6 sago007 2008-08-29 14:32 2513
            }
89c4a3a6 sago007 2008-08-29 14:32 2514
89c4a3a6 sago007 2008-08-29 14:32 2515
        } //while(event)
89c4a3a6 sago007 2008-08-29 14:32 2516
89c4a3a6 sago007 2008-08-29 14:32 2517
        SDL_GetMouseState(&mousex,&mousey);
89c4a3a6 sago007 2008-08-29 14:32 2518
89c4a3a6 sago007 2008-08-29 14:32 2519
        // If the mouse button is released, make bMouseUp equal true
89c4a3a6 sago007 2008-08-29 14:32 2520
        if (!SDL_GetMouseState(NULL, NULL)&SDL_BUTTON(1))
89c4a3a6 sago007 2008-08-29 14:32 2521
        {
89c4a3a6 sago007 2008-08-29 14:32 2522
            bMouseUp=true;
89c4a3a6 sago007 2008-08-29 14:32 2523
        }
89c4a3a6 sago007 2008-08-29 14:32 2524
89c4a3a6 sago007 2008-08-29 14:32 2525
        if (SDL_GetMouseState(NULL,NULL)&SDL_BUTTON(1) && bMouseUp)
89c4a3a6 sago007 2008-08-29 14:32 2526
        {
89c4a3a6 sago007 2008-08-29 14:32 2527
            bMouseUp = false;
89c4a3a6 sago007 2008-08-29 14:32 2528
89c4a3a6 sago007 2008-08-29 14:32 2529
            //The Forward Button:
9050a50a sago007 2008-12-09 13:35 2530
            if ( (mousex>x+460) && (mousex<x+460+buttonXsize) && (mousey>y+420) && (mousey<y+420+40) )
89c4a3a6 sago007 2008-08-29 14:32 2531
            {
89c4a3a6 sago007 2008-08-29 14:32 2532
                lf.forward();
89c4a3a6 sago007 2008-08-29 14:32 2533
            }
89c4a3a6 sago007 2008-08-29 14:32 2534
89c4a3a6 sago007 2008-08-29 14:32 2535
            //The back button:
9050a50a sago007 2008-12-09 13:35 2536
            if ( (mousex>x+20) && (mousex<x+20+buttonXsize) && (mousey>y+420) && (mousey<y+420+40) )
89c4a3a6 sago007 2008-08-29 14:32 2537
            {
89c4a3a6 sago007 2008-08-29 14:32 2538
                lf.back();
89c4a3a6 sago007 2008-08-29 14:32 2539
            }
89c4a3a6 sago007 2008-08-29 14:32 2540
89c4a3a6 sago007 2008-08-29 14:32 2541
            for (int i=0;i<10;i++)
89c4a3a6 sago007 2008-08-29 14:32 2542
            {
89c4a3a6 sago007 2008-08-29 14:32 2543
                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 2544
                {
89c4a3a6 sago007 2008-08-29 14:32 2545
                    if (lf.fileExists(i))
89c4a3a6 sago007 2008-08-29 14:32 2546
                    {
89c4a3a6 sago007 2008-08-29 14:32 2547
                        strncpy(name,lf.getFileName(i).c_str(),28); //Problems occurs then larger than 28 (maybe 29)
89c4a3a6 sago007 2008-08-29 14:32 2548
                        done=true; //The user have, clicked the purpose of this function is now complete
89c4a3a6 sago007 2008-08-29 14:32 2549
                        return true;
89c4a3a6 sago007 2008-08-29 14:32 2550
                    }
89c4a3a6 sago007 2008-08-29 14:32 2551
                }
89c4a3a6 sago007 2008-08-29 14:32 2552
            }
89c4a3a6 sago007 2008-08-29 14:32 2553
        }
89c4a3a6 sago007 2008-08-29 14:32 2554
89c4a3a6 sago007 2008-08-29 14:32 2555
        DrawIMG(mouse,screen,mousex,mousey);
89c4a3a6 sago007 2008-08-29 14:32 2556
        SDL_Flip(screen); //Update screen
89c4a3a6 sago007 2008-08-29 14:32 2557
    }
89c4a3a6 sago007 2008-08-29 14:32 2558
}
89c4a3a6 sago007 2008-08-29 14:32 2559
89c4a3a6 sago007 2008-08-29 14:32 2560
89c4a3a6 sago007 2008-08-29 14:32 2561
//draws options:
89c4a3a6 sago007 2008-08-29 14:32 2562
inline void DrawOptions(int x, int y)
89c4a3a6 sago007 2008-08-29 14:32 2563
{
9050a50a sago007 2008-12-09 13:35 2564
    if (MusicEnabled) DrawIMG(bOn,optionsBack,400,buttonXsize);
9050a50a sago007 2008-12-09 13:35 2565
    else DrawIMG(bOff,optionsBack,400,buttonXsize);
89c4a3a6 sago007 2008-08-29 14:32 2566
    if (SoundEnabled) DrawIMG(bOn,optionsBack,400,170);
89c4a3a6 sago007 2008-08-29 14:32 2567
    else DrawIMG(bOff,optionsBack,400,170);
89c4a3a6 sago007 2008-08-29 14:32 2568
    if (bFullscreen) DrawIMG(bOn,optionsBack,400,220);
89c4a3a6 sago007 2008-08-29 14:32 2569
    else DrawIMG(bOff,optionsBack,400,220);
89c4a3a6 sago007 2008-08-29 14:32 2570
    DrawIMG(bChange,optionsBack,230,435);
89c4a3a6 sago007 2008-08-29 14:32 2571
    DrawIMG(bChange,optionsBack,410,435);
89c4a3a6 sago007 2008-08-29 14:32 2572
    DrawIMG(bChange,optionsBack,230,500);
89c4a3a6 sago007 2008-08-29 14:32 2573
    DrawIMG(bChange,optionsBack,410,500);
89c4a3a6 sago007 2008-08-29 14:32 2574
    DrawIMG(optionsBack,screen,x,y);
89c4a3a6 sago007 2008-08-29 14:32 2575
}  //drawOptions
89c4a3a6 sago007 2008-08-29 14:32 2576
89c4a3a6 sago007 2008-08-29 14:32 2577
//Draws the balls and explosions
89c4a3a6 sago007 2008-08-29 14:32 2578
void DrawBalls()
89c4a3a6 sago007 2008-08-29 14:32 2579
{
89c4a3a6 sago007 2008-08-29 14:32 2580
    for (int i = 0; i< maxNumberOfBalls; i++)
89c4a3a6 sago007 2008-08-29 14:32 2581
    {
89c4a3a6 sago007 2008-08-29 14:32 2582
        if (theBallManeger.ballUsed[i])
89c4a3a6 sago007 2008-08-29 14:32 2583
        {
89c4a3a6 sago007 2008-08-29 14:32 2584
            DrawIMG(balls[theBallManeger.ballArray[i].getColor()],screen,theBallManeger.ballArray[i].getX(),theBallManeger.ballArray[i].getY());
89c4a3a6 sago007 2008-08-29 14:32 2585
        } //if used
89c4a3a6 sago007 2008-08-29 14:32 2586
        if (theExplosionManeger.explosionUsed[i])
89c4a3a6 sago007 2008-08-29 14:32 2587
        {
89c4a3a6 sago007 2008-08-29 14:32 2588
            DrawIMG(explosion[theExplosionManeger.explosionArray[i].getFrame()],screen,theExplosionManeger.explosionArray[i].getX(),theExplosionManeger.explosionArray[i].getY());
89c4a3a6 sago007 2008-08-29 14:32 2589
        }
89c4a3a6 sago007 2008-08-29 14:32 2590
        if (theTextManeger.textUsed[i])
89c4a3a6 sago007 2008-08-29 14:32 2591
        {
89c4a3a6 sago007 2008-08-29 14:32 2592
            //cout << "Printing text: " << theTextManeger.textArray[i].getText() << endl;
89c4a3a6 sago007 2008-08-29 14:32 2593
            int x = theTextManeger.textArray[i].getX()-SFont_TextWidth(fSmallFont,theTextManeger.textArray[i].getText())/2;
89c4a3a6 sago007 2008-08-29 14:32 2594
            int y = theTextManeger.textArray[i].getY()-SFont_TextHeight(fSmallFont)/2;
89c4a3a6 sago007 2008-08-29 14:32 2595
            DrawIMG(iChainBack,screen,x,y);
89c4a3a6 sago007 2008-08-29 14:32 2596
            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 2597
        }
89c4a3a6 sago007 2008-08-29 14:32 2598
    } //for
89c4a3a6 sago007 2008-08-29 14:32 2599
}    //DrawBalls
89c4a3a6 sago007 2008-08-29 14:32 2600
89c4a3a6 sago007 2008-08-29 14:32 2601
//Removes the old balls
89c4a3a6 sago007 2008-08-29 14:32 2602
void UndrawBalls()
89c4a3a6 sago007 2008-08-29 14:32 2603
{
89c4a3a6 sago007 2008-08-29 14:32 2604
    for (int i = 0; i< maxNumberOfBalls; i++)
89c4a3a6 sago007 2008-08-29 14:32 2605
    {
89c4a3a6 sago007 2008-08-29 14:32 2606
        if (theBallManeger.oldBallUsed[i])
89c4a3a6 sago007 2008-08-29 14:32 2607
        {
89c4a3a6 sago007 2008-08-29 14:32 2608
            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 2609
        } //if used
89c4a3a6 sago007 2008-08-29 14:32 2610
        if (theExplosionManeger.oldExplosionUsed[i])
89c4a3a6 sago007 2008-08-29 14:32 2611
        {
89c4a3a6 sago007 2008-08-29 14:32 2612
            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 2613
        }
89c4a3a6 sago007 2008-08-29 14:32 2614
        if (theTextManeger.oldTextUsed[i])
89c4a3a6 sago007 2008-08-29 14:32 2615
        {
89c4a3a6 sago007 2008-08-29 14:32 2616
            int x = theTextManeger.oldTextArray[i].getX()-SFont_TextWidth(fSmallFont,theTextManeger.oldTextArray[i].getText())/2;
89c4a3a6 sago007 2008-08-29 14:32 2617
            int y = theTextManeger.oldTextArray[i].getY()-SFont_TextHeight(fSmallFont)/2;
89c4a3a6 sago007 2008-08-29 14:32 2618
            DrawIMG(background,screen,x,y,25,25,x,y);
89c4a3a6 sago007 2008-08-29 14:32 2619
        }
89c4a3a6 sago007 2008-08-29 14:32 2620
    } //for
89c4a3a6 sago007 2008-08-29 14:32 2621
}   //UndrawBalls
89c4a3a6 sago007 2008-08-29 14:32 2622
89c4a3a6 sago007 2008-08-29 14:32 2623
//draws everything
89c4a3a6 sago007 2008-08-29 14:32 2624
void DrawEverything(int xsize, int ysize,BlockGame &theGame, BlockGame &theGame2)
89c4a3a6 sago007 2008-08-29 14:32 2625
{
89c4a3a6 sago007 2008-08-29 14:32 2626
    SDL_ShowCursor(SDL_DISABLE);
89c4a3a6 sago007 2008-08-29 14:32 2627
    //draw background:
89c4a3a6 sago007 2008-08-29 14:32 2628
    if (forceredraw != 1)
89c4a3a6 sago007 2008-08-29 14:32 2629
    {
89c4a3a6 sago007 2008-08-29 14:32 2630
89c4a3a6 sago007 2008-08-29 14:32 2631
        UndrawBalls();
89c4a3a6 sago007 2008-08-29 14:32 2632
        DrawIMG(background,screen,oldMousex,oldMousey,32,32,oldMousex,oldMousey);
89c4a3a6 sago007 2008-08-29 14:32 2633
        DrawIMG(background,screen,oldBubleX,oldBubleY,140,50,oldBubleX,oldBubleY);
89c4a3a6 sago007 2008-08-29 14:32 2634
89c4a3a6 sago007 2008-08-29 14:32 2635
89c4a3a6 sago007 2008-08-29 14:32 2636
        DrawIMG(background,screen,350,200,120,200,350,200);
89c4a3a6 sago007 2008-08-29 14:32 2637
        DrawIMG(background,screen,830,200,120,200,830,200);
89c4a3a6 sago007 2008-08-29 14:32 2638
        DrawIMG(background,screen,800,0,140,50,800,0);
89c4a3a6 sago007 2008-08-29 14:32 2639
89c4a3a6 sago007 2008-08-29 14:32 2640
        DrawIMG(background,screen,50,60,300,50,50,60);
89c4a3a6 sago007 2008-08-29 14:32 2641
        DrawIMG(background,screen,510,60,300,50,510,60);
89c4a3a6 sago007 2008-08-29 14:32 2642
    }
89c4a3a6 sago007 2008-08-29 14:32 2643
    else
89c4a3a6 sago007 2008-08-29 14:32 2644
        DrawIMG(background,screen,0,0);
89c4a3a6 sago007 2008-08-29 14:32 2645
    //draw bottons (should be moves and drawn directly to background once)
89c4a3a6 sago007 2008-08-29 14:32 2646
    if (!editorMode)
2f30c381 sago007 2008-09-14 13:08 2647
        #if NETWORK
89c4a3a6 sago007 2008-08-29 14:32 2648
        if (!networkActive) //We don't show the menu while running server or connected to a server
2f30c381 sago007 2008-09-14 13:08 2649
        #else
2f30c381 sago007 2008-09-14 13:08 2650
            if(true)
2f30c381 sago007 2008-09-14 13:08 2651
        #endif
89c4a3a6 sago007 2008-08-29 14:32 2652
        {
89c4a3a6 sago007 2008-08-29 14:32 2653
            //Here we draw the menu
89c4a3a6 sago007 2008-08-29 14:32 2654
            DrawIMG(bNewGame, screen, 0, 0);
9050a50a sago007 2008-12-09 13:35 2655
            DrawIMG(bOptions, screen, buttonXsize,0);
9050a50a sago007 2008-12-09 13:35 2656
            DrawIMG(bHighScore, screen, 2*buttonXsize,0);
9050a50a sago007 2008-12-09 13:35 2657
            DrawIMG(bReplay,screen,3*buttonXsize,0);
89c4a3a6 sago007 2008-08-29 14:32 2658
        }
89c4a3a6 sago007 2008-08-29 14:32 2659
        else
89c4a3a6 sago007 2008-08-29 14:32 2660
        { //If network is active
89c4a3a6 sago007 2008-08-29 14:32 2661
            DrawIMG(bBack, screen, 0, 0); //Display a disconnect button
89c4a3a6 sago007 2008-08-29 14:32 2662
        }
89c4a3a6 sago007 2008-08-29 14:32 2663
    if (!editorMode)
89c4a3a6 sago007 2008-08-29 14:32 2664
        DrawIMG(bExit, screen, xsize-120,ysize-120);
89c4a3a6 sago007 2008-08-29 14:32 2665
    //DrawIMG(boardBackBack,screen,theGame.topx-60,theGame.topy-68);
89c4a3a6 sago007 2008-08-29 14:32 2666
    DrawIMG(theGame.sBoard,screen,theGame.topx,theGame.topy);
89c4a3a6 sago007 2008-08-29 14:32 2667
    string strHolder;
89c4a3a6 sago007 2008-08-29 14:32 2668
    strHolder = itoa(theGame.score+theGame.handicap);
89c4a3a6 sago007 2008-08-29 14:32 2669
    SFont_Write(screen,fBlueFont,theGame.topx+310,theGame.topy+100,strHolder.c_str());
89c4a3a6 sago007 2008-08-29 14:32 2670
    if (theGame.AI_Enabled)
89c4a3a6 sago007 2008-08-29 14:32 2671
        SFont_Write(screen,fBlueFont,theGame.topx+10,theGame.topy-40,"CPU");
89c4a3a6 sago007 2008-08-29 14:32 2672
    else
89c4a3a6 sago007 2008-08-29 14:32 2673
        if (editorMode)
89c4a3a6 sago007 2008-08-29 14:32 2674
            SFont_Write(screen,fBlueFont,theGame.topx+10,theGame.topy-40,"Playing field");
89c4a3a6 sago007 2008-08-29 14:32 2675
        else
89c4a3a6 sago007 2008-08-29 14:32 2676
            if (!singlePuzzle)
89c4a3a6 sago007 2008-08-29 14:32 2677
                SFont_Write(screen,fBlueFont,theGame.topx+10,theGame.topy-40,player1name);
89c4a3a6 sago007 2008-08-29 14:32 2678
    if (theGame.timetrial)
89c4a3a6 sago007 2008-08-29 14:32 2679
    {
89c4a3a6 sago007 2008-08-29 14:32 2680
        int tid = (int)SDL_GetTicks()-theGame.gameStartedAt;
89c4a3a6 sago007 2008-08-29 14:32 2681
        int minutes;
89c4a3a6 sago007 2008-08-29 14:32 2682
        int seconds;
89c4a3a6 sago007 2008-08-29 14:32 2683
        if (tid>=0)
89c4a3a6 sago007 2008-08-29 14:32 2684
        {
89c4a3a6 sago007 2008-08-29 14:32 2685
            minutes = (2*60*1000-(abs((int)SDL_GetTicks()-(int)theGame.gameStartedAt)))/60/1000;
89c4a3a6 sago007 2008-08-29 14:32 2686
            seconds = ((2*60*1000-(abs((int)SDL_GetTicks()-(int)theGame.gameStartedAt)))%(60*1000))/1000;
89c4a3a6 sago007 2008-08-29 14:32 2687
        }
89c4a3a6 sago007 2008-08-29 14:32 2688
        else
89c4a3a6 sago007 2008-08-29 14:32 2689
        {
89c4a3a6 sago007 2008-08-29 14:32 2690
            minutes = ((abs((int)SDL_GetTicks()-(int)theGame.gameStartedAt)))/60/1000;
89c4a3a6 sago007 2008-08-29 14:32 2691
            seconds = (((abs((int)SDL_GetTicks()-(int)theGame.gameStartedAt)))%(60*1000))/1000;
89c4a3a6 sago007 2008-08-29 14:32 2692
        }
89c4a3a6 sago007 2008-08-29 14:32 2693
        if (theGame.bGameOver) minutes=0;
89c4a3a6 sago007 2008-08-29 14:32 2694
        if (theGame.bGameOver) seconds=0;
89c4a3a6 sago007 2008-08-29 14:32 2695
        if (seconds>9)
89c4a3a6 sago007 2008-08-29 14:32 2696
            strHolder = itoa(minutes)+":"+itoa(seconds);
89c4a3a6 sago007 2008-08-29 14:32 2697
        else strHolder = itoa(minutes)+":0"+itoa(seconds);
6d48320c sago007 2009-03-28 17:06 2698
        //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 2699
        SFont_Write(screen,fBlueFont,theGame.topx+310,theGame.topy+150,strHolder.c_str());
89c4a3a6 sago007 2008-08-29 14:32 2700
    }
89c4a3a6 sago007 2008-08-29 14:32 2701
    else
89c4a3a6 sago007 2008-08-29 14:32 2702
    {
89c4a3a6 sago007 2008-08-29 14:32 2703
        int minutes = ((abs((int)SDL_GetTicks()-(int)theGame.gameStartedAt)))/60/1000;
89c4a3a6 sago007 2008-08-29 14:32 2704
        int seconds = (((abs((int)SDL_GetTicks()-(int)theGame.gameStartedAt)))%(60*1000))/1000;
89c4a3a6 sago007 2008-08-29 14:32 2705
        if (theGame.bGameOver) minutes=(theGame.gameEndedAfter/1000/60)%100;
89c4a3a6 sago007 2008-08-29 14:32 2706
        if (theGame.bGameOver) seconds=(theGame.gameEndedAfter/1000)%60;
89c4a3a6 sago007 2008-08-29 14:32 2707
        if (seconds>9)
89c4a3a6 sago007 2008-08-29 14:32 2708
            strHolder = itoa(minutes)+":"+itoa(seconds);
89c4a3a6 sago007 2008-08-29 14:32 2709
        else
89c4a3a6 sago007 2008-08-29 14:32 2710
            strHolder = itoa(minutes)+":0"+itoa(seconds);
89c4a3a6 sago007 2008-08-29 14:32 2711
        SFont_Write(screen,fBlueFont,theGame.topx+310,theGame.topy+150,strHolder.c_str());
89c4a3a6 sago007 2008-08-29 14:32 2712
    }
89c4a3a6 sago007 2008-08-29 14:32 2713
    strHolder = itoa(theGame.chain);
89c4a3a6 sago007 2008-08-29 14:32 2714
    SFont_Write(screen,fBlueFont,theGame.topx+310,theGame.topy+200,strHolder.c_str());
89c4a3a6 sago007 2008-08-29 14:32 2715
    //drawspeedLevel:
89c4a3a6 sago007 2008-08-29 14:32 2716
    strHolder = itoa(theGame.speedLevel);
89c4a3a6 sago007 2008-08-29 14:32 2717
    SFont_Write(screen,fBlueFont,theGame.topx+310,theGame.topy+250,strHolder.c_str());
89c4a3a6 sago007 2008-08-29 14:32 2718
    if ((theGame.stageClear) &&(theGame.topy+700+50*(theGame.stageClearLimit-theGame.linesCleared)-theGame.pixels-1<600+theGame.topy))
89c4a3a6 sago007 2008-08-29 14:32 2719
    {
89c4a3a6 sago007 2008-08-29 14:32 2720
        oldBubleX = theGame.topx+280;
89c4a3a6 sago007 2008-08-29 14:32 2721
        oldBubleY = theGame.topy+650+50*(theGame.stageClearLimit-theGame.linesCleared)-theGame.pixels-1;
89c4a3a6 sago007 2008-08-29 14:32 2722
        DrawIMG(stageBobble,screen,theGame.topx+280,theGame.topy+650+50*(theGame.stageClearLimit-theGame.linesCleared)-theGame.pixels-1);
89c4a3a6 sago007 2008-08-29 14:32 2723
    }
89c4a3a6 sago007 2008-08-29 14:32 2724
    //player1 finnish, player2 start
89c4a3a6 sago007 2008-08-29 14:32 2725
    //DrawIMG(boardBackBack,screen,theGame2.topx-60,theGame2.topy-68);
89c4a3a6 sago007 2008-08-29 14:32 2726
    if (!editorMode)
89c4a3a6 sago007 2008-08-29 14:32 2727
    {
89c4a3a6 sago007 2008-08-29 14:32 2728
        DrawIMG(theGame2.sBoard,screen,theGame2.topx,theGame2.topy);
89c4a3a6 sago007 2008-08-29 14:32 2729
        strHolder = itoa(theGame2.score+theGame2.handicap);
89c4a3a6 sago007 2008-08-29 14:32 2730
        SFont_Write(screen,fBlueFont,theGame2.topx+310,theGame2.topy+100,strHolder.c_str());
89c4a3a6 sago007 2008-08-29 14:32 2731
        if (theGame2.AI_Enabled)
89c4a3a6 sago007 2008-08-29 14:32 2732
            SFont_Write(screen,fBlueFont,theGame2.topx+10,theGame2.topy-40,"CPU");
89c4a3a6 sago007 2008-08-29 14:32 2733
        else
89c4a3a6 sago007 2008-08-29 14:32 2734
            SFont_Write(screen,fBlueFont,theGame2.topx+10,theGame2.topy-40,theGame2.name);
89c4a3a6 sago007 2008-08-29 14:32 2735
        if (theGame2.timetrial)
89c4a3a6 sago007 2008-08-29 14:32 2736
        {
89c4a3a6 sago007 2008-08-29 14:32 2737
            int tid = (int)SDL_GetTicks()-theGame2.gameStartedAt;
89c4a3a6 sago007 2008-08-29 14:32 2738
            int minutes;
89c4a3a6 sago007 2008-08-29 14:32 2739
            int seconds;
89c4a3a6 sago007 2008-08-29 14:32 2740
            if (tid>=0)
89c4a3a6 sago007 2008-08-29 14:32 2741
            {
89c4a3a6 sago007 2008-08-29 14:32 2742
                minutes = (2*60*1000-(abs((int)SDL_GetTicks()-(int)theGame2.gameStartedAt)))/60/1000;
89c4a3a6 sago007 2008-08-29 14:32 2743
                seconds = ((2*60*1000-(abs((int)SDL_GetTicks()-(int)theGame2.gameStartedAt)))%(60*1000))/1000;
89c4a3a6 sago007 2008-08-29 14:32 2744
            }
89c4a3a6 sago007 2008-08-29 14:32 2745
            else
89c4a3a6 sago007 2008-08-29 14:32 2746
            {
89c4a3a6 sago007 2008-08-29 14:32 2747
                minutes = ((abs((int)SDL_GetTicks()-(int)theGame2.gameStartedAt)))/60/1000;
89c4a3a6 sago007 2008-08-29 14:32 2748
                seconds = (((abs((int)SDL_GetTicks()-(int)theGame2.gameStartedAt)))%(60*1000))/1000;
89c4a3a6 sago007 2008-08-29 14:32 2749
            }
89c4a3a6 sago007 2008-08-29 14:32 2750
            if (theGame2.bGameOver) minutes=0;
89c4a3a6 sago007 2008-08-29 14:32 2751
            if (theGame2.bGameOver) seconds=0;
89c4a3a6 sago007 2008-08-29 14:32 2752
            if (seconds>9)
89c4a3a6 sago007 2008-08-29 14:32 2753
                strHolder = itoa(minutes)+":"+itoa(seconds);
89c4a3a6 sago007 2008-08-29 14:32 2754
            else
89c4a3a6 sago007 2008-08-29 14:32 2755
                strHolder = itoa(minutes)+":0"+itoa(seconds);
6d48320c sago007 2009-03-28 17:06 2756
            //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 2757
            SFont_Write(screen,fBlueFont,theGame2.topx+310,theGame2.topy+150,strHolder.c_str());
89c4a3a6 sago007 2008-08-29 14:32 2758
        }
89c4a3a6 sago007 2008-08-29 14:32 2759
        else
89c4a3a6 sago007 2008-08-29 14:32 2760
        {
89c4a3a6 sago007 2008-08-29 14:32 2761
            int minutes = (abs((int)SDL_GetTicks()-(int)theGame2.gameStartedAt))/60/1000;
89c4a3a6 sago007 2008-08-29 14:32 2762
            int seconds = (abs((int)SDL_GetTicks()-(int)theGame2.gameStartedAt)%(60*1000))/1000;
89c4a3a6 sago007 2008-08-29 14:32 2763
            if (theGame2.bGameOver) minutes=(theGame2.gameEndedAfter/1000/60)%100;
89c4a3a6 sago007 2008-08-29 14:32 2764
            if (theGame2.bGameOver) seconds=(theGame2.gameEndedAfter/1000)%60;
89c4a3a6 sago007 2008-08-29 14:32 2765
            if (seconds>9)
89c4a3a6 sago007 2008-08-29 14:32 2766
                strHolder = itoa(minutes)+":"+itoa(seconds);
89c4a3a6 sago007 2008-08-29 14:32 2767
            else
89c4a3a6 sago007 2008-08-29 14:32 2768
                strHolder = itoa(minutes)+":0"+itoa(seconds);
89c4a3a6 sago007 2008-08-29 14:32 2769
            SFont_Write(screen,fBlueFont,theGame2.topx+310,theGame2.topy+150,strHolder.c_str());
89c4a3a6 sago007 2008-08-29 14:32 2770
        }
89c4a3a6 sago007 2008-08-29 14:32 2771
        strHolder = itoa(theGame2.chain);
89c4a3a6 sago007 2008-08-29 14:32 2772
        SFont_Write(screen,fBlueFont,theGame2.topx+310,theGame2.topy+200,strHolder.c_str());
89c4a3a6 sago007 2008-08-29 14:32 2773
        strHolder = itoa(theGame2.speedLevel);
89c4a3a6 sago007 2008-08-29 14:32 2774
        SFont_Write(screen,fBlueFont,theGame2.topx+310,theGame2.topy+250,strHolder.c_str());
89c4a3a6 sago007 2008-08-29 14:32 2775
    }
89c4a3a6 sago007 2008-08-29 14:32 2776
    //player2 finnish
89c4a3a6 sago007 2008-08-29 14:32 2777
89c4a3a6 sago007 2008-08-29 14:32 2778
    if (bNewGameOpen)
89c4a3a6 sago007 2008-08-29 14:32 2779
    {
89c4a3a6 sago007 2008-08-29 14:32 2780
        DrawIMG(b1player,screen,0,40);
89c4a3a6 sago007 2008-08-29 14:32 2781
        DrawIMG(b2players,screen,0,80);
1572de2b sago007 2008-09-11 18:15 2782
#if NETWORK
9050a50a sago007 2008-12-09 13:35 2783
        DrawIMG(bNetwork,screen,0,buttonXsize);
89c4a3a6 sago007 2008-08-29 14:32 2784
#endif
89c4a3a6 sago007 2008-08-29 14:32 2785
        if (b1playerOpen)
89c4a3a6 sago007 2008-08-29 14:32 2786
        {
9050a50a sago007 2008-12-09 13:35 2787
            DrawIMG(bEndless,screen,buttonXsize,40);
9050a50a sago007 2008-12-09 13:35 2788
            DrawIMG(bTimeTrial,screen,buttonXsize,80);
9050a50a sago007 2008-12-09 13:35 2789
            DrawIMG(bStageClear,screen,buttonXsize,buttonXsize);
9050a50a sago007 2008-12-09 13:35 2790
            DrawIMG(bPuzzle,screen,buttonXsize,160);
9050a50a sago007 2008-12-09 13:35 2791
            DrawIMG(bVsMode,screen,buttonXsize,200);
89c4a3a6 sago007 2008-08-29 14:32 2792
        }
89c4a3a6 sago007 2008-08-29 14:32 2793
        else
89c4a3a6 sago007 2008-08-29 14:32 2794
            if (b2playersOpen)
89c4a3a6 sago007 2008-08-29 14:32 2795
            {
9050a50a sago007 2008-12-09 13:35 2796
                DrawIMG(bTimeTrial,screen,buttonXsize,80);
9050a50a sago007 2008-12-09 13:35 2797
                DrawIMG(bVsMode,screen,buttonXsize,120);
89c4a3a6 sago007 2008-08-29 14:32 2798
            }
1572de2b sago007 2008-09-11 18:15 2799
#if NETWORK
89c4a3a6 sago007 2008-08-29 14:32 2800
            else
89c4a3a6 sago007 2008-08-29 14:32 2801
                if (bNetworkOpen)
89c4a3a6 sago007 2008-08-29 14:32 2802
                {
9050a50a sago007 2008-12-09 13:35 2803
                    DrawIMG(bHost,screen,buttonXsize,120);
9050a50a sago007 2008-12-09 13:35 2804
                    DrawIMG(bConnect,screen,buttonXsize,160);
89c4a3a6 sago007 2008-08-29 14:32 2805
                }
89c4a3a6 sago007 2008-08-29 14:32 2806
#endif
89c4a3a6 sago007 2008-08-29 14:32 2807
    }
89c4a3a6 sago007 2008-08-29 14:32 2808
    if (bOptionsOpen)
89c4a3a6 sago007 2008-08-29 14:32 2809
    {
9050a50a sago007 2008-12-09 13:35 2810
        DrawIMG(bConfigure,screen,buttonXsize,40);
9050a50a sago007 2008-12-09 13:35 2811
        DrawIMG(bSelectPuzzle,screen,buttonXsize,80);
9050a50a sago007 2008-12-09 13:35 2812
        DrawIMG(bVsModeConfig,screen,buttonXsize,120);
9050a50a sago007 2008-12-09 13:35 2813
        DrawIMG(bTheme,screen,buttonXsize,160);
89c4a3a6 sago007 2008-08-29 14:32 2814
    }
89c4a3a6 sago007 2008-08-29 14:32 2815
    if (bReplayOpen)
89c4a3a6 sago007 2008-08-29 14:32 2816
    {
89c4a3a6 sago007 2008-08-29 14:32 2817
        DrawIMG(bSave,screen,360,40);
89c4a3a6 sago007 2008-08-29 14:32 2818
        DrawIMG(bLoad,screen,360,80);
89c4a3a6 sago007 2008-08-29 14:32 2819
    }
89c4a3a6 sago007 2008-08-29 14:32 2820
    if (showOptions) DrawOptions(100,100);
89c4a3a6 sago007 2008-08-29 14:32 2821
89c4a3a6 sago007 2008-08-29 14:32 2822
    DrawBalls();
89c4a3a6 sago007 2008-08-29 14:32 2823
1572de2b sago007 2008-09-11 18:15 2824
#if DEBUG
89c4a3a6 sago007 2008-08-29 14:32 2825
    Frames++;
89c4a3a6 sago007 2008-08-29 14:32 2826
    if (SDL_GetTicks() >= Ticks + 1000)
89c4a3a6 sago007 2008-08-29 14:32 2827
    {
89c4a3a6 sago007 2008-08-29 14:32 2828
        if (Frames > 999) Frames=999;
78d03b38 sago007 2008-11-13 19:56 2829
        sprintf(FPS, "%lu fps", Frames);
89c4a3a6 sago007 2008-08-29 14:32 2830
        Frames = 0;
89c4a3a6 sago007 2008-08-29 14:32 2831
        Ticks = SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 2832
    }
89c4a3a6 sago007 2008-08-29 14:32 2833
89c4a3a6 sago007 2008-08-29 14:32 2834
    SFont_Write(screen,fBlueFont,800,4,FPS);
89c4a3a6 sago007 2008-08-29 14:32 2835
#endif
89c4a3a6 sago007 2008-08-29 14:32 2836
89c4a3a6 sago007 2008-08-29 14:32 2837
    //SDL_Flip(screen); Update screen is now called outside DrawEvrything, bacause the mouse needs to be painted
89c4a3a6 sago007 2008-08-29 14:32 2838
89c4a3a6 sago007 2008-08-29 14:32 2839
}
89c4a3a6 sago007 2008-08-29 14:32 2840
89c4a3a6 sago007 2008-08-29 14:32 2841
//Generates the standard background
89c4a3a6 sago007 2008-08-29 14:32 2842
void MakeBackground(int xsize,int ysize)
89c4a3a6 sago007 2008-08-29 14:32 2843
{
27ae0175 sago007 2009-01-30 06:02 2844
    int w = backgroundImage->w;
27ae0175 sago007 2009-01-30 06:02 2845
    int h = backgroundImage->h;
27ae0175 sago007 2009-01-30 06:02 2846
    for(int i=0;i*w<xsize;i++)
27ae0175 sago007 2009-01-30 06:02 2847
        for(int j=0;j*h<ysize;j++)
27ae0175 sago007 2009-01-30 06:02 2848
            DrawIMG(backgroundImage,background,i*w,j*h);
89c4a3a6 sago007 2008-08-29 14:32 2849
    standardBackground = true;
89c4a3a6 sago007 2008-08-29 14:32 2850
}
89c4a3a6 sago007 2008-08-29 14:32 2851
89c4a3a6 sago007 2008-08-29 14:32 2852
//Generates the background with red board backs
89c4a3a6 sago007 2008-08-29 14:32 2853
void MakeBackground(int xsize,int ysize,BlockGame &theGame, BlockGame &theGame2)
89c4a3a6 sago007 2008-08-29 14:32 2854
{
27ae0175 sago007 2009-01-30 06:02 2855
    MakeBackground(xsize,ysize);
89c4a3a6 sago007 2008-08-29 14:32 2856
    DrawIMG(boardBackBack,background,theGame.topx-60,theGame.topy-68);
89c4a3a6 sago007 2008-08-29 14:32 2857
    DrawIMG(boardBackBack,background,theGame2.topx-60,theGame2.topy-68);
89c4a3a6 sago007 2008-08-29 14:32 2858
    standardBackground = false;
89c4a3a6 sago007 2008-08-29 14:32 2859
}
89c4a3a6 sago007 2008-08-29 14:32 2860
89c4a3a6 sago007 2008-08-29 14:32 2861
void MakeBackground(int xsize, int ysize, BlockGame &theGame)
89c4a3a6 sago007 2008-08-29 14:32 2862
{
27ae0175 sago007 2009-01-30 06:02 2863
    MakeBackground(xsize,ysize);
89c4a3a6 sago007 2008-08-29 14:32 2864
    DrawIMG(boardBackBack,background,theGame.topx-60,theGame.topy-68);
89c4a3a6 sago007 2008-08-29 14:32 2865
    standardBackground = false;
89c4a3a6 sago007 2008-08-29 14:32 2866
}
89c4a3a6 sago007 2008-08-29 14:32 2867
89c4a3a6 sago007 2008-08-29 14:32 2868
89c4a3a6 sago007 2008-08-29 14:32 2869
//The function that allows the player to choose PuzzleLevel
89c4a3a6 sago007 2008-08-29 14:32 2870
int PuzzleLevelSelect()
89c4a3a6 sago007 2008-08-29 14:32 2871
{
89c4a3a6 sago007 2008-08-29 14:32 2872
    const int xplace = 200;
89c4a3a6 sago007 2008-08-29 14:32 2873
    const int yplace = 300;
89c4a3a6 sago007 2008-08-29 14:32 2874
    Uint8 *keys;
89c4a3a6 sago007 2008-08-29 14:32 2875
    int levelNr, mousex, mousey;
89c4a3a6 sago007 2008-08-29 14:32 2876
    bool levelSelected = false;
89c4a3a6 sago007 2008-08-29 14:32 2877
    bool tempBool;
89c4a3a6 sago007 2008-08-29 14:32 2878
89c4a3a6 sago007 2008-08-29 14:32 2879
    //Loads the levels, if they havn't been loaded:
89c4a3a6 sago007 2008-08-29 14:32 2880
    LoadPuzzleStages();
89c4a3a6 sago007 2008-08-29 14:32 2881
89c4a3a6 sago007 2008-08-29 14:32 2882
    //Keeps track of background;
89c4a3a6 sago007 2008-08-29 14:32 2883
    int nowTime=SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 2884
89c4a3a6 sago007 2008-08-29 14:32 2885
    ifstream puzzleFile(puzzleSavePath.c_str(),ios::binary);
27ae0175 sago007 2009-01-30 06:02 2886
    MakeBackground(xsize,ysize);
89c4a3a6 sago007 2008-08-29 14:32 2887
    if (puzzleFile)
89c4a3a6 sago007 2008-08-29 14:32 2888
    {
89c4a3a6 sago007 2008-08-29 14:32 2889
        for (int i=0;(i<nrOfPuzzles)&&(!puzzleFile.eof()); i++)
89c4a3a6 sago007 2008-08-29 14:32 2890
        {
89c4a3a6 sago007 2008-08-29 14:32 2891
            puzzleFile.read(reinterpret_cast<char*>(&tempBool),sizeof(bool));
89c4a3a6 sago007 2008-08-29 14:32 2892
            puzzleCleared[i] = tempBool;
89c4a3a6 sago007 2008-08-29 14:32 2893
        }
89c4a3a6 sago007 2008-08-29 14:32 2894
        puzzleFile.close();
89c4a3a6 sago007 2008-08-29 14:32 2895
    }
89c4a3a6 sago007 2008-08-29 14:32 2896
    else
89c4a3a6 sago007 2008-08-29 14:32 2897
    {
89c4a3a6 sago007 2008-08-29 14:32 2898
        tempBool = false;
89c4a3a6 sago007 2008-08-29 14:32 2899
        for (int i=0; i<nrOfPuzzles; i++)
89c4a3a6 sago007 2008-08-29 14:32 2900
            puzzleCleared[i] = tempBool;
89c4a3a6 sago007 2008-08-29 14:32 2901
    }
89c4a3a6 sago007 2008-08-29 14:32 2902
89c4a3a6 sago007 2008-08-29 14:32 2903
    do
89c4a3a6 sago007 2008-08-29 14:32 2904
    {
89c4a3a6 sago007 2008-08-29 14:32 2905
        nowTime=SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 2906
89c4a3a6 sago007 2008-08-29 14:32 2907
89c4a3a6 sago007 2008-08-29 14:32 2908
        DrawIMG(background, screen, 0, 0);
89c4a3a6 sago007 2008-08-29 14:32 2909
        DrawIMG(iCheckBoxArea,screen,xplace,yplace);
89c4a3a6 sago007 2008-08-29 14:32 2910
        SFont_Write(screen,fBlueFont,xplace+12,yplace+2,"Select Puzzle");
89c4a3a6 sago007 2008-08-29 14:32 2911
        //Now drow the fields you click in (and a V if clicked):
89c4a3a6 sago007 2008-08-29 14:32 2912
        for (int i = 0; i < nrOfPuzzles;i++)
89c4a3a6 sago007 2008-08-29 14:32 2913
        {
89c4a3a6 sago007 2008-08-29 14:32 2914
            DrawIMG(iLevelCheckBox,screen,xplace+10+(i%10)*50, yplace+60+(i/10)*50);
89c4a3a6 sago007 2008-08-29 14:32 2915
            if (puzzleCleared[i]==true) DrawIMG(iLevelCheck,screen,xplace+10+(i%10)*50, yplace+60+(i/10)*50);
89c4a3a6 sago007 2008-08-29 14:32 2916
        }
89c4a3a6 sago007 2008-08-29 14:32 2917
89c4a3a6 sago007 2008-08-29 14:32 2918
        SDL_Event event;
89c4a3a6 sago007 2008-08-29 14:32 2919
        while ( SDL_PollEvent(&event) )
89c4a3a6 sago007 2008-08-29 14:32 2920
            if ( event.type == SDL_KEYDOWN )
89c4a3a6 sago007 2008-08-29 14:32 2921
            {
89c4a3a6 sago007 2008-08-29 14:32 2922
                if ( event.key.keysym.sym == SDLK_ESCAPE ) {
89c4a3a6 sago007 2008-08-29 14:32 2923
                    levelNr = -1;
89c4a3a6 sago007 2008-08-29 14:32 2924
                    levelSelected = true;
89c4a3a6 sago007 2008-08-29 14:32 2925
                }
89c4a3a6 sago007 2008-08-29 14:32 2926
            }
89c4a3a6 sago007 2008-08-29 14:32 2927
89c4a3a6 sago007 2008-08-29 14:32 2928
        keys = SDL_GetKeyState(NULL);
89c4a3a6 sago007 2008-08-29 14:32 2929
89c4a3a6 sago007 2008-08-29 14:32 2930
        SDL_GetMouseState(&mousex,&mousey);
89c4a3a6 sago007 2008-08-29 14:32 2931
89c4a3a6 sago007 2008-08-29 14:32 2932
        // If the mouse button is released, make bMouseUp equal true
89c4a3a6 sago007 2008-08-29 14:32 2933
        if (!SDL_GetMouseState(NULL, NULL)&SDL_BUTTON(1))
89c4a3a6 sago007 2008-08-29 14:32 2934
        {
89c4a3a6 sago007 2008-08-29 14:32 2935
            bMouseUp=true;
89c4a3a6 sago007 2008-08-29 14:32 2936
        }
89c4a3a6 sago007 2008-08-29 14:32 2937
89c4a3a6 sago007 2008-08-29 14:32 2938
        if (SDL_GetMouseState(NULL,NULL)&SDL_BUTTON(1) && bMouseUp)
89c4a3a6 sago007 2008-08-29 14:32 2939
        {
89c4a3a6 sago007 2008-08-29 14:32 2940
            bMouseUp = false;
89c4a3a6 sago007 2008-08-29 14:32 2941
89c4a3a6 sago007 2008-08-29 14:32 2942
            int levelClicked = -1;
89c4a3a6 sago007 2008-08-29 14:32 2943
            int i;
89c4a3a6 sago007 2008-08-29 14:32 2944
            for (i = 0; (i<nrOfPuzzles/10)||((i<nrOfPuzzles/10+1)&&(nrOfPuzzles%10 != 0)); i++)
89c4a3a6 sago007 2008-08-29 14:32 2945
                if ((60+i*50<mousey-yplace)&&(mousey-yplace<i*50+92))
89c4a3a6 sago007 2008-08-29 14:32 2946
                    levelClicked = i*10;
89c4a3a6 sago007 2008-08-29 14:32 2947
            i++;
89c4a3a6 sago007 2008-08-29 14:32 2948
            if (levelClicked != -1)
89c4a3a6 sago007 2008-08-29 14:32 2949
                for (int j = 0; ((j<nrOfStageLevels%(i*10))&&(j<10)); j++)
89c4a3a6 sago007 2008-08-29 14:32 2950
                    if ((10+j*50<mousex-xplace)&&(mousex-xplace<j*50+42))
89c4a3a6 sago007 2008-08-29 14:32 2951
                    {
89c4a3a6 sago007 2008-08-29 14:32 2952
                        levelClicked +=j;
89c4a3a6 sago007 2008-08-29 14:32 2953
                        levelSelected = true;
89c4a3a6 sago007 2008-08-29 14:32 2954
                        levelNr = levelClicked;
89c4a3a6 sago007 2008-08-29 14:32 2955
                    }
89c4a3a6 sago007 2008-08-29 14:32 2956
        }
89c4a3a6 sago007 2008-08-29 14:32 2957
89c4a3a6 sago007 2008-08-29 14:32 2958
        DrawIMG(mouse,screen,mousex,mousey);
89c4a3a6 sago007 2008-08-29 14:32 2959
        SDL_Flip(screen); //draws it all to the screen
89c4a3a6 sago007 2008-08-29 14:32 2960
89c4a3a6 sago007 2008-08-29 14:32 2961
    } while (!levelSelected);
89c4a3a6 sago007 2008-08-29 14:32 2962
    DrawIMG(background, screen, 0, 0);
89c4a3a6 sago007 2008-08-29 14:32 2963
    return levelNr;
89c4a3a6 sago007 2008-08-29 14:32 2964
}
89c4a3a6 sago007 2008-08-29 14:32 2965
89c4a3a6 sago007 2008-08-29 14:32 2966
//The function that allows the player to choose Level number
89c4a3a6 sago007 2008-08-29 14:32 2967
int StageLevelSelect()
89c4a3a6 sago007 2008-08-29 14:32 2968
{
89c4a3a6 sago007 2008-08-29 14:32 2969
    const int xplace = 200;
89c4a3a6 sago007 2008-08-29 14:32 2970
    const int yplace = 300;
89c4a3a6 sago007 2008-08-29 14:32 2971
    Uint8 *keys;
89c4a3a6 sago007 2008-08-29 14:32 2972
    int levelNr, mousex, mousey;
89c4a3a6 sago007 2008-08-29 14:32 2973
    bool levelSelected = false;
89c4a3a6 sago007 2008-08-29 14:32 2974
    bool tempBool;
89c4a3a6 sago007 2008-08-29 14:32 2975
    Uint32 tempUInt32;
89c4a3a6 sago007 2008-08-29 14:32 2976
    Uint32 totalScore = 0;
89c4a3a6 sago007 2008-08-29 14:32 2977
    Uint32 totalTime = 0;
89c4a3a6 sago007 2008-08-29 14:32 2978
89c4a3a6 sago007 2008-08-29 14:32 2979
    //Keeps track of background;
89c4a3a6 sago007 2008-08-29 14:32 2980
    //int nowTime=SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 2981
27ae0175 sago007 2009-01-30 06:02 2982
    MakeBackground(xsize,ysize);
89c4a3a6 sago007 2008-08-29 14:32 2983
    ifstream stageFile(stageClearSavePath.c_str(),ios::binary);
89c4a3a6 sago007 2008-08-29 14:32 2984
    if (stageFile)
89c4a3a6 sago007 2008-08-29 14:32 2985
    {
89c4a3a6 sago007 2008-08-29 14:32 2986
        for (int i = 0; i<nrOfStageLevels; i++)
89c4a3a6 sago007 2008-08-29 14:32 2987
        {
89c4a3a6 sago007 2008-08-29 14:32 2988
            stageFile.read(reinterpret_cast<char*>(&tempBool),sizeof(bool));
89c4a3a6 sago007 2008-08-29 14:32 2989
            stageCleared[i]=tempBool;
89c4a3a6 sago007 2008-08-29 14:32 2990
        }
89c4a3a6 sago007 2008-08-29 14:32 2991
        if(!stageFile.eof())
89c4a3a6 sago007 2008-08-29 14:32 2992
        {
89c4a3a6 sago007 2008-08-29 14:32 2993
            for(int i=0; i<nrOfStageLevels; i++)
89c4a3a6 sago007 2008-08-29 14:32 2994
            {
89c4a3a6 sago007 2008-08-29 14:32 2995
                tempUInt32 = 0;
89c4a3a6 sago007 2008-08-29 14:32 2996
                if(!stageFile.eof())
89c4a3a6 sago007 2008-08-29 14:32 2997
                    stageFile.read(reinterpret_cast<char*>(&tempUInt32),sizeof(Uint32));
89c4a3a6 sago007 2008-08-29 14:32 2998
                stageScores[i]=tempUInt32;
89c4a3a6 sago007 2008-08-29 14:32 2999
                totalScore+=tempUInt32;
89c4a3a6 sago007 2008-08-29 14:32 3000
            }
89c4a3a6 sago007 2008-08-29 14:32 3001
            for(int i=0; i<nrOfStageLevels; i++)
89c4a3a6 sago007 2008-08-29 14:32 3002
            {
89c4a3a6 sago007 2008-08-29 14:32 3003
                tempUInt32 = 0;
89c4a3a6 sago007 2008-08-29 14:32 3004
                if(!stageFile.eof())
89c4a3a6 sago007 2008-08-29 14:32 3005
                    stageFile.read(reinterpret_cast<char*>(&tempUInt32),sizeof(Uint32));
89c4a3a6 sago007 2008-08-29 14:32 3006
                stageTimes[i]=tempUInt32;
89c4a3a6 sago007 2008-08-29 14:32 3007
                totalTime += tempUInt32;
89c4a3a6 sago007 2008-08-29 14:32 3008
            }
89c4a3a6 sago007 2008-08-29 14:32 3009
        }
89c4a3a6 sago007 2008-08-29 14:32 3010
        else
89c4a3a6 sago007 2008-08-29 14:32 3011
        {
89c4a3a6 sago007 2008-08-29 14:32 3012
            for(int i=0; i<nrOfStageLevels; i++)
89c4a3a6 sago007 2008-08-29 14:32 3013
            {
89c4a3a6 sago007 2008-08-29 14:32 3014
                 stageScores[i]=0;
89c4a3a6 sago007 2008-08-29 14:32 3015
                 stageTimes[i]=0;
89c4a3a6 sago007 2008-08-29 14:32 3016
            }
89c4a3a6 sago007 2008-08-29 14:32 3017
        }
89c4a3a6 sago007 2008-08-29 14:32 3018
        stageFile.close();
89c4a3a6 sago007 2008-08-29 14:32 3019
    }
89c4a3a6 sago007 2008-08-29 14:32 3020
    else
89c4a3a6 sago007 2008-08-29 14:32 3021
    {
89c4a3a6 sago007 2008-08-29 14:32 3022
        for (int i=0; i<nrOfStageLevels; i++)
89c4a3a6 sago007 2008-08-29 14:32 3023
        {
89c4a3a6 sago007 2008-08-29 14:32 3024
            stageCleared[i]= false;
89c4a3a6 sago007 2008-08-29 14:32 3025
            stageScores[i]=0;
89c4a3a6 sago007 2008-08-29 14:32 3026
            stageTimes[i]=0;
89c4a3a6 sago007 2008-08-29 14:32 3027
        }
89c4a3a6 sago007 2008-08-29 14:32 3028
    }
89c4a3a6 sago007 2008-08-29 14:32 3029
89c4a3a6 sago007 2008-08-29 14:32 3030
89c4a3a6 sago007 2008-08-29 14:32 3031
    do
89c4a3a6 sago007 2008-08-29 14:32 3032
    {
89c4a3a6 sago007 2008-08-29 14:32 3033
        //nowTime=SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 3034
        DrawIMG(background, screen, 0, 0);
89c4a3a6 sago007 2008-08-29 14:32 3035
        DrawIMG(iCheckBoxArea,screen,xplace,yplace);
89c4a3a6 sago007 2008-08-29 14:32 3036
        SFont_Write(screen,fBlueFont,xplace+12,yplace+2,"Stage Clear Level Select");
89c4a3a6 sago007 2008-08-29 14:32 3037
        for (int i = 0; i < nrOfStageLevels;i++)
89c4a3a6 sago007 2008-08-29 14:32 3038
        {
89c4a3a6 sago007 2008-08-29 14:32 3039
            DrawIMG(iLevelCheckBox,screen,xplace+10+(i%10)*50, yplace+60+(i/10)*50);
89c4a3a6 sago007 2008-08-29 14:32 3040
            if (stageCleared[i]==true) DrawIMG(iLevelCheck,screen,xplace+10+(i%10)*50, yplace+60+(i/10)*50);
89c4a3a6 sago007 2008-08-29 14:32 3041
        }
89c4a3a6 sago007 2008-08-29 14:32 3042
89c4a3a6 sago007 2008-08-29 14:32 3043
        SDL_Event event;
89c4a3a6 sago007 2008-08-29 14:32 3044
        while ( SDL_PollEvent(&event) )
89c4a3a6 sago007 2008-08-29 14:32 3045
            if ( event.type == SDL_KEYDOWN )
89c4a3a6 sago007 2008-08-29 14:32 3046
            {
89c4a3a6 sago007 2008-08-29 14:32 3047
                if ( event.key.keysym.sym == SDLK_ESCAPE ) {
89c4a3a6 sago007 2008-08-29 14:32 3048
                    levelNr = -1;
89c4a3a6 sago007 2008-08-29 14:32 3049
                    levelSelected = true;
89c4a3a6 sago007 2008-08-29 14:32 3050
                }
89c4a3a6 sago007 2008-08-29 14:32 3051
            }
89c4a3a6 sago007 2008-08-29 14:32 3052
89c4a3a6 sago007 2008-08-29 14:32 3053
        keys = SDL_GetKeyState(NULL);
89c4a3a6 sago007 2008-08-29 14:32 3054
89c4a3a6 sago007 2008-08-29 14:32 3055
        SDL_GetMouseState(&mousex,&mousey);
89c4a3a6 sago007 2008-08-29 14:32 3056
89c4a3a6 sago007 2008-08-29 14:32 3057
        // If the mouse button is released, make bMouseUp equal true
89c4a3a6 sago007 2008-08-29 14:32 3058
        if (!SDL_GetMouseState(NULL, NULL)&SDL_BUTTON(1))
89c4a3a6 sago007 2008-08-29 14:32 3059
        {
89c4a3a6 sago007 2008-08-29 14:32 3060
            bMouseUp=true;
89c4a3a6 sago007 2008-08-29 14:32 3061
        }
89c4a3a6 sago007 2008-08-29 14:32 3062
89c4a3a6 sago007 2008-08-29 14:32 3063
        if (SDL_GetMouseState(NULL,NULL)&SDL_BUTTON(1) && bMouseUp)
89c4a3a6 sago007 2008-08-29 14:32 3064
        {
89c4a3a6 sago007 2008-08-29 14:32 3065
            bMouseUp = false;
89c4a3a6 sago007 2008-08-29 14:32 3066
89c4a3a6 sago007 2008-08-29 14:32 3067
            int levelClicked = -1;
89c4a3a6 sago007 2008-08-29 14:32 3068
            int i;
89c4a3a6 sago007 2008-08-29 14:32 3069
            for (i = 0; (i<nrOfStageLevels/10)||((i<nrOfStageLevels/10+1)&&(nrOfStageLevels%10 != 0)); i++)
89c4a3a6 sago007 2008-08-29 14:32 3070
                if ((60+i*50<mousey-yplace)&&(mousey-yplace<i*50+92))
89c4a3a6 sago007 2008-08-29 14:32 3071
                    levelClicked = i*10;
89c4a3a6 sago007 2008-08-29 14:32 3072
            i++;
89c4a3a6 sago007 2008-08-29 14:32 3073
            if (levelClicked != -1)
89c4a3a6 sago007 2008-08-29 14:32 3074
                for (int j = 0; ((j<nrOfStageLevels%(i*10))&&(j<10)); j++)
89c4a3a6 sago007 2008-08-29 14:32 3075
                    if ((10+j*50<mousex-xplace)&&(mousex-xplace<j*50+42))
89c4a3a6 sago007 2008-08-29 14:32 3076
                    {
89c4a3a6 sago007 2008-08-29 14:32 3077
                        levelClicked +=j;
89c4a3a6 sago007 2008-08-29 14:32 3078
                        levelSelected = true;
89c4a3a6 sago007 2008-08-29 14:32 3079
                        levelNr = levelClicked;
89c4a3a6 sago007 2008-08-29 14:32 3080
                    }
89c4a3a6 sago007 2008-08-29 14:32 3081
        }
89c4a3a6 sago007 2008-08-29 14:32 3082
        //Find what we are over:
89c4a3a6 sago007 2008-08-29 14:32 3083
            int overLevel = -1;
89c4a3a6 sago007 2008-08-29 14:32 3084
            int i;
89c4a3a6 sago007 2008-08-29 14:32 3085
            for (i = 0; (i<nrOfStageLevels/10)||((i<nrOfStageLevels/10+1)&&(nrOfStageLevels%10 != 0)); i++)
89c4a3a6 sago007 2008-08-29 14:32 3086
                if ((60+i*50<mousey-yplace)&&(mousey-yplace<i*50+92))
89c4a3a6 sago007 2008-08-29 14:32 3087
                    overLevel = i*10;
89c4a3a6 sago007 2008-08-29 14:32 3088
            i++;
89c4a3a6 sago007 2008-08-29 14:32 3089
            if (overLevel != -1)
89c4a3a6 sago007 2008-08-29 14:32 3090
                for (int j = 0; ((j<nrOfStageLevels%(i*10))&&(j<10)); j++)
89c4a3a6 sago007 2008-08-29 14:32 3091
                    if ((10+j*50<mousex-xplace)&&(mousex-xplace<j*50+42))
89c4a3a6 sago007 2008-08-29 14:32 3092
                    {
89c4a3a6 sago007 2008-08-29 14:32 3093
                        overLevel +=j;
89c4a3a6 sago007 2008-08-29 14:32 3094
                        string scoreString = "Best score: 0";
89c4a3a6 sago007 2008-08-29 14:32 3095
                        string timeString = "Time used: -- : --";
89c4a3a6 sago007 2008-08-29 14:32 3096
                        
89c4a3a6 sago007 2008-08-29 14:32 3097
                        if(stageScores.at(overLevel)>0)
89c4a3a6 sago007 2008-08-29 14:32 3098
                            scoreString = "Best score: "+itoa(stageScores[overLevel]);
89c4a3a6 sago007 2008-08-29 14:32 3099
                        if(stageTimes[overLevel]>0)
89c4a3a6 sago007 2008-08-29 14:32 3100
                            timeString = "Time used: "+itoa(stageTimes[overLevel]/1000/60)+" : "+itoa2((stageTimes[overLevel]/1000)%60);
89c4a3a6 sago007 2008-08-29 14:32 3101
                        
89c4a3a6 sago007 2008-08-29 14:32 3102
                        SFont_Write(screen,fBlueFont,200,200,scoreString.c_str());
89c4a3a6 sago007 2008-08-29 14:32 3103
                        SFont_Write(screen,fBlueFont,200,250,timeString.c_str());
89c4a3a6 sago007 2008-08-29 14:32 3104
                        
89c4a3a6 sago007 2008-08-29 14:32 3105
                        overLevel;
89c4a3a6 sago007 2008-08-29 14:32 3106
                    }
89c4a3a6 sago007 2008-08-29 14:32 3107
            string totalString = "Total score: " +itoa(totalScore) + " in " + itoa(totalTime/1000/60) + " : " + itoa2((totalTime/1000)%60);
89c4a3a6 sago007 2008-08-29 14:32 3108
            SFont_Write(screen,fBlueFont,200,600,totalString.c_str());   
89c4a3a6 sago007 2008-08-29 14:32 3109
89c4a3a6 sago007 2008-08-29 14:32 3110
        DrawIMG(mouse,screen,mousex,mousey);
89c4a3a6 sago007 2008-08-29 14:32 3111
        SDL_Flip(screen); //draws it all to the screen
89c4a3a6 sago007 2008-08-29 14:32 3112
89c4a3a6 sago007 2008-08-29 14:32 3113
    } while (!levelSelected);
89c4a3a6 sago007 2008-08-29 14:32 3114
    DrawIMG(background, screen, 0, 0);
89c4a3a6 sago007 2008-08-29 14:32 3115
    return levelNr;
89c4a3a6 sago007 2008-08-29 14:32 3116
}
89c4a3a6 sago007 2008-08-29 14:32 3117
89c4a3a6 sago007 2008-08-29 14:32 3118
//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 3119
int startSingleVs()
89c4a3a6 sago007 2008-08-29 14:32 3120
{
89c4a3a6 sago007 2008-08-29 14:32 3121
    //Where to place the windows
89c4a3a6 sago007 2008-08-29 14:32 3122
    const int xplace = 200;
89c4a3a6 sago007 2008-08-29 14:32 3123
    const int yplace = 100;
89c4a3a6 sago007 2008-08-29 14:32 3124
    Uint8 *keys;	//To take keyboard input
89c4a3a6 sago007 2008-08-29 14:32 3125
    int mousex, mousey;	//To allow mouse
89c4a3a6 sago007 2008-08-29 14:32 3126
    bool done = false;	//When are we done?
89c4a3a6 sago007 2008-08-29 14:32 3127
27ae0175 sago007 2009-01-30 06:02 3128
    MakeBackground(xsize,ysize);
89c4a3a6 sago007 2008-08-29 14:32 3129
    DrawIMG(changeButtonsBack,background,xplace,yplace);
89c4a3a6 sago007 2008-08-29 14:32 3130
    SFont_Write(background,fBlueFont,xplace+10,yplace+10,"1 : Very Easy");
89c4a3a6 sago007 2008-08-29 14:32 3131
    SFont_Write(background,fBlueFont,xplace+10,yplace+40,"2 : Easy");
89c4a3a6 sago007 2008-08-29 14:32 3132
    SFont_Write(background,fBlueFont,xplace+10,yplace+70,"3 : Below Normal");
89c4a3a6 sago007 2008-08-29 14:32 3133
    SFont_Write(background,fBlueFont,xplace+10,yplace+100,"4 : Normal");
89c4a3a6 sago007 2008-08-29 14:32 3134
    SFont_Write(background,fBlueFont,xplace+10,yplace+130,"5 : Above Normal");
89c4a3a6 sago007 2008-08-29 14:32 3135
    SFont_Write(background,fBlueFont,xplace+10,yplace+160,"6 : Hard");
89c4a3a6 sago007 2008-08-29 14:32 3136
    SFont_Write(background,fBlueFont,xplace+10,yplace+190,"7 : Hardest");
89c4a3a6 sago007 2008-08-29 14:32 3137
    DrawIMG(background, screen, 0, 0);
89c4a3a6 sago007 2008-08-29 14:32 3138
    SDL_Flip(screen);
89c4a3a6 sago007 2008-08-29 14:32 3139
    do
89c4a3a6 sago007 2008-08-29 14:32 3140
    {
89c4a3a6 sago007 2008-08-29 14:32 3141
89c4a3a6 sago007 2008-08-29 14:32 3142
        SDL_Delay(10);
89c4a3a6 sago007 2008-08-29 14:32 3143
        SDL_Event event;
89c4a3a6 sago007 2008-08-29 14:32 3144
        while ( SDL_PollEvent(&event) )
89c4a3a6 sago007 2008-08-29 14:32 3145
            if ( event.type == SDL_KEYDOWN )
89c4a3a6 sago007 2008-08-29 14:32 3146
            {
89c4a3a6 sago007 2008-08-29 14:32 3147
                if ( event.key.keysym.sym == SDLK_ESCAPE ) {
89c4a3a6 sago007 2008-08-29 14:32 3148
                    done = true;
89c4a3a6 sago007 2008-08-29 14:32 3149
                }
89c4a3a6 sago007 2008-08-29 14:32 3150
                if ( event.key.keysym.sym == SDLK_RETURN ) {
89c4a3a6 sago007 2008-08-29 14:32 3151
                    done = true;
89c4a3a6 sago007 2008-08-29 14:32 3152
                }
89c4a3a6 sago007 2008-08-29 14:32 3153
                if ( event.key.keysym.sym == SDLK_KP_ENTER ) {
89c4a3a6 sago007 2008-08-29 14:32 3154
                    done = true;
89c4a3a6 sago007 2008-08-29 14:32 3155
                }
89c4a3a6 sago007 2008-08-29 14:32 3156
                if ( event.key.keysym.sym == SDLK_1 ) {
89c4a3a6 sago007 2008-08-29 14:32 3157
                    return 0;
89c4a3a6 sago007 2008-08-29 14:32 3158
                }
89c4a3a6 sago007 2008-08-29 14:32 3159
                if ( event.key.keysym.sym == SDLK_2 ) {
89c4a3a6 sago007 2008-08-29 14:32 3160
                    return 1;
89c4a3a6 sago007 2008-08-29 14:32 3161
                }
89c4a3a6 sago007 2008-08-29 14:32 3162
                if ( event.key.keysym.sym == SDLK_3 ) {
89c4a3a6 sago007 2008-08-29 14:32 3163
                    return 2;
89c4a3a6 sago007 2008-08-29 14:32 3164
                }
89c4a3a6 sago007 2008-08-29 14:32 3165
                if ( event.key.keysym.sym == SDLK_4 ) {
89c4a3a6 sago007 2008-08-29 14:32 3166
                    return 3;
89c4a3a6 sago007 2008-08-29 14:32 3167
                }
89c4a3a6 sago007 2008-08-29 14:32 3168
                if ( event.key.keysym.sym == SDLK_5 ) {
89c4a3a6 sago007 2008-08-29 14:32 3169
                    return 4;
89c4a3a6 sago007 2008-08-29 14:32 3170
                }
89c4a3a6 sago007 2008-08-29 14:32 3171
                if ( event.key.keysym.sym == SDLK_6 ) {
89c4a3a6 sago007 2008-08-29 14:32 3172
                    return 5;
89c4a3a6 sago007 2008-08-29 14:32 3173
                }
89c4a3a6 sago007 2008-08-29 14:32 3174
                if ( event.key.keysym.sym == SDLK_7 ) {
89c4a3a6 sago007 2008-08-29 14:32 3175
                    return 6;
89c4a3a6 sago007 2008-08-29 14:32 3176
                }
89c4a3a6 sago007 2008-08-29 14:32 3177
                if ( event.key.keysym.sym == SDLK_KP1 ) {
89c4a3a6 sago007 2008-08-29 14:32 3178
                    return 0;
89c4a3a6 sago007 2008-08-29 14:32 3179
                }
89c4a3a6 sago007 2008-08-29 14:32 3180
                if ( event.key.keysym.sym == SDLK_KP2 ) {
89c4a3a6 sago007 2008-08-29 14:32 3181
                    return 1;
89c4a3a6 sago007 2008-08-29 14:32 3182
                }
89c4a3a6 sago007 2008-08-29 14:32 3183
                if ( event.key.keysym.sym == SDLK_KP3 ) {
89c4a3a6 sago007 2008-08-29 14:32 3184
                    return 2;
89c4a3a6 sago007 2008-08-29 14:32 3185
                }
89c4a3a6 sago007 2008-08-29 14:32 3186
                if ( event.key.keysym.sym == SDLK_KP4 ) {
89c4a3a6 sago007 2008-08-29 14:32 3187
                    return 3;
89c4a3a6 sago007 2008-08-29 14:32 3188
                }
89c4a3a6 sago007 2008-08-29 14:32 3189
                if ( event.key.keysym.sym == SDLK_KP5 ) {
89c4a3a6 sago007 2008-08-29 14:32 3190
                    return 4;
89c4a3a6 sago007 2008-08-29 14:32 3191
                }
89c4a3a6 sago007 2008-08-29 14:32 3192
                if ( event.key.keysym.sym == SDLK_KP6 ) {
89c4a3a6 sago007 2008-08-29 14:32 3193
                    return 5;
89c4a3a6 sago007 2008-08-29 14:32 3194
                }
89c4a3a6 sago007 2008-08-29 14:32 3195
                if ( event.key.keysym.sym == SDLK_KP7 ) {
89c4a3a6 sago007 2008-08-29 14:32 3196
                    return 6;
89c4a3a6 sago007 2008-08-29 14:32 3197
                }
89c4a3a6 sago007 2008-08-29 14:32 3198
89c4a3a6 sago007 2008-08-29 14:32 3199
            }
89c4a3a6 sago007 2008-08-29 14:32 3200
89c4a3a6 sago007 2008-08-29 14:32 3201
        // If the mouse button is released, make bMouseUp equal true
89c4a3a6 sago007 2008-08-29 14:32 3202
        if (!SDL_GetMouseState(NULL, NULL)&SDL_BUTTON(1))
89c4a3a6 sago007 2008-08-29 14:32 3203
        {
89c4a3a6 sago007 2008-08-29 14:32 3204
            bMouseUp=true;
89c4a3a6 sago007 2008-08-29 14:32 3205
        }
89c4a3a6 sago007 2008-08-29 14:32 3206
89c4a3a6 sago007 2008-08-29 14:32 3207
        if (SDL_GetMouseState(NULL,NULL)&SDL_BUTTON(1) && bMouseUp)
89c4a3a6 sago007 2008-08-29 14:32 3208
        {
89c4a3a6 sago007 2008-08-29 14:32 3209
            bMouseUp = false;
89c4a3a6 sago007 2008-08-29 14:32 3210
89c4a3a6 sago007 2008-08-29 14:32 3211
            for (int i=0; i<7;i++)
89c4a3a6 sago007 2008-08-29 14:32 3212
            {
89c4a3a6 sago007 2008-08-29 14:32 3213
                if ((mousex>xplace+10)&&(mousex<xplace+410)&&(mousey>yplace+10+i*30)&&(mousey<yplace+38+i*30))
89c4a3a6 sago007 2008-08-29 14:32 3214
                    return i;
89c4a3a6 sago007 2008-08-29 14:32 3215
            }
89c4a3a6 sago007 2008-08-29 14:32 3216
        }
89c4a3a6 sago007 2008-08-29 14:32 3217
89c4a3a6 sago007 2008-08-29 14:32 3218
        SDL_GetMouseState(&mousex,&mousey);
89c4a3a6 sago007 2008-08-29 14:32 3219
        DrawIMG(background, screen, 0, 0);
89c4a3a6 sago007 2008-08-29 14:32 3220
        DrawIMG(mouse,screen,mousex,mousey);
89c4a3a6 sago007 2008-08-29 14:32 3221
        SDL_Flip(screen); //draws it all to the screen
89c4a3a6 sago007 2008-08-29 14:32 3222
    }while (!done);
89c4a3a6 sago007 2008-08-29 14:32 3223
89c4a3a6 sago007 2008-08-29 14:32 3224
89c4a3a6 sago007 2008-08-29 14:32 3225
    return 3; //Returns normal
89c4a3a6 sago007 2008-08-29 14:32 3226
}
89c4a3a6 sago007 2008-08-29 14:32 3227
89c4a3a6 sago007 2008-08-29 14:32 3228
//The function that allows the player to choose Level number
89c4a3a6 sago007 2008-08-29 14:32 3229
void startVsMenu()
89c4a3a6 sago007 2008-08-29 14:32 3230
{
89c4a3a6 sago007 2008-08-29 14:32 3231
    const int xplace = 200;
89c4a3a6 sago007 2008-08-29 14:32 3232
    const int yplace = 100;
89c4a3a6 sago007 2008-08-29 14:32 3233
    Uint8 *keys;
89c4a3a6 sago007 2008-08-29 14:32 3234
    int mousex, mousey;
89c4a3a6 sago007 2008-08-29 14:32 3235
    bool done = false;
89c4a3a6 sago007 2008-08-29 14:32 3236
89c4a3a6 sago007 2008-08-29 14:32 3237
    //Keeps track of background;
89c4a3a6 sago007 2008-08-29 14:32 3238
    //int nowTime=SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 3239
27ae0175 sago007 2009-01-30 06:02 3240
    MakeBackground(xsize,ysize);
89c4a3a6 sago007 2008-08-29 14:32 3241
    SFont_Write(background,fBlueFont,360,650,"Press ESC to accept");
27ae0175 sago007 2009-01-30 06:02 3242
    DrawIMG(bBack,background,xsize/2-120/2,600);
89c4a3a6 sago007 2008-08-29 14:32 3243
    do
89c4a3a6 sago007 2008-08-29 14:32 3244
    {
89c4a3a6 sago007 2008-08-29 14:32 3245
        //nowTime=SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 3246
        DrawIMG(background, screen, 0, 0);
89c4a3a6 sago007 2008-08-29 14:32 3247
        DrawIMG(changeButtonsBack,screen,xplace,yplace);
89c4a3a6 sago007 2008-08-29 14:32 3248
        SFont_Write(screen,fBlueFont,xplace+50,yplace+20,"Player 1");
89c4a3a6 sago007 2008-08-29 14:32 3249
        SFont_Write(screen,fBlueFont,xplace+300+50,yplace+20,"Player 2");
89c4a3a6 sago007 2008-08-29 14:32 3250
        SFont_Write(screen,fBlueFont,xplace+50,yplace+70,"Speed:");
89c4a3a6 sago007 2008-08-29 14:32 3251
        SFont_Write(screen,fBlueFont,xplace+50+300,yplace+70,"Speed:");
89c4a3a6 sago007 2008-08-29 14:32 3252
        for (int i=0; i<5;i++)
89c4a3a6 sago007 2008-08-29 14:32 3253
        {
89c4a3a6 sago007 2008-08-29 14:32 3254
            char levelS[2]; //level string;
89c4a3a6 sago007 2008-08-29 14:32 3255
            levelS[0]='1'+i;
89c4a3a6 sago007 2008-08-29 14:32 3256
            levelS[1]=0;
89c4a3a6 sago007 2008-08-29 14:32 3257
            SFont_Write(screen,fBlueFont,xplace+50+i*40,yplace+110,levelS);
89c4a3a6 sago007 2008-08-29 14:32 3258
            DrawIMG(iLevelCheckBox,screen,xplace+50+i*40,yplace+150);
89c4a3a6 sago007 2008-08-29 14:32 3259
            if (player1Speed==i)
89c4a3a6 sago007 2008-08-29 14:32 3260
                DrawIMG(iLevelCheck,screen,xplace+50+i*40,yplace+150);
89c4a3a6 sago007 2008-08-29 14:32 3261
        }
89c4a3a6 sago007 2008-08-29 14:32 3262
        for (int i=0; i<5;i++)
89c4a3a6 sago007 2008-08-29 14:32 3263
        {
89c4a3a6 sago007 2008-08-29 14:32 3264
            char levelS[2]; //level string;
89c4a3a6 sago007 2008-08-29 14:32 3265
            levelS[0]='1'+i;
89c4a3a6 sago007 2008-08-29 14:32 3266
            levelS[1]=0;
89c4a3a6 sago007 2008-08-29 14:32 3267
            SFont_Write(screen,fBlueFont,xplace+300+50+i*40,yplace+110,levelS);
89c4a3a6 sago007 2008-08-29 14:32 3268
            DrawIMG(iLevelCheckBox,screen,xplace+300+50+i*40,yplace+150);
89c4a3a6 sago007 2008-08-29 14:32 3269
            if (player2Speed==i)
89c4a3a6 sago007 2008-08-29 14:32 3270
                DrawIMG(iLevelCheck,screen,xplace+300+50+i*40,yplace+150);
89c4a3a6 sago007 2008-08-29 14:32 3271
        }
89c4a3a6 sago007 2008-08-29 14:32 3272
        SFont_Write(screen,fBlueFont,xplace+50,yplace+200,"AI: ");
89c4a3a6 sago007 2008-08-29 14:32 3273
        DrawIMG(iLevelCheckBox,screen,xplace+50+70,yplace+200);
89c4a3a6 sago007 2008-08-29 14:32 3274
        if (player1AI)
89c4a3a6 sago007 2008-08-29 14:32 3275
            DrawIMG(iLevelCheck,screen,xplace+50+70,yplace+200);
89c4a3a6 sago007 2008-08-29 14:32 3276
        SFont_Write(screen,fBlueFont,xplace+50,yplace+250,"TT Handicap: ");
89c4a3a6 sago007 2008-08-29 14:32 3277
        SFont_Write(screen,fBlueFont,xplace+50+300,yplace+200,"AI: ");
89c4a3a6 sago007 2008-08-29 14:32 3278
        DrawIMG(iLevelCheckBox,screen,xplace+50+70+300,yplace+200);
89c4a3a6 sago007 2008-08-29 14:32 3279
        if (player2AI)
89c4a3a6 sago007 2008-08-29 14:32 3280
            DrawIMG(iLevelCheck,screen,xplace+50+70+300,yplace+200);
89c4a3a6 sago007 2008-08-29 14:32 3281
        SFont_Write(screen,fBlueFont,xplace+50+300,yplace+250,"TT Handicap: ");
89c4a3a6 sago007 2008-08-29 14:32 3282
        for (int i=0; i<5;i++)
89c4a3a6 sago007 2008-08-29 14:32 3283
        {
89c4a3a6 sago007 2008-08-29 14:32 3284
            char levelS[2]; //level string;
89c4a3a6 sago007 2008-08-29 14:32 3285
            levelS[0]='1'+i;
89c4a3a6 sago007 2008-08-29 14:32 3286
            levelS[1]=0;
89c4a3a6 sago007 2008-08-29 14:32 3287
            SFont_Write(screen,fBlueFont,xplace+50+i*40,yplace+290,levelS);
89c4a3a6 sago007 2008-08-29 14:32 3288
            DrawIMG(iLevelCheckBox,screen,xplace+50+i*40,yplace+330);
89c4a3a6 sago007 2008-08-29 14:32 3289
            if (player1handicap==i)
89c4a3a6 sago007 2008-08-29 14:32 3290
                DrawIMG(iLevelCheck,screen,xplace+50+i*40,yplace+330);
89c4a3a6 sago007 2008-08-29 14:32 3291
        }
89c4a3a6 sago007 2008-08-29 14:32 3292
        for (int i=0; i<5;i++)
89c4a3a6 sago007 2008-08-29 14:32 3293
        {
89c4a3a6 sago007 2008-08-29 14:32 3294
            char levelS[2]; //level string;
89c4a3a6 sago007 2008-08-29 14:32 3295
            levelS[0]='1'+i;
89c4a3a6 sago007 2008-08-29 14:32 3296
            levelS[1]=0;
89c4a3a6 sago007 2008-08-29 14:32 3297
            SFont_Write(screen,fBlueFont,xplace+50+i*40+300,yplace+290,levelS);
89c4a3a6 sago007 2008-08-29 14:32 3298
            DrawIMG(iLevelCheckBox,screen,xplace+50+i*40+300,yplace+330);
89c4a3a6 sago007 2008-08-29 14:32 3299
            if (player2handicap==i)
89c4a3a6 sago007 2008-08-29 14:32 3300
                DrawIMG(iLevelCheck,screen,xplace+50+i*40+300,yplace+330);
89c4a3a6 sago007 2008-08-29 14:32 3301
        }
89c4a3a6 sago007 2008-08-29 14:32 3302
89c4a3a6 sago007 2008-08-29 14:32 3303
        SDL_Event event;
89c4a3a6 sago007 2008-08-29 14:32 3304
        while ( SDL_PollEvent(&event) )
89c4a3a6 sago007 2008-08-29 14:32 3305
            if ( event.type == SDL_KEYDOWN )
89c4a3a6 sago007 2008-08-29 14:32 3306
            {
89c4a3a6 sago007 2008-08-29 14:32 3307
                if ( event.key.keysym.sym == SDLK_ESCAPE ) {
89c4a3a6 sago007 2008-08-29 14:32 3308
                    done = true;
89c4a3a6 sago007 2008-08-29 14:32 3309
                }
89c4a3a6 sago007 2008-08-29 14:32 3310
                if ( event.key.keysym.sym == SDLK_RETURN ) {
89c4a3a6 sago007 2008-08-29 14:32 3311
                    done = true;
89c4a3a6 sago007 2008-08-29 14:32 3312
                }
89c4a3a6 sago007 2008-08-29 14:32 3313
                if ( event.key.keysym.sym == SDLK_KP_ENTER ) {
89c4a3a6 sago007 2008-08-29 14:32 3314
                    done = true;
89c4a3a6 sago007 2008-08-29 14:32 3315
                }
89c4a3a6 sago007 2008-08-29 14:32 3316
            }
89c4a3a6 sago007 2008-08-29 14:32 3317
89c4a3a6 sago007 2008-08-29 14:32 3318
        keys = SDL_GetKeyState(NULL);
89c4a3a6 sago007 2008-08-29 14:32 3319
89c4a3a6 sago007 2008-08-29 14:32 3320
        SDL_GetMouseState(&mousex,&mousey);
89c4a3a6 sago007 2008-08-29 14:32 3321
89c4a3a6 sago007 2008-08-29 14:32 3322
        // If the mouse button is released, make bMouseUp equal true
89c4a3a6 sago007 2008-08-29 14:32 3323
        if (!SDL_GetMouseState(NULL, NULL)&SDL_BUTTON(1))
89c4a3a6 sago007 2008-08-29 14:32 3324
        {
89c4a3a6 sago007 2008-08-29 14:32 3325
            bMouseUp=true;
89c4a3a6 sago007 2008-08-29 14:32 3326
        }
89c4a3a6 sago007 2008-08-29 14:32 3327
89c4a3a6 sago007 2008-08-29 14:32 3328
        if (SDL_GetMouseState(NULL,NULL)&SDL_BUTTON(1) && bMouseUp)
89c4a3a6 sago007 2008-08-29 14:32 3329
        {
89c4a3a6 sago007 2008-08-29 14:32 3330
            bMouseUp = false;
89c4a3a6 sago007 2008-08-29 14:32 3331
89c4a3a6 sago007 2008-08-29 14:32 3332
            if ((mousex>xplace+50+70)&&(mousey>yplace+200)&&(mousex<xplace+50+70+30)&&(mousey<yplace+200+30))
89c4a3a6 sago007 2008-08-29 14:32 3333
                player1AI=!player1AI;
89c4a3a6 sago007 2008-08-29 14:32 3334
            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 3335
                player2AI=!player2AI;
89c4a3a6 sago007 2008-08-29 14:32 3336
            for (int i=0; i<5;i++)
89c4a3a6 sago007 2008-08-29 14:32 3337
            {
89c4a3a6 sago007 2008-08-29 14:32 3338
                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 3339
                    player1Speed=i;
89c4a3a6 sago007 2008-08-29 14:32 3340
            }
89c4a3a6 sago007 2008-08-29 14:32 3341
            for (int i=0; i<5;i++)
89c4a3a6 sago007 2008-08-29 14:32 3342
            {
89c4a3a6 sago007 2008-08-29 14:32 3343
                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 3344
                    player2Speed=i;
89c4a3a6 sago007 2008-08-29 14:32 3345
            }
89c4a3a6 sago007 2008-08-29 14:32 3346
            for (int i=0; i<5;i++)
89c4a3a6 sago007 2008-08-29 14:32 3347
            {
89c4a3a6 sago007 2008-08-29 14:32 3348
                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 3349
                    player1handicap=i;
89c4a3a6 sago007 2008-08-29 14:32 3350
            }
89c4a3a6 sago007 2008-08-29 14:32 3351
            for (int i=0; i<5;i++)
89c4a3a6 sago007 2008-08-29 14:32 3352
            {
89c4a3a6 sago007 2008-08-29 14:32 3353
                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 3354
                    player2handicap=i;
89c4a3a6 sago007 2008-08-29 14:32 3355
            }
27ae0175 sago007 2009-01-30 06:02 3356
            if ((mousex>xsize/2-120/2)&&(mousex<xsize/2+120/2)&&(mousey>600)&&(mousey<640))
89c4a3a6 sago007 2008-08-29 14:32 3357
                done = true;
89c4a3a6 sago007 2008-08-29 14:32 3358
        }
89c4a3a6 sago007 2008-08-29 14:32 3359
89c4a3a6 sago007 2008-08-29 14:32 3360
        DrawIMG(mouse,screen,mousex,mousey);
89c4a3a6 sago007 2008-08-29 14:32 3361
        SDL_Flip(screen); //draws it all to the screen
89c4a3a6 sago007 2008-08-29 14:32 3362
        SDL_Delay(10);
89c4a3a6 sago007 2008-08-29 14:32 3363
89c4a3a6 sago007 2008-08-29 14:32 3364
    } while (!done);
89c4a3a6 sago007 2008-08-29 14:32 3365
    DrawIMG(background, screen, 0, 0);
89c4a3a6 sago007 2008-08-29 14:32 3366
}
89c4a3a6 sago007 2008-08-29 14:32 3367
89c4a3a6 sago007 2008-08-29 14:32 3368
//This function will promt for the user to select another file for puzzle mode
89c4a3a6 sago007 2008-08-29 14:32 3369
void changePuzzleLevels()
89c4a3a6 sago007 2008-08-29 14:32 3370
{
89c4a3a6 sago007 2008-08-29 14:32 3371
    char theFileName[30];
89c4a3a6 sago007 2008-08-29 14:32 3372
    strcpy(theFileName,puzzleName.c_str());
89c4a3a6 sago007 2008-08-29 14:32 3373
    for (int i=puzzleName.length();i<30;i++)
89c4a3a6 sago007 2008-08-29 14:32 3374
        theFileName[i]=' ';
89c4a3a6 sago007 2008-08-29 14:32 3375
    theFileName[29]=0;
89c4a3a6 sago007 2008-08-29 14:32 3376
    if (OpenFileDialogbox(200,100,theFileName))
89c4a3a6 sago007 2008-08-29 14:32 3377
    {
89c4a3a6 sago007 2008-08-29 14:32 3378
        for (int i=28;((theFileName[i]==' ')&&(i>0));i--)
89c4a3a6 sago007 2008-08-29 14:32 3379
            theFileName[i]=0;
89c4a3a6 sago007 2008-08-29 14:32 3380
        puzzleName = theFileName;
89c4a3a6 sago007 2008-08-29 14:32 3381
#if defined(__unix__)
89c4a3a6 sago007 2008-08-29 14:32 3382
        string home = getenv("HOME");
89c4a3a6 sago007 2008-08-29 14:32 3383
        puzzleSavePath = home+"/.gamesaves/blockattack/"+puzzleName+".save";
89c4a3a6 sago007 2008-08-29 14:32 3384
#elif defined(_WIN32)
89c4a3a6 sago007 2008-08-29 14:32 3385
        string home = getMyDocumentsPath();
89c4a3a6 sago007 2008-08-29 14:32 3386
        if (&home!=NULL)
89c4a3a6 sago007 2008-08-29 14:32 3387
        {
89c4a3a6 sago007 2008-08-29 14:32 3388
            puzzleSavePath = home+"/My Games/blockattack/"+puzzleName+".save";
89c4a3a6 sago007 2008-08-29 14:32 3389
        }
89c4a3a6 sago007 2008-08-29 14:32 3390
        else
89c4a3a6 sago007 2008-08-29 14:32 3391
        {
89c4a3a6 sago007 2008-08-29 14:32 3392
            puzzleSavePath = puzzleName+".save";
89c4a3a6 sago007 2008-08-29 14:32 3393
        }
89c4a3a6 sago007 2008-08-29 14:32 3394
#else
89c4a3a6 sago007 2008-08-29 14:32 3395
        puzzleSavePath = puzzleName+".save";
89c4a3a6 sago007 2008-08-29 14:32 3396
#endif
89c4a3a6 sago007 2008-08-29 14:32 3397
    }
89c4a3a6 sago007 2008-08-29 14:32 3398
89c4a3a6 sago007 2008-08-29 14:32 3399
}
89c4a3a6 sago007 2008-08-29 14:32 3400
6d48320c sago007 2009-03-28 17:06 3401
class Keymenu {
6d48320c sago007 2009-03-28 17:06 3402
    static void setXY(int x, int y)
6d48320c sago007 2009-03-28 17:06 3403
    {
6d48320c sago007 2009-03-28 17:06 3404
        keymenu.x = x;
6d48320c sago007 2009-03-28 17:06 3405
        keymenu.y = y;
6d48320c sago007 2009-03-28 17:06 3406
    }
6d48320c sago007 2009-03-28 17:06 3407
6d48320c sago007 2009-03-28 17:06 3408
    static void startMenu()
6d48320c sago007 2009-03-28 17:06 3409
    {
6d48320c sago007 2009-03-28 17:06 3410
        keymenu.activated = true;
6d48320c sago007 2009-03-28 17:06 3411
        setXY(0,0);
6d48320c sago007 2009-03-28 17:06 3412
    }
6d48320c sago007 2009-03-28 17:06 3413
6d48320c sago007 2009-03-28 17:06 3414
    static void stopMenu()
6d48320c sago007 2009-03-28 17:06 3415
    {
6d48320c sago007 2009-03-28 17:06 3416
        keymenu.activated = false;
6d48320c sago007 2009-03-28 17:06 3417
    }
6d48320c sago007 2009-03-28 17:06 3418
};
6d48320c sago007 2009-03-28 17:06 3419
1572de2b sago007 2008-09-11 18:15 3420
#if NETWORK
89c4a3a6 sago007 2008-08-29 14:32 3421
#include "NetworkThing.hpp"
eec83b7d sago007 2009-03-29 15:46 3422
//#include "MenuSystem.h"
89c4a3a6 sago007 2008-08-29 14:32 3423
#endif
89c4a3a6 sago007 2008-08-29 14:32 3424
89c4a3a6 sago007 2008-08-29 14:32 3425
//The main function, quite big... too big
89c4a3a6 sago007 2008-08-29 14:32 3426
int main(int argc, char *argv[])
89c4a3a6 sago007 2008-08-29 14:32 3427
{
89c4a3a6 sago007 2008-08-29 14:32 3428
    //We first create the folder there we will save (only on UNIX systems)
89c4a3a6 sago007 2008-08-29 14:32 3429
    //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 3430
#if defined(__unix__)
42f8ed5f sago007 2009-03-05 11:47 3431
    //Compiler warns about unused result. The users envisonment should normally give the user all the information he needs
42f8ed5f sago007 2009-03-05 11:47 3432
    if(system("mkdir -p ~/.gamesaves/blockattack/screenshots"))
42f8ed5f sago007 2009-03-05 11:47 3433
        cout << "mkdir error creating ~/.gamesaves/blockattack/screenshots" << endl;
42f8ed5f sago007 2009-03-05 11:47 3434
    if(system("mkdir -p ~/.gamesaves/blockattack/replays"))
42f8ed5f sago007 2009-03-05 11:47 3435
        cout << "mkdir error creating ~/.gamesaves/blockattack/replays" << endl;
42f8ed5f sago007 2009-03-05 11:47 3436
    if(system("mkdir -p ~/.gamesaves/blockattack/puzzles"))
42f8ed5f sago007 2009-03-05 11:47 3437
        cout << "mkdir error creating ~/.gamesaves/blockattack/puzzles" << endl;
89c4a3a6 sago007 2008-08-29 14:32 3438
#elif defined(_WIN32)
89c4a3a6 sago007 2008-08-29 14:32 3439
    //Now for Windows NT/2k/xp/2k3 etc.
89c4a3a6 sago007 2008-08-29 14:32 3440
    string tempA = getMyDocumentsPath()+"\\My Games";
c325f4fa sago007 2009-05-09 18:33 3441
    CreateDirectory(tempA.c_str(),NULL);
89c4a3a6 sago007 2008-08-29 14:32 3442
    tempA = getMyDocumentsPath()+"\\My Games\\blockattack";
c325f4fa sago007 2009-05-09 18:33 3443
    CreateDirectory(tempA.c_str(),NULL);
89c4a3a6 sago007 2008-08-29 14:32 3444
    tempA = getMyDocumentsPath()+"\\My Games\\blockattack\\replays";
c325f4fa sago007 2009-05-09 18:33 3445
    CreateDirectory(tempA.c_str(),NULL);
89c4a3a6 sago007 2008-08-29 14:32 3446
    tempA = getMyDocumentsPath()+"\\My Games\\blockattack\\screenshots";
c325f4fa sago007 2009-05-09 18:33 3447
    CreateDirectory(tempA.c_str(),NULL);
89c4a3a6 sago007 2008-08-29 14:32 3448
#endif
78d03b38 sago007 2008-11-13 19:56 3449
    highPriority = false;	//if true the game will take most resources, but increase framerate.
89c4a3a6 sago007 2008-08-29 14:32 3450
    bFullscreen = false;
89c4a3a6 sago007 2008-08-29 14:32 3451
    if (argc > 1)
89c4a3a6 sago007 2008-08-29 14:32 3452
    {
89c4a3a6 sago007 2008-08-29 14:32 3453
        int argumentNr = 1;
89c4a3a6 sago007 2008-08-29 14:32 3454
        forceredraw = 2;
89c4a3a6 sago007 2008-08-29 14:32 3455
        while (argc>argumentNr)
89c4a3a6 sago007 2008-08-29 14:32 3456
        {
89c4a3a6 sago007 2008-08-29 14:32 3457
            char helpString[] = "--help";
89c4a3a6 sago007 2008-08-29 14:32 3458
            char priorityString[] = "-priority";
89c4a3a6 sago007 2008-08-29 14:32 3459
            char forceRedrawString[] = "-forceredraw";
89c4a3a6 sago007 2008-08-29 14:32 3460
            char forcepartdrawString[] = "-forcepartdraw";
89c4a3a6 sago007 2008-08-29 14:32 3461
            char singlePuzzleString[] = "-SP";
89c4a3a6 sago007 2008-08-29 14:32 3462
            char noSoundAtAll[] = "-nosound";
89c4a3a6 sago007 2008-08-29 14:32 3463
            char IntegratedEditor[] = "-editor";
89c4a3a6 sago007 2008-08-29 14:32 3464
            if (!(strncmp(argv[argumentNr],helpString,6)))
89c4a3a6 sago007 2008-08-29 14:32 3465
            {
89c4a3a6 sago007 2008-08-29 14:32 3466
                cout << "Block Attack Help" << endl << "--help Display this message" <<
89c4a3a6 sago007 2008-08-29 14:32 3467
                endl << "-priority  Starts game in high priority" << endl <<
89c4a3a6 sago007 2008-08-29 14:32 3468
                "-forceredraw  Redraw the whole screen every frame, prevents garbage" << endl <<
89c4a3a6 sago007 2008-08-29 14:32 3469
                "-forcepartdraw  Only draw what is changed, sometimes cause garbage" << endl <<
89c4a3a6 sago007 2008-08-29 14:32 3470
                "-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 3471
                "-editor  Starts the build-in editor (not yet integrated)" << endl;
89c4a3a6 sago007 2008-08-29 14:32 3472
#ifdef WIN32
89c4a3a6 sago007 2008-08-29 14:32 3473
                system("Pause");
89c4a3a6 sago007 2008-08-29 14:32 3474
#endif
89c4a3a6 sago007 2008-08-29 14:32 3475
                return 0;
89c4a3a6 sago007 2008-08-29 14:32 3476
            }
89c4a3a6 sago007 2008-08-29 14:32 3477
            if (!(strncmp(argv[argumentNr],priorityString,9)))
89c4a3a6 sago007 2008-08-29 14:32 3478
            {
89c4a3a6 sago007 2008-08-29 14:32 3479
                cout << "Priority mode" << endl;
89c4a3a6 sago007 2008-08-29 14:32 3480
                highPriority = true;
89c4a3a6 sago007 2008-08-29 14:32 3481
            }
89c4a3a6 sago007 2008-08-29 14:32 3482
            if (!(strncmp(argv[argumentNr],forceRedrawString,12)))
89c4a3a6 sago007 2008-08-29 14:32 3483
            {
89c4a3a6 sago007 2008-08-29 14:32 3484
                forceredraw = 1;
89c4a3a6 sago007 2008-08-29 14:32 3485
            }
89c4a3a6 sago007 2008-08-29 14:32 3486
            if (!(strncmp(argv[argumentNr],forcepartdrawString,14)))
89c4a3a6 sago007 2008-08-29 14:32 3487
            {
89c4a3a6 sago007 2008-08-29 14:32 3488
                forceredraw = 2;
89c4a3a6 sago007 2008-08-29 14:32 3489
            }
89c4a3a6 sago007 2008-08-29 14:32 3490
            if (!(strncmp(argv[argumentNr],singlePuzzleString,3)))
89c4a3a6 sago007 2008-08-29 14:32 3491
            {
89c4a3a6 sago007 2008-08-29 14:32 3492
                singlePuzzle = true; //We will just have one puzzle
89c4a3a6 sago007 2008-08-29 14:32 3493
                if (argv[argumentNr+1][1]!=0)
89c4a3a6 sago007 2008-08-29 14:32 3494
                    singlePuzzleNr = (argv[argumentNr+1][1]-'0')+(argv[argumentNr+1][0]-'0')*10;
89c4a3a6 sago007 2008-08-29 14:32 3495
                else
89c4a3a6 sago007 2008-08-29 14:32 3496
                    singlePuzzleNr = (argv[argumentNr+1][0]-'0');
89c4a3a6 sago007 2008-08-29 14:32 3497
                singlePuzzleFile = argv[argumentNr+2];
89c4a3a6 sago007 2008-08-29 14:32 3498
                argumentNr+=2;
89c4a3a6 sago007 2008-08-29 14:32 3499
                cout << "SinglePuzzleMode, File: " << singlePuzzleFile << " and Level: " << singlePuzzleNr << endl;
89c4a3a6 sago007 2008-08-29 14:32 3500
            }
89c4a3a6 sago007 2008-08-29 14:32 3501
            if (!(strncmp(argv[argumentNr],noSoundAtAll,8)))
89c4a3a6 sago007 2008-08-29 14:32 3502
            {
89c4a3a6 sago007 2008-08-29 14:32 3503
                NoSound = true;
89c4a3a6 sago007 2008-08-29 14:32 3504
            }
89c4a3a6 sago007 2008-08-29 14:32 3505
            if (!(strncmp(argv[argumentNr],IntegratedEditor,7)))
89c4a3a6 sago007 2008-08-29 14:32 3506
            {
1572de2b sago007 2008-09-11 18:15 3507
                #if LEVELEDITOR
89c4a3a6 sago007 2008-08-29 14:32 3508
                editorMode = true;
89c4a3a6 sago007 2008-08-29 14:32 3509
                cout << "Integrated Puzzle Editor Activated" << endl;
1572de2b sago007 2008-09-11 18:15 3510
                #else
1572de2b sago007 2008-09-11 18:15 3511
                cout << "Integrated Puzzle Editor was disabled at compile time" << endl;
1572de2b sago007 2008-09-11 18:15 3512
                #endif
89c4a3a6 sago007 2008-08-29 14:32 3513
            }
89c4a3a6 sago007 2008-08-29 14:32 3514
            argumentNr++;
89c4a3a6 sago007 2008-08-29 14:32 3515
        }   //while
89c4a3a6 sago007 2008-08-29 14:32 3516
    }   //if
89c4a3a6 sago007 2008-08-29 14:32 3517
89c4a3a6 sago007 2008-08-29 14:32 3518
    SoundEnabled = true;
89c4a3a6 sago007 2008-08-29 14:32 3519
    MusicEnabled = true;
89c4a3a6 sago007 2008-08-29 14:32 3520
    int mousex, mousey;   //Mouse coordinates
89c4a3a6 sago007 2008-08-29 14:32 3521
    showOptions = false;
89c4a3a6 sago007 2008-08-29 14:32 3522
    b1playerOpen = false;
89c4a3a6 sago007 2008-08-29 14:32 3523
    b2playersOpen = false;
89c4a3a6 sago007 2008-08-29 14:32 3524
    bReplayOpen = false;
89c4a3a6 sago007 2008-08-29 14:32 3525
    bScreenLocked = false;
89c4a3a6 sago007 2008-08-29 14:32 3526
    bool twoPlayers = false;	//true if two players splitscreen
89c4a3a6 sago007 2008-08-29 14:32 3527
    bool vsMode = false;
89c4a3a6 sago007 2008-08-29 14:32 3528
    theTopScoresEndless = Highscore(1);
89c4a3a6 sago007 2008-08-29 14:32 3529
    theTopScoresTimeTrial = Highscore(2);
89c4a3a6 sago007 2008-08-29 14:32 3530
    drawBalls = true;
89c4a3a6 sago007 2008-08-29 14:32 3531
    puzzleLoaded = false;
89c4a3a6 sago007 2008-08-29 14:32 3532
    bool weWhereConnected = false;
89c4a3a6 sago007 2008-08-29 14:32 3533
89c4a3a6 sago007 2008-08-29 14:32 3534
    //Things used for repeating keystrokes:
89c4a3a6 sago007 2008-08-29 14:32 3535
    bool repeatingP1N = false; //The key is being held
89c4a3a6 sago007 2008-08-29 14:32 3536
    bool repeatingP1S = false; //The key is being held
89c4a3a6 sago007 2008-08-29 14:32 3537
    bool repeatingP1W = false; //The key is being held
89c4a3a6 sago007 2008-08-29 14:32 3538
    bool repeatingP1E = false; //The key is being held
89c4a3a6 sago007 2008-08-29 14:32 3539
    bool repeatingP2N = false; //The key is being held
89c4a3a6 sago007 2008-08-29 14:32 3540
    bool repeatingP2S = false; //The key is being held
89c4a3a6 sago007 2008-08-29 14:32 3541
    bool repeatingP2W = false; //The key is being held
89c4a3a6 sago007 2008-08-29 14:32 3542
    bool repeatingP2E = false; //The key is being held
89c4a3a6 sago007 2008-08-29 14:32 3543
    const int startRepeat = 200;
89c4a3a6 sago007 2008-08-29 14:32 3544
    const int repeatDelay = 100;    //Repeating
89c4a3a6 sago007 2008-08-29 14:32 3545
    unsigned long timeHeldP1N = 0;
89c4a3a6 sago007 2008-08-29 14:32 3546
    unsigned long timeHeldP1S = 0;
89c4a3a6 sago007 2008-08-29 14:32 3547
    unsigned long timeHeldP1E = 0;
89c4a3a6 sago007 2008-08-29 14:32 3548
    unsigned long timeHeldP1W = 0;
89c4a3a6 sago007 2008-08-29 14:32 3549
    unsigned long timeHeldP2N = 0;
89c4a3a6 sago007 2008-08-29 14:32 3550
    unsigned long timeHeldP2S = 0;
89c4a3a6 sago007 2008-08-29 14:32 3551
    unsigned long timeHeldP2E = 0;
89c4a3a6 sago007 2008-08-29 14:32 3552
    unsigned long timeHeldP2W = 0;
89c4a3a6 sago007 2008-08-29 14:32 3553
    unsigned long timesRepeatedP1N = 0;
89c4a3a6 sago007 2008-08-29 14:32 3554
    unsigned long timesRepeatedP1S = 0;
89c4a3a6 sago007 2008-08-29 14:32 3555
    unsigned long timesRepeatedP1E = 0;
89c4a3a6 sago007 2008-08-29 14:32 3556
    unsigned long timesRepeatedP1W = 0;
89c4a3a6 sago007 2008-08-29 14:32 3557
    unsigned long timesRepeatedP2N = 0;
89c4a3a6 sago007 2008-08-29 14:32 3558
    unsigned long timesRepeatedP2S = 0;
89c4a3a6 sago007 2008-08-29 14:32 3559
    unsigned long timesRepeatedP2E = 0;
89c4a3a6 sago007 2008-08-29 14:32 3560
    unsigned long timesRepeatedP2W = 0;
89c4a3a6 sago007 2008-08-29 14:32 3561
89c4a3a6 sago007 2008-08-29 14:32 3562
    theBallManeger = ballManeger();
89c4a3a6 sago007 2008-08-29 14:32 3563
    theExplosionManeger = explosionManeger();
89c4a3a6 sago007 2008-08-29 14:32 3564
89c4a3a6 sago007 2008-08-29 14:32 3565
//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 3566
#if defined(__unix__)
89c4a3a6 sago007 2008-08-29 14:32 3567
    string home = getenv("HOME");
89c4a3a6 sago007 2008-08-29 14:32 3568
    string optionsPath = home+"/.gamesaves/blockattack/options.dat";
89c4a3a6 sago007 2008-08-29 14:32 3569
#elif defined(_WIN32)
89c4a3a6 sago007 2008-08-29 14:32 3570
    string home = getMyDocumentsPath();
89c4a3a6 sago007 2008-08-29 14:32 3571
    string optionsPath;
89c4a3a6 sago007 2008-08-29 14:32 3572
    if (&home!=NULL) //Null if no APPDATA dir exists (win 9x)
89c4a3a6 sago007 2008-08-29 14:32 3573
        optionsPath = home+"/My Games/blockattack/options.dat";
89c4a3a6 sago007 2008-08-29 14:32 3574
    else
89c4a3a6 sago007 2008-08-29 14:32 3575
        optionsPath = "options.dat";
89c4a3a6 sago007 2008-08-29 14:32 3576
#else
89c4a3a6 sago007 2008-08-29 14:32 3577
    string optionsPath = "options.dat";
89c4a3a6 sago007 2008-08-29 14:32 3578
#endif
89c4a3a6 sago007 2008-08-29 14:32 3579
89c4a3a6 sago007 2008-08-29 14:32 3580
#if defined(__unix__)
89c4a3a6 sago007 2008-08-29 14:32 3581
    stageClearSavePath = home+"/.gamesaves/blockattack/stageClear.SCsave";
89c4a3a6 sago007 2008-08-29 14:32 3582
    puzzleSavePath = home+"/.gamesaves/blockattack/puzzle.levels.save";
89c4a3a6 sago007 2008-08-29 14:32 3583
#elif defined(_WIN32)
89c4a3a6 sago007 2008-08-29 14:32 3584
    if (&home!=NULL)
89c4a3a6 sago007 2008-08-29 14:32 3585
    {
89c4a3a6 sago007 2008-08-29 14:32 3586
        stageClearSavePath = home+"/My Games/blockattack/stageClear.SCsave";
89c4a3a6 sago007 2008-08-29 14:32 3587
        puzzleSavePath = home+"/My Games/blockattack/puzzle.levels.save";
89c4a3a6 sago007 2008-08-29 14:32 3588
    }
89c4a3a6 sago007 2008-08-29 14:32 3589
    else
89c4a3a6 sago007 2008-08-29 14:32 3590
    {
89c4a3a6 sago007 2008-08-29 14:32 3591
        stageClearSavePath = "stageClear.SCsave";
89c4a3a6 sago007 2008-08-29 14:32 3592
        puzzleSavePath = "puzzle.levels.save";
89c4a3a6 sago007 2008-08-29 14:32 3593
    }
89c4a3a6 sago007 2008-08-29 14:32 3594
#else
89c4a3a6 sago007 2008-08-29 14:32 3595
    stageClearSavePath = "stageClear.SCsave";
89c4a3a6 sago007 2008-08-29 14:32 3596
    puzzleSavePath = "puzzle.levels.save";
89c4a3a6 sago007 2008-08-29 14:32 3597
#endif
89c4a3a6 sago007 2008-08-29 14:32 3598
    puzzleName="puzzle.levels";
89c4a3a6 sago007 2008-08-29 14:32 3599
89c4a3a6 sago007 2008-08-29 14:32 3600
    Uint8 *keys;
89c4a3a6 sago007 2008-08-29 14:32 3601
91886cae sago007 2008-09-12 16:28 3602
#if USE_ABSTRACT_FS
91886cae sago007 2008-09-12 16:28 3603
    //Init the file system abstraction layer
91886cae sago007 2008-09-12 16:28 3604
    PHYSFS_init(argv[0]);
c325f4fa sago007 2009-05-09 18:33 3605
    //Look in blockattack.data
c325f4fa sago007 2009-05-09 18:33 3606
    PHYSFS_addToSearchPath(((string)SHAREDIR+"blockattack.data").c_str(), 1);
c325f4fa sago007 2009-05-09 18:33 3607
    //Look in folder
c325f4fa sago007 2009-05-09 18:33 3608
    PHYSFS_addToSearchPath(SHAREDIR, 1);
c325f4fa sago007 2009-05-09 18:33 3609
    //Look in home folder
c325f4fa sago007 2009-05-09 18:33 3610
    #if defined(__unix__)
c325f4fa sago007 2009-05-09 18:33 3611
    PHYSFS_addToSearchPath(home+"/.gamesaves/blockattack", 1);
c325f4fa sago007 2009-05-09 18:33 3612
    #elif defined(_WIN32)
c325f4fa sago007 2009-05-09 18:33 3613
    if (&home!=NULL)
c325f4fa sago007 2009-05-09 18:33 3614
       PHYSFS_addToSearchPath((home+"/My Games/blockattack").c_str(), 1);
c325f4fa sago007 2009-05-09 18:33 3615
    #endif
91886cae sago007 2008-09-12 16:28 3616
#endif
95bc02ff sago007 2009-03-15 02:46 3617
89c4a3a6 sago007 2008-08-29 14:32 3618
    //Init SDL
89c4a3a6 sago007 2008-08-29 14:32 3619
    if ( SDL_Init(SDL_INIT_VIDEO) < 0 )
89c4a3a6 sago007 2008-08-29 14:32 3620
    {
89c4a3a6 sago007 2008-08-29 14:32 3621
        cout << "Unable to init SDL: " << SDL_GetError() << endl;
89c4a3a6 sago007 2008-08-29 14:32 3622
        exit(1);
89c4a3a6 sago007 2008-08-29 14:32 3623
    }
89c4a3a6 sago007 2008-08-29 14:32 3624
    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 3625
    
89c4a3a6 sago007 2008-08-29 14:32 3626
    SDL_EventState(SDL_MOUSEMOTION, SDL_IGNORE);
89c4a3a6 sago007 2008-08-29 14:32 3627
89c4a3a6 sago007 2008-08-29 14:32 3628
    Joypad_init();    //Prepare the joysticks
89c4a3a6 sago007 2008-08-29 14:32 3629
89c4a3a6 sago007 2008-08-29 14:32 3630
    Joypad joypad1 = Joypad();    //Creates a joypad
89c4a3a6 sago007 2008-08-29 14:32 3631
    Joypad joypad2 = Joypad();    //Creates a joypad
89c4a3a6 sago007 2008-08-29 14:32 3632
89c4a3a6 sago007 2008-08-29 14:32 3633
    theTextManeger = textManeger();
89c4a3a6 sago007 2008-08-29 14:32 3634
89c4a3a6 sago007 2008-08-29 14:32 3635
    //Open Audio
89c4a3a6 sago007 2008-08-29 14:32 3636
    if (!NoSound) //If sound has not been disabled, then load the sound system
89c4a3a6 sago007 2008-08-29 14:32 3637
        if (Mix_OpenAudio(44100, AUDIO_S16SYS, 2, 2048) < 0)
89c4a3a6 sago007 2008-08-29 14:32 3638
        {
89c4a3a6 sago007 2008-08-29 14:32 3639
            cout << "Warning: Couldn't set 44100 Hz 16-bit audio - Reason: " << SDL_GetError() << endl
89c4a3a6 sago007 2008-08-29 14:32 3640
            << "Sound will be disabled!" << endl;
89c4a3a6 sago007 2008-08-29 14:32 3641
            NoSound = true; //Tries to stop all sound from playing/loading
89c4a3a6 sago007 2008-08-29 14:32 3642
        }
89c4a3a6 sago007 2008-08-29 14:32 3643
89c4a3a6 sago007 2008-08-29 14:32 3644
    SDL_WM_SetCaption("Block Attack - Rise of the Blocks", NULL); //Sets title line
89c4a3a6 sago007 2008-08-29 14:32 3645
    //Now sets the icon:
89c4a3a6 sago007 2008-08-29 14:32 3646
    SDL_Surface *icon = IMG_Load2((char*)"gfx/icon.png");
89c4a3a6 sago007 2008-08-29 14:32 3647
    SDL_WM_SetIcon(icon,NULL);
89c4a3a6 sago007 2008-08-29 14:32 3648
    //SDL_FreeSurface(icon);
89c4a3a6 sago007 2008-08-29 14:32 3649
89c4a3a6 sago007 2008-08-29 14:32 3650
    //Copyright notice:
27ae0175 sago007 2009-01-30 06:02 3651
    cout << "Block Attack - Rise of the Blocks (" << VERSION_NUMBER << ")" << endl << "http://blockattack.sf.net" << endl << "Copyright 2004-2009 Poul Sander" << endl <<
89c4a3a6 sago007 2008-08-29 14:32 3652
    "A SDL based game (see www.libsdl.org)" << endl <<
89c4a3a6 sago007 2008-08-29 14:32 3653
    "The game is availeble under the GPL, see COPYING for details." << endl;
89c4a3a6 sago007 2008-08-29 14:32 3654
#if defined(_WIN32)
89c4a3a6 sago007 2008-08-29 14:32 3655
    cout << "Windows build" << endl;
89c4a3a6 sago007 2008-08-29 14:32 3656
#elif defined(__linux__)
89c4a3a6 sago007 2008-08-29 14:32 3657
    cout << "Linux build" <<  endl;
89c4a3a6 sago007 2008-08-29 14:32 3658
#elif defined(__unix__)
89c4a3a6 sago007 2008-08-29 14:32 3659
    cout << "Unix build" <<  endl;
89c4a3a6 sago007 2008-08-29 14:32 3660
#else
89c4a3a6 sago007 2008-08-29 14:32 3661
    cout << "Alternative build" << endl;
89c4a3a6 sago007 2008-08-29 14:32 3662
#endif
89c4a3a6 sago007 2008-08-29 14:32 3663
    cout << "-------------------------------------------" << endl;
89c4a3a6 sago007 2008-08-29 14:32 3664
95bc02ff sago007 2009-03-15 02:46 3665
    //The menu cannot be activated the first second to prevent unexpected events
95bc02ff sago007 2009-03-15 02:46 3666
    keymenu.canBeActivatedTime = SDL_GetTicks()+1000;
95bc02ff sago007 2009-03-15 02:46 3667
    keymenu.activated = false;
95bc02ff sago007 2009-03-15 02:46 3668
    for(int i=0;i<KEYMENU_MAXWITH;i++)
95bc02ff sago007 2009-03-15 02:46 3669
        keymenu.menumap[i][0] = true;
95bc02ff sago007 2009-03-15 02:46 3670
89c4a3a6 sago007 2008-08-29 14:32 3671
    keySettings[0].up= SDLK_UP;
89c4a3a6 sago007 2008-08-29 14:32 3672
    keySettings[0].down = SDLK_DOWN;
89c4a3a6 sago007 2008-08-29 14:32 3673
    keySettings[0].left = SDLK_LEFT;
89c4a3a6 sago007 2008-08-29 14:32 3674
    keySettings[0].right = SDLK_RIGHT;
6d48320c sago007 2009-03-28 17:06 3675
    keySettings[0].change = SDLK_RCTRL;
6d48320c sago007 2009-03-28 17:06 3676
    keySettings[0].push = SDLK_RSHIFT;
89c4a3a6 sago007 2008-08-29 14:32 3677
89c4a3a6 sago007 2008-08-29 14:32 3678
    keySettings[2].up= SDLK_w;
89c4a3a6 sago007 2008-08-29 14:32 3679
    keySettings[2].down = SDLK_s;
89c4a3a6 sago007 2008-08-29 14:32 3680
    keySettings[2].left = SDLK_a;
89c4a3a6 sago007 2008-08-29 14:32 3681
    keySettings[2].right = SDLK_d;
89c4a3a6 sago007 2008-08-29 14:32 3682
    keySettings[2].change = SDLK_LCTRL;
89c4a3a6 sago007 2008-08-29 14:32 3683
    keySettings[2].push = SDLK_LSHIFT;
89c4a3a6 sago007 2008-08-29 14:32 3684
89c4a3a6 sago007 2008-08-29 14:32 3685
    player1keys=0;
89c4a3a6 sago007 2008-08-29 14:32 3686
    player2keys=2;
89c4a3a6 sago007 2008-08-29 14:32 3687
89c4a3a6 sago007 2008-08-29 14:32 3688
    strcpy(player1name, "Player 1                    \0");
89c4a3a6 sago007 2008-08-29 14:32 3689
    strcpy(player2name, "Player 2                    \0");
89c4a3a6 sago007 2008-08-29 14:32 3690
769a41a0 sago007 2008-09-24 12:54 3691
    Config *configSettings = Config::getInstance();
769a41a0 sago007 2008-09-24 12:54 3692
    //configSettings->setString("aNumber"," A string");
769a41a0 sago007 2008-09-24 12:54 3693
    //configSettings->save();
769a41a0 sago007 2008-09-24 12:54 3694
    if(configSettings->exists("fullscreen")) //Test if an configFile exists
89c4a3a6 sago007 2008-08-29 14:32 3695
    {
769a41a0 sago007 2008-09-24 12:54 3696
        bFullscreen = (bool)configSettings->getInt("fullscreen");
769a41a0 sago007 2008-09-24 12:54 3697
        MusicEnabled = (bool)configSettings->getInt("musicenabled");
769a41a0 sago007 2008-09-24 12:54 3698
        SoundEnabled = (bool)configSettings->getInt("soundenabled");
769a41a0 sago007 2008-09-24 12:54 3699
        mouseplay1 = (bool)configSettings->getInt("mouseplay1");
769a41a0 sago007 2008-09-24 12:54 3700
        mouseplay2 = (bool)configSettings->getInt("mouseplay2");
769a41a0 sago007 2008-09-24 12:54 3701
        joyplay1 = (bool)configSettings->getInt("joypad1");
769a41a0 sago007 2008-09-24 12:54 3702
        joyplay2 = (bool)configSettings->getInt("joypad2");
769a41a0 sago007 2008-09-24 12:54 3703
        
769a41a0 sago007 2008-09-24 12:54 3704
        if(configSettings->exists("player1keyup")) keySettings[0].up = (SDLKey)configSettings->getInt("player1keyup");
769a41a0 sago007 2008-09-24 12:54 3705
        if(configSettings->exists("player1keydown")) keySettings[0].down = (SDLKey)configSettings->getInt("player1keydown");
769a41a0 sago007 2008-09-24 12:54 3706
        if(configSettings->exists("player1keyleft")) keySettings[0].left = (SDLKey)configSettings->getInt("player1keyleft");
769a41a0 sago007 2008-09-24 12:54 3707
        if(configSettings->exists("player1keyright")) keySettings[0].right = (SDLKey)configSettings->getInt("player1keyright");
769a41a0 sago007 2008-09-24 12:54 3708
        if(configSettings->exists("player1keychange")) keySettings[0].change = (SDLKey)configSettings->getInt("player1keychange");
769a41a0 sago007 2008-09-24 12:54 3709
        if(configSettings->exists("player1keypush")) keySettings[0].push = (SDLKey)configSettings->getInt("player1keypush");
769a41a0 sago007 2008-09-24 12:54 3710
        
769a41a0 sago007 2008-09-24 12:54 3711
        if(configSettings->exists("player2keyup")) keySettings[2].up = (SDLKey)configSettings->getInt("player2keyup");
769a41a0 sago007 2008-09-24 12:54 3712
        if(configSettings->exists("player2keydown")) keySettings[2].down = (SDLKey)configSettings->getInt("player2keydown");
769a41a0 sago007 2008-09-24 12:54 3713
        if(configSettings->exists("player2keyleft")) keySettings[2].left = (SDLKey)configSettings->getInt("player2keyleft");
769a41a0 sago007 2008-09-24 12:54 3714
        if(configSettings->exists("player2keyright")) keySettings[2].right = (SDLKey)configSettings->getInt("player2keyright");
769a41a0 sago007 2008-09-24 12:54 3715
        if(configSettings->exists("player2keychange")) keySettings[2].change = (SDLKey)configSettings->getInt("player2keychange");
769a41a0 sago007 2008-09-24 12:54 3716
        if(configSettings->exists("player2keypush")) keySettings[2].push = (SDLKey)configSettings->getInt("player2keypush");
769a41a0 sago007 2008-09-24 12:54 3717
        if(configSettings->exists("player1name"))
769a41a0 sago007 2008-09-24 12:54 3718
            strncpy(player1name,(configSettings->getString("player1name")).c_str(),28);
769a41a0 sago007 2008-09-24 12:54 3719
        if(configSettings->exists("player2name"))
769a41a0 sago007 2008-09-24 12:54 3720
            strncpy(player2name,(configSettings->getString("player2name")).c_str(),28);
769a41a0 sago007 2008-09-24 12:54 3721
        cout << "Data loaded from config file" << endl;
89c4a3a6 sago007 2008-08-29 14:32 3722
    }
89c4a3a6 sago007 2008-08-29 14:32 3723
    else
89c4a3a6 sago007 2008-08-29 14:32 3724
    {
769a41a0 sago007 2008-09-24 12:54 3725
        //Reads options from file:
769a41a0 sago007 2008-09-24 12:54 3726
        ifstream optionsFile(optionsPath.c_str(), ios::binary);
769a41a0 sago007 2008-09-24 12:54 3727
        if (optionsFile)
769a41a0 sago007 2008-09-24 12:54 3728
        {
769a41a0 sago007 2008-09-24 12:54 3729
            //reads data: xsize,ysize,fullescreen, player1keys, player2keys, MusicEnabled, SoundEnabled,player1name,player2name
769a41a0 sago007 2008-09-24 12:54 3730
            optionsFile.read(reinterpret_cast<char*>(&xsize), sizeof(int));
769a41a0 sago007 2008-09-24 12:54 3731
            optionsFile.read(reinterpret_cast<char*>(&ysize), sizeof(int));
769a41a0 sago007 2008-09-24 12:54 3732
            optionsFile.read(reinterpret_cast<char*>(&bFullscreen), sizeof(bool));
769a41a0 sago007 2008-09-24 12:54 3733
            optionsFile.read(reinterpret_cast<char*>(&keySettings[0].up), sizeof(SDLKey));
769a41a0 sago007 2008-09-24 12:54 3734
            optionsFile.read(reinterpret_cast<char*>(&keySettings[0].down), sizeof(SDLKey));
769a41a0 sago007 2008-09-24 12:54 3735
            optionsFile.read(reinterpret_cast<char*>(&keySettings[0].left), sizeof(SDLKey));
769a41a0 sago007 2008-09-24 12:54 3736
            optionsFile.read(reinterpret_cast<char*>(&keySettings[0].right), sizeof(SDLKey));
769a41a0 sago007 2008-09-24 12:54 3737
            optionsFile.read(reinterpret_cast<char*>(&keySettings[0].change), sizeof(SDLKey));
769a41a0 sago007 2008-09-24 12:54 3738
            optionsFile.read(reinterpret_cast<char*>(&keySettings[0].push), sizeof(SDLKey));
769a41a0 sago007 2008-09-24 12:54 3739
            optionsFile.read(reinterpret_cast<char*>(&keySettings[2].up), sizeof(SDLKey));
769a41a0 sago007 2008-09-24 12:54 3740
            optionsFile.read(reinterpret_cast<char*>(&keySettings[2].down), sizeof(SDLKey));
769a41a0 sago007 2008-09-24 12:54 3741
            optionsFile.read(reinterpret_cast<char*>(&keySettings[2].left), sizeof(SDLKey));
769a41a0 sago007 2008-09-24 12:54 3742
            optionsFile.read(reinterpret_cast<char*>(&keySettings[2].right), sizeof(SDLKey));
769a41a0 sago007 2008-09-24 12:54 3743
            optionsFile.read(reinterpret_cast<char*>(&keySettings[2].change), sizeof(SDLKey));
769a41a0 sago007 2008-09-24 12:54 3744
            optionsFile.read(reinterpret_cast<char*>(&keySettings[2].push), sizeof(SDLKey));
769a41a0 sago007 2008-09-24 12:54 3745
            optionsFile.read(reinterpret_cast<char*>(&MusicEnabled), sizeof(bool));
769a41a0 sago007 2008-09-24 12:54 3746
            optionsFile.read(reinterpret_cast<char*>(&SoundEnabled), sizeof(bool));
769a41a0 sago007 2008-09-24 12:54 3747
            optionsFile.read(player1name, 30*sizeof(char));
769a41a0 sago007 2008-09-24 12:54 3748
            optionsFile.read(player2name, 30*sizeof(char));
769a41a0 sago007 2008-09-24 12:54 3749
            //mouseplay?
769a41a0 sago007 2008-09-24 12:54 3750
            if (!optionsFile.eof())
769a41a0 sago007 2008-09-24 12:54 3751
            {
769a41a0 sago007 2008-09-24 12:54 3752
                optionsFile.read(reinterpret_cast<char*>(&mouseplay1), sizeof(bool));
769a41a0 sago007 2008-09-24 12:54 3753
                optionsFile.read(reinterpret_cast<char*>(&mouseplay2), sizeof(bool));
769a41a0 sago007 2008-09-24 12:54 3754
                optionsFile.read(reinterpret_cast<char*>(&joyplay1),sizeof(bool));
769a41a0 sago007 2008-09-24 12:54 3755
                optionsFile.read(reinterpret_cast<char*>(&joyplay2),sizeof(bool));
769a41a0 sago007 2008-09-24 12:54 3756
            }
769a41a0 sago007 2008-09-24 12:54 3757
            optionsFile.close();
769a41a0 sago007 2008-09-24 12:54 3758
            cout << "Data loaded from oldstyle options file" << endl;
769a41a0 sago007 2008-09-24 12:54 3759
        }
769a41a0 sago007 2008-09-24 12:54 3760
        else
769a41a0 sago007 2008-09-24 12:54 3761
        {
769a41a0 sago007 2008-09-24 12:54 3762
            cout << "Unable to load options file, using default values" << endl;
769a41a0 sago007 2008-09-24 12:54 3763
        }
89c4a3a6 sago007 2008-08-29 14:32 3764
    }
27ae0175 sago007 2009-01-30 06:02 3765
    
27ae0175 sago007 2009-01-30 06:02 3766
#if NETWORK
27ae0175 sago007 2009-01-30 06:02 3767
    strcpy(serverAddress, "192.168.0.2                 \0");
27ae0175 sago007 2009-01-30 06:02 3768
    if(configSettings->exists("address0"))
27ae0175 sago007 2009-01-30 06:02 3769
    {
27ae0175 sago007 2009-01-30 06:02 3770
        strcpy(serverAddress, "                            \0");
27ae0175 sago007 2009-01-30 06:02 3771
        strncpy(serverAddress,configSettings->getString("address0").c_str(),sizeof(serverAddress)-1);
27ae0175 sago007 2009-01-30 06:02 3772
    }
27ae0175 sago007 2009-01-30 06:02 3773
#endif
89c4a3a6 sago007 2008-08-29 14:32 3774
89c4a3a6 sago007 2008-08-29 14:32 3775
    if (singlePuzzle)
89c4a3a6 sago007 2008-08-29 14:32 3776
    {
89c4a3a6 sago007 2008-08-29 14:32 3777
        xsize=300;
89c4a3a6 sago007 2008-08-29 14:32 3778
        ysize=600;
89c4a3a6 sago007 2008-08-29 14:32 3779
    }
89c4a3a6 sago007 2008-08-29 14:32 3780
    
89c4a3a6 sago007 2008-08-29 14:32 3781
    
89c4a3a6 sago007 2008-08-29 14:32 3782
    //Open video
89c4a3a6 sago007 2008-08-29 14:32 3783
    if ((bFullscreen)&&(!singlePuzzle)) screen=SDL_SetVideoMode(xsize,ysize,32,SDL_SWSURFACE|SDL_FULLSCREEN|SDL_ANYFORMAT);
89c4a3a6 sago007 2008-08-29 14:32 3784
    else screen=SDL_SetVideoMode(xsize,ysize,32,SDL_SWSURFACE|SDL_ANYFORMAT);
89c4a3a6 sago007 2008-08-29 14:32 3785
89c4a3a6 sago007 2008-08-29 14:32 3786
    if ( screen == NULL )
89c4a3a6 sago007 2008-08-29 14:32 3787
    {
89c4a3a6 sago007 2008-08-29 14:32 3788
        cout << "Unable to set " << xsize << "x" << ysize << " video: " << SDL_GetError() << endl;
89c4a3a6 sago007 2008-08-29 14:32 3789
        exit(1);
89c4a3a6 sago007 2008-08-29 14:32 3790
    }
89c4a3a6 sago007 2008-08-29 14:32 3791
89c4a3a6 sago007 2008-08-29 14:32 3792
    //Loading all images into memory
89c4a3a6 sago007 2008-08-29 14:32 3793
    InitImages();
89c4a3a6 sago007 2008-08-29 14:32 3794
89c4a3a6 sago007 2008-08-29 14:32 3795
    cout << "Images loaded" << endl;
89c4a3a6 sago007 2008-08-29 14:32 3796
78d03b38 sago007 2008-11-13 19:56 3797
    //InitMenues();
89c4a3a6 sago007 2008-08-29 14:32 3798
89c4a3a6 sago007 2008-08-29 14:32 3799
    BlockGame theGame = BlockGame(50,100);			//creates game objects
89c4a3a6 sago007 2008-08-29 14:32 3800
    BlockGame theGame2 = BlockGame(xsize-500,100);
89c4a3a6 sago007 2008-08-29 14:32 3801
    if (singlePuzzle)
89c4a3a6 sago007 2008-08-29 14:32 3802
    {
89c4a3a6 sago007 2008-08-29 14:32 3803
        theGame.topy=0;
89c4a3a6 sago007 2008-08-29 14:32 3804
        theGame.topx=0;
89c4a3a6 sago007 2008-08-29 14:32 3805
        theGame2.topy=10000;
89c4a3a6 sago007 2008-08-29 14:32 3806
        theGame2.topx=10000;
89c4a3a6 sago007 2008-08-29 14:32 3807
    }
89c4a3a6 sago007 2008-08-29 14:32 3808
    theGame.DoPaintJob();			//Makes sure what there is something to paint
89c4a3a6 sago007 2008-08-29 14:32 3809
    theGame2.DoPaintJob();
89c4a3a6 sago007 2008-08-29 14:32 3810
    theGame.SetGameOver();		//sets the game over in the beginning
89c4a3a6 sago007 2008-08-29 14:32 3811
    theGame2.SetGameOver();
89c4a3a6 sago007 2008-08-29 14:32 3812
89c4a3a6 sago007 2008-08-29 14:32 3813
89c4a3a6 sago007 2008-08-29 14:32 3814
    //Takes names from file instead
89c4a3a6 sago007 2008-08-29 14:32 3815
    strcpy(theGame.name, player1name);
89c4a3a6 sago007 2008-08-29 14:32 3816
    strcpy(theGame2.name, player2name);
89c4a3a6 sago007 2008-08-29 14:32 3817
89c4a3a6 sago007 2008-08-29 14:32 3818
    //Keeps track of background;
89c4a3a6 sago007 2008-08-29 14:32 3819
    int nowTime=SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 3820
89c4a3a6 sago007 2008-08-29 14:32 3821
1572de2b sago007 2008-09-11 18:15 3822
#if NETWORK
89c4a3a6 sago007 2008-08-29 14:32 3823
    NetworkThing nt = NetworkThing();
89c4a3a6 sago007 2008-08-29 14:32 3824
    nt.setBGpointers(&theGame,&theGame2);
89c4a3a6 sago007 2008-08-29 14:32 3825
#endif
89c4a3a6 sago007 2008-08-29 14:32 3826
89c4a3a6 sago007 2008-08-29 14:32 3827
    if (singlePuzzle)
89c4a3a6 sago007 2008-08-29 14:32 3828
    {
89c4a3a6 sago007 2008-08-29 14:32 3829
        LoadPuzzleStages();
89c4a3a6 sago007 2008-08-29 14:32 3830
        theGame.NewPuzzleGame(singlePuzzleNr,0,0);
89c4a3a6 sago007 2008-08-29 14:32 3831
        showGame = true;
89c4a3a6 sago007 2008-08-29 14:32 3832
        vsMode = true;
89c4a3a6 sago007 2008-08-29 14:32 3833
    }
89c4a3a6 sago007 2008-08-29 14:32 3834
    //Draws everything to screen
89c4a3a6 sago007 2008-08-29 14:32 3835
    if (!editorMode)
89c4a3a6 sago007 2008-08-29 14:32 3836
        MakeBackground(xsize,ysize,theGame,theGame2);
89c4a3a6 sago007 2008-08-29 14:32 3837
    else
89c4a3a6 sago007 2008-08-29 14:32 3838
        MakeBackground(xsize,ysize,theGame);
89c4a3a6 sago007 2008-08-29 14:32 3839
    DrawIMG(background, screen, 0, 0);
89c4a3a6 sago007 2008-08-29 14:32 3840
    DrawEverything(xsize,ysize,theGame,theGame2);
89c4a3a6 sago007 2008-08-29 14:32 3841
    SDL_Flip(screen);
89c4a3a6 sago007 2008-08-29 14:32 3842
    //game loop
89c4a3a6 sago007 2008-08-29 14:32 3843
    int done = 0;
89c4a3a6 sago007 2008-08-29 14:32 3844
    cout << "Starting game loop" << endl;
89c4a3a6 sago007 2008-08-29 14:32 3845
    while (done == 0)
89c4a3a6 sago007 2008-08-29 14:32 3846
    {
89c4a3a6 sago007 2008-08-29 14:32 3847
        if (!(highPriority)) SDL_Delay(10);
89c4a3a6 sago007 2008-08-29 14:32 3848
89c4a3a6 sago007 2008-08-29 14:32 3849
        if ((standardBackground)&&(!editorMode))
89c4a3a6 sago007 2008-08-29 14:32 3850
        {
89c4a3a6 sago007 2008-08-29 14:32 3851
            MakeBackground(xsize,ysize,theGame,theGame2);
89c4a3a6 sago007 2008-08-29 14:32 3852
            DrawIMG(background, screen, 0, 0);
89c4a3a6 sago007 2008-08-29 14:32 3853
        }
89c4a3a6 sago007 2008-08-29 14:32 3854
89c4a3a6 sago007 2008-08-29 14:32 3855
        if ((standardBackground)&&(editorMode))
89c4a3a6 sago007 2008-08-29 14:32 3856
        {
89c4a3a6 sago007 2008-08-29 14:32 3857
            DrawIMG(backgroundImage, screen, 0, 0);
89c4a3a6 sago007 2008-08-29 14:32 3858
            MakeBackground(xsize,ysize,theGame);
89c4a3a6 sago007 2008-08-29 14:32 3859
            DrawIMG(background, screen, 0, 0);
89c4a3a6 sago007 2008-08-29 14:32 3860
        }
89c4a3a6 sago007 2008-08-29 14:32 3861
89c4a3a6 sago007 2008-08-29 14:32 3862
        //updates the balls and explosions:
89c4a3a6 sago007 2008-08-29 14:32 3863
        theBallManeger.update();
89c4a3a6 sago007 2008-08-29 14:32 3864
        theExplosionManeger.update();
89c4a3a6 sago007 2008-08-29 14:32 3865
        theTextManeger.update();
89c4a3a6 sago007 2008-08-29 14:32 3866
1572de2b sago007 2008-09-11 18:15 3867
#if NETWORK
89c4a3a6 sago007 2008-08-29 14:32 3868
        if (nt.isConnected())
89c4a3a6 sago007 2008-08-29 14:32 3869
        {
89c4a3a6 sago007 2008-08-29 14:32 3870
            nt.updateNetwork();
89c4a3a6 sago007 2008-08-29 14:32 3871
            networkActive = true;
89c4a3a6 sago007 2008-08-29 14:32 3872
            if (!nt.isConnectedToPeer())
89c4a3a6 sago007 2008-08-29 14:32 3873
                DrawIMG(background, screen, 0, 0);
89c4a3a6 sago007 2008-08-29 14:32 3874
        }
89c4a3a6 sago007 2008-08-29 14:32 3875
        else
89c4a3a6 sago007 2008-08-29 14:32 3876
            networkActive = false;
89c4a3a6 sago007 2008-08-29 14:32 3877
        if (nt.isConnectedToPeer())
89c4a3a6 sago007 2008-08-29 14:32 3878
        {
89c4a3a6 sago007 2008-08-29 14:32 3879
            networkPlay=true;
89c4a3a6 sago007 2008-08-29 14:32 3880
            if (!weWhereConnected) //We have just connected
89c4a3a6 sago007 2008-08-29 14:32 3881
            {
89c4a3a6 sago007 2008-08-29 14:32 3882
                theGame.NewVsGame(50,100,&theGame2);
89c4a3a6 sago007 2008-08-29 14:32 3883
                theGame.putStartBlocks(nt.theSeed);
89c4a3a6 sago007 2008-08-29 14:32 3884
                theGame2.playNetwork(xsize-500,100);
89c4a3a6 sago007 2008-08-29 14:32 3885
                nt.theGameHasStarted();
89c4a3a6 sago007 2008-08-29 14:32 3886
                DrawIMG(background, screen, 0, 0);
89c4a3a6 sago007 2008-08-29 14:32 3887
            }
89c4a3a6 sago007 2008-08-29 14:32 3888
            weWhereConnected = true;
89c4a3a6 sago007 2008-08-29 14:32 3889
        }
89c4a3a6 sago007 2008-08-29 14:32 3890
        else
89c4a3a6 sago007 2008-08-29 14:32 3891
        {
89c4a3a6 sago007 2008-08-29 14:32 3892
            networkPlay=false;
89c4a3a6 sago007 2008-08-29 14:32 3893
            weWhereConnected = false;
89c4a3a6 sago007 2008-08-29 14:32 3894
        }
89c4a3a6 sago007 2008-08-29 14:32 3895
#endif
89c4a3a6 sago007 2008-08-29 14:32 3896
89c4a3a6 sago007 2008-08-29 14:32 3897
        if (!bScreenLocked)
89c4a3a6 sago007 2008-08-29 14:32 3898
        {
89c4a3a6 sago007 2008-08-29 14:32 3899
            SDL_Event event;
89c4a3a6 sago007 2008-08-29 14:32 3900
89c4a3a6 sago007 2008-08-29 14:32 3901
            while ( SDL_PollEvent(&event) )
89c4a3a6 sago007 2008-08-29 14:32 3902
            {
89c4a3a6 sago007 2008-08-29 14:32 3903
                if ( event.type == SDL_QUIT )  {
89c4a3a6 sago007 2008-08-29 14:32 3904
                    done = 1;
89c4a3a6 sago007 2008-08-29 14:32 3905
                }
89c4a3a6 sago007 2008-08-29 14:32 3906
89c4a3a6 sago007 2008-08-29 14:32 3907
                if ( event.type == SDL_KEYDOWN )
89c4a3a6 sago007 2008-08-29 14:32 3908
                {
89c4a3a6 sago007 2008-08-29 14:32 3909
                    if ( event.key.keysym.sym == SDLK_ESCAPE )
89c4a3a6 sago007 2008-08-29 14:32 3910
                    {
89c4a3a6 sago007 2008-08-29 14:32 3911
                            if (showOptions)
89c4a3a6 sago007 2008-08-29 14:32 3912
                            {
89c4a3a6 sago007 2008-08-29 14:32 3913
                                showOptions = false;
89c4a3a6 sago007 2008-08-29 14:32 3914
                            }
89c4a3a6 sago007 2008-08-29 14:32 3915
                            else
89c4a3a6 sago007 2008-08-29 14:32 3916
                                done=1;
89c4a3a6 sago007 2008-08-29 14:32 3917
                        DrawIMG(background, screen, 0, 0);
89c4a3a6 sago007 2008-08-29 14:32 3918
89c4a3a6 sago007 2008-08-29 14:32 3919
                    }
89c4a3a6 sago007 2008-08-29 14:32 3920
                    if ((!editorMode)&&(!editorModeTest)&&(!theGame.AI_Enabled))
89c4a3a6 sago007 2008-08-29 14:32 3921
                    {
89c4a3a6 sago007 2008-08-29 14:32 3922
                        //player1:
89c4a3a6 sago007 2008-08-29 14:32 3923
                        if ( event.key.keysym.sym == keySettings[player1keys].up ) {
89c4a3a6 sago007 2008-08-29 14:32 3924
                            theGame.MoveCursor('N');
89c4a3a6 sago007 2008-08-29 14:32 3925
                            repeatingP1N=true;
89c4a3a6 sago007 2008-08-29 14:32 3926
                            timeHeldP1N=SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 3927
                            timesRepeatedP1N=0;
89c4a3a6 sago007 2008-08-29 14:32 3928
                        }
89c4a3a6 sago007 2008-08-29 14:32 3929
                        if ( event.key.keysym.sym == keySettings[player1keys].down ) {
89c4a3a6 sago007 2008-08-29 14:32 3930
                            theGame.MoveCursor('S');
89c4a3a6 sago007 2008-08-29 14:32 3931
                            repeatingP1S=true;
89c4a3a6 sago007 2008-08-29 14:32 3932
                            timeHeldP1S=SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 3933
                            timesRepeatedP1S=0;
89c4a3a6 sago007 2008-08-29 14:32 3934
                        }
89c4a3a6 sago007 2008-08-29 14:32 3935
                        if ( (event.key.keysym.sym == keySettings[player1keys].left) && (showGame) ) {
89c4a3a6 sago007 2008-08-29 14:32 3936
                            theGame.MoveCursor('W');
89c4a3a6 sago007 2008-08-29 14:32 3937
                            repeatingP1W=true;
89c4a3a6 sago007 2008-08-29 14:32 3938
                            timeHeldP1W=SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 3939
                            timesRepeatedP1W=0;
89c4a3a6 sago007 2008-08-29 14:32 3940
                        }
89c4a3a6 sago007 2008-08-29 14:32 3941
                        if ( (event.key.keysym.sym == keySettings[player1keys].right) && (showGame) ) {
89c4a3a6 sago007 2008-08-29 14:32 3942
                            theGame.MoveCursor('E');
89c4a3a6 sago007 2008-08-29 14:32 3943
                            repeatingP1E=true;
89c4a3a6 sago007 2008-08-29 14:32 3944
                            timeHeldP1E=SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 3945
                            timesRepeatedP1E=0;
89c4a3a6 sago007 2008-08-29 14:32 3946
                        }
89c4a3a6 sago007 2008-08-29 14:32 3947
                        if ( event.key.keysym.sym == keySettings[player1keys].push ) {
89c4a3a6 sago007 2008-08-29 14:32 3948
                            theGame.PushLine();
89c4a3a6 sago007 2008-08-29 14:32 3949
                        }
89c4a3a6 sago007 2008-08-29 14:32 3950
                        if ( event.key.keysym.sym == keySettings[player1keys].change ) {
89c4a3a6 sago007 2008-08-29 14:32 3951
                            theGame.SwitchAtCursor();
89c4a3a6 sago007 2008-08-29 14:32 3952
                        }
89c4a3a6 sago007 2008-08-29 14:32 3953
                    }
89c4a3a6 sago007 2008-08-29 14:32 3954
                    if (!editorMode && !theGame2.AI_Enabled)
89c4a3a6 sago007 2008-08-29 14:32 3955
                    {
89c4a3a6 sago007 2008-08-29 14:32 3956
                        //player2:
89c4a3a6 sago007 2008-08-29 14:32 3957
                        if ( event.key.keysym.sym == keySettings[player2keys].up ) {
89c4a3a6 sago007 2008-08-29 14:32 3958
                            theGame2.MoveCursor('N');
89c4a3a6 sago007 2008-08-29 14:32 3959
                            repeatingP2N=true;
89c4a3a6 sago007 2008-08-29 14:32 3960
                            timeHeldP2N=SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 3961
                            timesRepeatedP2N=0;
89c4a3a6 sago007 2008-08-29 14:32 3962
                        }
89c4a3a6 sago007 2008-08-29 14:32 3963
                        if ( event.key.keysym.sym == keySettings[player2keys].down ) {
89c4a3a6 sago007 2008-08-29 14:32 3964
                            theGame2.MoveCursor('S');
89c4a3a6 sago007 2008-08-29 14:32 3965
                            repeatingP2S=true;
89c4a3a6 sago007 2008-08-29 14:32 3966
                            timeHeldP2S=SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 3967
                            timesRepeatedP2S=0;
89c4a3a6 sago007 2008-08-29 14:32 3968
                        }
89c4a3a6 sago007 2008-08-29 14:32 3969
                        if ( (event.key.keysym.sym == keySettings[player2keys].left) && (showGame) ) {
89c4a3a6 sago007 2008-08-29 14:32 3970
                            theGame2.MoveCursor('W');
89c4a3a6 sago007 2008-08-29 14:32 3971
                            repeatingP2W=true;
89c4a3a6 sago007 2008-08-29 14:32 3972
                            timeHeldP2W=SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 3973
                            timesRepeatedP2W=0;
89c4a3a6 sago007 2008-08-29 14:32 3974
                        }
89c4a3a6 sago007 2008-08-29 14:32 3975
                        if ( (event.key.keysym.sym == keySettings[player2keys].right) && (showGame) ) {
89c4a3a6 sago007 2008-08-29 14:32 3976
                            theGame2.MoveCursor('E');
89c4a3a6 sago007 2008-08-29 14:32 3977
                            repeatingP2E=true;
89c4a3a6 sago007 2008-08-29 14:32 3978
                            timeHeldP2E=SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 3979
                            timesRepeatedP2E=0;
89c4a3a6 sago007 2008-08-29 14:32 3980
                        }
89c4a3a6 sago007 2008-08-29 14:32 3981
                        if ( event.key.keysym.sym == keySettings[player2keys].push ) {
89c4a3a6 sago007 2008-08-29 14:32 3982
                            theGame2.PushLine();
89c4a3a6 sago007 2008-08-29 14:32 3983
                        }
89c4a3a6 sago007 2008-08-29 14:32 3984
                        if ( event.key.keysym.sym == keySettings[player2keys].change ) {
89c4a3a6 sago007 2008-08-29 14:32 3985
                            theGame2.SwitchAtCursor();
89c4a3a6 sago007 2008-08-29 14:32 3986
                        }
89c4a3a6 sago007 2008-08-29 14:32 3987
                    }
89c4a3a6 sago007 2008-08-29 14:32 3988
                    //common:
89c4a3a6 sago007 2008-08-29 14:32 3989
                    if ((!singlePuzzle)&&(!editorMode))
89c4a3a6 sago007 2008-08-29 14:32 3990
                    {
89c4a3a6 sago007 2008-08-29 14:32 3991
                        if ( event.key.keysym.sym == SDLK_F2 ) {
2f30c381 sago007 2008-09-14 13:08 3992
                            #if NETWORK
47529580 sago007 2008-12-09 02:34 3993
                            if ((!showOptions)&&(!networkActive)){
2f30c381 sago007 2008-09-14 13:08 3994
                            #else
47529580 sago007 2008-12-09 02:34 3995
                            if ((!showOptions)){
2f30c381 sago007 2008-09-14 13:08 3996
                            #endif
89c4a3a6 sago007 2008-08-29 14:32 3997
                                theGame.NewGame(50,100);
89c4a3a6 sago007 2008-08-29 14:32 3998
                                theGame.timetrial = false;
89c4a3a6 sago007 2008-08-29 14:32 3999
                                theGame.putStartBlocks();
89c4a3a6 sago007 2008-08-29 14:32 4000
                                closeAllMenus();
89c4a3a6 sago007 2008-08-29 14:32 4001
                                twoPlayers =false;
89c4a3a6 sago007 2008-08-29 14:32 4002
                                theGame2.SetGameOver();
89c4a3a6 sago007 2008-08-29 14:32 4003
                                showGame = true;
89c4a3a6 sago007 2008-08-29 14:32 4004
                                vsMode = false;
c96f480e sago007 2009-03-28 18:59 4005
                                strcpy(theGame.name, player1name);
c96f480e sago007 2009-03-28 18:59 4006
                                strcpy(theGame2.name, player2name);
89c4a3a6 sago007 2008-08-29 14:32 4007
                            }}
89c4a3a6 sago007 2008-08-29 14:32 4008
                        if ( event.key.keysym.sym == SDLK_F3 ) {
2f30c381 sago007 2008-09-14 13:08 4009
                            #if NETWORK
47529580 sago007 2008-12-09 02:34 4010
                            if ((!showOptions)&&(!networkActive)){
2f30c381 sago007 2008-09-14 13:08 4011
                            #else
47529580 sago007 2008-12-09 02:34 4012
                            if ((!showOptions)){    
2f30c381 sago007 2008-09-14 13:08 4013
                            #endif
89c4a3a6 sago007 2008-08-29 14:32 4014
                                theGame.NewGame(50,100);
89c4a3a6 sago007 2008-08-29 14:32 4015
                                theGame.timetrial = true;
89c4a3a6 sago007 2008-08-29 14:32 4016
                                theGame.putStartBlocks();
89c4a3a6 sago007 2008-08-29 14:32 4017
                                closeAllMenus();
89c4a3a6 sago007 2008-08-29 14:32 4018
                                twoPlayers =false;
89c4a3a6 sago007 2008-08-29 14:32 4019
                                theGame2.SetGameOver();
89c4a3a6 sago007 2008-08-29 14:32 4020
                                showGame = true;
89c4a3a6 sago007 2008-08-29 14:32 4021
                                vsMode = false;
c96f480e sago007 2009-03-28 18:59 4022
                                strcpy(theGame.name, player1name);
c96f480e sago007 2009-03-28 18:59 4023
                                strcpy(theGame2.name, player2name);
89c4a3a6 sago007 2008-08-29 14:32 4024
                            }}
89c4a3a6 sago007 2008-08-29 14:32 4025
                        if ( event.key.keysym.sym == SDLK_F5 )
89c4a3a6 sago007 2008-08-29 14:32 4026
                        {
2f30c381 sago007 2008-09-14 13:08 4027
                            #if NETWORK
47529580 sago007 2008-12-09 02:34 4028
                            if ((!showOptions)&&(!networkActive))
2f30c381 sago007 2008-09-14 13:08 4029
                            #else
47529580 sago007 2008-12-09 02:34 4030
                            if ((!showOptions))    
2f30c381 sago007 2008-09-14 13:08 4031
                            #endif
89c4a3a6 sago007 2008-08-29 14:32 4032
                            {
89c4a3a6 sago007 2008-08-29 14:32 4033
                                int myLevel = StageLevelSelect();
89c4a3a6 sago007 2008-08-29 14:32 4034
                                theGame.NewStageGame(myLevel,50,100);
89c4a3a6 sago007 2008-08-29 14:32 4035
                                MakeBackground(xsize,ysize,theGame,theGame2);
89c4a3a6 sago007 2008-08-29 14:32 4036
                                DrawIMG(background, screen, 0, 0);
89c4a3a6 sago007 2008-08-29 14:32 4037
                                closeAllMenus();
89c4a3a6 sago007 2008-08-29 14:32 4038
                                twoPlayers =false;
89c4a3a6 sago007 2008-08-29 14:32 4039
                                theGame2.SetGameOver();
89c4a3a6 sago007 2008-08-29 14:32 4040
                                showGame = true;
89c4a3a6 sago007 2008-08-29 14:32 4041
                                vsMode = false;
c96f480e sago007 2009-03-28 18:59 4042
                                strcpy(theGame.name, player1name);
c96f480e sago007 2009-03-28 18:59 4043
                                strcpy(theGame2.name, player2name);
89c4a3a6 sago007 2008-08-29 14:32 4044
                            }
89c4a3a6 sago007 2008-08-29 14:32 4045
                        }
89c4a3a6 sago007 2008-08-29 14:32 4046
                        if ( event.key.keysym.sym == SDLK_F6 )
89c4a3a6 sago007 2008-08-29 14:32 4047
                        {
2f30c381 sago007 2008-09-14 13:08 4048
                            #if NETWORK
47529580 sago007 2008-12-09 02:34 4049
                            if ((!showOptions)&&(!networkActive))
2f30c381 sago007 2008-09-14 13:08 4050
                            #else
47529580 sago007 2008-12-09 02:34 4051
                            if ((!showOptions))    
2f30c381 sago007 2008-09-14 13:08 4052
                            #endif
89c4a3a6 sago007 2008-08-29 14:32 4053
                            {
89c4a3a6 sago007 2008-08-29 14:32 4054
                                theGame.NewVsGame(50,100,&theGame2);
89c4a3a6 sago007 2008-08-29 14:32 4055
                                theGame2.NewVsGame(xsize-500,100,&theGame);
89c4a3a6 sago007 2008-08-29 14:32 4056
                                closeAllMenus();
89c4a3a6 sago007 2008-08-29 14:32 4057
                                vsMode = true;
c96f480e sago007 2009-03-28 18:59 4058
                                strcpy(theGame.name, player1name);
c96f480e sago007 2009-03-28 18:59 4059
                                strcpy(theGame2.name, player2name);
89c4a3a6 sago007 2008-08-29 14:32 4060
                                theGame.setGameSpeed(player1Speed);
89c4a3a6 sago007 2008-08-29 14:32 4061
                                theGame2.setGameSpeed(player2Speed);
89c4a3a6 sago007 2008-08-29 14:32 4062
                                theGame.setHandicap(player1handicap);
89c4a3a6 sago007 2008-08-29 14:32 4063
                                theGame2.setHandicap(player2handicap);
89c4a3a6 sago007 2008-08-29 14:32 4064
                                theGame.AI_Enabled = player1AI;
89c4a3a6 sago007 2008-08-29 14:32 4065
                                theGame2.AI_Enabled = player2AI;
89c4a3a6 sago007 2008-08-29 14:32 4066
                                theGame.setAIlevel(player1AIlevel);
89c4a3a6 sago007 2008-08-29 14:32 4067
                                theGame2.setAIlevel(player2AIlevel);
89c4a3a6 sago007 2008-08-29 14:32 4068
                                int theTime = time(0);
89c4a3a6 sago007 2008-08-29 14:32 4069
                                theGame.putStartBlocks(theTime);
89c4a3a6 sago007 2008-08-29 14:32 4070
                                theGame2.putStartBlocks(theTime);
89c4a3a6 sago007 2008-08-29 14:32 4071
                                twoPlayers = true;
89c4a3a6 sago007 2008-08-29 14:32 4072
                            }
89c4a3a6 sago007 2008-08-29 14:32 4073
                        }
89c4a3a6 sago007 2008-08-29 14:32 4074
                        if ( event.key.keysym.sym == SDLK_F4 )
89c4a3a6 sago007 2008-08-29 14:32 4075
                        {
2f30c381 sago007 2008-09-14 13:08 4076
                            #if NETWORK
47529580 sago007 2008-12-09 02:34 4077
                            if ((!showOptions)&&(!networkActive))
2f30c381 sago007 2008-09-14 13:08 4078
                            #else
47529580 sago007 2008-12-09 02:34 4079
                            if ((!showOptions))    
2f30c381 sago007 2008-09-14 13:08 4080
                            #endif
89c4a3a6 sago007 2008-08-29 14:32 4081
                            {
89c4a3a6 sago007 2008-08-29 14:32 4082
                                theGame.NewGame(50,100);
89c4a3a6 sago007 2008-08-29 14:32 4083
                                theGame2.NewGame(xsize-500,100);
89c4a3a6 sago007 2008-08-29 14:32 4084
                                theGame.timetrial = true;
89c4a3a6 sago007 2008-08-29 14:32 4085
                                theGame2.timetrial = true;
89c4a3a6 sago007 2008-08-29 14:32 4086
                                int theTime = time(0);
89c4a3a6 sago007 2008-08-29 14:32 4087
                                theGame.putStartBlocks(theTime);
89c4a3a6 sago007 2008-08-29 14:32 4088
                                theGame2.putStartBlocks(theTime);
89c4a3a6 sago007 2008-08-29 14:32 4089
                                closeAllMenus();
89c4a3a6 sago007 2008-08-29 14:32 4090
                                twoPlayers = true;
89c4a3a6 sago007 2008-08-29 14:32 4091
                                theGame.setGameSpeed(player1Speed);
89c4a3a6 sago007 2008-08-29 14:32 4092
                                theGame2.setGameSpeed(player2Speed);
89c4a3a6 sago007 2008-08-29 14:32 4093
                                theGame.setHandicap(player1handicap);
89c4a3a6 sago007 2008-08-29 14:32 4094
                                theGame2.setHandicap(player2handicap);
89c4a3a6 sago007 2008-08-29 14:32 4095
                                theGame.AI_Enabled = player1AI;
89c4a3a6 sago007 2008-08-29 14:32 4096
                                theGame2.AI_Enabled = player2AI;
89c4a3a6 sago007 2008-08-29 14:32 4097
                                theGame.setAIlevel(player1AIlevel);
89c4a3a6 sago007 2008-08-29 14:32 4098
                                theGame2.setAIlevel(player2AIlevel);
c96f480e sago007 2009-03-28 18:59 4099
                                strcpy(theGame.name, player1name);
c96f480e sago007 2009-03-28 18:59 4100
                                strcpy(theGame2.name, player2name);
89c4a3a6 sago007 2008-08-29 14:32 4101
                            }
89c4a3a6 sago007 2008-08-29 14:32 4102
                        }
89c4a3a6 sago007 2008-08-29 14:32 4103
                        if ( event.key.keysym.sym == SDLK_F7 )
89c4a3a6 sago007 2008-08-29 14:32 4104
                        {
2f30c381 sago007 2008-09-14 13:08 4105
                            #if NETWORK
47529580 sago007 2008-12-09 02:34 4106
                            if ((!showOptions)&&(!networkActive))
2f30c381 sago007 2008-09-14 13:08 4107
                            #else
47529580 sago007 2008-12-09 02:34 4108
                            if ((!showOptions))    
2f30c381 sago007 2008-09-14 13:08 4109
                            #endif
89c4a3a6 sago007 2008-08-29 14:32 4110
                            {
89c4a3a6 sago007 2008-08-29 14:32 4111
                                int myLevel = PuzzleLevelSelect();
89c4a3a6 sago007 2008-08-29 14:32 4112
                                theGame.NewPuzzleGame(myLevel,50,100);
89c4a3a6 sago007 2008-08-29 14:32 4113
                                MakeBackground(xsize,ysize,theGame,theGame2);
89c4a3a6 sago007 2008-08-29 14:32 4114
                                DrawIMG(background, screen, 0, 0);
89c4a3a6 sago007 2008-08-29 14:32 4115
                                closeAllMenus();
89c4a3a6 sago007 2008-08-29 14:32 4116
                                twoPlayers = false;
89c4a3a6 sago007 2008-08-29 14:32 4117
                                theGame2.SetGameOver();
89c4a3a6 sago007 2008-08-29 14:32 4118
                                showGame = true;
89c4a3a6 sago007 2008-08-29 14:32 4119
                                vsMode = true;
c96f480e sago007 2009-03-28 18:59 4120
                                strcpy(theGame.name, player1name);
c96f480e sago007 2009-03-28 18:59 4121
                                strcpy(theGame2.name, player2name);
89c4a3a6 sago007 2008-08-29 14:32 4122
                            }
89c4a3a6 sago007 2008-08-29 14:32 4123
                        }
89c4a3a6 sago007 2008-08-29 14:32 4124
                        if ( event.key.keysym.sym == SDLK_F8 )
89c4a3a6 sago007 2008-08-29 14:32 4125
                        {
95bc02ff sago007 2009-03-15 02:46 4126
                            if(!keymenu.activated && keymenu.canBeActivatedTime > SDL_GetTicks())
95bc02ff sago007 2009-03-15 02:46 4127
                            {
95bc02ff sago007 2009-03-15 02:46 4128
                                keymenu.activated = true;
95bc02ff sago007 2009-03-15 02:46 4129
                                keymenu.x = 0;
95bc02ff sago007 2009-03-15 02:46 4130
                                keymenu.y = 0;
95bc02ff sago007 2009-03-15 02:46 4131
                            }
89c4a3a6 sago007 2008-08-29 14:32 4132
                        }
89c4a3a6 sago007 2008-08-29 14:32 4133
                        if ( event.key.keysym.sym == SDLK_F9 ) {
89c4a3a6 sago007 2008-08-29 14:32 4134
                            writeScreenShot();
89c4a3a6 sago007 2008-08-29 14:32 4135
                        }
89c4a3a6 sago007 2008-08-29 14:32 4136
                        if ( event.key.keysym.sym == SDLK_F11 ) {
89c4a3a6 sago007 2008-08-29 14:32 4137
                            /*This is the test place, place function to test here*/
89c4a3a6 sago007 2008-08-29 14:32 4138
89c4a3a6 sago007 2008-08-29 14:32 4139
                            //theGame.CreateGreyGarbage();
78d03b38 sago007 2008-11-13 19:56 4140
                            //char mitNavn[30];
78d03b38 sago007 2008-11-13 19:56 4141
                            //SelectThemeDialogbox(300,400,mitNavn);
78d03b38 sago007 2008-11-13 19:56 4142
                           // MainMenu();
47529580 sago007 2008-12-09 02:34 4143
                            OpenScoresDisplay();
89c4a3a6 sago007 2008-08-29 14:32 4144
                        } //F11
89c4a3a6 sago007 2008-08-29 14:32 4145
                    }
89c4a3a6 sago007 2008-08-29 14:32 4146
                    if ( event.key.keysym.sym == SDLK_F12 ) {
89c4a3a6 sago007 2008-08-29 14:32 4147
                        done=1;
89c4a3a6 sago007 2008-08-29 14:32 4148
                    }
89c4a3a6 sago007 2008-08-29 14:32 4149
                }
89c4a3a6 sago007 2008-08-29 14:32 4150
            } //while event PollEvent - read keys
89c4a3a6 sago007 2008-08-29 14:32 4151
89c4a3a6 sago007 2008-08-29 14:32 4152
            /**********************************************************************
89c4a3a6 sago007 2008-08-29 14:32 4153
            **************************** Repeating start **************************
89c4a3a6 sago007 2008-08-29 14:32 4154
            **********************************************************************/
89c4a3a6 sago007 2008-08-29 14:32 4155
89c4a3a6 sago007 2008-08-29 14:32 4156
            keys = SDL_GetKeyState(NULL);
89c4a3a6 sago007 2008-08-29 14:32 4157
//Also the joysticks:
89c4a3a6 sago007 2008-08-29 14:32 4158
//Repeating not implemented
89c4a3a6 sago007 2008-08-29 14:32 4159
89c4a3a6 sago007 2008-08-29 14:32 4160
//Player 1 start
89c4a3a6 sago007 2008-08-29 14:32 4161
            if (!(keys[keySettings[player1keys].up]))
89c4a3a6 sago007 2008-08-29 14:32 4162
                repeatingP1N=false;
89c4a3a6 sago007 2008-08-29 14:32 4163
            while ((repeatingP1N)&&(keys[keySettings[player1keys].up])&&(SDL_GetTicks()>timeHeldP1N+timesRepeatedP1N*repeatDelay+startRepeat))
89c4a3a6 sago007 2008-08-29 14:32 4164
            {
89c4a3a6 sago007 2008-08-29 14:32 4165
                theGame.MoveCursor('N');
89c4a3a6 sago007 2008-08-29 14:32 4166
                timesRepeatedP1N++;
89c4a3a6 sago007 2008-08-29 14:32 4167
            }
89c4a3a6 sago007 2008-08-29 14:32 4168
89c4a3a6 sago007 2008-08-29 14:32 4169
            if (!(keys[keySettings[player1keys].down]))
89c4a3a6 sago007 2008-08-29 14:32 4170
                repeatingP1S=false;
89c4a3a6 sago007 2008-08-29 14:32 4171
            while ((repeatingP1S)&&(keys[keySettings[player1keys].down])&&(SDL_GetTicks()>timeHeldP1S+timesRepeatedP1S*repeatDelay+startRepeat))
89c4a3a6 sago007 2008-08-29 14:32 4172
            {
89c4a3a6 sago007 2008-08-29 14:32 4173
                theGame.MoveCursor('S');
89c4a3a6 sago007 2008-08-29 14:32 4174
                timesRepeatedP1S++;
89c4a3a6 sago007 2008-08-29 14:32 4175
            }
89c4a3a6 sago007 2008-08-29 14:32 4176
89c4a3a6 sago007 2008-08-29 14:32 4177
            if (!(keys[keySettings[player1keys].left]))
89c4a3a6 sago007 2008-08-29 14:32 4178
                repeatingP1W=false;
89c4a3a6 sago007 2008-08-29 14:32 4179
            while ((repeatingP1W)&&(keys[keySettings[player1keys].left])&&(SDL_GetTicks()>timeHeldP1W+timesRepeatedP1W*repeatDelay+startRepeat))
89c4a3a6 sago007 2008-08-29 14:32 4180
            {
89c4a3a6 sago007 2008-08-29 14:32 4181
                timesRepeatedP1W++;
89c4a3a6 sago007 2008-08-29 14:32 4182
                theGame.MoveCursor('W');
89c4a3a6 sago007 2008-08-29 14:32 4183
            }
89c4a3a6 sago007 2008-08-29 14:32 4184
89c4a3a6 sago007 2008-08-29 14:32 4185
            if (!(keys[keySettings[player1keys].right]))
89c4a3a6 sago007 2008-08-29 14:32 4186
                repeatingP1E=false;
89c4a3a6 sago007 2008-08-29 14:32 4187
            while ((repeatingP1E)&&(keys[keySettings[player1keys].right])&&(SDL_GetTicks()>timeHeldP1E+timesRepeatedP1E*repeatDelay+startRepeat))
89c4a3a6 sago007 2008-08-29 14:32 4188
            {
89c4a3a6 sago007 2008-08-29 14:32 4189
                timesRepeatedP1E++;
89c4a3a6 sago007 2008-08-29 14:32 4190
                theGame.MoveCursor('E');
89c4a3a6 sago007 2008-08-29 14:32 4191
            }
89c4a3a6 sago007 2008-08-29 14:32 4192
89c4a3a6 sago007 2008-08-29 14:32 4193
//Player 1 end
89c4a3a6 sago007 2008-08-29 14:32 4194
89c4a3a6 sago007 2008-08-29 14:32 4195
//Player 2 start
89c4a3a6 sago007 2008-08-29 14:32 4196
            if (!(keys[keySettings[player2keys].up]))
89c4a3a6 sago007 2008-08-29 14:32 4197
                repeatingP2N=false;
89c4a3a6 sago007 2008-08-29 14:32 4198
            while ((repeatingP2N)&&(keys[keySettings[player2keys].up])&&(SDL_GetTicks()>timeHeldP2N+timesRepeatedP2N*repeatDelay+startRepeat))
89c4a3a6 sago007 2008-08-29 14:32 4199
            {
89c4a3a6 sago007 2008-08-29 14:32 4200
                theGame2.MoveCursor('N');
89c4a3a6 sago007 2008-08-29 14:32 4201
                timesRepeatedP2N++;
89c4a3a6 sago007 2008-08-29 14:32 4202
            }
89c4a3a6 sago007 2008-08-29 14:32 4203
89c4a3a6 sago007 2008-08-29 14:32 4204
            if (!(keys[keySettings[player2keys].down]))
89c4a3a6 sago007 2008-08-29 14:32 4205
                repeatingP2S=false;
89c4a3a6 sago007 2008-08-29 14:32 4206
            while ((repeatingP2S)&&(keys[keySettings[player2keys].down])&&(SDL_GetTicks()>timeHeldP2S+timesRepeatedP2S*repeatDelay+startRepeat))
89c4a3a6 sago007 2008-08-29 14:32 4207
            {
89c4a3a6 sago007 2008-08-29 14:32 4208
                theGame2.MoveCursor('S');
89c4a3a6 sago007 2008-08-29 14:32 4209
                timesRepeatedP2S++;
89c4a3a6 sago007 2008-08-29 14:32 4210
            }
89c4a3a6 sago007 2008-08-29 14:32 4211
89c4a3a6 sago007 2008-08-29 14:32 4212
            if (!(keys[keySettings[player2keys].left]))
89c4a3a6 sago007 2008-08-29 14:32 4213
                repeatingP2W=false;
89c4a3a6 sago007 2008-08-29 14:32 4214
            while ((repeatingP2W)&&(keys[keySettings[player2keys].left])&&(SDL_GetTicks()>timeHeldP2W+timesRepeatedP2W*repeatDelay+startRepeat))
89c4a3a6 sago007 2008-08-29 14:32 4215
            {
89c4a3a6 sago007 2008-08-29 14:32 4216
                theGame2.MoveCursor('W');
89c4a3a6 sago007 2008-08-29 14:32 4217
                timesRepeatedP2W++;
89c4a3a6 sago007 2008-08-29 14:32 4218
            }
89c4a3a6 sago007 2008-08-29 14:32 4219
89c4a3a6 sago007 2008-08-29 14:32 4220
            if (!(keys[keySettings[player2keys].right]))
89c4a3a6 sago007 2008-08-29 14:32 4221
                repeatingP2E=false;
89c4a3a6 sago007 2008-08-29 14:32 4222
            while ((repeatingP2E)&&(keys[keySettings[player2keys].right])&&(SDL_GetTicks()>timeHeldP2E+timesRepeatedP2E*repeatDelay+startRepeat))
89c4a3a6 sago007 2008-08-29 14:32 4223
            {
89c4a3a6 sago007 2008-08-29 14:32 4224
                theGame2.MoveCursor('E');
89c4a3a6 sago007 2008-08-29 14:32 4225
                timesRepeatedP2E++;
89c4a3a6 sago007 2008-08-29 14:32 4226
            }
89c4a3a6 sago007 2008-08-29 14:32 4227
89c4a3a6 sago007 2008-08-29 14:32 4228
//Player 2 end
89c4a3a6 sago007 2008-08-29 14:32 4229
89c4a3a6 sago007 2008-08-29 14:32 4230
            /**********************************************************************
89c4a3a6 sago007 2008-08-29 14:32 4231
            **************************** Repeating end ****************************
89c4a3a6 sago007 2008-08-29 14:32 4232
            **********************************************************************/
89c4a3a6 sago007 2008-08-29 14:32 4233
89c4a3a6 sago007 2008-08-29 14:32 4234
            /**********************************************************************
89c4a3a6 sago007 2008-08-29 14:32 4235
            ***************************** Joypad start ****************************
89c4a3a6 sago007 2008-08-29 14:32 4236
            **********************************************************************/
89c4a3a6 sago007 2008-08-29 14:32 4237
6d48320c sago007 2009-03-28 17:06 4238
            //Menu
6d48320c sago007 2009-03-28 17:06 4239
            if(joypad1.working)
6d48320c sago007 2009-03-28 17:06 4240
            {
6d48320c sago007 2009-03-28 17:06 4241
                joypad1.update();
6d48320c sago007 2009-03-28 17:06 4242
                if(joypad1.but1)
6d48320c sago007 2009-03-28 17:06 4243
                {
6d48320c sago007 2009-03-28 17:06 4244
                    if(!keymenu.activated && keymenu.canBeActivatedTime > SDL_GetTicks())
6d48320c sago007 2009-03-28 17:06 4245
                    {
6d48320c sago007 2009-03-28 17:06 4246
                        keymenu.activated = true;
6d48320c sago007 2009-03-28 17:06 4247
                        keymenu.x = 0;
6d48320c sago007 2009-03-28 17:06 4248
                        keymenu.y = 0;
6d48320c sago007 2009-03-28 17:06 4249
                    }
6d48320c sago007 2009-03-28 17:06 4250
                }
6d48320c sago007 2009-03-28 17:06 4251
            }
6d48320c sago007 2009-03-28 17:06 4252
6d48320c sago007 2009-03-28 17:06 4253
            //Gameplay
89c4a3a6 sago007 2008-08-29 14:32 4254
            if (joyplay1||joyplay2)
89c4a3a6 sago007 2008-08-29 14:32 4255
            {
89c4a3a6 sago007 2008-08-29 14:32 4256
                if (joypad1.working && !theGame.AI_Enabled)
89c4a3a6 sago007 2008-08-29 14:32 4257
                    if (joyplay1)
89c4a3a6 sago007 2008-08-29 14:32 4258
                    {
89c4a3a6 sago007 2008-08-29 14:32 4259
                        joypad1.update();
89c4a3a6 sago007 2008-08-29 14:32 4260
                        if (joypad1.up)
89c4a3a6 sago007 2008-08-29 14:32 4261
                        {
89c4a3a6 sago007 2008-08-29 14:32 4262
                            theGame.MoveCursor('N');
89c4a3a6 sago007 2008-08-29 14:32 4263
                            repeatingP1N=true;
89c4a3a6 sago007 2008-08-29 14:32 4264
                            timeHeldP1N=SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 4265
                            timesRepeatedP1N=0;
89c4a3a6 sago007 2008-08-29 14:32 4266
                        }
89c4a3a6 sago007 2008-08-29 14:32 4267
                        if (joypad1.down)
89c4a3a6 sago007 2008-08-29 14:32 4268
                        {
89c4a3a6 sago007 2008-08-29 14:32 4269
                            theGame.MoveCursor('S');
89c4a3a6 sago007 2008-08-29 14:32 4270
                            repeatingP1S=true;
89c4a3a6 sago007 2008-08-29 14:32 4271
                            timeHeldP1S=SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 4272
                            timesRepeatedP1S=0;
89c4a3a6 sago007 2008-08-29 14:32 4273
                        }
89c4a3a6 sago007 2008-08-29 14:32 4274
                        if (joypad1.left)
89c4a3a6 sago007 2008-08-29 14:32 4275
                        {
89c4a3a6 sago007 2008-08-29 14:32 4276
                            theGame.MoveCursor('W');
89c4a3a6 sago007 2008-08-29 14:32 4277
                            repeatingP1W=true;
89c4a3a6 sago007 2008-08-29 14:32 4278
                            timeHeldP1W=SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 4279
                            timesRepeatedP1W=0;
89c4a3a6 sago007 2008-08-29 14:32 4280
                        }
89c4a3a6 sago007 2008-08-29 14:32 4281
                        if (joypad1.right)
89c4a3a6 sago007 2008-08-29 14:32 4282
                        {
89c4a3a6 sago007 2008-08-29 14:32 4283
                            theGame.MoveCursor('E');
89c4a3a6 sago007 2008-08-29 14:32 4284
                            repeatingP1E=true;
89c4a3a6 sago007 2008-08-29 14:32 4285
                            timeHeldP1E=SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 4286
                            timesRepeatedP1E=0;
89c4a3a6 sago007 2008-08-29 14:32 4287
                        }
89c4a3a6 sago007 2008-08-29 14:32 4288
                        if (joypad1.but1)
89c4a3a6 sago007 2008-08-29 14:32 4289
                            theGame.SwitchAtCursor();
89c4a3a6 sago007 2008-08-29 14:32 4290
                        if (joypad1.but2)
89c4a3a6 sago007 2008-08-29 14:32 4291
                            theGame.PushLine();
89c4a3a6 sago007 2008-08-29 14:32 4292
                    }
89c4a3a6 sago007 2008-08-29 14:32 4293
                    else
89c4a3a6 sago007 2008-08-29 14:32 4294
                    {
89c4a3a6 sago007 2008-08-29 14:32 4295
                        joypad1.update();
89c4a3a6 sago007 2008-08-29 14:32 4296
                        if (joypad1.up)
89c4a3a6 sago007 2008-08-29 14:32 4297
                        {
89c4a3a6 sago007 2008-08-29 14:32 4298
                            theGame2.MoveCursor('N');
89c4a3a6 sago007 2008-08-29 14:32 4299
                            repeatingP2N=true;
89c4a3a6 sago007 2008-08-29 14:32 4300
                            timeHeldP2N=SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 4301
                            timesRepeatedP2N=0;
89c4a3a6 sago007 2008-08-29 14:32 4302
                        }
89c4a3a6 sago007 2008-08-29 14:32 4303
                        if (joypad1.down)
89c4a3a6 sago007 2008-08-29 14:32 4304
                        {
89c4a3a6 sago007 2008-08-29 14:32 4305
                            theGame2.MoveCursor('S');
89c4a3a6 sago007 2008-08-29 14:32 4306
                            repeatingP2S=true;
89c4a3a6 sago007 2008-08-29 14:32 4307
                            timeHeldP2S=SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 4308
                            timesRepeatedP2S=0;
89c4a3a6 sago007 2008-08-29 14:32 4309
                        }
89c4a3a6 sago007 2008-08-29 14:32 4310
                        if (joypad1.left)
89c4a3a6 sago007 2008-08-29 14:32 4311
                        {
89c4a3a6 sago007 2008-08-29 14:32 4312
                            theGame2.MoveCursor('W');
89c4a3a6 sago007 2008-08-29 14:32 4313
                            repeatingP2W=true;
89c4a3a6 sago007 2008-08-29 14:32 4314
                            timeHeldP2W=SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 4315
                            timesRepeatedP2W=0;
89c4a3a6 sago007 2008-08-29 14:32 4316
                        }
89c4a3a6 sago007 2008-08-29 14:32 4317
                        if (joypad1.right)
89c4a3a6 sago007 2008-08-29 14:32 4318
                        {
89c4a3a6 sago007 2008-08-29 14:32 4319
                            theGame2.MoveCursor('E');
89c4a3a6 sago007 2008-08-29 14:32 4320
                            repeatingP2E=true;
89c4a3a6 sago007 2008-08-29 14:32 4321
                            timeHeldP2E=SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 4322
                            timesRepeatedP2E=0;
89c4a3a6 sago007 2008-08-29 14:32 4323
                        }
89c4a3a6 sago007 2008-08-29 14:32 4324
                        if (joypad1.but1)
89c4a3a6 sago007 2008-08-29 14:32 4325
                            theGame2.SwitchAtCursor();
89c4a3a6 sago007 2008-08-29 14:32 4326
                        if (joypad1.but2)
89c4a3a6 sago007 2008-08-29 14:32 4327
                            theGame2.PushLine();
89c4a3a6 sago007 2008-08-29 14:32 4328
                    }
89c4a3a6 sago007 2008-08-29 14:32 4329
                if (joypad2.working && !theGame2.AI_Enabled)
89c4a3a6 sago007 2008-08-29 14:32 4330
                    if (!joyplay2)
89c4a3a6 sago007 2008-08-29 14:32 4331
                    {
89c4a3a6 sago007 2008-08-29 14:32 4332
                        joypad2.update();
89c4a3a6 sago007 2008-08-29 14:32 4333
                        if (joypad2.up)
89c4a3a6 sago007 2008-08-29 14:32 4334
                        {
89c4a3a6 sago007 2008-08-29 14:32 4335
                            theGame.MoveCursor('N');
89c4a3a6 sago007 2008-08-29 14:32 4336
                            repeatingP1N=true;
89c4a3a6 sago007 2008-08-29 14:32 4337
                            timeHeldP1N=SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 4338
                            timesRepeatedP1N=0;
89c4a3a6 sago007 2008-08-29 14:32 4339
                        }
89c4a3a6 sago007 2008-08-29 14:32 4340
                        if (joypad2.down)
89c4a3a6 sago007 2008-08-29 14:32 4341
                        {
89c4a3a6 sago007 2008-08-29 14:32 4342
                            theGame.MoveCursor('S');
89c4a3a6 sago007 2008-08-29 14:32 4343
                            repeatingP1S=true;
89c4a3a6 sago007 2008-08-29 14:32 4344
                            timeHeldP1S=SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 4345
                            timesRepeatedP1S=0;
89c4a3a6 sago007 2008-08-29 14:32 4346
                        }
89c4a3a6 sago007 2008-08-29 14:32 4347
                        if (joypad2.left)
89c4a3a6 sago007 2008-08-29 14:32 4348
                        {
89c4a3a6 sago007 2008-08-29 14:32 4349
                            theGame.MoveCursor('W');
89c4a3a6 sago007 2008-08-29 14:32 4350
                            repeatingP1W=true;
89c4a3a6 sago007 2008-08-29 14:32 4351
                            timeHeldP1W=SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 4352
                            timesRepeatedP1W=0;
89c4a3a6 sago007 2008-08-29 14:32 4353
                        }
89c4a3a6 sago007 2008-08-29 14:32 4354
                        if (joypad2.right)
89c4a3a6 sago007 2008-08-29 14:32 4355
                        {
89c4a3a6 sago007 2008-08-29 14:32 4356
                            theGame.MoveCursor('E');
89c4a3a6 sago007 2008-08-29 14:32 4357
                            repeatingP1E=true;
89c4a3a6 sago007 2008-08-29 14:32 4358
                            timeHeldP1E=SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 4359
                            timesRepeatedP1E=0;
89c4a3a6 sago007 2008-08-29 14:32 4360
                        }
89c4a3a6 sago007 2008-08-29 14:32 4361
                        if (joypad2.but1)
89c4a3a6 sago007 2008-08-29 14:32 4362
                            theGame.SwitchAtCursor();
89c4a3a6 sago007 2008-08-29 14:32 4363
                        if (joypad2.but2)
89c4a3a6 sago007 2008-08-29 14:32 4364
                            theGame.PushLine();
89c4a3a6 sago007 2008-08-29 14:32 4365
                    }
89c4a3a6 sago007 2008-08-29 14:32 4366
                    else
89c4a3a6 sago007 2008-08-29 14:32 4367
                    {
89c4a3a6 sago007 2008-08-29 14:32 4368
                        joypad2.update();
89c4a3a6 sago007 2008-08-29 14:32 4369
                        if (joypad2.up)
89c4a3a6 sago007 2008-08-29 14:32 4370
                        {
89c4a3a6 sago007 2008-08-29 14:32 4371
                            theGame2.MoveCursor('N');
89c4a3a6 sago007 2008-08-29 14:32 4372
                            repeatingP2N=true;
89c4a3a6 sago007 2008-08-29 14:32 4373
                            timeHeldP2N=SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 4374
                            timesRepeatedP2N=0;
89c4a3a6 sago007 2008-08-29 14:32 4375
                        }
89c4a3a6 sago007 2008-08-29 14:32 4376
                        if (joypad2.down)
89c4a3a6 sago007 2008-08-29 14:32 4377
                        {
89c4a3a6 sago007 2008-08-29 14:32 4378
                            theGame2.MoveCursor('S');
89c4a3a6 sago007 2008-08-29 14:32 4379
                            repeatingP2S=true;
89c4a3a6 sago007 2008-08-29 14:32 4380
                            timeHeldP2S=SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 4381
                            timesRepeatedP2S=0;
89c4a3a6 sago007 2008-08-29 14:32 4382
                        }
89c4a3a6 sago007 2008-08-29 14:32 4383
                        if (joypad2.left)
89c4a3a6 sago007 2008-08-29 14:32 4384
                        {
89c4a3a6 sago007 2008-08-29 14:32 4385
                            theGame2.MoveCursor('W');
89c4a3a6 sago007 2008-08-29 14:32 4386
                            repeatingP2W=true;
89c4a3a6 sago007 2008-08-29 14:32 4387
                            timeHeldP2W=SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 4388
                            timesRepeatedP2W=0;
89c4a3a6 sago007 2008-08-29 14:32 4389
                        }
89c4a3a6 sago007 2008-08-29 14:32 4390
                        if (joypad2.right)
89c4a3a6 sago007 2008-08-29 14:32 4391
                        {
89c4a3a6 sago007 2008-08-29 14:32 4392
                            theGame2.MoveCursor('E');
89c4a3a6 sago007 2008-08-29 14:32 4393
                            repeatingP2E=true;
89c4a3a6 sago007 2008-08-29 14:32 4394
                            timeHeldP2E=SDL_GetTicks();
89c4a3a6 sago007 2008-08-29 14:32 4395
                            timesRepeatedP2E=0;
89c4a3a6 sago007 2008-08-29 14:32 4396
                        }
89c4a3a6 sago007 2008-08-29 14:32 4397
                        if (joypad2.but1)
89c4a3a6 sago007 2008-08-29 14:32 4398
                            theGame2.SwitchAtCursor();
89c4a3a6 sago007 2008-08-29 14:32 4399
                        if (joypad2.but2)
89c4a3a6 sago007 2008-08-29 14:32 4400
                            theGame2.PushLine();
89c4a3a6 sago007 2008-08-29 14:32 4401
                    }
89c4a3a6 sago007 2008-08-29 14:32 4402
            }
89c4a3a6 sago007 2008-08-29 14:32 4403
89c4a3a6 sago007 2008-08-29 14:32 4404
            /**********************************************************************
89c4a3a6 sago007 2008-08-29 14:32 4405
            ***************************** Joypad end ******************************
89c4a3a6 sago007 2008-08-29 14:32 4406
            **********************************************************************/
89c4a3a6 sago007 2008-08-29 14:32 4407
89c4a3a6 sago007 2008-08-29 14:32 4408
89c4a3a6 sago007 2008-08-29 14:32 4409
            keys = SDL_GetKeyState(NULL);
89c4a3a6 sago007 2008-08-29 14:32 4410
6d48320c sago007 2009-03-28 17:06 4411
            if(keymenu.activated)
6d48320c sago007 2009-03-28 17:06 4412
            {
6d48320c sago007 2009-03-28 17:06 4413
                mousex = keymenu.x*buttonXsize-10;
6d48320c sago007 2009-03-28 17:06 4414
                mousey = keymenu.y*buttonYsize-10;
6d48320c sago007 2009-03-28 17:06 4415
            }
6d48320c sago007 2009-03-28 17:06 4416
            else
6d48320c sago007 2009-03-28 17:06 4417
                SDL_GetMouseState(&mousex,&mousey);
89c4a3a6 sago007 2008-08-29 14:32 4418
89c4a3a6 sago007 2008-08-29 14:32 4419
            /********************************************************************
89c4a3a6 sago007 2008-08-29 14:32 4420
            **************** Here comes mouse play ******************************
89c4a3a6 sago007 2008-08-29 14:32 4421
            ********************************************************************/
89c4a3a6 sago007 2008-08-29 14:32 4422
89c4a3a6 sago007 2008-08-29 14:32 4423
            if ((mouseplay1)&&((!editorMode)&&(!theGame.AI_Enabled)||(editorModeTest))) //player 1
89c4a3a6 sago007 2008-08-29 14:32 4424
                if ((mousex > 50)&&(mousey>100)&&(mousex<50+300)&&(mousey<100+600))
89c4a3a6 sago007 2008-08-29 14:32 4425
                {
89c4a3a6 sago007 2008-08-29 14:32 4426
                    int yLine, xLine;
89c4a3a6 sago007 2008-08-29 14:32 4427
                    yLine = ((100+600)-(mousey-100+theGame.pixels))/50;
89c4a3a6 sago007 2008-08-29 14:32 4428
                    xLine = (mousex-50+25)/50;
89c4a3a6 sago007 2008-08-29 14:32 4429
                    yLine-=2;
89c4a3a6 sago007 2008-08-29 14:32 4430
                    xLine-=1;
89c4a3a6 sago007 2008-08-29 14:32 4431
                    if ((yLine>10)&&(theGame.TowerHeight<12))
89c4a3a6 sago007 2008-08-29 14:32 4432
                        yLine=10;
89c4a3a6 sago007 2008-08-29 14:32 4433
                    if (((theGame.pixels==50)||(theGame.pixels==0)) && (yLine>11))
89c4a3a6 sago007 2008-08-29 14:32 4434
                        yLine=11;
89c4a3a6 sago007 2008-08-29 14:32 4435
                    if (yLine<0)
89c4a3a6 sago007 2008-08-29 14:32 4436
                        yLine=0;
89c4a3a6 sago007 2008-08-29 14:32 4437
                    if (xLine<0)
89c4a3a6 sago007 2008-08-29 14:32 4438
                        xLine=0;
89c4a3a6 sago007 2008-08-29 14:32 4439
                    if (xLine>4)
89c4a3a6 sago007 2008-08-29 14:32 4440
                        xLine=4;
89c4a3a6 sago007 2008-08-29 14:32 4441
                    theGame.cursorx=xLine;
89c4a3a6 sago007 2008-08-29 14:32 4442
                    theGame.cursory=yLine;
89c4a3a6 sago007 2008-08-29 14:32 4443
                }
89c4a3a6 sago007 2008-08-29 14:32 4444
89c4a3a6 sago007 2008-08-29 14:32 4445
            if ((mouseplay2)&&(!editorMode)&&(!theGame2.AI_Enabled)) //player 2
89c4a3a6 sago007 2008-08-29 14:32 4446
                if ((mousex > xsize-500)&&(mousey>100)&&(mousex<xsize-500+300)&&(mousey<100+600))
89c4a3a6 sago007 2008-08-29 14:32 4447
                {
89c4a3a6 sago007 2008-08-29 14:32 4448
                    int yLine, xLine;
89c4a3a6 sago007 2008-08-29 14:32 4449
                    yLine = ((100+600)-(mousey-100+theGame2.pixels))/50;
89c4a3a6 sago007 2008-08-29 14:32 4450
                    xLine = (mousex-(xsize-500)+25)/50;
89c4a3a6 sago007 2008-08-29 14:32 4451
                    yLine-=2;
89c4a3a6 sago007 2008-08-29 14:32 4452
                    xLine-=1;
89c4a3a6 sago007 2008-08-29 14:32 4453
                    if ((yLine>10)&&(theGame2.TowerHeight<12))
89c4a3a6 sago007 2008-08-29 14:32 4454
                        yLine=10;
89c4a3a6 sago007 2008-08-29 14:32 4455
                    if (((theGame2.pixels==50)||(theGame2.pixels==0)) && (yLine>11))
89c4a3a6 sago007 2008-08-29 14:32 4456
                        yLine=11;
89c4a3a6 sago007 2008-08-29 14:32 4457
                    if (yLine<0)
89c4a3a6 sago007 2008-08-29 14:32 4458
                        yLine=0;
89c4a3a6 sago007 2008-08-29 14:32 4459
                    if (xLine<0)
89c4a3a6 sago007 2008-08-29 14:32 4460
                        xLine=0;
89c4a3a6 sago007 2008-08-29 14:32 4461
                    if (xLine>4)
89c4a3a6 sago007 2008-08-29 14:32 4462
                        xLine=4;
89c4a3a6 sago007 2008-08-29 14:32 4463
                    theGame2.cursorx=xLine;
89c4a3a6 sago007 2008-08-29 14:32 4464
                    theGame2.cursory=yLine;
89c4a3a6 sago007 2008-08-29 14:32 4465
                }
89c4a3a6 sago007 2008-08-29 14:32 4466
89c4a3a6 sago007 2008-08-29 14:32 4467
            /********************************************************************
89c4a3a6 sago007 2008-08-29 14:32 4468
            **************** Here ends mouse play *******************************
89c4a3a6 sago007 2008-08-29 14:32 4469
            ********************************************************************/
89c4a3a6 sago007 2008-08-29 14:32 4470
89c4a3a6 sago007 2008-08-29 14:32 4471
            // If the mouse button is released, make bMouseUp equal true
89c4a3a6 sago007 2008-08-29 14:32 4472
            if (!SDL_GetMouseState(NULL, NULL)&SDL_BUTTON(1))
89c4a3a6 sago007 2008-08-29 14:32 4473
            {
89c4a3a6 sago007 2008-08-29 14:32 4474
                bMouseUp=true;
89c4a3a6 sago007 2008-08-29 14:32 4475
            }
89c4a3a6 sago007 2008-08-29 14:32 4476
89c4a3a6 sago007 2008-08-29 14:32 4477
            // If the mouse button 2 is released, make bMouseUp2 equal true
89c4a3a6 sago007 2008-08-29 14:32 4478
            if ((SDL_GetMouseState(NULL, NULL)&SDL_BUTTON(3))!=SDL_BUTTON(3))
89c4a3a6 sago007 2008-08-29 14:32 4479
            {
89c4a3a6 sago007 2008-08-29 14:32 4480
                bMouseUp2=true;
89c4a3a6 sago007 2008-08-29 14:32 4481
            }
89c4a3a6 sago007 2008-08-29 14:32 4482
89c4a3a6 sago007 2008-08-29 14:32 4483
            if ((!singlePuzzle)&&(!editorMode))
89c4a3a6 sago007 2008-08-29 14:32 4484
            {
89c4a3a6 sago007 2008-08-29 14:32 4485
                //read mouse events
89c4a3a6 sago007 2008-08-29 14:32 4486
                if (SDL_GetMouseState(NULL,NULL)&SDL_BUTTON(1) && bMouseUp)
89c4a3a6 sago007 2008-08-29 14:32 4487
                {
89c4a3a6 sago007 2008-08-29 14:32 4488
                    bMouseUp = false;
89c4a3a6 sago007 2008-08-29 14:32 4489
                    DrawIMG(background, screen, 0, 0);
2f30c381 sago007 2008-09-14 13:08 4490
                    #if NETWORK
2f30c381 sago007 2008-09-14 13:08 4491
                    //Nothing
2f30c381 sago007 2008-09-14 13:08 4492
                    #else
2f30c381 sago007 2008-09-14 13:08 4493
                    bool networkActive=false;
2f30c381 sago007 2008-09-14 13:08 4494
                    #endif
9050a50a sago007 2008-12-09 13:35 4495
                    if ((0<mousex) && (mousex<buttonXsize) && (0<mousey) && (mousey<40) &&(!networkActive) )
89c4a3a6 sago007 2008-08-29 14:32 4496
                    {
89c4a3a6 sago007 2008-08-29 14:32 4497
                        //New game clicked
89c4a3a6 sago007 2008-08-29 14:32 4498
                        bool state = (!bNewGameOpen);
89c4a3a6 sago007 2008-08-29 14:32 4499
                        closeAllMenus();
89c4a3a6 sago007 2008-08-29 14:32 4500
                        bNewGameOpen = state; //theGame.NewGame(50,100);
89c4a3a6 sago007 2008-08-29 14:32 4501
                        showOptions = false;
89c4a3a6 sago007 2008-08-29 14:32 4502
                    }
89c4a3a6 sago007 2008-08-29 14:32 4503
                    else
1572de2b sago007 2008-09-11 18:15 4504
#if NETWORK
9050a50a sago007 2008-12-09 13:35 4505
                        if ((0<mousex) && (mousex<buttonXsize) && (0<mousey) && (mousey<40) &&(networkActive))
89c4a3a6 sago007 2008-08-29 14:32 4506
                        {
89c4a3a6 sago007 2008-08-29 14:32 4507
                            //Disconnect clicked!
89c4a3a6 sago007 2008-08-29 14:32 4508
                            cout << "Disconnect clicked!" << endl;
89c4a3a6 sago007 2008-08-29 14:32 4509
                            nt.ntDisconnect();
89c4a3a6 sago007 2008-08-29 14:32 4510
                        }
89c4a3a6 sago007 2008-08-29 14:32 4511
                        else
89c4a3a6 sago007 2008-08-29 14:32 4512
#endif
9050a50a sago007 2008-12-09 13:35 4513
                            if ((0<mousex) && (mousex<buttonXsize) && (40<mousey) && (mousey<80) && (bNewGameOpen) &&(!networkActive))
89c4a3a6 sago007 2008-08-29 14:32 4514
                            {
89c4a3a6 sago007 2008-08-29 14:32 4515
                                //1player
89c4a3a6 sago007 2008-08-29 14:32 4516
                                b1playerOpen = (!b1playerOpen);
89c4a3a6 sago007 2008-08-29 14:32 4517
                                b2playersOpen = false;
1572de2b sago007 2008-09-11 18:15 4518
#if NETWORK
89c4a3a6 sago007 2008-08-29 14:32 4519
                                bNetworkOpen = false;
89c4a3a6 sago007 2008-08-29 14:32 4520
#endif
89c4a3a6 sago007 2008-08-29 14:32 4521
                            }
89c4a3a6 sago007 2008-08-29 14:32 4522
                            else
9050a50a sago007 2008-12-09 13:35 4523
                                if ((0<mousex) && (mousex<buttonXsize) && (80<mousey) && (mousey<120) && (bNewGameOpen) &&(!networkActive))
89c4a3a6 sago007 2008-08-29 14:32 4524
                                {
89c4a3a6 sago007 2008-08-29 14:32 4525
                                    //2player
89c4a3a6 sago007 2008-08-29 14:32 4526
                                    b2playersOpen = (!b2playersOpen);
89c4a3a6 sago007 2008-08-29 14:32 4527
                                    b1playerOpen = false;
1572de2b sago007 2008-09-11 18:15 4528
#if NETWORK
89c4a3a6 sago007 2008-08-29 14:32 4529
                                    bNetworkOpen = false;
89c4a3a6 sago007 2008-08-29 14:32 4530
#endif
89c4a3a6 sago007 2008-08-29 14:32 4531
                                }
1572de2b sago007 2008-09-11 18:15 4532
#if NETWORK
89c4a3a6 sago007 2008-08-29 14:32 4533
                                else
9050a50a sago007 2008-12-09 13:35 4534
                                    if ((0<mousex) && (mousex<buttonXsize) && (120<mousey) && (mousey<160) && (bNewGameOpen) &&(!networkActive))
89c4a3a6 sago007 2008-08-29 14:32 4535
                                    {
89c4a3a6 sago007 2008-08-29 14:32 4536
                                        //Network
89c4a3a6 sago007 2008-08-29 14:32 4537
                                        b1playerOpen = false;
89c4a3a6 sago007 2008-08-29 14:32 4538
                                        b2playersOpen = false;
89c4a3a6 sago007 2008-08-29 14:32 4539
                                        bNetworkOpen = (!bNetworkOpen);
89c4a3a6 sago007 2008-08-29 14:32 4540
                                    }
89c4a3a6 sago007 2008-08-29 14:32 4541
#endif
89c4a3a6 sago007 2008-08-29 14:32 4542
                                    else
9050a50a sago007 2008-12-09 13:35 4543
                                        if ((buttonXsize<mousex) && (mousex<240) && (40<mousey) && (mousey<80) && (b1playerOpen) &&(!networkActive))
89c4a3a6 sago007 2008-08-29 14:32 4544
                                        {
89c4a3a6 sago007 2008-08-29 14:32 4545
                                            //1 player - endless
89c4a3a6 sago007 2008-08-29 14:32 4546
                                            theGame.NewGame(50,100);
89c4a3a6 sago007 2008-08-29 14:32 4547
                                            theGame.putStartBlocks();
89c4a3a6 sago007 2008-08-29 14:32 4548
                                            bNewGameOpen = false;
89c4a3a6 sago007 2008-08-29 14:32 4549
                                            b1playerOpen = false;
89c4a3a6 sago007 2008-08-29 14:32 4550
                                            twoPlayers =false;
89c4a3a6 sago007 2008-08-29 14:32 4551
                                            theGame2.SetGameOver();
89c4a3a6 sago007 2008-08-29 14:32 4552
                                            showGame = true;
c96f480e sago007 2009-03-28 18:59 4553
                                            strcpy(theGame.name, player1name);
c96f480e sago007 2009-03-28 18:59 4554
                                            strcpy(theGame2.name, player2name);
89c4a3a6 sago007 2008-08-29 14:32 4555
                                        }
89c4a3a6 sago007 2008-08-29 14:32 4556
                                        else
9050a50a sago007 2008-12-09 13:35 4557
                                            if ((buttonXsize<mousex) && (mousex<240) && (80<mousey) && (mousey<120) && (b1playerOpen) &&(!networkActive) )
89c4a3a6 sago007 2008-08-29 14:32 4558
                                            {
89c4a3a6 sago007 2008-08-29 14:32 4559
                                                //1 player - time trial
89c4a3a6 sago007 2008-08-29 14:32 4560
                                                theGame.NewGame(50,100);
89c4a3a6 sago007 2008-08-29 14:32 4561
                                                theGame.timetrial=true;
89c4a3a6 sago007 2008-08-29 14:32 4562
                                                theGame.putStartBlocks();
89c4a3a6 sago007 2008-08-29 14:32 4563
                                                bNewGameOpen = false;
89c4a3a6 sago007 2008-08-29 14:32 4564
                                                b1playerOpen = false;
89c4a3a6 sago007 2008-08-29 14:32 4565
                                                twoPlayers =false;
89c4a3a6 sago007 2008-08-29 14:32 4566
                                                theGame2.SetGameOver();
89c4a3a6 sago007 2008-08-29 14:32 4567
                                                showGame = true;
c96f480e sago007 2009-03-28 18:59 4568
                                                strcpy(theGame.name, player1name);
c96f480e sago007 2009-03-28 18:59 4569
                                                strcpy(theGame2.name, player2name);
89c4a3a6 sago007 2008-08-29 14:32 4570
                                            }
89c4a3a6 sago007 2008-08-29 14:32 4571
                                            else
9050a50a sago007 2008-12-09 13:35 4572
                                                if ((buttonXsize<mousex) && (mousex<240) && (120<mousey) && (mousey<160) && (b1playerOpen)&&(!networkActive) )
89c4a3a6 sago007 2008-08-29 14:32 4573
                                                {
89c4a3a6 sago007 2008-08-29 14:32 4574
                                                    //1 player - stage clear
89c4a3a6 sago007 2008-08-29 14:32 4575
                                                    bNewGameOpen = false;
89c4a3a6 sago007 2008-08-29 14:32 4576
                                                    b1playerOpen = false;
89c4a3a6 sago007 2008-08-29 14:32 4577
                                                    int myLevel = StageLevelSelect();
89c4a3a6 sago007 2008-08-29 14:32 4578
                                                    theGame.NewStageGame(myLevel,50,100);
89c4a3a6 sago007 2008-08-29 14:32 4579
                                                    MakeBackground(xsize,ysize,theGame,theGame2);
89c4a3a6 sago007 2008-08-29 14:32 4580
                                                    DrawIMG(background, screen, 0, 0);
89c4a3a6 sago007 2008-08-29 14:32 4581
                                                    twoPlayers =false;
89c4a3a6 sago007 2008-08-29 14:32 4582
                                                    theGame2.SetGameOver();
89c4a3a6 sago007 2008-08-29 14:32 4583
                                                    showGame = true;
89c4a3a6 sago007 2008-08-29 14:32 4584
                                                    vsMode = false;
c96f480e sago007 2009-03-28 18:59 4585
                                                    strcpy(theGame.name, player1name);
c96f480e sago007 2009-03-28 18:59 4586
                                                    strcpy(theGame2.name, player2name);
89c4a3a6 sago007 2008-08-29 14:32 4587
                                                }
89c4a3a6 sago007 2008-08-29 14:32 4588
                                                else
9050a50a sago007 2008-12-09 13:35 4589
                                                    if ((buttonXsize<mousex) && (mousex<240) && (160<mousey) && (mousey<200) && (b1playerOpen))
89c4a3a6 sago007 2008-08-29 14:32 4590
                                                    {
89c4a3a6 sago007 2008-08-29 14:32 4591
                                                        //1 player - puzzle
89c4a3a6 sago007 2008-08-29 14:32 4592
                                                        bNewGameOpen = false;
89c4a3a6 sago007 2008-08-29 14:32 4593
                                                        b1playerOpen = false;
89c4a3a6 sago007 2008-08-29 14:32 4594
                                                        int myLevel = PuzzleLevelSelect();
89c4a3a6 sago007 2008-08-29 14:32 4595
                                                        theGame.NewPuzzleGame(myLevel,50,100);
89c4a3a6 sago007 2008-08-29 14:32 4596
                                                        MakeBackground(xsize,ysize,theGame,theGame2);
89c4a3a6 sago007 2008-08-29 14:32 4597
                                                        DrawIMG(background, screen, 0, 0);
89c4a3a6 sago007 2008-08-29 14:32 4598
                                                        twoPlayers =false;
89c4a3a6 sago007 2008-08-29 14:32 4599
                                                        theGame2.SetGameOver();
89c4a3a6 sago007 2008-08-29 14:32 4600
                                                        showGame = true;
89c4a3a6 sago007 2008-08-29 14:32 4601
                                                        vsMode = false;
c96f480e sago007 2009-03-28 18:59 4602
                                                        strcpy(theGame.name, player1name);
c96f480e sago007 2009-03-28 18:59 4603
                                                        strcpy(theGame2.name, player2name);
89c4a3a6 sago007 2008-08-29 14:32 4604
                                                    }
89c4a3a6 sago007 2008-08-29 14:32 4605
                                                    else
9050a50a sago007 2008-12-09 13:35 4606
                                                        if ((buttonXsize<mousex) && (mousex<240) && (200<mousey) && (mousey<240) && (b1playerOpen))
89c4a3a6 sago007 2008-08-29 14:32 4607
                                                        {
89c4a3a6 sago007 2008-08-29 14:32 4608
                                                            //1 player - Vs mode
89c4a3a6 sago007 2008-08-29 14:32 4609
                                                            bNewGameOpen = false;
89c4a3a6 sago007 2008-08-29 14:32 4610
                                                            b1playerOpen = false;
89c4a3a6 sago007 2008-08-29 14:32 4611
                                                            int theAIlevel = startSingleVs();
89c4a3a6 sago007 2008-08-29 14:32 4612
                                                            theGame.NewVsGame(50,100,&theGame2);
89c4a3a6 sago007 2008-08-29 14:32 4613
                                                            theGame2.NewVsGame(xsize-500,100,&theGame);
89c4a3a6 sago007 2008-08-29 14:32 4614
                                                            MakeBackground(xsize,ysize,theGame,theGame2);
89c4a3a6 sago007 2008-08-29 14:32 4615
                                                            DrawIMG(background, screen, 0, 0);
89c4a3a6 sago007 2008-08-29 14:32 4616
                                                            twoPlayers = true; //Single player, but AI plays
89c4a3a6 sago007 2008-08-29 14:32 4617
                                                            showGame = true;
89c4a3a6 sago007 2008-08-29 14:32 4618
                                                            vsMode = true;
89c4a3a6 sago007 2008-08-29 14:32 4619
                                                            theGame2.AI_Enabled=true; //Of course we need an AI
89c4a3a6 sago007 2008-08-29 14:32 4620
                                                            theGame2.setAIlevel((Uint8)theAIlevel);
89c4a3a6 sago007 2008-08-29 14:32 4621
                                                            int theTime = time(0);
89c4a3a6 sago007 2008-08-29 14:32 4622
                                                            theGame.putStartBlocks(theTime);
89c4a3a6 sago007 2008-08-29 14:32 4623
                                                            theGame2.putStartBlocks(theTime);
c96f480e sago007 2009-03-28 18:59 4624
                                                            strcpy(theGame.name, player1name);
c96f480e sago007 2009-03-28 18:59 4625
                                                            strcpy(theGame2.name, player2name);
89c4a3a6 sago007 2008-08-29 14:32 4626
                                                        }
89c4a3a6 sago007 2008-08-29 14:32 4627
                                                        else
9050a50a sago007 2008-12-09 13:35 4628
                                                            if ((buttonXsize<mousex) && (mousex<240) && (80<mousey) && (mousey<120) && (b2playersOpen))
89c4a3a6 sago007 2008-08-29 14:32 4629
                                                            {
89c4a3a6 sago007 2008-08-29 14:32 4630
                                                                //2 player - time trial
89c4a3a6 sago007 2008-08-29 14:32 4631
                                                                theGame.NewGame(50,100);
89c4a3a6 sago007 2008-08-29 14:32 4632
                                                                theGame.timetrial=true;
89c4a3a6 sago007 2008-08-29 14:32 4633
                                                                bNewGameOpen = false;
89c4a3a6 sago007 2008-08-29 14:32 4634
                                                                b2playersOpen = false;
89c4a3a6 sago007 2008-08-29 14:32 4635
                                                                theGame.NewGame(50,100);
89c4a3a6 sago007 2008-08-29 14:32 4636
                                                                theGame2.NewGame(xsize-500,100);
89c4a3a6 sago007 2008-08-29 14:32 4637
                                                                theGame.timetrial = true;
89c4a3a6 sago007 2008-08-29 14:32 4638
                                                                theGame2.timetrial = true;
89c4a3a6 sago007 2008-08-29 14:32 4639
                                                                int theTime = time(0);
89c4a3a6 sago007 2008-08-29 14:32 4640
                                                                theGame.putStartBlocks(theTime);
89c4a3a6 sago007 2008-08-29 14:32 4641
                                                                theGame2.putStartBlocks(theTime);
89c4a3a6 sago007 2008-08-29 14:32 4642
                                                                theGame.setGameSpeed(player1Speed);
89c4a3a6 sago007 2008-08-29 14:32 4643
                                                                theGame2.setGameSpeed(player2Speed);
89c4a3a6 sago007 2008-08-29 14:32 4644
                                                                theGame.setHandicap(player1handicap);
89c4a3a6 sago007 2008-08-29 14:32 4645
                                                                theGame2.setHandicap(player2handicap);
89c4a3a6 sago007 2008-08-29 14:32 4646
                                                                theGame.AI_Enabled = player1AI;
89c4a3a6 sago007 2008-08-29 14:32 4647
                                                                theGame2.AI_Enabled = player2AI;
89c4a3a6 sago007 2008-08-29 14:32 4648
                                                                theGame.setAIlevel(player1AIlevel);
89c4a3a6 sago007 2008-08-29 14:32 4649
                                                                theGame2.setAIlevel(player2AIlevel);
89c4a3a6 sago007 2008-08-29 14:32 4650
                                                                twoPlayers = true;
c96f480e sago007 2009-03-28 18:59 4651
                                                                strcpy(theGame.name, player1name);
c96f480e sago007 2009-03-28 18:59 4652
                                                                strcpy(theGame2.name, player2name);
89c4a3a6 sago007 2008-08-29 14:32 4653
                                                            }
89c4a3a6 sago007 2008-08-29 14:32 4654
                                                            else
9050a50a sago007 2008-12-09 13:35 4655
                                                                if ((buttonXsize<mousex) && (mousex<240) && (120<mousey) && (mousey<160) && (b2playersOpen))
89c4a3a6 sago007 2008-08-29 14:32 4656
                                                                {
89c4a3a6 sago007 2008-08-29 14:32 4657
                                                                    //2 player - VsMode
89c4a3a6 sago007 2008-08-29 14:32 4658
                                                                    theGame.NewVsGame(50,100,&theGame2);
89c4a3a6 sago007 2008-08-29 14:32 4659
                                                                    theGame2.NewVsGame(xsize-500,100,&theGame);
89c4a3a6 sago007 2008-08-29 14:32 4660
                                                                    bNewGameOpen = false;
89c4a3a6 sago007 2008-08-29 14:32 4661
                                                                    vsMode = true;
89c4a3a6 sago007 2008-08-29 14:32 4662
                                                                    twoPlayers = true;
89c4a3a6 sago007 2008-08-29 14:32 4663
                                                                    b2playersOpen = false;
89c4a3a6 sago007 2008-08-29 14:32 4664
                                                                    theGame.setGameSpeed(player1Speed);
89c4a3a6 sago007 2008-08-29 14:32 4665
                                                                    theGame2.setGameSpeed(player2Speed);
89c4a3a6 sago007 2008-08-29 14:32 4666
                                                                    theGame.setHandicap(player1handicap);
89c4a3a6 sago007 2008-08-29 14:32 4667
                                                                    theGame2.setHandicap(player2handicap);
89c4a3a6 sago007 2008-08-29 14:32 4668
                                                                    theGame.AI_Enabled = player1AI;
89c4a3a6 sago007 2008-08-29 14:32 4669
                                                                    theGame2.AI_Enabled = player2AI;
89c4a3a6 sago007 2008-08-29 14:32 4670
                                                                    theGame.setAIlevel(player1AIlevel);
89c4a3a6 sago007 2008-08-29 14:32 4671
                                                                    theGame2.setAIlevel(player2AIlevel);
89c4a3a6 sago007 2008-08-29 14:32 4672
                                                                    int theTime = time(0);
89c4a3a6 sago007 2008-08-29 14:32 4673
                                                                    theGame.putStartBlocks(theTime);
89c4a3a6 sago007 2008-08-29 14:32 4674
                                                                    theGame2.putStartBlocks(theTime);
c96f480e sago007 2009-03-28 18:59 4675
                                                                    strcpy(theGame.name, player1name);
c96f480e sago007 2009-03-28 18:59 4676
                                                                    strcpy(theGame2.name, player2name);
89c4a3a6 sago007 2008-08-29 14:32 4677
                                                                }
1572de2b sago007 2008-09-11 18:15 4678
#if NETWORK
89c4a3a6 sago007 2008-08-29 14:32 4679
                                                                else
9050a50a sago007 2008-12-09 13:35 4680
                                                                    if ((buttonXsize<mousex) && (mousex<240) && (120<mousey) && (mousey<160) && (bNetworkOpen))
89c4a3a6 sago007 2008-08-29 14:32 4681
                                                                    {
89c4a3a6 sago007 2008-08-29 14:32 4682
                                                                        //Host
89c4a3a6 sago007 2008-08-29 14:32 4683
                                                                        cout << "Host" << endl;
89c4a3a6 sago007 2008-08-29 14:32 4684
                                                                        closeAllMenus();
89c4a3a6 sago007 2008-08-29 14:32 4685
                                                                        theGame.SetGameOver();
89c4a3a6 sago007 2008-08-29 14:32 4686
                                                                        theGame2.SetGameOver();
89c4a3a6 sago007 2008-08-29 14:32 4687
                                                                        nt.startServer();
89c4a3a6 sago007 2008-08-29 14:32 4688
                                                                    }
89c4a3a6 sago007 2008-08-29 14:32 4689
                                                                    else
9050a50a sago007 2008-12-09 13:35 4690
                                                                        if ((buttonXsize<mousex) && (mousex<240) && (160<mousey) && (mousey<200) && (bNetworkOpen))
89c4a3a6 sago007 2008-08-29 14:32 4691
                                                                        {
89c4a3a6 sago007 2008-08-29 14:32 4692
                                                                            //Connect
89c4a3a6 sago007 2008-08-29 14:32 4693
                                                                            cout << "Connect" << endl;
89c4a3a6 sago007 2008-08-29 14:32 4694
                                                                            closeAllMenus();
89c4a3a6 sago007 2008-08-29 14:32 4695
                                                                            theGame.SetGameOver();
89c4a3a6 sago007 2008-08-29 14:32 4696
                                                                            theGame2.SetGameOver();
89c4a3a6 sago007 2008-08-29 14:32 4697
                                                                            if (OpenDialogbox(200,100,serverAddress))
89c4a3a6 sago007 2008-08-29 14:32 4698
                                                                            {
89c4a3a6 sago007 2008-08-29 14:32 4699
                                                                                char buf[30];
89c4a3a6 sago007 2008-08-29 14:32 4700
                                                                                memcpy(buf,serverAddress,30);
89c4a3a6 sago007 2008-08-29 14:32 4701
                                                                                nt.connectToServer(strtok(buf," "));
89c4a3a6 sago007 2008-08-29 14:32 4702
                                                                            }
89c4a3a6 sago007 2008-08-29 14:32 4703
                                                                            while ( SDL_PollEvent(&event) ); //If the user have pressed ESC or the like
89c4a3a6 sago007 2008-08-29 14:32 4704
                                                                        }
89c4a3a6 sago007 2008-08-29 14:32 4705
#endif
89c4a3a6 sago007 2008-08-29 14:32 4706
                                                                        else
9050a50a sago007 2008-12-09 13:35 4707
                                                                            if ((buttonXsize<mousex) && (mousex<2*buttonXsize) && (0<mousey) && (mousey<40) &&(!networkActive))
89c4a3a6 sago007 2008-08-29 14:32 4708
                                                                            {
89c4a3a6 sago007 2008-08-29 14:32 4709
                                                                                //options button clicked
89c4a3a6 sago007 2008-08-29 14:32 4710
                                                                                if (bOptionsOpen)
89c4a3a6 sago007 2008-08-29 14:32 4711
                                                                                {
89c4a3a6 sago007 2008-08-29 14:32 4712
                                                                                    closeAllMenus();
89c4a3a6 sago007 2008-08-29 14:32 4713
                                                                                }
89c4a3a6 sago007 2008-08-29 14:32 4714
                                                                                else
89c4a3a6 sago007 2008-08-29 14:32 4715
                                                                                {
89c4a3a6 sago007 2008-08-29 14:32 4716
                                                                                    closeAllMenus();
89c4a3a6 sago007 2008-08-29 14:32 4717
                                                                                    bOptionsOpen = true;
89c4a3a6 sago007 2008-08-29 14:32 4718
                                                                                    DrawIMG(background, screen, 0, 0);
89c4a3a6 sago007 2008-08-29 14:32 4719
                                                                                }
89c4a3a6 sago007 2008-08-29 14:32 4720
                                                                            }
89c4a3a6 sago007 2008-08-29 14:32 4721
                                                                            else
9050a50a sago007 2008-12-09 13:35 4722
                                                                                if ((buttonXsize<mousex) && (mousex<2*buttonXsize) && (40<mousey) && (mousey<80) && (bOptionsOpen) )
89c4a3a6 sago007 2008-08-29 14:32 4723
                                                                                {
89c4a3a6 sago007 2008-08-29 14:32 4724
                                                                                    //Configure button clicked
89c4a3a6 sago007 2008-08-29 14:32 4725
                                                                                    closeAllMenus();
89c4a3a6 sago007 2008-08-29 14:32 4726
                                                                                    if (!showOptions) {
89c4a3a6 sago007 2008-08-29 14:32 4727
                                                                                        showOptions = true;
89c4a3a6 sago007 2008-08-29 14:32 4728
                                                                                    }
89c4a3a6 sago007 2008-08-29 14:32 4729
                                                                                    else showOptions = false;
89c4a3a6 sago007 2008-08-29 14:32 4730
                                                                                    DrawIMG(background, screen, 0, 0);
89c4a3a6 sago007 2008-08-29 14:32 4731
                                                                                }
89c4a3a6 sago007 2008-08-29 14:32 4732
                                                                                else
9050a50a sago007 2008-12-09 13:35 4733
                                                                                    if ((buttonXsize<mousex) && (mousex<2*buttonXsize) && (80<mousey) && (mousey<120) && (bOptionsOpen) )
89c4a3a6 sago007 2008-08-29 14:32 4734
                                                                                    {
89c4a3a6 sago007 2008-08-29 14:32 4735
                                                                                        //Configure button clicked
89c4a3a6 sago007 2008-08-29 14:32 4736
                                                                                        closeAllMenus();
89c4a3a6 sago007 2008-08-29 14:32 4737
                                                                                        changePuzzleLevels();
89c4a3a6 sago007 2008-08-29 14:32 4738
                                                                                    }
89c4a3a6 sago007 2008-08-29 14:32 4739
                                                                                    else
9050a50a sago007 2008-12-09 13:35 4740
                                                                                        if ((buttonXsize<mousex) && (mousex<2*buttonXsize) && (120<mousey) && (mousey<160) && (bOptionsOpen) )
89c4a3a6 sago007 2008-08-29 14:32 4741
                                                                                        {
89c4a3a6 sago007 2008-08-29 14:32 4742
                                                                                            //vsMode button clicked
89c4a3a6 sago007 2008-08-29 14:32 4743
                                                                                            closeAllMenus();
89c4a3a6 sago007 2008-08-29 14:32 4744
                                                                                            startVsMenu();
89c4a3a6 sago007 2008-08-29 14:32 4745
                                                                                        }
89c4a3a6 sago007 2008-08-29 14:32 4746
                                                                                        else
9050a50a sago007 2008-12-09 13:35 4747
                                                                                        if ((buttonXsize<mousex) && (mousex<2*buttonXsize) && (160<mousey) && (mousey<200) && (bOptionsOpen) )
89c4a3a6 sago007 2008-08-29 14:32 4748
                                                                                        {
89c4a3a6 sago007 2008-08-29 14:32 4749
                                                                                            //selectThemClicked
89c4a3a6 sago007 2008-08-29 14:32 4750
                                                                                            closeAllMenus();
89c4a3a6 sago007 2008-08-29 14:32 4751
                                                                                            char temp[30];
89c4a3a6 sago007 2008-08-29 14:32 4752
                                                                                            SelectThemeDialogbox(200,100,temp);
89c4a3a6 sago007 2008-08-29 14:32 4753
                                                                                        }
89c4a3a6 sago007 2008-08-29 14:32 4754
                                                                                        else
9050a50a sago007 2008-12-09 13:35 4755
                                                                                            if ((buttonXsize*2<mousex) && (mousex<3*buttonXsize) && (0<mousey) && (mousey<40) &&(!networkActive))
89c4a3a6 sago007 2008-08-29 14:32 4756
                                                                                            {
89c4a3a6 sago007 2008-08-29 14:32 4757
                                                                                                //highscore button clicked
47529580 sago007 2008-12-09 02:34 4758
                                                                                                OpenScoresDisplay();
47529580 sago007 2008-12-09 02:34 4759
89c4a3a6 sago007 2008-08-29 14:32 4760
                                                                                            }
89c4a3a6 sago007 2008-08-29 14:32 4761
                                                                                            else
9050a50a sago007 2008-12-09 13:35 4762
                                                                                                if ((360<mousex) && (mousex<4*buttonXsize) && (0<mousey) && (mousey<40) &&(!networkActive))
89c4a3a6 sago007 2008-08-29 14:32 4763
                                                                                                {
89c4a3a6 sago007 2008-08-29 14:32 4764
                                                                                                    //Replay clicked!
89c4a3a6 sago007 2008-08-29 14:32 4765
                                                                                                    bool state = (!bReplayOpen);
89c4a3a6 sago007 2008-08-29 14:32 4766
                                                                                                    closeAllMenus();
89c4a3a6 sago007 2008-08-29 14:32 4767
                                                                                                    bReplayOpen = state; //theGame.NewGame(50,100);
89c4a3a6 sago007 2008-08-29 14:32 4768
                                                                                                    showOptions = false;
89c4a3a6 sago007 2008-08-29 14:32 4769
                                                                                                }
89c4a3a6 sago007 2008-08-29 14:32 4770
                                                                                                else
9050a50a sago007 2008-12-09 13:35 4771
                                                                                                    if ((360<mousex) && (mousex<4*buttonXsize) && (40<mousey) && (mousey<80) &&(bReplayOpen))
89c4a3a6 sago007 2008-08-29 14:32 4772
                                                                                                    {
89c4a3a6 sago007 2008-08-29 14:32 4773
                                                                                                        //Replay->Save clicked!
89c4a3a6 sago007 2008-08-29 14:32 4774
                                                                                                        //cout << "Replay->Save clicked" << endl;
89c4a3a6 sago007 2008-08-29 14:32 4775
                                                                                                        char buf[30];
89c4a3a6 sago007 2008-08-29 14:32 4776
                                                                                                        for (int i=0;i<29;i++)buf[i]=' ';
89c4a3a6 sago007 2008-08-29 14:32 4777
                                                                                                        buf[30]=0;
89c4a3a6 sago007 2008-08-29 14:32 4778
                                                                                                        OpenDialogbox(200,100,buf);
89c4a3a6 sago007 2008-08-29 14:32 4779
                                                                                                        for (int i=28;buf[i]==' ';i--)
89c4a3a6 sago007 2008-08-29 14:32 4780
                                                                                                            buf[i]=0;
89c4a3a6 sago007 2008-08-29 14:32 4781
#ifdef __unix__
89c4a3a6 sago007 2008-08-29 14:32 4782
                                                                                                        string saveHere = (string)getenv("HOME")+(string)"/.gamesaves/blockattack/replays/"+(string)buf;
89c4a3a6 sago007 2008-08-29 14:32 4783
#elif WIN32
89c4a3a6 sago007 2008-08-29 14:32 4784
                                                                                                        string saveHere = home+(string)"/My Games/blockattack/replays/"+(string)buf;
89c4a3a6 sago007 2008-08-29 14:32 4785
#else
89c4a3a6 sago007 2008-08-29 14:32 4786
                                                                                                        string saveHere = (string)"./replays"+(string)buf;
89c4a3a6 sago007 2008-08-29 14:32 4787
#endif
89c4a3a6 sago007 2008-08-29 14:32 4788
                                                                                                        if (lastNrOfPlayers<2)
89c4a3a6 sago007 2008-08-29 14:32 4789
                                                                                                            theGame.theReplay.saveReplay(saveHere);
89c4a3a6 sago007 2008-08-29 14:32 4790
                                                                                                        else
89c4a3a6 sago007 2008-08-29 14:32 4791
                                                                                                            theGame.theReplay.saveReplay(saveHere,theGame2.theReplay);
89c4a3a6 sago007 2008-08-29 14:32 4792
89c4a3a6 sago007 2008-08-29 14:32 4793
                                                                                                        closeAllMenus();
89c4a3a6 sago007 2008-08-29 14:32 4794
                                                                                                    }
89c4a3a6 sago007 2008-08-29 14:32 4795
                                                                                                    else
9050a50a sago007 2008-12-09 13:35 4796
                                                                                                        if ((360<mousex) && (mousex<4*buttonXsize) && (80<mousey) && (mousey<120)&&(bReplayOpen))
89c4a3a6 sago007 2008-08-29 14:32 4797
                                                                                                        {
89c4a3a6 sago007 2008-08-29 14:32 4798
                                                                                                            //Replay->Load clicked!
89c4a3a6 sago007 2008-08-29 14:32 4799
                                                                                                            //cout << "Replay->Load clicked" << endl;
89c4a3a6 sago007 2008-08-29 14:32 4800
89c4a3a6 sago007 2008-08-29 14:32 4801
                                                                                                            char buf[30];
89c4a3a6 sago007 2008-08-29 14:32 4802
                                                                                                            for (int i=0;i<29;i++)buf[i]=' ';
89c4a3a6 sago007 2008-08-29 14:32 4803
                                                                                                            buf[30]=0;
89c4a3a6 sago007 2008-08-29 14:32 4804
                                                                                                            if (OpenReplayDialogbox(50,100,buf))
89c4a3a6 sago007 2008-08-29 14:32 4805
                                                                                                            {
89c4a3a6 sago007 2008-08-29 14:32 4806
                                                                                                                //cout << "Good way" << endl;
89c4a3a6 sago007 2008-08-29 14:32 4807
                                                                                                                for (int i=28;buf[i]==' ';i--)
89c4a3a6 sago007 2008-08-29 14:32 4808
                                                                                                                    buf[i]=0;
89c4a3a6 sago007 2008-08-29 14:32 4809
#ifdef __unix__
89c4a3a6 sago007 2008-08-29 14:32 4810
                                                                                                                string loadThis = (string)getenv("HOME")+(string)"/.gamesaves/blockattack/replays/"+(string)buf;
89c4a3a6 sago007 2008-08-29 14:32 4811
#elif WIN32
89c4a3a6 sago007 2008-08-29 14:32 4812
                                                                                                                string loadThis = home+(string)"/My Games/blockattack/replays/"+(string)buf;
89c4a3a6 sago007 2008-08-29 14:32 4813
#else
89c4a3a6 sago007 2008-08-29 14:32 4814
                                                                                                                string loadThis = (string)"./replays/"+(string)buf;
89c4a3a6 sago007 2008-08-29 14:32 4815
#endif
89c4a3a6 sago007 2008-08-29 14:32 4816
                                                                                                                ifstream replayFileIn;
89c4a3a6 sago007 2008-08-29 14:32 4817
                                                                                                                replayFileIn.open(loadThis.c_str(),ios::binary);
89c4a3a6 sago007 2008-08-29 14:32 4818
                                                                                                                bool play2 = false;
89c4a3a6 sago007 2008-08-29 14:32 4819
                                                                                                                if (replayFileIn)
89c4a3a6 sago007 2008-08-29 14:32 4820
                                                                                                                {
89c4a3a6 sago007 2008-08-29 14:32 4821
                                                                                                                    Uint8 version = 0;
89c4a3a6 sago007 2008-08-29 14:32 4822
                                                                                                                    replayFileIn.read(reinterpret_cast<char*>(&version),sizeof(Uint8));                                                                                                                  replayFileIn.close();
89c4a3a6 sago007 2008-08-29 14:32 4823
                                                                                                                    Replay r1;
e03ae476 sago007 2009-03-06 22:49 4824
                                                                                                                    if(r1.loadReplay(loadThis))
89c4a3a6 sago007 2008-08-29 14:32 4825
                                                                                                                    {
e03ae476 sago007 2009-03-06 22:49 4826
                                                                                                                        Replay r2;
e03ae476 sago007 2009-03-06 22:49 4827
                                                                                                                        play2 = r2.loadReplay2(loadThis);
e03ae476 sago007 2009-03-06 22:49 4828
                                                                                                                        theGame.playReplay(50,100); //Fejlen sker her
e03ae476 sago007 2009-03-06 22:49 4829
                                                                                                                        theGame.theReplay = r1;
e03ae476 sago007 2009-03-06 22:49 4830
                                                                                                                        if (play2)
e03ae476 sago007 2009-03-06 22:49 4831
                                                                                                                        {
e03ae476 sago007 2009-03-06 22:49 4832
                                                                                                                            theGame2.playReplay(xsize-500,100);
e03ae476 sago007 2009-03-06 22:49 4833
                                                                                                                            theGame2.theReplay = r2;
e03ae476 sago007 2009-03-06 22:49 4834
                                                                                                                        }
e03ae476 sago007 2009-03-06 22:49 4835
                                                                                                                        else
e03ae476 sago007 2009-03-06 22:49 4836
                                                                                                                            theGame2.SetGameOver();
e03ae476 sago007 2009-03-06 22:49 4837
                                                                                                                        cout << "Replay should have been read" << endl;
89c4a3a6 sago007 2008-08-29 14:32 4838
                                                                                                                    }
89c4a3a6 sago007 2008-08-29 14:32 4839
                                                                                                                    else
e03ae476 sago007 2009-03-06 22:49 4840
                                                                                                                        cout << "Failed to read replay" << endl;
89c4a3a6 sago007 2008-08-29 14:32 4841
                                                                                                                }
89c4a3a6 sago007 2008-08-29 14:32 4842
                                                                                                            }
89c4a3a6 sago007 2008-08-29 14:32 4843
                                                                                                            closeAllMenus();
89c4a3a6 sago007 2008-08-29 14:32 4844
                                                                                                        }
89c4a3a6 sago007 2008-08-29 14:32 4845
                                                                                                        else
9050a50a sago007 2008-12-09 13:35 4846
                                                                                                            if ((xsize-120<mousex) && (xsize-20>mousex) && (ysize-buttonXsize<mousey) && (ysize-20>mousey))
89c4a3a6 sago007 2008-08-29 14:32 4847
                                                                                                            {
89c4a3a6 sago007 2008-08-29 14:32 4848
                                                                                                                //Exit clicked
89c4a3a6 sago007 2008-08-29 14:32 4849
                                                                                                                done=1;
89c4a3a6 sago007 2008-08-29 14:32 4850
                                                                                                            }
89c4a3a6 sago007 2008-08-29 14:32 4851
                                                                                                            else
89c4a3a6 sago007 2008-08-29 14:32 4852
                                                                                                                if ((showOptions) && (mousex>500) && (mousex<560) && (mousey>220) && (mousey<260))
89c4a3a6 sago007 2008-08-29 14:32 4853
                                                                                                                {
89c4a3a6 sago007 2008-08-29 14:32 4854
                                                                                                                    MusicEnabled = !MusicEnabled;
89c4a3a6 sago007 2008-08-29 14:32 4855
                                                                                                                    if (!MusicEnabled) Mix_FadeOutMusic(500);
89c4a3a6 sago007 2008-08-29 14:32 4856
                                                                                                                }
89c4a3a6 sago007 2008-08-29 14:32 4857
                    if ((showOptions) && (mousex>500) && (mousex<560) && (mousey>270) && (mousey<310))
89c4a3a6 sago007 2008-08-29 14:32 4858
                    {
89c4a3a6 sago007 2008-08-29 14:32 4859
                        SoundEnabled = !SoundEnabled;
89c4a3a6 sago007 2008-08-29 14:32 4860
                    }
89c4a3a6 sago007 2008-08-29 14:32 4861
                    if ((showOptions) && (mousex>500) && (mousex<560) && (mousey>320) && (mousey<360))
89c4a3a6 sago007 2008-08-29 14:32 4862
                    {
89c4a3a6 sago007 2008-08-29 14:32 4863
                        //Fullscreen
89c4a3a6 sago007 2008-08-29 14:32 4864
                        bFullscreen = !bFullscreen;
89c4a3a6 sago007 2008-08-29 14:32 4865
#if defined(WIN32)
89c4a3a6 sago007 2008-08-29 14:32 4866
                        if (bFullscreen) screen=SDL_SetVideoMode(xsize,ysize,32,SDL_SWSURFACE|SDL_FULLSCREEN|SDL_ANYFORMAT);
89c4a3a6 sago007 2008-08-29 14:32 4867
                        else screen=SDL_SetVideoMode(xsize,ysize,32,SDL_SWSURFACE|SDL_ANYFORMAT);
89c4a3a6 sago007 2008-08-29 14:32 4868
                        DrawIMG(background, screen, 0, 0);
89c4a3a6 sago007 2008-08-29 14:32 4869
#else
89c4a3a6 sago007 2008-08-29 14:32 4870
                        SDL_WM_ToggleFullScreen(screen); //Will only work in Linux
89c4a3a6 sago007 2008-08-29 14:32 4871
#endif
89c4a3a6 sago007 2008-08-29 14:32 4872
                        SDL_ShowCursor(SDL_DISABLE);
89c4a3a6 sago007 2008-08-29 14:32 4873
                    }
89c4a3a6 sago007 2008-08-29 14:32 4874
89c4a3a6 sago007 2008-08-29 14:32 4875
                    if ((showOptions) && (mousex>330) && (mousex<470) && (mousey>535) && (mousey<585))
89c4a3a6 sago007 2008-08-29 14:32 4876
                    {
89c4a3a6 sago007 2008-08-29 14:32 4877
                        //change name
89c4a3a6 sago007 2008-08-29 14:32 4878
                        bScreenLocked = true;
89c4a3a6 sago007 2008-08-29 14:32 4879
                        showDialog = true;
c96f480e sago007 2009-03-28 18:59 4880
                        strcpy(theGame.name, player1name);
89c4a3a6 sago007 2008-08-29 14:32 4881
                        if (OpenDialogbox(200,100,player1name))
89c4a3a6 sago007 2008-08-29 14:32 4882
                            strcpy(theGame.name, player1name);
89c4a3a6 sago007 2008-08-29 14:32 4883
                        else
89c4a3a6 sago007 2008-08-29 14:32 4884
                            strcpy(player1name,theGame.name);
89c4a3a6 sago007 2008-08-29 14:32 4885
                        bScreenLocked = false;
89c4a3a6 sago007 2008-08-29 14:32 4886
                        showDialog = false;
89c4a3a6 sago007 2008-08-29 14:32 4887
                        MakeBackground(xsize,ysize,theGame,theGame2);
89c4a3a6 sago007 2008-08-29 14:32 4888
                        DrawIMG(background, screen, 0, 0);
89c4a3a6 sago007 2008-08-29 14:32 4889
                    }
89c4a3a6 sago007 2008-08-29 14:32 4890
                    if ((showOptions) && (mousex>330) && (mousex<470) && (mousey>600) && (mousey<640))
89c4a3a6 sago007 2008-08-29 14:32 4891
                    {
89c4a3a6 sago007 2008-08-29 14:32 4892
                        //change name
89c4a3a6 sago007 2008-08-29 14:32 4893
                        bScreenLocked = true;
89c4a3a6 sago007 2008-08-29 14:32 4894
                        showDialog = true;
c96f480e sago007 2009-03-28 18:59 4895
                        strcpy(theGame2.name, player2name);
89c4a3a6 sago007 2008-08-29 14:32 4896
                        if (OpenDialogbox(200,100,player2name))
89c4a3a6 sago007 2008-08-29 14:32 4897
                            strcpy(theGame2.name, player2name);
89c4a3a6 sago007 2008-08-29 14:32 4898
                        else
89c4a3a6 sago007 2008-08-29 14:32 4899
                            strcpy(player2name,theGame2.name);
89c4a3a6 sago007 2008-08-29 14:32 4900
                        bScreenLocked = false;
89c4a3a6 sago007 2008-08-29 14:32 4901
                        showDialog = false;
89c4a3a6 sago007 2008-08-29 14:32 4902
                        MakeBackground(xsize,ysize,theGame,theGame2);
89c4a3a6 sago007 2008-08-29 14:32 4903
                        DrawIMG(background, screen, 0, 0);
89c4a3a6 sago007 2008-08-29 14:32 4904
                    }
89c4a3a6 sago007 2008-08-29 14:32 4905
                    if ((showOptions) && (mousex>510) && (mousex<630) && (mousey>535) && (mousey<585))
89c4a3a6 sago007 2008-08-29 14:32 4906
                    {
89c4a3a6 sago007 2008-08-29 14:32 4907
                        //changeControls
89c4a3a6 sago007 2008-08-29 14:32 4908
                        OpenControlsBox(200,100,0);
89c4a3a6 sago007 2008-08-29 14:32 4909
                        MakeBackground(xsize,ysize,theGame,theGame2);
89c4a3a6 sago007 2008-08-29 14:32 4910
                        DrawIMG(background, screen, 0, 0);
89c4a3a6 sago007 2008-08-29 14:32 4911
                    }
89c4a3a6 sago007 2008-08-29 14:32 4912
                    if ((showOptions) && (mousex>510) && (mousex<630) && (mousey>600) && (mousey<640))
89c4a3a6 sago007 2008-08-29 14:32 4913
                    {
89c4a3a6 sago007 2008-08-29 14:32 4914
                        //changeControls
89c4a3a6 sago007 2008-08-29 14:32 4915
                        OpenControlsBox(200,100,2);
89c4a3a6 sago007 2008-08-29 14:32 4916
                        MakeBackground(xsize,ysize,theGame,theGame2);
89c4a3a6 sago007 2008-08-29 14:32 4917
                        DrawIMG(background, screen, 0, 0);
89c4a3a6 sago007 2008-08-29 14:32 4918
                    }
89c4a3a6 sago007 2008-08-29 14:32 4919
89c4a3a6 sago007 2008-08-29 14:32 4920
                    /********************************************************************
89c4a3a6 sago007 2008-08-29 14:32 4921
                    **************** Here comes mouse play ******************************
89c4a3a6 sago007 2008-08-29 14:32 4922
                    ********************************************************************/
47529580 sago007 2008-12-09 02:34 4923
                    if ((!showOptions))
89c4a3a6 sago007 2008-08-29 14:32 4924
                    {
89c4a3a6 sago007 2008-08-29 14:32 4925
                        if (mouseplay1 && !theGame.AI_Enabled) //player 1
89c4a3a6 sago007 2008-08-29 14:32 4926
                            if ((mousex > 50)&&(mousey>100)&&(mousex<50+300)&&(mousey<100+600))
89c4a3a6 sago007 2008-08-29 14:32 4927
                            {
89c4a3a6 sago007 2008-08-29 14:32 4928
                                theGame.SwitchAtCursor();
89c4a3a6 sago007 2008-08-29 14:32 4929
                            }
89c4a3a6 sago007 2008-08-29 14:32 4930
                        if (mouseplay2 && !theGame2.AI_Enabled) //player 2
89c4a3a6 sago007 2008-08-29 14:32 4931
                            if ((mousex > xsize-500)&&(mousey>100)&&(mousex<xsize-500+300)&&(mousey<100+600))
89c4a3a6 sago007 2008-08-29 14:32 4932
                            {
89c4a3a6 sago007 2008-08-29 14:32 4933
                                theGame2.SwitchAtCursor();
89c4a3a6 sago007 2008-08-29 14:32 4934
                            }
89c4a3a6 sago007 2008-08-29 14:32 4935
                    }
89c4a3a6 sago007 2008-08-29 14:32 4936
                    /********************************************************************
89c4a3a6 sago007 2008-08-29 14:32 4937
                    **************** Here ends mouse play *******************************
89c4a3a6 sago007 2008-08-29 14:32 4938
                    ********************************************************************/
89c4a3a6 sago007 2008-08-29 14:32 4939
89c4a3a6 sago007 2008-08-29 14:32 4940
                    if(stageButtonStatus != SBdontShow && (mousex > theGame.topx+cordNextButton.x)
89c4a3a6 sago007 2008-08-29 14:32 4941
                            &&(mousex < theGame.topx+cordNextButton.x+cordNextButton.xsize)
89c4a3a6 sago007 2008-08-29 14:32 4942
                            &&(mousey > theGame.topy+cordNextButton.y)&&(mousey < theGame.topy+cordNextButton.y+cordNextButton.ysize))
89c4a3a6 sago007 2008-08-29 14:32 4943
                    {
89c4a3a6 sago007 2008-08-29 14:32 4944
                        //Clicked the next button after a stage clear or puzzle
89c4a3a6 sago007 2008-08-29 14:32 4945
                        theGame.nextLevel();
89c4a3a6 sago007 2008-08-29 14:32 4946
                    }
89c4a3a6 sago007 2008-08-29 14:32 4947
                    if(stageButtonStatus != SBdontShow && (mousex > theGame.topx+cordRetryButton .x)
89c4a3a6 sago007 2008-08-29 14:32 4948
                            &&(mousex < theGame.topx+cordRetryButton.x+cordRetryButton.xsize)
89c4a3a6 sago007 2008-08-29 14:32 4949
                            &&(mousey > theGame.topy+cordRetryButton.y)&&(mousey < theGame.topy+cordRetryButton.y+cordRetryButton.ysize))
89c4a3a6 sago007 2008-08-29 14:32 4950
                    {
89c4a3a6 sago007 2008-08-29 14:32 4951
                        //Clicked the retry button
89c4a3a6 sago007 2008-08-29 14:32 4952
                        theGame.retryLevel();
89c4a3a6 sago007 2008-08-29 14:32 4953
                    }
89c4a3a6 sago007 2008-08-29 14:32 4954
                        
89c4a3a6 sago007 2008-08-29 14:32 4955
                    
89c4a3a6 sago007 2008-08-29 14:32 4956
                    //cout << "Mouse x: " << mousex << ", mouse y: " << mousey << endl;
89c4a3a6 sago007 2008-08-29 14:32 4957
                }
89c4a3a6 sago007 2008-08-29 14:32 4958
89c4a3a6 sago007 2008-08-29 14:32 4959
                //Mouse button 2:
89c4a3a6 sago007 2008-08-29 14:32 4960
                if ((SDL_GetMouseState(NULL,NULL)&SDL_BUTTON(3))==SDL_BUTTON(3) && bMouseUp2)
89c4a3a6 sago007 2008-08-29 14:32 4961
                {
89c4a3a6 sago007 2008-08-29 14:32 4962
                    bMouseUp2=false; //The button is pressed
89c4a3a6 sago007 2008-08-29 14:32 4963
                    /********************************************************************
89c4a3a6 sago007 2008-08-29 14:32 4964
                    **************** Here comes mouse play ******************************
89c4a3a6 sago007 2008-08-29 14:32 4965
                    ********************************************************************/
47529580 sago007 2008-12-09 02:34 4966
                    if (!showOptions)
89c4a3a6 sago007 2008-08-29 14:32 4967
                    {
89c4a3a6 sago007 2008-08-29 14:32 4968
                        if (mouseplay1 && !theGame.AI_Enabled) //player 1
89c4a3a6 sago007 2008-08-29 14:32 4969
                            if ((mousex > 50)&&(mousey>100)&&(mousex<50+300)&&(mousey<100+600))
89c4a3a6 sago007 2008-08-29 14:32 4970
                            {
89c4a3a6 sago007 2008-08-29 14:32 4971
                                theGame.PushLine();
89c4a3a6 sago007 2008-08-29 14:32 4972
                            }
89c4a3a6 sago007 2008-08-29 14:32 4973
                        if (mouseplay2 && !theGame2.AI_Enabled) //player 2
89c4a3a6 sago007 2008-08-29 14:32 4974
                            if ((mousex > xsize-500)&&(mousey>100)&&(mousex<xsize-500+300)&&(mousey<100+600))
89c4a3a6 sago007 2008-08-29 14:32 4975
                            {
89c4a3a6 sago007 2008-08-29 14:32 4976
                                theGame2.PushLine();
89c4a3a6 sago007 2008-08-29 14:32 4977
                            }
89c4a3a6 sago007 2008-08-29 14:32 4978
                    }
89c4a3a6 sago007 2008-08-29 14:32 4979
                    /********************************************************************
89c4a3a6 sago007 2008-08-29 14:32 4980
                    **************** Here ends mouse play *******************************
89c4a3a6 sago007 2008-08-29 14:32 4981
                    ********************************************************************/
89c4a3a6 sago007 2008-08-29 14:32 4982
                }
89c4a3a6 sago007 2008-08-29 14:32 4983
            } //if !singlePuzzle
89c4a3a6 sago007 2008-08-29 14:32 4984
            else
89c4a3a6 sago007 2008-08-29 14:32 4985
            {
89c4a3a6 sago007 2008-08-29 14:32 4986
89c4a3a6 sago007 2008-08-29 14:32 4987
            }
89c4a3a6 sago007 2008-08-29 14:32 4988
        } //if !bScreenBocked;
89c4a3a6 sago007 2008-08-29 14:32 4989
89c4a3a6 sago007 2008-08-29 14:32 4990
89c4a3a6 sago007 2008-08-29 14:32 4991
        //Sees if music is stopped and if music is enabled
6d48320c sago007 2009-03-28 17:06 4992
        if ((!NoSound)&&(!Mix_PlayingMusic())&&(MusicEnabled)&&(!bNearDeath))
89c4a3a6 sago007 2008-08-29 14:32 4993
        {
89c4a3a6 sago007 2008-08-29 14:32 4994
            // then starts playing it.
6d48320c sago007 2009-03-28 17:06 4995
            Mix_VolumeMusic(MIX_MAX_VOLUME);
6d48320c sago007 2009-03-28 17:06 4996
            Mix_PlayMusic(bgMusic, -1); //music loop
89c4a3a6 sago007 2008-08-29 14:32 4997
        }
89c4a3a6 sago007 2008-08-29 14:32 4998
6d48320c sago007 2009-03-28 17:06 4999
        if(bNearDeath!=bNearDeathPrev)
6d48320c sago007 2009-03-28 17:06 5000
        {
6d48320c sago007 2009-03-28 17:06 5001
            if(bNearDeath)
6d48320c sago007 2009-03-28 17:06 5002
            {
6d48320c sago007 2009-03-28 17:06 5003
                if(!NoSound &&(MusicEnabled)) {
6d48320c sago007 2009-03-28 17:06 5004
                    Mix_VolumeMusic(MIX_MAX_VOLUME);
6d48320c sago007 2009-03-28 17:06 5005
                    Mix_PlayMusic(highbeatMusic, 1);
6d48320c sago007 2009-03-28 17:06 5006
                }
6d48320c sago007 2009-03-28 17:06 5007
            }
6d48320c sago007 2009-03-28 17:06 5008
            else
6d48320c sago007 2009-03-28 17:06 5009
            {
6d48320c sago007 2009-03-28 17:06 5010
                if(!NoSound &&(MusicEnabled)) {
6d48320c sago007 2009-03-28 17:06 5011
                    Mix_VolumeMusic(MIX_MAX_VOLUME);
6d48320c sago007 2009-03-28 17:06 5012
                    Mix_PlayMusic(bgMusic, -1);
6d48320c sago007 2009-03-28 17:06 5013
                }
6d48320c sago007 2009-03-28 17:06 5014
            }
6d48320c sago007 2009-03-28 17:06 5015
        }
6d48320c sago007 2009-03-28 17:06 5016
6d48320c sago007 2009-03-28 17:06 5017
        bNearDeathPrev = bNearDeath;
6d48320c sago007 2009-03-28 17:06 5018
6d48320c sago007 2009-03-28 17:06 5019
6d48320c sago007 2009-03-28 17:06 5020
        //set bNearDeath to false theGame*.Update() will change to true as needed
6d48320c sago007 2009-03-28 17:06 5021
        bNearDeath = false;
89c4a3a6 sago007 2008-08-29 14:32 5022
        //Updates the objects
89c4a3a6 sago007 2008-08-29 14:32 5023
        theGame.Update();
89c4a3a6 sago007 2008-08-29 14:32 5024
        theGame2.Update();
89c4a3a6 sago007 2008-08-29 14:32 5025
89c4a3a6 sago007 2008-08-29 14:32 5026
//see if anyone has won (two players only)
2f30c381 sago007 2008-09-14 13:08 5027
        #if NETWORK
89c4a3a6 sago007 2008-08-29 14:32 5028
        if (!networkPlay)
2f30c381 sago007 2008-09-14 13:08 5029
        #endif
89c4a3a6 sago007 2008-08-29 14:32 5030
            if (twoPlayers)
89c4a3a6 sago007 2008-08-29 14:32 5031
            {
89c4a3a6 sago007 2008-08-29 14:32 5032
                lastNrOfPlayers = 2;
89c4a3a6 sago007 2008-08-29 14:32 5033
                if ((theGame.bGameOver) && (theGame2.bGameOver))
89c4a3a6 sago007 2008-08-29 14:32 5034
                {
89c4a3a6 sago007 2008-08-29 14:32 5035
                    if (theGame.score+theGame.handicap>theGame2.score+theGame2.handicap)
89c4a3a6 sago007 2008-08-29 14:32 5036
                        theGame.setPlayerWon();
89c4a3a6 sago007 2008-08-29 14:32 5037
                    else
89c4a3a6 sago007 2008-08-29 14:32 5038
                        if (theGame.score+theGame.handicap<theGame2.score+theGame2.handicap)
89c4a3a6 sago007 2008-08-29 14:32 5039
                            theGame2.setPlayerWon();
89c4a3a6 sago007 2008-08-29 14:32 5040
                        else {
89c4a3a6 sago007 2008-08-29 14:32 5041
                            theGame.setDraw();
89c4a3a6 sago007 2008-08-29 14:32 5042
                            theGame2.setDraw();
89c4a3a6 sago007 2008-08-29 14:32 5043
                        }
89c4a3a6 sago007 2008-08-29 14:32 5044
                    twoPlayers = false;
89c4a3a6 sago007 2008-08-29 14:32 5045
                }
89c4a3a6 sago007 2008-08-29 14:32 5046
                if ((theGame.bGameOver) && (!theGame2.bGameOver))
89c4a3a6 sago007 2008-08-29 14:32 5047
                {
89c4a3a6 sago007 2008-08-29 14:32 5048
                    theGame2.setPlayerWon();
89c4a3a6 sago007 2008-08-29 14:32 5049
                    twoPlayers = false;
89c4a3a6 sago007 2008-08-29 14:32 5050
                }
89c4a3a6 sago007 2008-08-29 14:32 5051
                if ((!theGame.bGameOver) && (theGame2.bGameOver))
89c4a3a6 sago007 2008-08-29 14:32 5052
                {
89c4a3a6 sago007 2008-08-29 14:32 5053
                    theGame.setPlayerWon();
89c4a3a6 sago007 2008-08-29 14:32 5054
                    twoPlayers = false;
89c4a3a6 sago007 2008-08-29 14:32 5055
                }
89c4a3a6 sago007 2008-08-29 14:32 5056
            }
89c4a3a6 sago007 2008-08-29 14:32 5057
89c4a3a6 sago007 2008-08-29 14:32 5058
        //Once evrything has been checked, update graphics
89c4a3a6 sago007 2008-08-29 14:32 5059
        DrawEverything(xsize,ysize,theGame, theGame2);
89c4a3a6 sago007 2008-08-29 14:32 5060
        SDL_GetMouseState(&mousex,&mousey);
89c4a3a6 sago007 2008-08-29 14:32 5061
        //Remember mouse placement
89c4a3a6 sago007 2008-08-29 14:32 5062
        oldMousex = mousex;
89c4a3a6 sago007 2008-08-29 14:32 5063
        oldMousey = mousey;
89c4a3a6 sago007 2008-08-29 14:32 5064
        //Draw the mouse:
89c4a3a6 sago007 2008-08-29 14:32 5065
        DrawIMG(mouse,screen,mousex,mousey);
89c4a3a6 sago007 2008-08-29 14:32 5066
        SDL_Flip(screen);
89c4a3a6 sago007 2008-08-29 14:32 5067
    } //game loop
89c4a3a6 sago007 2008-08-29 14:32 5068
89c4a3a6 sago007 2008-08-29 14:32 5069
89c4a3a6 sago007 2008-08-29 14:32 5070
89c4a3a6 sago007 2008-08-29 14:32 5071
    //Saves options
89c4a3a6 sago007 2008-08-29 14:32 5072
    if (!editorMode)
89c4a3a6 sago007 2008-08-29 14:32 5073
    {
769a41a0 sago007 2008-09-24 12:54 5074
        configSettings->setInt("fullscreen",(int)bFullscreen);
769a41a0 sago007 2008-09-24 12:54 5075
        configSettings->setInt("musicenabled",(int)MusicEnabled);
769a41a0 sago007 2008-09-24 12:54 5076
        configSettings->setInt("soundenabled",(int)SoundEnabled);
769a41a0 sago007 2008-09-24 12:54 5077
        configSettings->setInt("mouseplay1",(int)mouseplay1);
769a41a0 sago007 2008-09-24 12:54 5078
        configSettings->setInt("mouseplay2",(int)mouseplay2);
769a41a0 sago007 2008-09-24 12:54 5079
        configSettings->setInt("joypad1",(int)joyplay1);
769a41a0 sago007 2008-09-24 12:54 5080
        configSettings->setInt("joypad2",(int)joyplay2);
769a41a0 sago007 2008-09-24 12:54 5081
        
769a41a0 sago007 2008-09-24 12:54 5082
        configSettings->setInt("player1keyup",(int)keySettings[0].up);
769a41a0 sago007 2008-09-24 12:54 5083
        configSettings->setInt("player1keydown",(int)keySettings[0].down);
769a41a0 sago007 2008-09-24 12:54 5084
        configSettings->setInt("player1keyleft",(int)keySettings[0].left);
769a41a0 sago007 2008-09-24 12:54 5085
        configSettings->setInt("player1keyright",(int)keySettings[0].right);
769a41a0 sago007 2008-09-24 12:54 5086
        configSettings->setInt("player1keychange",(int)keySettings[0].change);
769a41a0 sago007 2008-09-24 12:54 5087
        configSettings->setInt("player1keypush",(int)keySettings[0].push);
769a41a0 sago007 2008-09-24 12:54 5088
        
769a41a0 sago007 2008-09-24 12:54 5089
        configSettings->setInt("player2keyup",(int)keySettings[2].up);
769a41a0 sago007 2008-09-24 12:54 5090
        configSettings->setInt("player2keydown",(int)keySettings[2].down);
769a41a0 sago007 2008-09-24 12:54 5091
        configSettings->setInt("player2keyleft",(int)keySettings[2].left);
769a41a0 sago007 2008-09-24 12:54 5092
        configSettings->setInt("player2keyright",(int)keySettings[2].right);
769a41a0 sago007 2008-09-24 12:54 5093
        configSettings->setInt("player2keychange",(int)keySettings[2].change);
769a41a0 sago007 2008-09-24 12:54 5094
        configSettings->setInt("player2keypush",(int)keySettings[2].push);
769a41a0 sago007 2008-09-24 12:54 5095
        
769a41a0 sago007 2008-09-24 12:54 5096
        configSettings->setString("player1name",player1name);
769a41a0 sago007 2008-09-24 12:54 5097
        configSettings->setString("player2name",player2name);
769a41a0 sago007 2008-09-24 12:54 5098
        configSettings->save();
89c4a3a6 sago007 2008-08-29 14:32 5099
    }
89c4a3a6 sago007 2008-08-29 14:32 5100
89c4a3a6 sago007 2008-08-29 14:32 5101
    //calculate uptime:
c09d0e4f sago007 2009-01-27 01:15 5102
    //int hours, mins, secs,
cd12e0fe sago007 2009-01-29 08:47 5103
    commonTime ct = TimeHandler::ms2ct(SDL_GetTicks());
89c4a3a6 sago007 2008-08-29 14:32 5104
89c4a3a6 sago007 2008-08-29 14:32 5105
    cout << "Block Attack - Rise of the Blocks ran for: " << ct.hours << " hours " << ct.minutes << " mins and " << ct.seconds << " secs" << endl;
c09d0e4f sago007 2009-01-27 01:15 5106
cd12e0fe sago007 2009-01-29 08:47 5107
    ct = TimeHandler::addTime("totalTime",ct);
c09d0e4f sago007 2009-01-27 01:15 5108
89c4a3a6 sago007 2008-08-29 14:32 5109
    cout << "Total run time is now: " << ct.days << " days " << ct.hours << " hours " << ct.minutes << " mins and " << ct.seconds << " secs" << endl;
c09d0e4f sago007 2009-01-27 01:15 5110
c09d0e4f sago007 2009-01-27 01:15 5111
    Stats::getInstance()->save();
c09d0e4f sago007 2009-01-27 01:15 5112
c09d0e4f sago007 2009-01-27 01:15 5113
    Config::getInstance()->save();
c09d0e4f sago007 2009-01-27 01:15 5114
    
c09d0e4f sago007 2009-01-27 01:15 5115
    //Frees memory from music and fonts
c09d0e4f sago007 2009-01-27 01:15 5116
    //This is done after writing of configurations and stats since it often crashes the program :(
c09d0e4f sago007 2009-01-27 01:15 5117
    UnloadImages();
c09d0e4f sago007 2009-01-27 01:15 5118
    
91886cae sago007 2008-09-12 16:28 5119
#if USE_ABSTRACT_FS    
91886cae sago007 2008-09-12 16:28 5120
    //Close file system Apstraction layer!
91886cae sago007 2008-09-12 16:28 5121
    PHYSFS_deinit();
91886cae sago007 2008-09-12 16:28 5122
#endif
89c4a3a6 sago007 2008-08-29 14:32 5123
    return 0;
89c4a3a6 sago007 2008-08-29 14:32 5124
}
1970-01-01 00:00 5125