oreolek
/
adventin
Archived
1
0
Fork 0

first s60 build

This commit is contained in:
p.kosyh 2011-01-11 18:41:46 +00:00
parent 0a2cc1cb10
commit beec2e7d38
19 changed files with 861 additions and 39 deletions

5
bld.inf Normal file
View File

@ -0,0 +1,5 @@
PRJ_PLATFORMS
DEFAULT
PRJ_MMPFILES
gnumakefile icons.mk
instead.mmp

136
icon/instead-s60.svg Normal file
View File

@ -0,0 +1,136 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
version="1.1"
width="48"
height="48"
id="svg3466">
<metadata
id="metadata3472">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs3470" />
<image
xlink:href="data:image/png;base64,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
"
x="0"
y="0"
width="48"
height="48"
id="image3474" />
</svg>

After

Width:  |  Height:  |  Size: 8.4 KiB

45
icons.mk Normal file
View File

@ -0,0 +1,45 @@
# ==============================================================================
# Name : Icons_scalable_dc.mk
# Part of : Helloworldbasic
# Description : This is file for creating .mif file (scalable icon)
# Version :
#
# Copyright (c) 2002-2006 Nokia Corporation.
# This material, including documentation and any related
# computer programs, is protected by copyright controlled by
# Nokia Corporation.
# ==============================================================================
ZDIR=$(EPOCROOT)epoc32\data\z
TARGETDIR=$(ZDIR)\resource\apps
ICONTARGETFILENAME=$(TARGETDIR)\instead.mif
ICONDIR=.\icon
do_nothing :
@rem do_nothing
MAKMAKE : do_nothing
BLD : do_nothing
CLEAN : do_nothing
LIB : do_nothing
CLEANLIB : do_nothing
RESOURCE :
mifconv $(ICONTARGETFILENAME) \
/c32 $(ICONDIR)\instead-s60.svg
FREEZE : do_nothing
SAVESPACE : do_nothing
RELEASABLES :
@echo $(ICONTARGETFILENAME)
FINAL : do_nothing

55
instead.mmp Normal file
View File

@ -0,0 +1,55 @@
targettype exe
target instead.exe
MACRO S60
MACRO _USE_BROWSE
MACRO _USE_UNPACK
MACRO unix
MACRO _HAVE_ICONV
MACRO _LOCAL_APPDATA
MACRO _SDL_MOD_BUG
SYSTEMINCLUDE /epoc32/include/libc /epoc32/include/esdl /epoc32/include/mmf/plugin /epoc32/include /epoc32/include/stdapis
sourcepath ./src/sdl-instead
SOURCE symbian.cpp
SOURCE graphics.c input.c game.c main.c instead.c sound.c SDL_rotozoom.c SDL_anigif.c SDL_gfxBlitFunc.c config.c themes.c menu.c util.c cache.c unzip.c ioapi.c unpack.c s60.c
USERINCLUDE ./src/sdl-instead
MACRO S60V3
staticlibrary lua.lib sdl_image.lib sdl_ttf.lib SDL_Mixer_ogg.lib libpng.lib libjpeg.lib esdl.lib libiconv.lib libtremor.lib
LIBRARY cone.lib eikcore.lib
LIBRARY euser.lib apparc.lib fbscli.lib
LIBRARY estlib.lib apgrfx.lib bafl.lib
LIBRARY gdi.lib hal.lib bitgdi.lib
LIBRARY mediaclientaudiostream.lib efsrv.lib ws32.lib
LIBRARY avkon.lib
LIBRARY ezlib.lib
LIBRARY libc.lib
library commondialogs.lib
ALWAYS_BUILD_AS_ARM
EPOCSTACKSIZE 81000
EPOCHEAPSIZE 7192000 32384000
UID 0x100039ce 0xA0020410
CAPABILITY none
sourcepath .
START RESOURCE instead.rss
HEADER
TARGETPATH /resource/apps
LANG SC
END
sourcepath .
START RESOURCE instead_reg.rss
TARGETPATH /private/10003a3f/apps
END
ALWAYS_BUILD_AS_ARM

103
instead.pkg Normal file
View File

