Support for Maemo5 is in included patch. Thanks to Kurosu pretty much
all of my previous patches are already integrated to svn so this is
mainly configuration bits.
Support for N900 international up/down arrows is a bit hackish, but
that was the easiest way to do it.
--
Mikko Vartiainen
Index: data/wormux_default_maemo_config.xml
===================================================================
--- data/wormux_default_maemo_config.xml (revision 0)
+++ data/wormux_default_maemo_config.xml (revision 0)
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources>
+
+<section name="default_video_mode">
+ <int name="number_of_resolution_available" value="10" />
+ <point name="1" x="1680" y="1050" />
+ <point name="2" x="1600" y="1200" />
+ <point name="3" x="1400" y="1050" />
+ <point name="4" x="1366" y="768" />
+ <point name="5" x="1360" y="768" />
+ <point name="6" x="1280" y="1024" />
+ <point name="7" x="1024" y="768" />
+ <point name="8" x="1024" y="600" />
+ <point name="9" x="800" y="600" />
+ <point name="10" x="800" y="480" />
+ <point name="11" x="640" y="480" />
+</section>
+
+<section name="default_keyboard_layout">
+ <bind key="left" action="move_left" />
+ <bind key="left" action="move_left_slowly" shift="true" />
+ <bind key="right" action="move_right" />
+ <bind key="right" action="move_right_slowly" shift="true" />
+ <bind key="up" action="up" />
+ <bind key="left" action="up" alt="true" />
+ <bind key="up" action="up_slowly" shift="true" />
+ <bind key="down" action="down" />
+ <bind key="right" action="down" alt="true" />
+ <bind key="down" action="down_slowly" shift="true" />
+ <bind key="left" action="move_camera_left" control="true" />
+ <bind key="right" action="move_camera_right" control="true" />
+ <bind key="up" action="move_camera_up" control="true" />
+ <bind key="down" action="move_camera_down" control="true" />
+ <bind key="kp_enter" action="jump" />
+ <bind key="kp_enter" action="high_jump" shift="true" />
+ <bind key="kp_enter" action="back_jump" control="true" />
+ <bind key="space" action="shoot" />
+ <bind key="tab" action="next_character" />
+ <bind key="escape" action="quit" />
+ <bind key="pause" action="pause" />
+ <bind key="f10" action="fullscreen" />
+ <bind key="f9" action="toggle_interface" />
+ <bind key="q" action="weapons1" />
+ <bind key="w" action="weapons2" />
+ <bind key="e" action="weapons3" />
+ <bind key="r" action="weapons4" />
+ <bind key="t" action="weapons5" />
+ <bind key="y" action="weapons6" />
+ <bind key="u" action="weapons7" />
+ <bind key="i" action="weapons8" />
+ <bind key="c" action="center" />
+ <bind key="1" action="weapon_1" />
+ <bind key="2" action="weapon_2" />
+ <bind key="3" action="weapon_3" />
+ <bind key="4" action="weapon_4" />
+ <bind key="5" action="weapon_5" />
+ <bind key="6" action="weapon_6" />
+ <bind key="7" action="weapon_7" />
+ <bind key="8" action="weapon_8" />
+ <bind key="9" action="weapon_9" />
+ <bind key="f" action="weapon_more" />
+ <bind key="v" action="weapon_less" />
+ <bind key="s" action="chat" />
+ <bind key="t" action="chat" />
+ <bind key="return" action="chat" alt="true" />
+ <bind key="f11" action="menu_options_from_game" />
+ <bind key="m" action="minimap_from_game" />
+ <bind key="h" action="help" />
+</section>
+
+<!-- This is how to setup per language font files -->
+<section name="default_language_fonts">
+ <language name="ja_JP" file="VL-Gothic-Regular.ttf" relative="true" />
+ <language name="zh_CN" file="wqy-microhei-lite.ttc" relative="true" />
+ <language name="zh_TW" file="wqy-microhei-lite.ttc" relative="true" />
+</section>
+
+</resources>
Index: src/gui/control_config.cpp
===================================================================
--- src/gui/control_config.cpp (revision 8339)
+++ src/gui/control_config.cpp (working copy)
@@ -270,6 +270,18 @@
for (uint i=0; i<items.size(); i++) {
items[i]->SaveAction(kbd);
}
+
+#ifdef MAEMO
+ // Forcefully set special N900 international arrow keys (fn+left is up, fn+right is down)
+ kbd->SaveKeyEvent(ManMachineInterface::KEY_UP, SDLK_LEFT,
+ false,
+ true,
+ false);
+ kbd->SaveKeyEvent(ManMachineInterface::KEY_DOWN, SDLK_RIGHT,
+ false,
+ true,
+ false);
+#endif
}
void ControlConfig::Pack()
Index: src/sound/jukebox.cpp
===================================================================
--- src/sound/jukebox.cpp (revision 8339)
+++ src/sound/jukebox.cpp (working copy)
@@ -40,7 +40,7 @@
{
m_config.music = true;
m_config.effects = true;
-#ifdef ANDROID
+#if defined(ANDROID) || defined(MAEMO)
// reduce memory usage
m_config.frequency = 22050; //MIX_DEFAULT_FREQUENCY;
m_config.channels = 1; // mono
@@ -129,7 +129,7 @@
void JukeBox::SetFrequency(int frequency)
{
// We ignore frequency changes requests
-#ifndef ANDROID
+#if !defined(ANDROID) && !defined(MAEMO)
if ((frequency != 11025)
&& (frequency != 22050)
&& (frequency != 44100)) frequency = 44100;
Index: src/interface/keyboard.cpp
===================================================================
--- src/interface/keyboard.cpp (revision 8339)
+++ src/interface/keyboard.cpp (working copy)
@@ -37,6 +37,11 @@
# define SDLK_LAST SDL_NUM_SCANCODES
#endif
+#ifdef MAEMO
+#undef KMOD_ALT
+#define KMOD_ALT KMOD_MODE
+#endif
+
int Keyboard::GetRawKeyCode(int key_code) const
{
return key_code % MODIFIER_OFFSET;
Index: src/interface/man_machine_interface.cpp
===================================================================
--- src/interface/man_machine_interface.cpp (revision 8339)
+++ src/interface/man_machine_interface.cpp (working copy)
@@ -40,6 +40,11 @@
#include "sound/jukebox.h"
#include "weapon/weapons_list.h"
+#ifdef MAEMO
+#undef SDLK_RALT
+#define SDLK_RALT SDLK_MODE
+#endif
+
void ManMachineInterface::Reset()
{
for (int i = 0; i != 256; i++)
@@ -750,7 +755,11 @@
if(name == "lshift") return SDLK_LSHIFT;
if(name == "rctrl") return SDLK_RCTRL;
if(name == "lctrl") return SDLK_LCTRL;
+#ifdef MAEMO__
+ if(name == "ralt") return SDLK_MODE;
+#else
if(name == "ralt") return SDLK_RALT;
+#endif
if(name == "lalt") return SDLK_LALT;
if(name == "rmeta") return SDLK_RMETA;
if(name == "lmeta") return SDLK_LMETA;
@@ -1007,7 +1016,11 @@
if(key == SDLK_LSHIFT) return "lshift";
if(key == SDLK_RCTRL) return "rctrl";
if(key == SDLK_LCTRL) return "lctrl";
+#ifdef MAEMO__
+ if(key == SDLK_MODE) return "ralt";
+#else
if(key == SDLK_RALT) return "ralt";
+#endif
if(key == SDLK_LALT) return "lalt";
if(key == SDLK_RMETA) return "rmeta";
if(key == SDLK_LMETA) return "lmeta";
Index: src/interface/mouse.cpp
===================================================================
--- src/interface/mouse.cpp (revision 8339)
+++ src/interface/mouse.cpp (working copy)
@@ -340,10 +340,12 @@
void Mouse::Show()
{
+#if !defined(MAEMO)
if (((Time::GetConstInstance()->Read()-last_hide_time) > 10000) && (visible == MOUSE_HIDDEN))
{
CenterPointer();
}
+#endif
visible = MOUSE_VISIBLE;
if (Config::GetConstInstance()->GetDefaultMouseCursor()) {
Index: src/menu/menu.cpp
===================================================================
--- src/menu/menu.cpp (revision 8339)
+++ src/menu/menu.cpp (working copy)
@@ -44,6 +44,9 @@
: actions(_actions)
, selected_widget(NULL)
{
+#ifdef MAEMO
+ Mouse::GetInstance()->Hide();
+#endif
close_menu = false ;
Surface& window = GetMainWindow();
Index: src/menu/options_menu.cpp
===================================================================
--- src/menu/options_menu.cpp (revision 8339)
+++ src/menu/options_menu.cpp (working copy)
@@ -92,7 +92,7 @@
new PictureTextCBox(_("Wind particles?"), "menu/display_wind_particles", option_size);
graphic_options->AddWidget(opt_display_wind_particles);
-#ifndef ANDROID
+#if !defined(ANDROID) && !defined(MAEMO)
opt_display_multisky =
new PictureTextCBox(_("Multi-layer sky?"), "menu/multisky", option_size);
graphic_options->AddWidget(opt_display_multisky);
@@ -106,7 +106,7 @@
new PictureTextCBox(_("Player's name?"), "menu/display_name", option_size);
graphic_options->AddWidget(opt_display_name);
-#if !defined(__APPLE__) && !defined(ANDROID)
+#if !defined(__APPLE__) && !defined(ANDROID) && !defined(MAEMO)
full_screen =
new PictureTextCBox(_("Fullscreen?"), "menu/fullscreen", option_size);
graphic_options->AddWidget(full_screen);
@@ -117,7 +117,7 @@
option_size, 30, 5, 20, 60);
graphic_options->AddWidget(opt_max_fps);
-#if !defined(ANDROID)
+#if !defined(ANDROID) && !defined(MAEMO)
// Get available video resolution
const std::list<Point2i>& video_res = app->video->GetAvailableConfigs();
std::list<Point2i>::const_iterator mode;
@@ -232,7 +232,7 @@
"menu/ico_update", option_size);
misc_options->AddWidget(opt_updates);
-#ifndef ANDROID
+#if !defined(ANDROID) && !defined(MAEMO)
opt_lefthanded_mouse =
new PictureTextCBox(_("Left-handed mouse?"),
"menu/ico_lefthanded_mouse", option_size);
@@ -248,7 +248,9 @@
option_size, 50, 5, 5, 80);
misc_options->AddWidget(opt_scroll_border_size);
#endif
+#if !defined(MAEMO)
tabs->AddNewTab("unused", _("Misc"), misc_options);
+#endif
/* Sound options */
Box * sound_options = new GridBox(3, 3, 0, false);
@@ -303,12 +305,12 @@
// Values initialization
opt_max_fps->SetValue(app->video->GetMaxFps());
opt_display_wind_particles->SetValue(config->GetDisplayWindParticles());
-#ifndef ANDROID
+#if !defined(ANDROID) && !defined(MAEMO)
opt_display_multisky->SetValue(config->GetDisplayMultiLayerSky());
#endif
opt_display_energy->SetValue(config->GetDisplayEnergyCharacter());
opt_display_name->SetValue(config->GetDisplayNameCharacter());
-#if !defined(__APPLE__) && !defined(ANDROID)
+#if !defined(__APPLE__) && !defined(ANDROID) && !defined(MAEMO)
full_screen->SetValue(app->video->IsFullScreen());
#endif
music_cbox->SetValue(config->GetSoundMusic());
@@ -358,7 +360,7 @@
#endif
opt_updates->SetValue(config->GetCheckUpdates());
-#ifndef ANDROID
+#if !defined(ANDROID) && !defined(MAEMO)
opt_lefthanded_mouse->SetValue(config->GetLeftHandedMouse());
opt_scroll_on_border->SetValue(config->GetScrollOnBorder());
opt_scroll_border_size->SetValue(config->GetScrollBorderSize());
@@ -418,7 +420,7 @@
if (Game::IsRunning())
Wind::GetRef().Reset();
-#ifndef ANDROID
+#if !defined(ANDROID) && !defined(MAEMO)
config->SetDisplayMultiLayerSky(opt_display_multisky->GetValue());
#endif
config->SetDisplayEnergyCharacter(opt_display_energy->GetValue());
@@ -426,7 +428,7 @@
// Misc options
config->SetCheckUpdates(opt_updates->GetValue());
-#ifndef ANDROID
+#if !defined(ANDROID) && !defined(MAEMO)
config->SetLeftHandedMouse(opt_lefthanded_mouse->GetValue());
config->SetScrollOnBorder(opt_scroll_on_border->GetValue());
config->SetScrollBorderSize(opt_scroll_border_size->GetValue());
@@ -440,7 +442,7 @@
AppWormux * app = AppWormux::GetInstance();
app->video->SetMaxFps(opt_max_fps->GetValue());
-#ifndef ANDROID
+#if !defined(ANDROID) && !defined(MAEMO)
// Video mode
std::string s_mode = cbox_video_mode->GetValue();
Index: src/menu/options_menu.h
===================================================================
--- src/menu/options_menu.h (revision 8339)
+++ src/menu/options_menu.h (working copy)
@@ -45,11 +45,13 @@
CheckBox *opt_display_wind_particles;
CheckBox *opt_display_energy;
CheckBox *opt_display_name;
-#ifndef ANDROID
+#if !defined(ANROID) && !defined(MAEMO)
CheckBox *opt_display_multisky;
+#endif
# ifndef __APPLE__
CheckBox *full_screen;
# endif
+#if !defined(ANROID)
ComboBox *cbox_video_mode;
#endif
SpinButtonWithPicture *opt_max_fps;
@@ -66,7 +68,7 @@
/* Misc options controllers */
CheckBox *opt_updates;
-#ifndef ANDROID
+#if !defined(ANDROID) && !defined(MAEMO)
CheckBox *opt_lefthanded_mouse;
CheckBox *opt_scroll_on_border;
SpinButtonWithPicture * opt_scroll_border_size;
Index: src/game/config.cpp
===================================================================
--- src/game/config.cpp (revision 8339)
+++ src/game/config.cpp (working copy)
@@ -88,7 +88,7 @@
, display_energy_character(true)
, display_name_character(true)
-#ifdef ANDROID
+#if defined(ANDROID) || defined(MAEMO)
, display_wind_particles(false) // Too CPU intensive
, display_multi_layer_sky(false) // Memory hungry + CPU intensive
#else
@@ -100,7 +100,7 @@
, video_width(0)
, video_height(0)
-#ifdef ANDROID
+#if defined(ANDROID) || defined(MAEMO)
, video_fullscreen(true) // No other mode supported
, max_fps(25)
#else
@@ -358,6 +358,8 @@
// Load default XML conf
#ifdef ANDROID
m_default_config = GetDataDir() + "wormux_default_android_config.xml";
+#elif MAEMO
+ m_default_config = GetDataDir() + "wormux_default_maemo_config.xml";
#else
m_default_config = GetDataDir() + "wormux_default_config.xml";
#endif
@@ -463,7 +465,7 @@
XmlReader::ReadBool(elem, "display_energy_character", display_energy_character);
XmlReader::ReadBool(elem, "display_name_character", display_name_character);
XmlReader::ReadBool(elem, "default_mouse_cursor", default_mouse_cursor);
-#ifndef ANDROID // Those should never be set
+#if !defined(ANDROID) && !defined(MAEMO) // Those should never be set
XmlReader::ReadBool(elem, "scroll_on_border", scroll_on_border);
XmlReader::ReadUint(elem, "scroll_border_size", scroll_border_size);
#endif
Index: src/graphic/video.cpp
===================================================================
--- src/graphic/video.cpp (revision 8339)
+++ src/graphic/video.cpp (working copy)
@@ -168,8 +168,12 @@
int flags = (__fullscreen) ? SDL_FULLSCREEN : 0;
flags |= SDL_SWSURFACE | SDL_DOUBLEBUF;
+#ifdef MAEMO
+ window.SetSurface(SDL_SetVideoMode(width, height, 16, flags));
+#else
window.SetSurface(SDL_SetVideoMode(width, height, 32, flags));
#endif
+#endif
if (window.IsNull())
return false;
_______________________________________________
Wormux-dev mailing list
[email protected]
https://mail.gna.org/listinfo/wormux-dev