"Lost treasure of mBedungu" 100 level puzzle game for RETRO

Dependencies:   LCD_ST7735 RetroPlatform mbed

Into Level 0 Menu Level 99

Committer:
Architect
Date:
Sun Mar 01 05:32:06 2015 +0000
Revision:
1:dcea5500a32d
Parent:
0:f5f961973d01
Initial checkin

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Architect 1:dcea5500a32d 1 /*
Architect 1:dcea5500a32d 2 * (C) Copyright 2015 Valentin Ivanov. All rights reserved.
Architect 1:dcea5500a32d 3 *
Architect 1:dcea5500a32d 4 * This file is part of the "Lost treasure of mBedungu" game application for Retro
Architect 1:dcea5500a32d 5 *
Architect 1:dcea5500a32d 6 * The "Lost treasure of mBedungu" application is free software: you can redistribute it and/or modify
Architect 1:dcea5500a32d 7 * it under the terms of the GNU Lesser General Public License as published by
Architect 1:dcea5500a32d 8 * the Free Software Foundation, either version 3 of the License, or
Architect 1:dcea5500a32d 9 * (at your option) any later version.
Architect 1:dcea5500a32d 10 *
Architect 1:dcea5500a32d 11 * This program is distributed in the hope that it will be useful,
Architect 1:dcea5500a32d 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
Architect 1:dcea5500a32d 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
Architect 1:dcea5500a32d 14 * GNU Lesser General Public License for more details.
Architect 1:dcea5500a32d 15 *
Architect 1:dcea5500a32d 16 * You should have received a copy of the GNU Lesser General Public License
Architect 1:dcea5500a32d 17 * along with this program. If not, see <http://www.gnu.org/licenses/>
Architect 1:dcea5500a32d 18 *
Architect 1:dcea5500a32d 19 */
Architect 1:dcea5500a32d 20
Architect 0:f5f961973d01 21 #include "mbed.h"
Architect 0:f5f961973d01 22 #include "MenuScreen.h"
Architect 0:f5f961973d01 23 #include "GameScreen.h"
Architect 1:dcea5500a32d 24 #include "LevelScreen.h"
Architect 0:f5f961973d01 25 #include "Retro.h"
Architect 0:f5f961973d01 26 #include "Sprites.h"
Architect 0:f5f961973d01 27
Architect 0:f5f961973d01 28 char options[][13] = {
Architect 1:dcea5500a32d 29 "BACK@@@@@@@@",
Architect 0:f5f961973d01 30 "INTRO@@@@@@@",
Architect 0:f5f961973d01 31 "RESET@@LEVEL",
Architect 0:f5f961973d01 32 "SELECT@LEVEL",
Architect 0:f5f961973d01 33 };
Architect 0:f5f961973d01 34
Architect 0:f5f961973d01 35 extern Retro retro;
Architect 0:f5f961973d01 36 extern GameScreen * pGameScreen;
Architect 1:dcea5500a32d 37 extern LevelScreen * pLevelScreen;
Architect 0:f5f961973d01 38
Architect 0:f5f961973d01 39 MenuScreen::MenuScreen()
Architect 0:f5f961973d01 40 {
Architect 0:f5f961973d01 41 _oldSelection = 0;
Architect 1:dcea5500a32d 42 _selection = 0;
Architect 0:f5f961973d01 43 _state = 0;
Architect 0:f5f961973d01 44 }
Architect 0:f5f961973d01 45
Architect 0:f5f961973d01 46 Screen MenuScreen::Update()
Architect 0:f5f961973d01 47 {
Architect 0:f5f961973d01 48 if( _state == 0 ) {
Architect 0:f5f961973d01 49 int y = 32+4;
Architect 0:f5f961973d01 50
Architect 0:f5f961973d01 51 retro.display.clearScreen();
Architect 0:f5f961973d01 52
Architect 0:f5f961973d01 53 for( int i = 0; i<4; i++) {
Architect 1:dcea5500a32d 54 drawString(8+16, y, options[i], palette);
Architect 0:f5f961973d01 55 y+=16;
Architect 0:f5f961973d01 56 }
Architect 0:f5f961973d01 57 _state = 1;
Architect 0:f5f961973d01 58 } else if( _state == 1 ) {
Architect 0:f5f961973d01 59
Architect 0:f5f961973d01 60 int y = 32 + 16*_oldSelection;
Architect 0:f5f961973d01 61 retro.display.fillRect(8,y, 8+15,y+15,0);
Architect 0:f5f961973d01 62
Architect 0:f5f961973d01 63 retro.display.drawBitmapIndexed(8,32 + 16*_selection, 16, 16, totem, palette);
Architect 0:f5f961973d01 64 _state = 2;
Architect 0:f5f961973d01 65 }
Architect 0:f5f961973d01 66
Architect 1:dcea5500a32d 67 if(retro.pressed(BTN_UP)) {
Architect 0:f5f961973d01 68 _oldSelection = _selection;
Architect 0:f5f961973d01 69 if(_selection == 0)
Architect 0:f5f961973d01 70 _selection = 3;
Architect 0:f5f961973d01 71 else
Architect 0:f5f961973d01 72 _selection--;
Architect 0:f5f961973d01 73 _state = 1;
Architect 0:f5f961973d01 74 }
Architect 1:dcea5500a32d 75 if(retro.pressed(BTN_DOWN)) {
Architect 0:f5f961973d01 76 _oldSelection = _selection;
Architect 0:f5f961973d01 77 if(_selection == 3)
Architect 0:f5f961973d01 78 _selection = 0;
Architect 0:f5f961973d01 79 else
Architect 0:f5f961973d01 80 _selection++;
Architect 0:f5f961973d01 81 _state = 1;
Architect 0:f5f961973d01 82 }
Architect 1:dcea5500a32d 83 if(retro.pressed(BTN_SHIP)) {
Architect 0:f5f961973d01 84
Architect 0:f5f961973d01 85 _state = 0;
Architect 0:f5f961973d01 86 if( _selection == 0 )
Architect 1:dcea5500a32d 87 return Game;
Architect 1:dcea5500a32d 88 if( _selection == 1 )
Architect 0:f5f961973d01 89 return Intro;
Architect 1:dcea5500a32d 90 if( _selection == 2 )
Architect 0:f5f961973d01 91 {
Architect 0:f5f961973d01 92 if( pGameScreen )
Architect 0:f5f961973d01 93 pGameScreen->resetLevel();
Architect 0:f5f961973d01 94 return Game;
Architect 0:f5f961973d01 95 }
Architect 0:f5f961973d01 96 if( _selection == 3 )
Architect 1:dcea5500a32d 97 {
Architect 1:dcea5500a32d 98 if( pLevelScreen == NULL )
Architect 1:dcea5500a32d 99 pLevelScreen = new LevelScreen();
Architect 1:dcea5500a32d 100 pLevelScreen->GameLevel = pGameScreen->getLevel();
Architect 1:dcea5500a32d 101
Architect 0:f5f961973d01 102 return Level;
Architect 1:dcea5500a32d 103 }
Architect 0:f5f961973d01 104 }
Architect 0:f5f961973d01 105 return Menu;
Architect 0:f5f961973d01 106 }