@ -0,0 +1,103 @@
; This is an auto-generated PKG file by Carbide.
; This file uses variables specific to Carbide builds that will not work
; on command-line builds. If you want to use this generated PKG file from the
; command-line tools you will need to modify the variables with the appropriate
; values: , $(PLATFORM), $(TARGET)
;
;Language - standard language definitions
&EN
; standard SIS file header
#{"INSTEAD"},(0xA0020410),1,3,1
;Localised Vendor name
%{"Peter Kosyh"}
;Unique Vendor name
:"Peter Kosyh"
;Supports Series 60 v 3.0
[0x101F7961], 0, 0, 0, {"Series60ProductID"}
;
; Display GNU Public Licence
;
;Files to install
;You should change the source paths to match that of your environment
;<source> <destination>
"e:\epoc32\release\gcce\urel\instead.exe" -"!:\sys\bin\instead.exe"
"e:\epoc32\data\z\resource\apps\instead.rsc" -"!:\resource\apps\instead.rsc"
"e:\epoc32\data\z\private\10003a3f\apps\instead_reg.rsc" -"!:\private\10003a3f\import\apps\instead_reg.rsc"
"e:\epoc32\data\z\resource\apps\instead.mif" -"!:\resource\apps\instead.mif"
".\symbian_gamedata\appdata\games\tutorial2-en\main.lua" -"!:\data\instead\appdata\games\tutorial2-en\main.lua"
".\symbian_gamedata\appdata\games\tutorial2\instead.png" -"!:\data\instead\appdata\games\tutorial2\instead.png"
".\symbian_gamedata\appdata\games\tutorial2\ramparts.mod" -"!:\data\instead\appdata\games\tutorial2\ramparts.mod"
".\symbian_gamedata\appdata\games\tutorial2\main.lua" -"!:\data\instead\appdata\games\tutorial2\main.lua"
".\symbian_gamedata\stead\vars.lua" -"!:\data\instead\stead\vars.lua"
".\symbian_gamedata\stead\timer.lua" -"!:\data\instead\stead\timer.lua"
".\symbian_gamedata\stead\kbd.lua" -"!:\data\instead\stead\kbd.lua"
".\symbian_gamedata\stead\goto.lua" -"!:\data\instead\stead\goto.lua"
".\symbian_gamedata\stead\object.lua" -"!:\data\instead\stead\object.lua"
".\symbian_gamedata\stead\dash.lua" -"!:\data\instead\stead\dash.lua"
".\symbian_gamedata\stead\snapshots.lua" -"!:\data\instead\stead\snapshots.lua"
".\symbian_gamedata\stead\hideinv.lua" -"!:\data\instead\stead\hideinv.lua"
".\symbian_gamedata\stead\quotes.lua" -"!:\data\instead\stead\quotes.lua"
".\symbian_gamedata\stead\format.lua" -"!:\data\instead\stead\format.lua"
".\symbian_gamedata\stead\click.lua" -"!:\data\instead\stead\click.lua"
".\symbian_gamedata\stead\dbg.lua" -"!:\data\instead\stead\dbg.lua"
".\symbian_gamedata\stead\xact.lua" -"!:\data\instead\stead\xact.lua"
".\symbian_gamedata\stead\hotkeys.lua" -"!:\data\instead\stead\hotkeys.lua"
".\symbian_gamedata\stead\input.lua" -"!:\data\instead\stead\input.lua"
".\symbian_gamedata\stead\gui.lua" -"!:\data\instead\stead\gui.lua"
".\symbian_gamedata\stead\stead.lua" -"!:\data\instead\stead\stead.lua"
".\symbian_gamedata\stead\para.lua" -"!:\data\instead\stead\para.lua"
".\symbian_gamedata\stead\theme.lua" -"!:\data\instead\stead\theme.lua"
".\symbian_gamedata\stead\prefs.lua" -"!:\data\instead\stead\prefs.lua"
".\symbian_gamedata\languages\ru.ini" -"!:\data\instead\languages\ru.ini"
".\symbian_gamedata\languages\en.ini" -"!:\data\instead\languages\en.ini"
".\symbian_gamedata\themes\fantasy\down.png" -"!:\data\instead\themes\fantasy\down.png"
".\symbian_gamedata\themes\fantasy\up.png" -"!:\data\instead\themes\fantasy\up.png"
".\symbian_gamedata\themes\fantasy\menu.png" -"!:\data\instead\themes\fantasy\menu.png"
".\symbian_gamedata\themes\fantasy\bg.jpg" -"!:\data\instead\themes\fantasy\bg.jpg"
".\symbian_gamedata\themes\fantasy\theme.ini" -"!:\data\instead\themes\fantasy\theme.ini"
".\symbian_gamedata\themes\arctic\aup.png" -"!:\data\instead\themes\arctic\aup.png"
".\symbian_gamedata\themes\arctic\menu.png" -"!:\data\instead\themes\arctic\menu.png"
".\symbian_gamedata\themes\arctic\bg.jpg" -"!:\data\instead\themes\arctic\bg.jpg"
".\symbian_gamedata\themes\arctic\theme.ini" -"!:\data\instead\themes\arctic\theme.ini"
".\symbian_gamedata\themes\arctic\cursor.png" -"!:\data\instead\themes\arctic\cursor.png"
".\symbian_gamedata\themes\arctic\cursor-use.png" -"!:\data\instead\themes\arctic\cursor-use.png"
".\symbian_gamedata\themes\arctic\adown.png" -"!:\data\instead\themes\arctic\adown.png"
".\symbian_gamedata\themes\clearlooks\aup.png" -"!:\data\instead\themes\clearlooks\aup.png"
".\symbian_gamedata\themes\clearlooks\menu.png" -"!:\data\instead\themes\clearlooks\menu.png"
".\symbian_gamedata\themes\clearlooks\bg.jpg" -"!:\data\instead\themes\clearlooks\bg.jpg"
".\symbian_gamedata\themes\clearlooks\theme.ini" -"!:\data\instead\themes\clearlooks\theme.ini"
".\symbian_gamedata\themes\clearlooks\cursor.png" -"!:\data\instead\themes\clearlooks\cursor.png"
".\symbian_gamedata\themes\clearlooks\cursor-use.png" -"!:\data\instead\themes\clearlooks\cursor-use.png"
".\symbian_gamedata\themes\clearlooks\adown.png" -"!:\data\instead\themes\clearlooks\adown.png"
".\symbian_gamedata\themes\original\theme.ini" -"!:\data\instead\themes\original\theme.ini"
".\symbian_gamedata\themes\default\click.wav" -"!:\data\instead\themes\default\click.wav"
".\symbian_gamedata\themes\default\aup.png" -"!:\data\instead\themes\default\aup.png"
".\symbian_gamedata\themes\default\menu.png" -"!:\data\instead\themes\default\menu.png"
".\symbian_gamedata\themes\default\use.png" -"!:\data\instead\themes\default\use.png"
".\symbian_gamedata\themes\default\bg.jpg" -"!:\data\instead\themes\default\bg.jpg"
".\symbian_gamedata\themes\default\theme.ini" -"!:\data\instead\themes\default\theme.ini"
".\symbian_gamedata\themes\default\cursor.png" -"!:\data\instead\themes\default\cursor.png"
".\symbian_gamedata\themes\default\click.ogg" -"!:\data\instead\themes\default\click.ogg"
".\symbian_gamedata\themes\default\cursor-use.png" -"!:\data\instead\themes\default\cursor-use.png"
".\symbian_gamedata\themes\default\sans.ttf" -"!:\data\instead\themes\default\sans.ttf"
".\symbian_gamedata\themes\default\adown.png" -"!:\data\instead\themes\default\adown.png"
".\symbian_gamedata\themes\default\aup.gif" -"!:\data\instead\themes\default\aup.gif"
".\symbian_gamedata\themes\book\theme.ini" -"!:\data\instead\themes\book\theme.ini"
".\symbian_gamedata\themes\book\book.jpg" -"!:\data\instead\themes\book\book.jpg"
".\symbian_gamedata\themes\bluesteel\menu.png" -"!:\data\instead\themes\bluesteel\menu.png"
".\symbian_gamedata\themes\bluesteel\downarrow.png" -"!:\data\instead\themes\bluesteel\downarrow.png"
".\symbian_gamedata\themes\bluesteel\bg.jpg" -"!:\data\instead\themes\bluesteel\bg.jpg"
".\symbian_gamedata\themes\bluesteel\theme.ini" -"!:\data\instead\themes\bluesteel\theme.ini"
".\symbian_gamedata\themes\bluesteel\cursor.png" -"!:\data\instead\themes\bluesteel\cursor.png"
".\symbian_gamedata\themes\bluesteel\cursor-use.png" -"!:\data\instead\themes\bluesteel\cursor-use.png"
".\symbian_gamedata\themes\bluesteel\uparrow.png" -"!:\data\instead\themes\bluesteel\uparrow.png"
".\symbian_gamedata\themes\wide\theme.ini" -"!:\data\instead\themes\wide\theme.ini"
".\symbian_gamedata\icon\sdl_instead.png" -"!:\data\instead\icon\sdl_instead.png"

