forked from len0rd/rockbox
added xrick game
original xrick code by 'BigOrno' at: http://www.bigorno.net/xrick/ Rockbox port, plus bugfixes at: https://github.com/pierluigi-vicinanza/xrick Further changes: * Additonal fixes from g#3026 * Port to modern plugin API * Add Pluginlib keymap fallback * Support all >1bpp screens * Fix build warnings in miniz * Better error message when resources are missing Change-Id: Id83928bc2539901b0221692f65cbca41389c58e7
This commit is contained in:
parent
6f1e67e5e3
commit
102c374248
88 changed files with 16514 additions and 62 deletions
200
apps/plugins/xrick/system/sysmenu_rockbox.c
Normal file
200
apps/plugins/xrick/system/sysmenu_rockbox.c
Normal file
|
@ -0,0 +1,200 @@
|
|||
/***************************************************************************
|
||||
* __________ __ ___.
|
||||
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
|
||||
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
|
||||
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
|
||||
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
|
||||
* \/ \/ \/ \/ \/
|
||||
* $Id$
|
||||
*
|
||||
* Port of xrick, a Rick Dangerous clone, to Rockbox.
|
||||
* See http://www.bigorno.net/xrick/
|
||||
*
|
||||
* Copyright (C) 2008-2014 Pierluigi Vicinanza
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#include "xrick/system/sysmenu_rockbox.h"
|
||||
|
||||
#include "xrick/config.h"
|
||||
#include "xrick/control.h"
|
||||
#include "xrick/draw.h"
|
||||
#include "xrick/game.h"
|
||||
#include "xrick/system/system.h"
|
||||
#include "xrick/system/syssnd_rockbox.h"
|
||||
|
||||
#include "plugin.h"
|
||||
#ifndef HAVE_LCD_COLOR
|
||||
#include "lib/grey.h"
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_LCD_COLOR
|
||||
static fb_data *lcd_fb=NULL;
|
||||
#endif
|
||||
|
||||
#ifdef ENABLE_CHEATS
|
||||
/*
|
||||
* Cheat settings menu
|
||||
*/
|
||||
static char * sysmenu_cheatItemText(int selected_item, void *data, char *buffer, size_t buffer_len)
|
||||
{
|
||||
(void)selected_item;
|
||||
cheat_t cheat = (cheat_t)data;
|
||||
(void)buffer;
|
||||
(void)buffer_len;
|
||||
char * messages[] =
|
||||
{
|
||||
"Disable Unlimited Lives/Ammo Mode",
|
||||
"Enable Unlimited Lives/Ammo Mode",
|
||||
"Disable Never Die Mode",
|
||||
"Enable Never Die Mode",
|
||||
"Disable Expose Mode",
|
||||
"Enable Expose Mode"
|
||||
};
|
||||
|
||||
switch (cheat)
|
||||
{
|
||||
case Cheat_UNLIMITED_ALL:
|
||||
{
|
||||
return game_cheat1? messages[0] : messages[1];
|
||||
}
|
||||
case Cheat_NEVER_DIE:
|
||||
{
|
||||
return game_cheat2? messages[2] : messages[3];
|
||||
}
|
||||
case Cheat_EXPOSE:
|
||||
{
|
||||
return game_cheat3? messages[4] : messages[5];
|
||||
}
|
||||
default: break;
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
/*
|
||||
* Callback invoked by cheat menu item
|
||||
*/
|
||||
static int sysmenu_doToggleCheat(void *param)
|
||||
{
|
||||
cheat_t cheat = (cheat_t)param;
|
||||
game_toggleCheat(cheat);
|
||||
return 0;
|
||||
}
|
||||
|
||||
MENUITEM_FUNCTION_DYNTEXT(sysmenu_unlimitedAllItem, MENU_FUNC_USEPARAM, sysmenu_doToggleCheat,
|
||||
sysmenu_cheatItemText, NULL, (void *)Cheat_UNLIMITED_ALL,
|
||||
NULL, Icon_NOICON);
|
||||
|
||||
MENUITEM_FUNCTION_DYNTEXT(sysmenu_neverDieItem, MENU_FUNC_USEPARAM, sysmenu_doToggleCheat,
|
||||
sysmenu_cheatItemText, NULL, (void *)Cheat_NEVER_DIE,
|
||||
NULL, Icon_NOICON);
|
||||
|
||||
MENUITEM_FUNCTION_DYNTEXT(sysmenu_exposeItem, MENU_FUNC_USEPARAM, sysmenu_doToggleCheat,
|
||||
sysmenu_cheatItemText, NULL, (void *)Cheat_EXPOSE,
|
||||
NULL, Icon_NOICON);
|
||||
|
||||
MAKE_MENU(sysmenu_cheatItems, "Cheat Settings", NULL, Icon_NOICON,
|
||||
&sysmenu_unlimitedAllItem, &sysmenu_neverDieItem, &sysmenu_exposeItem);
|
||||
|
||||
#endif /* ENABLE_CHEATS */
|
||||
|
||||
/*
|
||||
* Display main menu
|
||||
*/
|
||||
void sysmenu_exec(void)
|
||||
{
|
||||
int result;
|
||||
bool done;
|
||||
|
||||
enum
|
||||
{
|
||||
Menu_RESUME,
|
||||
Menu_RESTART,
|
||||
#ifdef ENABLE_CHEATS
|
||||
Menu_CHEAT_SETTINGS,
|
||||
#endif
|
||||
Menu_QUIT
|
||||
};
|
||||
|
||||
MENUITEM_STRINGLIST(sysmenu_mainItems, "xrick Menu", NULL,
|
||||
"Resume Game",
|
||||
"Restart Game",
|
||||
#ifdef ENABLE_CHEATS
|
||||
"Cheat Settings",
|
||||
#endif
|
||||
ID2P(LANG_MENU_QUIT));
|
||||
|
||||
#ifdef ENABLE_SOUND
|
||||
syssnd_pauseAll(true);
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_LCD_COLOR
|
||||
grey_show(false);
|
||||
#endif
|
||||
|
||||
done = false;
|
||||
do
|
||||
{
|
||||
rb->button_clear_queue();
|
||||
|
||||
result = rb->do_menu(&sysmenu_mainItems, NULL, NULL, false);
|
||||
switch(result)
|
||||
{
|
||||
case Menu_RESUME:
|
||||
{
|
||||
done = true;
|
||||
break;
|
||||
}
|
||||
case Menu_RESTART:
|
||||
{
|
||||
control_set(Control_END);
|
||||
done = true;
|
||||
break;
|
||||
}
|
||||
#ifdef ENABLE_CHEATS
|
||||
case Menu_CHEAT_SETTINGS:
|
||||
{
|
||||
rb->do_menu(&sysmenu_cheatItems, NULL, NULL, false);
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
case Menu_QUIT:
|
||||
{
|
||||
control_set(Control_EXIT);
|
||||
done = true;
|
||||
break;
|
||||
}
|
||||
default: break;
|
||||
}
|
||||
} while (!done);
|
||||
|
||||
#ifdef HAVE_LCD_COLOR
|
||||
if (!(control_test(Control_EXIT)))
|
||||
{
|
||||
if(!lcd_fb)
|
||||
{
|
||||
struct viewport *vp_main = rb->lcd_set_viewport(NULL);
|
||||
lcd_fb = vp_main->buffer->fb_ptr;
|
||||
}
|
||||
rb->memset(lcd_fb, 0, sizeof(fb_data) * LCD_WIDTH * LCD_HEIGHT);
|
||||
sysvid_update(&draw_SCREENRECT);
|
||||
rb->lcd_update();
|
||||
}
|
||||
#else
|
||||
grey_show(true);
|
||||
#endif
|
||||
|
||||
#ifdef ENABLE_SOUND
|
||||
syssnd_pauseAll(false);
|
||||
#endif
|
||||
}
|
||||
|
||||
/* eof */
|
Loading…
Add table
Add a link
Reference in a new issue