Add async image load
This commit is contained in:
parent
0dbe2008af
commit
5388573dbc
|
@ -52,6 +52,8 @@
|
|||
|
||||
#ifdef __EMSCRIPTEN__
|
||||
#include <emscripten.h>
|
||||
#include <emscripten/fetch.h>
|
||||
#include <fstream>
|
||||
#endif
|
||||
|
||||
static void mrbBindingExecute();
|
||||
|
@ -87,9 +89,9 @@ void audioBindingInit(mrb_state *);
|
|||
void graphicsBindingInit(mrb_state *);
|
||||
|
||||
/* From module_rpg.c */
|
||||
extern const uint8_t mrbModuleRPG[];
|
||||
extern const uint8_t rpg_mrb[];
|
||||
|
||||
static void mrbBindingInit(mrb_state *mrb)
|
||||
static void __attribute__ ((optnone)) mrbBindingInit(mrb_state *mrb)
|
||||
{
|
||||
int arena = mrb_gc_arena_save(mrb);
|
||||
|
||||
|
@ -115,7 +117,7 @@ static void mrbBindingInit(mrb_state *mrb)
|
|||
graphicsBindingInit(mrb);
|
||||
|
||||
/* Load RPG module */
|
||||
mrb_load_irep(mrb, mrbModuleRPG);
|
||||
mrb_load_irep(mrb, rpg_mrb);
|
||||
|
||||
/* Load global constants */
|
||||
mrb_define_global_const(mrb, "MKXP", mrb_true_value());
|
||||
|
@ -257,26 +259,32 @@ runMrbFile(mrb_state *mrb, const char *filename)
|
|||
fclose(f);
|
||||
}
|
||||
|
||||
static mrb_state * static_mrb;
|
||||
static MrbData * mrbData;
|
||||
static mrb_state * static_scriptmrb;
|
||||
|
||||
void __attribute__ ((optnone)) main_update_loop() {
|
||||
mrb_load_nstring_cxt(static_mrb, "main_update_loop", 16, NULL);
|
||||
static void __attribute__ ((optnone)) main_update_loop() {
|
||||
mrb_state * mrb = (mrb_state *) static_cast<mrb_state*>(shState->bindingData());
|
||||
mrb_load_nstring_cxt(mrb, "main_update_loop", 16, NULL);
|
||||
#ifdef __EMSCRIPTEN__
|
||||
if (static_mrb->exc) {
|
||||
if (mrb->exc) {
|
||||
printf("Execution Errored\n");
|
||||
mrb_value s = mrb_funcall(static_mrb, mrb_obj_value(static_mrb->exc), "inspect", 0);
|
||||
mrb_value s = mrb_funcall(mrb, mrb_obj_value(mrb->exc), "inspect", 0);
|
||||
if (mrb_string_p(s)) {
|
||||
printf("%s", mrb_str_to_cstr(static_mrb, s));
|
||||
printf("%s", mrb_str_to_cstr(mrb, s));
|
||||
printf("\n");
|
||||
}
|
||||
mrb_close(static_scriptmrb);
|
||||
shState->texPool().disable();
|
||||
mrb_close(static_mrb);
|
||||
emscripten_cancel_main_loop();
|
||||
//mrb_close(static_scriptmrb);
|
||||
//shState->texPool().disable();
|
||||
//mrb_close(static_mrb);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
static bool initialized = false;
|
||||
static emscripten_fetch_t *fetchScripts;
|
||||
static std::atomic<int> assetQ;
|
||||
|
||||
static void
|
||||
runRMXPScripts(mrb_state *mrb, mrbc_context *ctx)
|
||||
{
|
||||
|
@ -302,16 +310,16 @@ runRMXPScripts(mrb_state *mrb, mrbc_context *ctx)
|
|||
|
||||
try
|
||||
{
|
||||
SDL_rw_file_helper fileHelper;
|
||||
fileHelper.filename = scriptPack.c_str();
|
||||
char * contents = fileHelper.read();
|
||||
mrb_value rawdata = mrb_str_new_static(mrb, contents, fileHelper.length);
|
||||
const char * contents = fetchScripts->data;
|
||||
mrb_value rawdata = mrb_str_new_static(mrb, contents, fetchScripts->numBytes);
|
||||
scriptArray = mrb_marshal_load(mrb, rawdata);
|
||||
}
|
||||
catch (const Exception &e)
|
||||
{
|
||||
readError = std::string(": ") + e.msg;
|
||||
}
|
||||
emscripten_fetch_close(fetchScripts);
|
||||
fetchScripts = NULL;
|
||||
|
||||
if (!mrb_array_p(scriptArray))
|
||||
{
|
||||
|
@ -383,51 +391,45 @@ runRMXPScripts(mrb_state *mrb, mrbc_context *ctx)
|
|||
break;
|
||||
}
|
||||
|
||||
static_mrb = mrb;
|
||||
static_scriptmrb = scriptMrb;
|
||||
|
||||
#ifdef __EMSCRIPTEN__
|
||||
/* Use loop for emscripten */
|
||||
mrb_load_nstring_cxt(static_mrb, "main_update_loop", 16, NULL);
|
||||
emscripten_set_main_loop(main_update_loop, 0, 1);
|
||||
return;
|
||||
#else
|
||||
while (true) {
|
||||
main_update_loop();
|
||||
SDL_Delay(3);
|
||||
if (static_mrb->exc)
|
||||
if (mrb->exc)
|
||||
break;
|
||||
}
|
||||
mrb_close(scriptMrb);
|
||||
#endif
|
||||
}
|
||||
|
||||
static void mrbBindingExecute()
|
||||
static void __attribute__ ((optnone)) mrbBindingMain()
|
||||
{
|
||||
mrb_state *mrb = mrb_open();
|
||||
|
||||
shState->setBindingData(mrb);
|
||||
|
||||
MrbData mrbData(mrb);
|
||||
mrb->ud = &mrbData;
|
||||
mrbData = new MrbData(mrb);
|
||||
mrb->ud = mrbData;
|
||||
|
||||
mrb_define_module_function(mrb, mrb->kernel_module, "time_op",
|
||||
mkxpTimeOp, MRB_ARGS_OPT(2) | MRB_ARGS_BLOCK());
|
||||
|
||||
mrbBindingInit(mrb);
|
||||
|
||||
const Config &conf = shState->rtData().config;
|
||||
const std::string &customScript = conf.customScript;
|
||||
(void) runMrbFile; // FIXME mrbFile support on ice for now
|
||||
|
||||
mrbc_context *ctx = mrbc_context_new(mrb);
|
||||
ctx->capture_errors = 1;
|
||||
|
||||
const Config &conf = shState->rtData().config;
|
||||
const std::string &customScript = conf.customScript;
|
||||
// const std::string &mrbFile = conf.mrbFile;
|
||||
(void) runMrbFile; // FIXME mrbFile support on ice for now
|
||||
|
||||
if (!customScript.empty())
|
||||
if (!customScript.empty()) {
|
||||
runCustomScript(mrb, ctx, customScript.c_str());
|
||||
// else if (!mrbFile.empty())
|
||||
// runMrbFile(mrb, mrbFile.c_str());
|
||||
}
|
||||
else
|
||||
runRMXPScripts(mrb, ctx);
|
||||
|
||||
|
@ -442,6 +444,48 @@ static void mrbBindingExecute()
|
|||
#endif
|
||||
}
|
||||
|
||||
void downloadSucceeded(emscripten_fetch_t *fetch) {
|
||||
printf("Finished downloading %llu bytes from URL %s.\n", fetch->numBytes, fetch->url);
|
||||
fetchScripts = fetch;
|
||||
assetQ--;
|
||||
}
|
||||
|
||||
void downloadFailed(emscripten_fetch_t *fetch) {
|
||||
printf("Downloading %s failed, HTTP failure status code: %d.\n", fetch->url, fetch->status);
|
||||
fetchScripts = fetch;
|
||||
assetQ--;
|
||||
emscripten_fetch_close(fetch);
|
||||
}
|
||||
|
||||
void __attribute__ ((optnone)) supermainloop() {
|
||||
if (assetQ > 0) return;
|
||||
|
||||
if (initialized) {
|
||||
main_update_loop();
|
||||
} else {
|
||||
mrbBindingMain();
|
||||
initialized = true;
|
||||
}
|
||||
}
|
||||
|
||||
static void __attribute__ ((optnone)) mrbBindingExecute()
|
||||
{
|
||||
assetQ = 1;
|
||||
emscripten_fetch_attr_t attr;
|
||||
emscripten_fetch_attr_init(&attr);
|
||||
strcpy(attr.requestMethod, "GET");
|
||||
attr.attributes = EMSCRIPTEN_FETCH_LOAD_TO_MEMORY;
|
||||
attr.onsuccess = downloadSucceeded;
|
||||
attr.onerror = downloadFailed;
|
||||
emscripten_fetch(&attr, "async/Data/Scripts.rxdata");
|
||||
emscripten_set_main_loop(supermainloop, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
void addAssetDownloadMap(char * path) {
|
||||
|
||||
}
|
||||
|
||||
static void mrbBindingTerminate()
|
||||
{
|
||||
mrb_state *mrb = static_cast<mrb_state*>(shState->bindingData());
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
|
||||
DEF_TYPE(Bitmap);
|
||||
|
||||
MRB_METHOD(bitmapInitialize)
|
||||
__attribute__ ((optnone)) MRB_METHOD(bitmapInitialize)
|
||||
{
|
||||
Bitmap *b = 0;
|
||||
|
||||
|
@ -65,7 +65,7 @@ MRB_METHOD(bitmapInitialize)
|
|||
return self;
|
||||
}
|
||||
|
||||
MRB_METHOD(bitmapWidth)
|
||||
__attribute__ ((optnone)) MRB_METHOD(bitmapWidth)
|
||||
{
|
||||
Bitmap *b = getPrivateData<Bitmap>(mrb, self);
|
||||
|
||||
|
@ -304,7 +304,7 @@ MRB_METHOD(bitmapSetFont)
|
|||
INITCOPY_FUN(Bitmap)
|
||||
|
||||
|
||||
void
|
||||
void __attribute__ ((optnone))
|
||||
bitmapBindingInit(mrb_state *mrb)
|
||||
{
|
||||
RClass *klass = defineClass(mrb, "Bitmap");
|
||||
|
|
|
@ -96,7 +96,7 @@ MRB_METHOD(disposableIsDisposed)
|
|||
}
|
||||
|
||||
template<class C>
|
||||
static void disposableBindingInit(mrb_state *mrb, RClass *klass)
|
||||
static __attribute__ ((optnone)) void disposableBindingInit(mrb_state *mrb, RClass *klass)
|
||||
{
|
||||
mrb_define_method(mrb, klass, "dispose", disposableDispose<C>, MRB_ARGS_NONE());
|
||||
mrb_define_method(mrb, klass, "disposed?", disposableIsDisposed<C>, MRB_ARGS_NONE());
|
||||
|
|
|
@ -181,7 +181,7 @@ INITCOPY_FUN(Rect)
|
|||
mrb_define_method(mrb, klass, "inspect", Klass##Stringify, MRB_ARGS_NONE()); \
|
||||
}
|
||||
|
||||
void etcBindingInit(mrb_state *mrb)
|
||||
void __attribute__ ((optnone)) etcBindingInit(mrb_state *mrb)
|
||||
{
|
||||
RClass *klass;
|
||||
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
*/
|
||||
|
||||
#include "graphics.h"
|
||||
#include "bitmap.h"
|
||||
#include "sharedstate.h"
|
||||
#include "binding-util.h"
|
||||
#include "exception.h"
|
||||
|
@ -104,6 +105,14 @@ DEF_GRA_PROP_B(ShowCursor)
|
|||
mrb_define_module_function(mrb, module, prop_name_s "=", graphics##Set##PropName, MRB_ARGS_REQ(1)); \
|
||||
}
|
||||
|
||||
MRB_METHOD(graphicsGetXHR)
|
||||
{
|
||||
char *filename;
|
||||
mrb_get_args(mrb, "z", &filename);
|
||||
getXHR(filename);
|
||||
return mrb_nil_value();
|
||||
}
|
||||
|
||||
void graphicsBindingInit(mrb_state *mrb)
|
||||
{
|
||||
RClass *module = mrb_define_module(mrb, "Graphics");
|
||||
|
@ -113,6 +122,8 @@ void graphicsBindingInit(mrb_state *mrb)
|
|||
mrb_define_module_function(mrb, module, "transition", graphicsTransition, MRB_ARGS_OPT(3));
|
||||
mrb_define_module_function(mrb, module, "frame_reset", graphicsFrameReset, MRB_ARGS_NONE());
|
||||
|
||||
mrb_define_module_function(mrb, module, "get_xhr", graphicsGetXHR, MRB_ARGS_OPT(1));
|
||||
|
||||
INIT_GRA_PROP_BIND( FrameRate, "frame_rate" );
|
||||
INIT_GRA_PROP_BIND( FrameCount, "frame_count" );
|
||||
|
||||
|
|
|
@ -1,9 +0,0 @@
|
|||
#include <stdint.h>
|
||||
const uint8_t
|
||||
#if defined __GNUC__
|
||||
__attribute__((aligned(4)))
|
||||
#elif defined _MSC_VER
|
||||
__declspec(align(4))
|
||||
#endif
|
||||
#include "module_rpg.xxd"
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
#include "mrpg.xxd"
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
mrbModuleRPG[] = {
|
||||
0x52, 0x49, 0x54, 0x45, 0x30, 0x30, 0x30, 0x36, 0x95, 0x4b, 0x00, 0x00,
|
||||
0x85, 0xda, 0x4d, 0x41, 0x54, 0x5a, 0x30, 0x30, 0x30, 0x30, 0x49, 0x52,
|
||||
0x45, 0x50, 0x00, 0x00, 0x81, 0x6d, 0x30, 0x30, 0x30, 0x32, 0x00, 0x00,
|
||||
unsigned char rpg_mrb[] = {
|
||||
0x52, 0x49, 0x54, 0x45, 0x30, 0x30, 0x30, 0x36, 0x82, 0xd6, 0x00, 0x00,
|
||||
0x86, 0x0e, 0x4d, 0x41, 0x54, 0x5a, 0x30, 0x30, 0x30, 0x30, 0x49, 0x52,
|
||||
0x45, 0x50, 0x00, 0x00, 0x81, 0x9d, 0x30, 0x30, 0x30, 0x32, 0x00, 0x00,
|
||||
0x00, 0x4c, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b,
|
||||
0x0f, 0x01, 0x5b, 0x01, 0x00, 0x5c, 0x01, 0x00, 0x37, 0x01, 0x67, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x52, 0x50, 0x47,
|
||||
|
@ -45,7 +45,7 @@ mrbModuleRPG[] = {
|
|||
0x0b, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74,
|
||||
0x00, 0x00, 0x06, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x00, 0x00, 0x09,
|
||||
0x41, 0x75, 0x64, 0x69, 0x6f, 0x46, 0x69, 0x6c, 0x65, 0x00, 0x00, 0x00,
|
||||
0x03, 0x72, 0x00, 0x01, 0x00, 0x02, 0x00, 0x10, 0x00, 0x00, 0x00, 0xab,
|
||||
0x03, 0xa0, 0x00, 0x01, 0x00, 0x02, 0x00, 0x11, 0x00, 0x00, 0x00, 0xb5,
|
||||
0x51, 0x01, 0x00, 0x18, 0x01, 0x00, 0x10, 0x01, 0x60, 0x01, 0x56, 0x02,
|
||||
0x00, 0x5d, 0x01, 0x01, 0x10, 0x01, 0x60, 0x01, 0x56, 0x02, 0x01, 0x5d,
|
||||
0x01, 0x02, 0x10, 0x01, 0x60, 0x01, 0x56, 0x02, 0x02, 0x5d, 0x01, 0x03,
|
||||
|
@ -59,24 +59,28 @@ mrbModuleRPG[] = {
|
|||
0x56, 0x02, 0x0b, 0x5d, 0x01, 0x0c, 0x10, 0x01, 0x60, 0x01, 0x56, 0x02,
|
||||
0x0c, 0x5d, 0x01, 0x0d, 0x10, 0x01, 0x60, 0x01, 0x56, 0x02, 0x0d, 0x5d,
|
||||
0x01, 0x0e, 0x10, 0x01, 0x60, 0x01, 0x56, 0x02, 0x0e, 0x5d, 0x01, 0x0f,
|
||||
0x10, 0x01, 0x60, 0x01, 0x56, 0x02, 0x0f, 0x5d, 0x01, 0x10, 0x0e, 0x01,
|
||||
0x10, 0x37, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00,
|
||||
0x06, 0x40, 0x63, 0x61, 0x63, 0x68, 0x65, 0x00, 0x00, 0x0b, 0x6c, 0x6f,
|
||||
0x61, 0x64, 0x5f, 0x62, 0x69, 0x74, 0x6d, 0x61, 0x70, 0x00, 0x00, 0x09,
|
||||
0x61, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x08,
|
||||
0x61, 0x75, 0x74, 0x6f, 0x74, 0x69, 0x6c, 0x65, 0x00, 0x00, 0x0a, 0x62,
|
||||
0x61, 0x74, 0x74, 0x6c, 0x65, 0x62, 0x61, 0x63, 0x6b, 0x00, 0x00, 0x07,
|
||||
0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x72, 0x00, 0x00, 0x09, 0x63, 0x68,
|
||||
0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x00, 0x00, 0x03, 0x66, 0x6f,
|
||||
0x67, 0x00, 0x00, 0x08, 0x67, 0x61, 0x6d, 0x65, 0x6f, 0x76, 0x65, 0x72,
|
||||
0x00, 0x00, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x00, 0x00, 0x08, 0x70, 0x61,
|
||||
0x6e, 0x6f, 0x72, 0x61, 0x6d, 0x61, 0x00, 0x00, 0x07, 0x70, 0x69, 0x63,
|
||||
0x74, 0x75, 0x72, 0x65, 0x00, 0x00, 0x07, 0x74, 0x69, 0x6c, 0x65, 0x73,
|
||||
0x65, 0x74, 0x00, 0x00, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x00, 0x00,
|
||||
0x0a, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x6b, 0x69, 0x6e, 0x00,
|
||||
0x00, 0x04, 0x74, 0x69, 0x6c, 0x65, 0x00, 0x00, 0x05, 0x63, 0x6c, 0x65,
|
||||
0x61, 0x72, 0x00, 0x00, 0x00, 0x04, 0x69, 0x00, 0x07, 0x00, 0x0c, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x00, 0x00, 0x33, 0x08, 0x20, 0x00,
|
||||
0x10, 0x01, 0x60, 0x01, 0x56, 0x02, 0x0f, 0x5d, 0x01, 0x10, 0x10, 0x01,
|
||||
0x60, 0x01, 0x56, 0x02, 0x10, 0x5d, 0x01, 0x11, 0x0e, 0x01, 0x11, 0x37,
|
||||
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x06, 0x40,
|
||||
0x63, 0x61, 0x63, 0x68, 0x65, 0x00, 0x00, 0x03, 0x78, 0x68, 0x72, 0x00,
|
||||
0x00, 0x0b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x69, 0x74, 0x6d, 0x61,
|
||||
0x70, 0x00, 0x00, 0x09, 0x61, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f,
|
||||
0x6e, 0x00, 0x00, 0x08, 0x61, 0x75, 0x74, 0x6f, 0x74, 0x69, 0x6c, 0x65,
|
||||
0x00, 0x00, 0x0a, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x62, 0x61, 0x63,
|
||||
0x6b, 0x00, 0x00, 0x07, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x72, 0x00,
|
||||
0x00, 0x09, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x00,
|
||||
0x00, 0x03, 0x66, 0x6f, 0x67, 0x00, 0x00, 0x08, 0x67, 0x61, 0x6d, 0x65,
|
||||
0x6f, 0x76, 0x65, 0x72, 0x00, 0x00, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x00,
|
||||
0x00, 0x08, 0x70, 0x61, 0x6e, 0x6f, 0x72, 0x61, 0x6d, 0x61, 0x00, 0x00,
|
||||
0x07, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x00, 0x00, 0x07, 0x74,
|
||||
0x69, 0x6c, 0x65, 0x73, 0x65, 0x74, 0x00, 0x00, 0x05, 0x74, 0x69, 0x74,
|
||||
0x6c, 0x65, 0x00, 0x00, 0x0a, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73,
|
||||
0x6b, 0x69, 0x6e, 0x00, 0x00, 0x04, 0x74, 0x69, 0x6c, 0x65, 0x00, 0x00,
|
||||
0x05, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x00,
|
||||
0x02, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
|
||||
0x33, 0x00, 0x00, 0x00, 0x0f, 0x02, 0x37, 0x02, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x69, 0x00, 0x07, 0x00, 0x0c,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x00, 0x33, 0x08, 0x20, 0x00,
|
||||
0x21, 0x00, 0x0a, 0x21, 0x00, 0x0c, 0x06, 0x03, 0x01, 0x07, 0x01, 0x01,
|
||||
0x08, 0x02, 0x3b, 0x07, 0x01, 0x05, 0x07, 0x17, 0x07, 0x00, 0x01, 0x08,
|
||||
0x05, 0x2e, 0x07, 0x01, 0x01, 0x2e, 0x07, 0x02, 0x00, 0x22, 0x07, 0x00,
|
||||
|
@ -2762,10 +2766,10 @@ mrbModuleRPG[] = {
|
|||
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x05, 0x40, 0x6e,
|
||||
0x61, 0x6d, 0x65, 0x00, 0x00, 0x07, 0x40, 0x76, 0x6f, 0x6c, 0x75, 0x6d,
|
||||
0x65, 0x00, 0x00, 0x06, 0x40, 0x70, 0x69, 0x74, 0x63, 0x68, 0x00, 0x4c,
|
||||
0x56, 0x41, 0x52, 0x00, 0x00, 0x04, 0x4f, 0x00, 0x00, 0x00, 0x2d, 0x00,
|
||||
0x0b, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
|
||||
0x00, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x00, 0x03,
|
||||
0x68, 0x75, 0x65, 0x00, 0x01, 0x26, 0x00, 0x04, 0x70, 0x61, 0x74, 0x68,
|
||||
0x56, 0x41, 0x52, 0x00, 0x00, 0x04, 0x53, 0x00, 0x00, 0x00, 0x2d, 0x00,
|
||||
0x01, 0x26, 0x00, 0x0b, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x5f, 0x6e,
|
||||
0x61, 0x6d, 0x65, 0x00, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d,
|
||||
0x65, 0x00, 0x03, 0x68, 0x75, 0x65, 0x00, 0x04, 0x70, 0x61, 0x74, 0x68,
|
||||
0x00, 0x03, 0x6b, 0x65, 0x79, 0x00, 0x07, 0x74, 0x69, 0x6c, 0x65, 0x5f,
|
||||
0x69, 0x64, 0x00, 0x01, 0x78, 0x00, 0x01, 0x79, 0x00, 0x04, 0x72, 0x65,
|
||||
0x63, 0x74, 0x00, 0x08, 0x76, 0x69, 0x65, 0x77, 0x70, 0x6f, 0x72, 0x74,
|
||||
|
@ -2792,68 +2796,68 @@ mrbModuleRPG[] = {
|
|||
0x74, 0x00, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72,
|
||||
0x73, 0x00, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x00, 0x06, 0x76, 0x6f, 0x6c,
|
||||
0x75, 0x6d, 0x65, 0x00, 0x05, 0x70, 0x69, 0x74, 0x63, 0x68, 0x00, 0x00,
|
||||
0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03,
|
||||
0x00, 0x04, 0x00, 0x04, 0x00, 0x05, 0x00, 0x05, 0x00, 0x06, 0x00, 0x01,
|
||||
0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x01,
|
||||
0x00, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x03,
|
||||
0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03,
|
||||
0x00, 0x03, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03,
|
||||
0x00, 0x03, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03,
|
||||
0x00, 0x03, 0x00, 0x01, 0x00, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x01,
|
||||
0x00, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02,
|
||||
0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x01, 0x00, 0x01, 0x00, 0x03,
|
||||
0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x01,
|
||||
0x00, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x03,
|
||||
0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x06, 0x00, 0x02, 0x00, 0x02,
|
||||
0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x05, 0x00, 0x07,
|
||||
0x00, 0x06, 0x00, 0x08, 0x00, 0x07, 0x00, 0x09, 0x00, 0x08, 0x00, 0x03,
|
||||
0x00, 0x01, 0x00, 0x0a, 0x00, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03,
|
||||
0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03,
|
||||
0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x01, 0x00, 0x0c,
|
||||
0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x0d, 0x00, 0x04, 0x00, 0x0e,
|
||||
0x00, 0x05, 0x00, 0x0f, 0x00, 0x01, 0x00, 0x10, 0x00, 0x02, 0x00, 0x03,
|
||||
0x00, 0x03, 0x00, 0x11, 0x00, 0x04, 0x00, 0x12, 0x00, 0x05, 0x00, 0x0e,
|
||||
0x00, 0x06, 0x00, 0x13, 0x00, 0x07, 0x00, 0x14, 0x00, 0x08, 0x00, 0x0f,
|
||||
0x00, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x11, 0x00, 0x03, 0x00, 0x12,
|
||||
0x00, 0x04, 0x00, 0x0e, 0x00, 0x05, 0x00, 0x13, 0x00, 0x06, 0x00, 0x14,
|
||||
0x00, 0x07, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x14,
|
||||
0x00, 0x02, 0x00, 0x03, 0x00, 0x01, 0x00, 0x14, 0x00, 0x02, 0x00, 0x03,
|
||||
0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03,
|
||||
0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x15, 0x00, 0x02, 0x00, 0x03,
|
||||
0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03,
|
||||
0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x05, 0x00, 0x05,
|
||||
0x00, 0x06, 0x00, 0x02, 0x00, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00,
|
||||
0x00, 0x03, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02,
|
||||
0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x03,
|
||||
0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x02, 0x00, 0x01, 0x00, 0x03,
|
||||
0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x02, 0x00, 0x01, 0x00, 0x03,
|
||||
0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00,
|
||||
0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02,
|
||||
0x00, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x02,
|
||||
0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00,
|
||||
0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02,
|
||||
0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x06,
|
||||
0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x05,
|
||||
0x00, 0x05, 0x00, 0x07, 0x00, 0x06, 0x00, 0x08, 0x00, 0x07, 0x00, 0x09,
|
||||
0x00, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x01, 0x00, 0x00,
|
||||
0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
|
||||
0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0b,
|
||||
0x00, 0x01, 0x00, 0x0c, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x0d,
|
||||
0x00, 0x04, 0x00, 0x0e, 0x00, 0x05, 0x00, 0x0f, 0x00, 0x01, 0x00, 0x10,
|
||||
0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x11, 0x00, 0x04, 0x00, 0x12,
|
||||
0x00, 0x05, 0x00, 0x0e, 0x00, 0x06, 0x00, 0x13, 0x00, 0x07, 0x00, 0x14,
|
||||
0x00, 0x08, 0x00, 0x0f, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11,
|
||||
0x00, 0x03, 0x00, 0x12, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x05, 0x00, 0x13,
|
||||
0x00, 0x06, 0x00, 0x14, 0x00, 0x07, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
|
||||
0x00, 0x01, 0x00, 0x14, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x14,
|
||||
0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
|
||||
0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x15,
|
||||
0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x16, 0x00, 0x02, 0x00, 0x17,
|
||||
0x00, 0x03, 0x00, 0x18, 0x00, 0x04, 0x00, 0x19, 0x00, 0x05, 0x00, 0x00,
|
||||
0x00, 0x01, 0x00, 0x16, 0x00, 0x02, 0x00, 0x17, 0x00, 0x03, 0x00, 0x18,
|
||||
0x00, 0x04, 0x00, 0x19, 0x00, 0x05, 0x00, 0x03, 0x00, 0x01, 0x00, 0x16,
|
||||
0x00, 0x02, 0x00, 0x17, 0x00, 0x03, 0x00, 0x18, 0x00, 0x04, 0x00, 0x19,
|
||||
0x00, 0x05, 0x00, 0x1a, 0x00, 0x01, 0x00, 0x17, 0x00, 0x02, 0x00, 0x18,
|
||||
0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x13, 0x00, 0x05, 0x00, 0x14,
|
||||
0x00, 0x06, 0x00, 0x1b, 0x00, 0x07, 0x00, 0x19, 0x00, 0x01, 0x00, 0x10,
|
||||
0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x1c, 0x00, 0x04, 0x00, 0x07,
|
||||
0x00, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x13,
|
||||
0x00, 0x04, 0x00, 0x08, 0x00, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x1e,
|
||||
0x00, 0x03, 0x00, 0x13, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x01, 0x00, 0x03,
|
||||
0x00, 0x02, 0x00, 0x1f, 0x00, 0x03, 0x00, 0x20, 0x00, 0x04, 0x00, 0x13,
|
||||
0x00, 0x05, 0x00, 0x14, 0x00, 0x06, 0x00, 0x03, 0x00, 0x01, 0x00, 0x14,
|
||||
0x00, 0x02, 0x00, 0x21, 0x00, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x0e,
|
||||
0x00, 0x03, 0x00, 0x13, 0x00, 0x04, 0x00, 0x14, 0x00, 0x05, 0x00, 0x22,
|
||||
0x00, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x14, 0x00, 0x03, 0x00, 0x23,
|
||||
0x00, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x14, 0x00, 0x03, 0x00, 0x24,
|
||||
0x00, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x13, 0x00, 0x03, 0x00, 0x14,
|
||||
0x00, 0x04, 0x00, 0x03, 0x00, 0x01, 0x00, 0x13, 0x00, 0x02, 0x00, 0x14,
|
||||
0x00, 0x03, 0x00, 0x07, 0x00, 0x04, 0x00, 0x08, 0x00, 0x05, 0x00, 0x25,
|
||||
0x00, 0x01, 0x00, 0x26, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03,
|
||||
0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03,
|
||||
0x00, 0x01, 0x00, 0x07, 0x00, 0x01, 0x00, 0x08, 0x00, 0x02, 0x00, 0x03,
|
||||
0x00, 0x03, 0x00, 0x27, 0x00, 0x01, 0x00, 0x28, 0x00, 0x02, 0x00, 0x29,
|
||||
0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x01, 0x00, 0x27,
|
||||
0x00, 0x01, 0x00, 0x29, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03,
|
||||
0x00, 0x01, 0x00, 0x13, 0x00, 0x02, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03,
|
||||
0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03,
|
||||
0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03,
|
||||
0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03,
|
||||
0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03,
|
||||
0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03,
|
||||
0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03,
|
||||
0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x2a, 0x00, 0x01, 0x00, 0x2b,
|
||||
0x00, 0x02, 0x00, 0x2c, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x45, 0x4e,
|
||||
0x44, 0x00, 0x00, 0x00, 0x00, 0x08
|
||||
0x00, 0x04, 0x00, 0x19, 0x00, 0x05, 0x00, 0x1a, 0x00, 0x01, 0x00, 0x17,
|
||||
0x00, 0x02, 0x00, 0x18, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x13,
|
||||
0x00, 0x05, 0x00, 0x14, 0x00, 0x06, 0x00, 0x1b, 0x00, 0x07, 0x00, 0x19,
|
||||
0x00, 0x01, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x1c,
|
||||
0x00, 0x04, 0x00, 0x07, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1d,
|
||||
0x00, 0x03, 0x00, 0x13, 0x00, 0x04, 0x00, 0x08, 0x00, 0x01, 0x00, 0x00,
|
||||
0x00, 0x02, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x13, 0x00, 0x04, 0x00, 0x0a,
|
||||
0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1f, 0x00, 0x03, 0x00, 0x20,
|
||||
0x00, 0x04, 0x00, 0x13, 0x00, 0x05, 0x00, 0x14, 0x00, 0x06, 0x00, 0x00,
|
||||
0x00, 0x01, 0x00, 0x14, 0x00, 0x02, 0x00, 0x21, 0x00, 0x01, 0x00, 0x00,
|
||||
0x00, 0x02, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x13, 0x00, 0x04, 0x00, 0x14,
|
||||
0x00, 0x05, 0x00, 0x22, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x14,
|
||||
0x00, 0x03, 0x00, 0x23, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x14,
|
||||
0x00, 0x03, 0x00, 0x24, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x13,
|
||||
0x00, 0x03, 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x13,
|
||||
0x00, 0x02, 0x00, 0x14, 0x00, 0x03, 0x00, 0x07, 0x00, 0x04, 0x00, 0x08,
|
||||
0x00, 0x05, 0x00, 0x25, 0x00, 0x01, 0x00, 0x26, 0x00, 0x02, 0x00, 0x00,
|
||||
0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
|
||||
0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x07, 0x00, 0x01, 0x00, 0x08,
|
||||
0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x27, 0x00, 0x01, 0x00, 0x28,
|
||||
0x00, 0x02, 0x00, 0x29, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
|
||||
0x00, 0x01, 0x00, 0x27, 0x00, 0x01, 0x00, 0x29, 0x00, 0x02, 0x00, 0x00,
|
||||
0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x13, 0x00, 0x02, 0x00, 0x00,
|
||||
0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
|
||||
0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
|
||||
0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
|
||||
0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
|
||||
0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
|
||||
0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
|
||||
0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x2a,
|
||||
0x00, 0x01, 0x00, 0x2b, 0x00, 0x02, 0x00, 0x2c, 0x00, 0x03, 0x00, 0x00,
|
||||
0x00, 0x04, 0x45, 0x4e, 0x44, 0x00, 0x00, 0x00, 0x00, 0x08
|
||||
};
|
||||
unsigned int rpg_mrb_len = 34266;
|
||||
unsigned int rpg_mrb_len = 34318;
|
Binary file not shown.
|
@ -1,7 +0,0 @@
|
|||
00000000: 5249 5445 3030 3034 5969 0000 0065 4d41 RITE0004Yi...eMA
|
||||
00000010: 545a 3030 3030 4952 4550 0000 0047 3030 TZ0000IREP...G00
|
||||
00000020: 3030 0000 003f 0001 0004 0000 0000 0004 00...?..........
|
||||
00000030: 0080 0006 0100 003d 0080 00a0 0000 004a .......=.......J
|
||||
00000040: 0000 0001 0000 0b48 656c 6c6f 2057 6f72 .......Hello Wor
|
||||
00000050: 6c64 0000 0001 0004 7075 7473 0045 4e44 ld......puts.END
|
||||
00000060: 0000 0000 08 .....
|
101
src/bitmap.cpp
101
src/bitmap.cpp
|
@ -44,6 +44,13 @@
|
|||
#include "font.h"
|
||||
#include "eventthread.h"
|
||||
|
||||
#ifdef __EMSCRIPTEN__
|
||||
#include <emscripten.h>
|
||||
#include <emscripten/fetch.h>
|
||||
#include <string>
|
||||
#include <fstream>
|
||||
#endif
|
||||
|
||||
#define GUARD_MEGA \
|
||||
{ \
|
||||
if (p->megaSurface) \
|
||||
|
@ -53,6 +60,45 @@
|
|||
|
||||
#define OUTLINE_SIZE 1
|
||||
|
||||
void reloadBitmap(void * arg) {
|
||||
emscripten_fetch_t * fetch = (emscripten_fetch_t *) arg;
|
||||
try {
|
||||
SDL_Surface * imgSurf = IMG_LoadTyped_RW(SDL_RWFromConstMem(fetch->data, fetch->numBytes), 1, "");
|
||||
Bitmap * bitmap = ((Bitmap*)fetch->userData);
|
||||
bitmap->fromSurf(imgSurf, fetch->url);
|
||||
|
||||
if (bitmap->reloadCallback)
|
||||
bitmap->reloadCallback(bitmap->reloadCallbackData);
|
||||
} catch (const Exception &e) {}
|
||||
emscripten_fetch_close(fetch);
|
||||
}
|
||||
|
||||
void assetDownloadSucceeded(emscripten_fetch_t *fetch) {
|
||||
emscripten_push_main_loop_blocker(reloadBitmap, (void *) fetch);
|
||||
}
|
||||
|
||||
void assetDownloadFailed(emscripten_fetch_t *fetch) {
|
||||
printf("Downloading %s failed, HTTP failure status code: %d.\n", fetch->url, fetch->status);
|
||||
emscripten_fetch_close(fetch);
|
||||
}
|
||||
|
||||
void addBitmapDownload(const char * filename, Bitmap * bitmap) {
|
||||
const char *pfx = "async/";
|
||||
char result[512];
|
||||
strcpy(result, pfx);
|
||||
strcat(result, filename);
|
||||
|
||||
emscripten_fetch_attr_t attr;
|
||||
emscripten_fetch_attr_init(&attr);
|
||||
strcpy(attr.requestMethod, "GET");
|
||||
attr.attributes = EMSCRIPTEN_FETCH_LOAD_TO_MEMORY;
|
||||
attr.onsuccess = assetDownloadSucceeded;
|
||||
attr.onerror = assetDownloadFailed;
|
||||
attr.userData = bitmap;
|
||||
emscripten_fetch(&attr, result);
|
||||
}
|
||||
|
||||
|
||||
/* Normalize (= ensure width and
|
||||
* height are positive) */
|
||||
static IntRect normalizedRect(const IntRect &rect)
|
||||
|
@ -86,7 +132,7 @@ struct BitmapPrivate
|
|||
* whose Bitmaps don't fit into a regular texture. They're
|
||||
* kept in RAM and will throw an error if they're used in
|
||||
* any context other than as Tilesets */
|
||||
SDL_Surface *megaSurface;
|
||||
SDL_Surface *megaSurface = NULL;
|
||||
|
||||
/* A cached version of the bitmap in client memory, for
|
||||
* getPixel calls. Is invalidated any time the bitmap
|
||||
|
@ -248,12 +294,7 @@ struct BitmapOpenHandler : FileSystem::OpenHandler
|
|||
}
|
||||
};
|
||||
|
||||
Bitmap::Bitmap(const char *filename)
|
||||
{
|
||||
BitmapOpenHandler handler;
|
||||
shState->fileSystem().openRead(handler, filename);
|
||||
SDL_Surface *imgSurf = handler.surf;
|
||||
|
||||
void Bitmap::fromSurf(SDL_Surface *imgSurf, const char * filename) {
|
||||
if (!imgSurf)
|
||||
throw Exception(Exception::SDLError, "Error loading image '%s': %s",
|
||||
filename, SDL_GetError());
|
||||
|
@ -263,27 +304,31 @@ Bitmap::Bitmap(const char *filename)
|
|||
if (imgSurf->w > glState.caps.maxTexSize || imgSurf->h > glState.caps.maxTexSize)
|
||||
{
|
||||
/* Mega surface */
|
||||
if (p) delete p;
|
||||
p = new BitmapPrivate(this);
|
||||
p->megaSurface = imgSurf;
|
||||
SDL_SetSurfaceBlendMode(p->megaSurface, SDL_BLENDMODE_NONE);
|
||||
printf("MEGA SURFACE %s\n", filename);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Regular surface */
|
||||
TEXFBO tex;
|
||||
if (!p) {
|
||||
/* Regular surface */
|
||||
TEXFBO tex;
|
||||
|
||||
try
|
||||
{
|
||||
tex = shState->texPool().request(imgSurf->w, imgSurf->h);
|
||||
}
|
||||
catch (const Exception &e)
|
||||
{
|
||||
SDL_FreeSurface(imgSurf);
|
||||
throw e;
|
||||
}
|
||||
try
|
||||
{
|
||||
tex = shState->texPool().request(imgSurf->w, imgSurf->h);
|
||||
}
|
||||
catch (const Exception &e)
|
||||
{
|
||||
SDL_FreeSurface(imgSurf);
|
||||
throw e;
|
||||
}
|
||||
|
||||
p = new BitmapPrivate(this);
|
||||
p->gl = tex;
|
||||
p = new BitmapPrivate(this);
|
||||
p->gl = tex;
|
||||
}
|
||||
|
||||
TEX::bind(p->gl.tex);
|
||||
TEX::uploadImage(p->gl.width, p->gl.height, imgSurf->pixels, GL_RGBA);
|
||||
|
@ -294,6 +339,17 @@ Bitmap::Bitmap(const char *filename)
|
|||
p->addTaintedArea(rect());
|
||||
}
|
||||
|
||||
Bitmap::Bitmap(const char *filename)
|
||||
{
|
||||
BitmapOpenHandler handler;
|
||||
shState->fileSystem().openRead(handler, filename);
|
||||
SDL_Surface *imgSurf = handler.surf;
|
||||
|
||||
fromSurf(imgSurf, filename);
|
||||
|
||||
addBitmapDownload(filename, this);
|
||||
}
|
||||
|
||||
Bitmap::Bitmap(int width, int height)
|
||||
{
|
||||
if (width <= 0 || height <= 0)
|
||||
|
@ -1322,3 +1378,8 @@ void Bitmap::releaseResources()
|
|||
|
||||
delete p;
|
||||
}
|
||||
|
||||
void getXHR(char * filename) {
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -48,6 +48,10 @@ public:
|
|||
int height() const;
|
||||
IntRect rect() const;
|
||||
|
||||
void (*reloadCallback)(void *) = NULL;
|
||||
void * reloadCallbackData = NULL;
|
||||
void fromSurf(SDL_Surface *, const char *);
|
||||
|
||||
void blt(int x, int y,
|
||||
const Bitmap &source, IntRect rect,
|
||||
int opacity = 255);
|
||||
|
@ -123,7 +127,9 @@ private:
|
|||
void releaseResources();
|
||||
const char *klassName() const { return "bitmap"; }
|
||||
|
||||
BitmapPrivate *p;
|
||||
BitmapPrivate *p = NULL;
|
||||
};
|
||||
|
||||
void getXHR(char * filename);
|
||||
|
||||
#endif // BITMAP_H
|
||||
|
|
21
src/main.cpp
21
src/main.cpp
|
@ -51,6 +51,9 @@
|
|||
#include <emscripten.h>
|
||||
#endif
|
||||
|
||||
static RGSSThreadData * staticUserData;
|
||||
static EventThread * eventThread;
|
||||
|
||||
static void
|
||||
rgssThreadError(RGSSThreadData *rtData, const std::string &msg)
|
||||
{
|
||||
|
@ -326,32 +329,35 @@ int main(int argc, char *argv[])
|
|||
SDL_GetDisplayMode(0, 0, &mode);
|
||||
|
||||
/* Can't sync to display refresh rate if its value is unknown */
|
||||
#ifndef __EMSCRIPTEN__
|
||||
if (!mode.refresh_rate)
|
||||
#endif
|
||||
conf.syncToRefreshrate = false;
|
||||
|
||||
EventThread eventThread;
|
||||
RGSSThreadData rtData(&eventThread, argv[0], win,
|
||||
eventThread = new EventThread();
|
||||
staticUserData = new RGSSThreadData(eventThread, argv[0], win,
|
||||
alcDev, mode.refresh_rate, conf);
|
||||
|
||||
int winW, winH;
|
||||
SDL_GetWindowSize(win, &winW, &winH);
|
||||
rtData.windowSizeMsg.post(Vec2i(winW, winH));
|
||||
staticUserData->windowSizeMsg.post(Vec2i(winW, winH));
|
||||
|
||||
/* Load and post key bindings */
|
||||
rtData.bindingUpdateMsg.post(loadBindings(conf));
|
||||
staticUserData->bindingUpdateMsg.post(loadBindings(conf));
|
||||
|
||||
/* Start RGSS thread */
|
||||
//SDL_Thread *rgssThread =
|
||||
// SDL_CreateThread(rgssThreadFun, "rgss", &rtData);
|
||||
::rgssThreadFun(&rtData);
|
||||
::rgssThreadFun(staticUserData);
|
||||
|
||||
/* Start event processing */
|
||||
eventThread.process(rtData);
|
||||
// eventThread.process(rtData);
|
||||
|
||||
#ifdef __EMSCRIPTEN__
|
||||
printf("Exiting main function\n");
|
||||
return 0;
|
||||
#endif
|
||||
|
||||
#ifndef __EMSCRIPTEN__
|
||||
/* Request RGSS thread to stop */
|
||||
rtData.rqTerm.set();
|
||||
|
||||
|
@ -398,4 +404,5 @@ int main(int argc, char *argv[])
|
|||
SDL_Quit();
|
||||
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -331,6 +331,10 @@ DEF_ATTR_SIMPLE(Sprite, SrcRect, Rect&, *p->srcRect)
|
|||
DEF_ATTR_SIMPLE(Sprite, Color, Color&, *p->color)
|
||||
DEF_ATTR_SIMPLE(Sprite, Tone, Tone&, *p->tone)
|
||||
|
||||
void updateSprite(void * sprite) {
|
||||
((Sprite *) sprite)->update();
|
||||
}
|
||||
|
||||
void Sprite::setBitmap(Bitmap *bitmap)
|
||||
{
|
||||
guardDisposed();
|
||||
|
@ -350,6 +354,9 @@ void Sprite::setBitmap(Bitmap *bitmap)
|
|||
p->quad.setPosRect(p->srcRect->toFloatRect());
|
||||
|
||||
p->wave.dirty = true;
|
||||
|
||||
//bitmap->reloadCallback = updateSprite;
|
||||
//bitmap->reloadCallbackData = (void *) this;
|
||||
}
|
||||
|
||||
void Sprite::setX(int value)
|
||||
|
|
|
@ -1147,6 +1147,14 @@ DEF_ATTR_RD_SIMPLE(Tilemap, Visible, bool, p->visible)
|
|||
DEF_ATTR_RD_SIMPLE(Tilemap, OX, int, p->origin.x)
|
||||
DEF_ATTR_RD_SIMPLE(Tilemap, OY, int, p->origin.y)
|
||||
|
||||
void invalidateBitmap(void * tilemap) {
|
||||
((Tilemap *) tilemap)->reloadBitmap();
|
||||
}
|
||||
|
||||
void Tilemap::reloadBitmap() {
|
||||
p->invalidateAtlasContents();
|
||||
}
|
||||
|
||||
void Tilemap::setTileset(Bitmap *value)
|
||||
{
|
||||
guardDisposed();
|
||||
|
@ -1159,6 +1167,9 @@ void Tilemap::setTileset(Bitmap *value)
|
|||
if (!value)
|
||||
return;
|
||||
|
||||
value->reloadCallback = invalidateBitmap;
|
||||
value->reloadCallbackData = (void *) this;
|
||||
|
||||
p->invalidateAtlasSize();
|
||||
p->tilesetCon.disconnect();
|
||||
p->tilesetCon = value->modified.connect
|
||||
|
|
|
@ -66,6 +66,8 @@ public:
|
|||
DECL_ATTR( OX, int )
|
||||
DECL_ATTR( OY, int )
|
||||
|
||||
void reloadBitmap();
|
||||
|
||||
private:
|
||||
TilemapPrivate *p;
|
||||
Autotiles atProxy;
|
||||
|
|
Loading…
Reference in New Issue