56
instead.rss Normal file
View File

@ -0,0 +1,56 @@
NAME INST
#include <eikon.rh>
#include <eikon.rsg>
#include <uikon.rh>
#include <appinfo.rh>
#include <commondialogs.hrh> // Enumerations
#include <commondialogs.rh> // Resource structures
RESOURCE RSS_SIGNATURE
{
}
RESOURCE TBUF16 { buf=""; }
RESOURCE EIK_APP_INFO
{
}
// This file localise the applications icons and caption
RESOURCE LOCALISABLE_APP_INFO r_appinfo
{
short_caption = "INSTEAD";
caption_and_icon =
{
CAPTION_AND_ICON_INFO
{
// The caption text is defined in the rls file
caption = "INSTEAD";
// Icons are used to represent applications in the
// application launcher and application title bar.
// The number_of_icons value identifies how many icons
// that exist in the icon_file.
number_of_icons = 1;
// Using the application icons.
icon_file = "\\resource\\apps\\instead.mif";
}
};
}
RESOURCE FILESELECTIONDIALOG r_file_selection_dialog {
title = "Select-a-file:";
root_path = "C:\\";
filters = {
FILTER {
filter_type = EAttributeFilter;
filter_style = EExclusiveFilter;
filter_data = { "SH" }; // Excludes system, hidden and read-only attributes
},
FILTER {
filter_type = EFilenameFilter;
filter_style = EInclusiveFilter;
filter_data = { "*.lua", "*.zip" };
}
};
}

13
instead_reg.rss Normal file
View File

@ -0,0 +1,13 @@
#include <appinfo.rh>
#include <instead.rsg>
UID2 KUidAppRegistrationResourceFile
UID3 0xA0020410 // application UID
RESOURCE APP_REGISTRATION_INFO
{
app_file = "instead"; // filename of application binary (minus extension)
// Specify the location of the localisable icon/caption definition file
localisable_resource_file = "\\resource\\apps\\instead";
localisable_resource_id = R_APPINFO;
}

View File

@ -22,4 +22,6 @@
#include <ctype.h>
#include <dirent.h>
#include <time.h>
#ifndef S60
#include <libgen.h>
#endif

View File

@ -1098,14 +1098,14 @@ void game_menu_box_width(int show, const char *txt, int width)
int x, y;
int b = game_theme.border_w;
int pad = game_theme.pad;
layout_t lay;
layout_t lay = NULL;
menu_shown = show;
el(el_menu)->drawn = 0;
if (el_layout(el_menu)) {
txt_layout_free(el_layout(el_menu));
el(el_menu)->p.p = NULL;
_txt_layout_free(el_layout(el_menu));
lay = el_layout(el_menu);
}
if (menubg) {
game_cursor(CURSOR_CLEAR);
@ -1118,40 +1118,35 @@ void game_menu_box_width(int show, const char *txt, int width)
if (!show)
el_draw(el_menu_button);
// el_update(el_menu_button);
if (!show) {
game_cursor(CURSOR_DRAW);
gfx_flip();
return;
}
game_menu_box_wh(txt, &w, &h);
if (width)
w = width;
lay = txt_layout(game_theme.menu_font, ALIGN_CENTER, w, 0);
if (!lay) {
lay = txt_layout(game_theme.menu_font, ALIGN_CENTER, game_theme.w - 2 * (b + pad), 0);
txt_layout_color(lay, game_theme.menu_fg);
txt_layout_link_color(lay, game_theme.menu_link);
txt_layout_active_color(lay, game_theme.menu_alink);
txt_layout_font_height(lay, game_theme.menu_font_height);
}
else
txt_layout_set_size(lay, game_theme.w - 2 * (b + pad), 0);
txt_layout_set(lay, (char*)txt);
txt_layout_real_size(lay, &w, &h);
if (width)
w = width;
txt_layout_color(lay, game_theme.menu_fg);
txt_layout_link_color(lay, game_theme.menu_link);
txt_layout_active_color(lay, game_theme.menu_alink);
txt_layout_font_height(lay, game_theme.menu_font_height);
txt_layout_set_size(lay, w, h);
txt_layout_set(lay, (char*)txt);
txt_layout_real_size(lay, &w, &h);
if (width)
w = width;
if (menu) {
gfx_free_image(menu);
menu = NULL;
}
menu = gfx_new(w + (b + pad)*2, h + (b + pad)*2);
gfx_img_fill(menu, 0, 0, w + (b + pad)*2, h + (b + pad)*2, game_theme.border_col);
gfx_img_fill(menu, b, b, w + pad*2, h + pad*2, game_theme.menu_bg);
@ -2569,6 +2564,7 @@ int game_from_disk(void)
char dir[PATH_MAX];
char base[PATH_MAX];
#ifndef MAEMO
#ifndef S60
if (opt_fs) {
int old_menu = (menu_shown) ? cur_menu: -1;
opt_fs ^= 1;
@ -2576,6 +2572,7 @@ int game_from_disk(void)
if (old_menu != -1)
game_menu(old_menu);
}
#endif
#endif
mouse_cursor(1);
game_cursor(CURSOR_OFF);
@ -2597,7 +2594,6 @@ int game_from_disk(void)
}
d = dirname(d);
b = basename(b);
/* fprintf(stderr,"%s:%s\n", d, b); */
#ifdef _USE_UNPACK
p = games_sw ? games_sw:game_local_games_path(1);
fprintf(stderr,"Trying to install: %s\n", g);
@ -2682,7 +2678,11 @@ int game_loop(void)
} else if (!is_key(&ev, "f10")) {
mouse_reset(1);
game_menu(menu_askquit);
} else if (!alt_pressed && (!is_key(&ev, "return") || !is_key(&ev, "enter"))) {
} else if (!alt_pressed && (!is_key(&ev, "return") || !is_key(&ev, "enter")
#ifdef S60
|| !is_key(&ev, ".")
#endif
)) {
gfx_cursor(&x, &y, NULL, NULL);
game_highlight(-1, -1, 0); /* reset */
@ -2709,7 +2709,11 @@ int game_loop(void)
}
#endif
#endif
} else if (!is_key(&ev, "escape")) {
} else if (!is_key(&ev, "escape")
#ifdef S60
|| !is_key(&ev, "space")
#endif
) {
if (use_xref)
disable_use();
else
@ -2761,6 +2765,7 @@ int game_loop(void)
else
game_scroll_pdown();
}
#ifndef S60
} else if (!is_key(&ev, "left") || !is_key(&ev, "[4]")) {
select_ref(1, 0);
} else if (!is_key(&ev, "right") || !is_key(&ev, "[6]")) {
@ -2769,6 +2774,18 @@ int game_loop(void)
scroll_pup(el_scene);
} else if (!is_key(&ev, "space") && !menu_shown) {
scroll_pdown(el_scene);
#else
} else if (!is_key(&ev, "left") || !is_key(&ev, "[4]")) {
if (menu_shown)
select_ref(1, 0);
else
select_frame(1);
} else if (!is_key(&ev, "right") || !is_key(&ev, "[6]")) {
if (menu_shown)
select_ref(0, 0);
else
select_frame(0);
#endif
} else if (alt_pressed && (!is_key(&ev, "q") || !is_key(&ev, "f4"))) {
break;
} else if (alt_pressed &&
@ -2804,7 +2821,7 @@ int game_loop(void)
motion_y = ev.y;
}
// game_highlight(ev.x, ev.y, 1);
}
}
if (old_xref)
game_highlight(x, y, 1);

View File

@ -1149,24 +1149,28 @@ int gfx_set_mode(int w, int h, int fs)
gfx_width = w;
gfx_height = h;
SDL_ShowCursor(SDL_DISABLE);
#ifdef ANDROID
screen = SDL_SetVideoMode(gfx_width, gfx_height, 0, SDL_HWSURFACE | ( ( fs ) ? SDL_FULLSCREEN : 0 ) );
#ifdef S60
screen = SDL_SetVideoMode(gfx_width, gfx_height, 0, SDL_ANYFORMAT | SDL_HWSURFACE | ( ( fs ) ? SDL_FULLSCREEN : 0 ) );
#else
#ifndef MAEMO
#ifdef __APPLE__
#ifdef ANDROID
screen = SDL_SetVideoMode(gfx_width, gfx_height, 0, SDL_HWSURFACE | ( ( fs ) ? SDL_FULLSCREEN : 0 ) );
#else
#ifdef MAEMO
screen = SDL_SetVideoMode(gfx_width, gfx_height, 16, SDL_DOUBLEBUF | SDL_HWSURFACE | ( ( fs ) ? SDL_FULLSCREEN : 0 ) );
#else
#ifdef __APPLE__
screen = SDL_SetVideoMode(gfx_width, gfx_height, (fs)?32:0, SDL_SWSURFACE | ( ( fs ) ? SDL_FULLSCREEN : 0 ) );
if (screen == NULL) /* ok, fallback to anyformat */
screen = SDL_SetVideoMode(gfx_width, gfx_height, 0, SDL_ANYFORMAT | SDL_SWSURFACE | ( ( fs ) ? SDL_FULLSCREEN : 0 ) );
#else
#ifndef _WIN32_WCE
#else
#ifndef _WIN32_WCE
screen = SDL_SetVideoMode(gfx_width, gfx_height, (fs)?32:0, SDL_DOUBLEBUF | SDL_HWSURFACE | ( ( fs ) ? SDL_FULLSCREEN : 0 ) );
if (screen == NULL) /* ok, fallback to anyformat */
#endif
#endif
screen = SDL_SetVideoMode(gfx_width, gfx_height, 0, SDL_ANYFORMAT | SDL_HWSURFACE | ( ( fs ) ? SDL_FULLSCREEN : 0 ) );
#endif
#else
screen = SDL_SetVideoMode(gfx_width, gfx_height, 16, SDL_DOUBLEBUF | SDL_HWSURFACE | ( ( fs ) ? SDL_FULLSCREEN : 0 ) );
#endif
#endif
#endif
#endif
#endif
if (screen == NULL) {
fprintf(stderr, "Unable to set %dx%d video: %s\n", w, h, SDL_GetError());
@ -1877,6 +1881,15 @@ void txt_layout_size(layout_t lay, int *w, int *h)
*h = layout->h;
}
void txt_layout_set_size(layout_t lay, int w, int h)
{
struct layout *layout = (struct layout *)lay;
if (!lay)
return;
layout->w = w;
layout->h = h;
}
int txt_layout_add_img(layout_t lay, const char *name, img_t img)
{
struct layout *layout = (struct layout *)lay;

View File

@ -100,6 +100,7 @@ extern void txt_layout_add(layout_t lay, char *txt);
extern void txt_layout_set(layout_t lay, char *txt);
extern void txt_layout_draw(layout_t lay, int x, int y);
extern void txt_layout_free(layout_t lay);
extern void _txt_layout_free(layout_t lay); /* do not free lay obj */
extern xref_t txt_layout_xref(layout_t lay, int x, int y);
extern void txt_layout_color(layout_t lay, color_t fg);
extern fnt_t txt_layout_font(layout_t lay);
@ -136,6 +137,8 @@ typedef void (*clear_fn)(int x, int y, int w, int h);
extern void txt_box_update_links(textbox_t tbox, int x, int y, clear_fn);
extern void txt_layout_update_links(layout_t layout, int x, int y, clear_fn clear);
extern void txt_layout_real_size(layout_t lay, int *w, int *h);
extern void txt_layout_set_size(layout_t lay, int w, int h); /* without text only */
extern int txt_layout_pos2off(layout_t lay, int pos, int *hh);
extern img_t txt_box_render(textbox_t tbox);

View File

@ -1,9 +1,10 @@
#include "externals.h"
#include "internals.h"
#ifndef STEAD_PATH
#define STEAD_PATH "./stead"
#endif
#include "externals.h"
#include "internals.h"
/* the Lua interpreter */
static gtimer_t instead_timer = NULL;

View File

@ -1,3 +1,7 @@
#ifdef S60
#include "s60.h"
#endif
#include "cache.h"
#include "graphics.h"
#include "sound.h"

View File

@ -1,6 +1,4 @@
#ifdef __APPLE__
#include <SDL.h>
#endif
#include "externals.h"
#include "internals.h"
@ -110,8 +108,13 @@ int main(int argc, char *argv[])
putenv("SDL_MOUSE_RELATIVE=0"); /* test this! */
#ifdef _WIN32_WCE
wince_init(argv[0]);
#else
#ifdef S60
extern char s60_data[];
strcpy(game_cwd, s60_data);
#else
getcwd(game_cwd, sizeof(game_cwd));
#endif
#endif
unix_path(game_cwd);
setdir(game_cwd);

203
src/sdl-instead/s60.c Normal file
View File

@ -0,0 +1,203 @@
#include <limits.h>
#include <pwd.h>
#include <unistd.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <stdio.h>
#include <errno.h>
#include <fcntl.h>
#include <string.h>
#include <stdlib.h>
#include "sdl_iconv.h"
#include "internals.h"
#ifndef PATH_MAX
#define PATH_MAX 256
#endif
static char save_path[PATH_MAX];
static char cfg_path[PATH_MAX];
static char local_games_path[PATH_MAX];
static char local_themes_path[PATH_MAX];
static char local_stead_path[PATH_MAX];
void nsleep(int u)
{
usleep(u);
}
char *game_locale(void)
{
char *p;
char *s;
p = getenv("LANG");
if (!p || !(s = strdup(p)))
return NULL;
if ((p = strchr(s, '_')))
*p = 0;
return s;
}
char *game_tmp_path(void)
{
static char tmp[PATH_MAX]="/tmp/instead-games";
if (mkdir(tmp, S_IRWXU) && errno != EEXIST)
return NULL;
return tmp;
}
extern char *BROWSE_MENU;
extern char *get_file_name(void);
char *open_file_dialog(void)
{
#ifdef _USE_BROWSE
char *p;
unix_path((p = get_file_name()));
fprintf(stderr,"Selected file: %s\n", p);
return p;
#else
return NULL;
#endif
}
char *appdir(void)
{
static char dir[PATH_MAX];
strcpy(dir, game_cwd);
strcat(dir, "/appdata");
return dir;
}
char *game_local_games_path(int cr)
{
char *app = appdir();
if (!app)
return NULL;
strcpy(local_games_path, app);
if (cr) {
if (mkdir(local_games_path, S_IRWXU) && errno != EEXIST)
return NULL;
}
strcat(local_games_path,"/games");
if (cr) {
if (mkdir(local_games_path, S_IRWXU) && errno != EEXIST)
return NULL;
}
return local_games_path;
}
char *game_local_themes_path(void)
{
char *app = appdir();
if (!app)
return NULL;
snprintf(local_themes_path, sizeof(local_themes_path) - 1 , "%s/themes", app);
return local_themes_path;
}
char *game_local_stead_path(void)
{
char *app = appdir();
if (!app)
return NULL;
snprintf(local_stead_path, sizeof(local_stead_path) - 1 , "%s/stead/", app);
return local_stead_path;
}
char *game_cfg_path(void)
{
char *app = appdir();
if (!app)
return NULL;
snprintf(cfg_path, sizeof(cfg_path) - 1 , "%s/insteadrc", app);
return cfg_path;
}
char *game_save_path(int cr, int nr)
{
char *app = appdir();
if (!curgame_dir)
return NULL;
if (!access("saves", R_OK)) {
if (nr)
snprintf(save_path, sizeof(save_path) - 1, "saves/save%d", nr);
else
snprintf(save_path, sizeof(save_path) - 1, "saves/autosave");
return save_path;
}
if (!app)
return NULL;
snprintf(save_path, sizeof(save_path) - 1 , "%s/", app);
if (cr && mkdir(save_path, S_IRWXU) && errno != EEXIST)
return NULL;
snprintf(save_path, sizeof(save_path) - 1 , "%s/saves", app);
if (cr && mkdir(save_path, S_IRWXU) && errno != EEXIST)
return NULL;
snprintf(save_path, sizeof(save_path) - 1, "%s/saves/%s/", app, curgame_dir);
if (cr && mkdir(save_path, S_IRWXU) && errno != EEXIST)
return NULL;
if (nr)
snprintf(save_path, sizeof(save_path) - 1, "%s/saves/%s/save%d", app, curgame_dir, nr);
else
snprintf(save_path, sizeof(save_path) - 1, "%s/saves/%s/autosave", app, curgame_dir);
return save_path;
}
int debug_init(void)
{
return 0;
}
void debug_done()
{
}
char *sdl_path(char *p)
{
unix_path(p);
return p;
}
int setdir(const char *path)
{
return chdir(path);
}
char *getdir(char *path, size_t size)
{
return getcwd(path, size);
}
char *dirpath(const char *path)
{
return (char*)path;
}
char *dirname(char *path)
{
char *p;
if (path == NULL || *path == '\0')
return ".";
p = path + strlen(path) - 1;
while (*p == '/') {
if (p == path)
return path;
*p-- = '\0';
}
while (p >= path && *p != '/')
p--;
return p < path ? "." : p == path ? "/" : (*p = '\0', path);
}
char* basename (char* path)
{
char *ptr = path;
int l = 0;
while (ptr[(l = strcspn (ptr, "\\//"))])
ptr += l + 1;
return ptr;
}

11
src/sdl-instead/s60.h Normal file
View File

@ -0,0 +1,11 @@
#ifndef S60_H
#define S60_H
#define PATH_MAX 256
#define VERSION "1.3.1"
#define DATAPATH "./"
#define STEAD_PATH DATAPATH"stead/"
#define THEMES_PATH DATAPATH"themes/"
#define GAMES_PATH DATAPATH"games/"
#define ICON_PATH DATAPATH"icon/"
#define LANG_PATH DATAPATH"languages/"
#endif

View File

@ -4,7 +4,12 @@
#include <SDL.h>
#include <SDL_mixer.h>
#ifdef S60
int audio_rate = 11025;
#else
int audio_rate = 22050;
#endif
Uint16 audio_format = MIX_DEFAULT_FORMAT;
int audio_channels = 2;
int audio_buffers = 8192;

143
src/sdl-instead/symbian.cpp Normal file
View File

@ -0,0 +1,143 @@
#include <akncommondialogs.h> // For single function calls
#include <eikapp.h>
#include <e32base.h>
#include <sdlapp.h>
#include <eikenv.h>
#include <eikappui.h>
#include <eikapp.h>
#include <string.h>
#include <bautils.h>
#include <sys/time.h>
#include <unistd.h>
#include <stdio.h>
FILE* mystdout = NULL;
FILE* mystderr = NULL;
#ifdef _USE_BROWSE
char* desc2str(const TDesC& aDescriptor)
{
static char fname[256];
TInt length = aDescriptor.Length();
HBufC8* buffer = HBufC8::NewLC(length);
buffer->Des().Copy(aDescriptor);
char* str = fname;
Mem::Copy(str, buffer->Ptr(), length);
str[length] = '\0';
CleanupStack::PopAndDestroy(buffer);
return str;
}
extern "C" {
char s60_data[] = "E:\\data\\instead";
char *get_file_name(void)
{
TFileName FileName;
if (!AknCommonDialogs::RunSelectDlgLD(FileName, 0))
return NULL;
return desc2str(FileName);
}
void get_drives(char* drivelist)
{
RFs& fs = CEikonEnv::Static()->FsSession();
TPtr8 ptr((unsigned char*) drivelist,26);
TDriveList list;
fs.DriveList(list);
ptr.Copy(list);
}
}
#endif
#if 1
int isFolder(const char * filename)
{
TBool folder = EFalse;
TPtrC8 ptr((unsigned char*) filename);
TFileName fname;
fname.Copy(ptr);
for(TInt loop = 0; loop<fname.Length(); loop++) {
if(fname[loop] == '/')
fname[loop] = '\\';
}
TInt res = BaflUtils::IsFolder(CEikonEnv::Static()->FsSession(), fname, folder);
return folder;
}
#endif
class CSymbianApp : public CSDLApp {
public:
CSymbianApp();
~CSymbianApp();
void PreInitializeAppL()
{
mystdout = fopen("c:\\data\\instead\\stdout.txt","w");
mystderr = fopen("c:\\data\\instead\\stderr.txt","w");
*stdout = *mystdout;
*stderr = *mystderr;
char drives[26];
char testpath[] = "C:/data/instead/appdata";
get_drives(drives);
for (int drive = 0; drive < 26; drive++) {
if (!drives[drive])
continue;
testpath[0] = drive + 'A';
if (isFolder(testpath)) {
s60_data[0] = 'A' + drive;
break;
}
}
}
TUid AppDllUid() const;
};
#ifdef EPOC_AS_APP
// this function is called automatically by the SymbianOS to deliver the new CApaApplication object
#if !defined (UIQ3) && !defined (S60V3)
EXPORT_C
#endif
CApaApplication* NewApplication() {
return new CSymbianApp;
}
#if defined (UIQ3) || defined (S60V3)
#include <eikstart.h>
// E32Main() contains the program's start up code, the entry point for an EXE.
GLDEF_C TInt E32Main() {
return EikStart::RunApplication(NewApplication);
}
#endif
#endif // EPOC_AS_APP
#if !defined (UIQ3) && !defined (S60V3)
GLDEF_C TInt E32Dll(TDllReason) {
return KErrNone;
}
#endif
CSymbianApp::CSymbianApp()
{
}
CSymbianApp::~CSymbianApp()
{
}
#if defined (UIQ3)
#include <gp2xpectrum.rsg>
/**
* Returns the resource id to be used to declare the views supported by this UIQ3 app
* @return TInt, resource id
*/
TInt CSymbianApp::ViewResourceId() {
return R_SDL_VIEW_UI_CONFIGURATIONS;
}
#endif
/**
* Responsible for returning the unique UID of this application
* @return unique UID for this application in a TUid
**/
TUid CSymbianApp::AppDllUid() const {
return TUid::Uid(0xA0020410);
}

View File

@ -32,7 +32,9 @@
#ifdef unix
# include <unistd.h>
#ifndef S60
# include <utime.h>
#endif
#else
# include <direct.h>
# include <io.h>
@ -74,6 +76,7 @@ tm_unz tmu_date;
CloseHandle(hFile);
#else
#ifdef unix
#ifndef S60
struct utimbuf ut;
struct tm newdate;
newdate.tm_sec = tmu_date.tm_sec;
@ -91,6 +94,7 @@ tm_unz tmu_date;
utime(filename, &ut);
#endif
#endif
#endif
}
/* mymkdir and change_file_date are not 100 % portable