рдореБрд░рдмреНрдмрд╛ рдореЗрдВ рдврд╛рдВрдЪрд╛ (рднрд╛рдЧ 3)

рдЖрдЬ рд╣рдо рдЗрд╕ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рд▓реЗрдЦреЛрдВ рдХреЗ рднрд╛рдЧ 1 рдореЗрдВ рд╢реБрд░реВ рдХрд┐рдП рдЧрдП, рдореБрд░рдмреНрдмрд╛ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХрд╛ рд╡рд░реНрдгрди рдЬрд╛рд░реА рд░рдЦреЗрдВрдЧреЗ, рдЬрд┐рд╕рдореЗрдВ рдЧреНрд░рд╛рдлрд┐рдХ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдореЗрдВ рд╕реБрдзрд╛рд░ рд╣реЛрдЧрд╛, рд╕рд╛рде рд╣реА рд╕рд╛рде рдзреНрд╡рдирд┐ рдФрд░ рдЫрд╡рд┐ рд╕рдореВрд╣реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХреЛ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╣рдо рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХрд╛ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдкреНрд░рджрд╛рди рдХрд░реЗрдВрдЧреЗред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдЧреНрд░рд╛рдлрд┐рдХ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ Sprite.cpp рдореЗрдВ рдХреИрд╕реЗ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ:

Sprite.cpp
void Sprite::addImage(const char*res, int state) { img = Iw2DCreateImage(res); } 


рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЕрдЧрд░ рдПрдХ рд╣реА рдЫрд╡рд┐ рдХрд╛ рдмрд╛рд░-рдмрд╛рд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдЗрд╕реЗ рдХрдИ рдмрд╛рд░ рдореЗрдореЛрд░реА рдореЗрдВ рд▓реЛрдб рдХрд░ рджреЗрдВрдЧреЗ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рд╕реНрдкреНрд░рд╛рдЗрдЯ рдмрдирд╛рддреЗ рд╣реИрдВред рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рд╕реЗ, рд╣рдо рдореЛрдмрд╛рдЗрд▓ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд░реИрдо рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рд╕рдорд╛рдкреНрдд рдХрд░ рджреЗрдВрдЧреЗред рд╣рдореЗрдВ рдПрдХ рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рд╣рдореЗрдВ рдХрдИ рдмрд╛рд░ рд▓реЛрдб рдХрд┐рдП рдЧрдП рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

ResourceManager.h
 #ifndef _RESOURCEMANAGER_H_ #define _RESOURCEMANAGER_H_ #include <map> #include <string> #include "s3e.h" #include "IwResManager.h" #include "IwSound.h" #include "ResourceHolder.h" using namespace std; class ResourceManager { private: map<string, ResourceHolder*> res; public: ResourceManager(): res() {} void init(); void release(); ResourceHolder* load(const char* name, int loc); typedef map<string, ResourceHolder*>::iterator RIter; typedef pair<string, ResourceHolder*> RPair; }; extern ResourceManager rm; #endif // _RESOURCEMANAGER_H_ 


ResourceManager.cpp
 #include "ResourceManager.h" #include "Locale.h" ResourceManager rm; void ResourceManager::init() { IwResManagerInit(); } void ResourceManager::release() { for (RIter p = res.begin(); p != res.end(); ++p) { delete p->second; } res.clear(); IwResManagerTerminate(); } ResourceHolder* ResourceManager::load(const char* name, int loc) { ResourceHolder* r = NULL; string nm(name); RIter p = res.find(nm); if (p == res.end()) { r = new ResourceHolder(name, loc); res.insert(RPair(nm, r)); } else { r = p->second; } return r; } 


рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╣рдореЗрдВ рд╕рднреА рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдЖрд╡рдВрдЯрд┐рдд рд╕реНрдореГрддрд┐ рдХреЛ рд╕рд╛рдл рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЕрдиреНрдпрдерд╛, рдЖрд╡реЗрджрди рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдкрд░ рд╣рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реЗрдЧреАред рд▓реЛрдб рдХрд┐рдП рдЧрдП рдЧреНрд░рд╛рдлрд┐рдХ рд╕рдВрд╕рд╛рдзрди рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдХреЛ рд░рд┐рд╕реЛрд░реНрд╕рд╣рд╛рд░реНрдб рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

ResourceHolder.h
 #ifndef _RESOURCEHOLDER_H_ #define _RESOURCEHOLDER_H_ #include <string> #include "s3e.h" #include "Iw2D.h" #include "IwResManager.h" using namespace std; class ResourceHolder { private: string name; int loc; CIw2DImage* data; public: ResourceHolder(const char* name, int loc); ~ResourceHolder() {unload();} void load(); void unload(); CIw2DImage* getData(); }; #endif // _RESOURCEHOLDER_H_ </spoiler> <spoiler title="ResourceHolder.cpp"> <source lang="cpp"> #include "ResourceHolder.h" #include "Locale.h" ResourceHolder::ResourceHolder(const char* name, int loc): name(name) , loc(loc) , data(NULL) { } void ResourceHolder::load() { if (data == NULL) { CIwResGroup* resGroup; const char* groupName = Locale::getGroupName(loc); if (groupName != NULL) { resGroup = IwGetResManager()->GetGroupNamed(groupName); IwGetResManager()->SetCurrentGroup(resGroup); data = Iw2DCreateImageResource(name.c_str()); } else { data = Iw2DCreateImage(name.c_str()); } } } void ResourceHolder::unload() { if (data != NULL) { delete data; data = NULL; } } CIw2DImage* ResourceHolder::getData() { load(); return data; } 


рд░рд┐рд╕реЛрд░реНрд╕рд╣рд╛рд░реНрдб :: рд▓реЛрдб рд╡рд┐рдзрд┐ рдореЗрдВ, рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдирд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдкрд╣рд▓реЗ рд╕рдВрд╕рд╛рдзрди рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕рдореВрд╣ (рд▓реЛрдХрд▓ рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдореВрд▓реНрдп рдХреЗ рдЖрдзрд╛рд░ рдкрд░) рдХреЛ рд▓реЛрдб рдХрд░рдХреЗ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдпрджрд┐ рд╡рд╣ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдорд╛рд░реНрдорд▓реЗрдб рдЖрдкрдХреЛ рдкреВрд░реЗ рд╕рдореВрд╣ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрдерд╛рдХрдерд┐рдд рд╕рдореВрд╣реЛрдВ рдореЗрдВ рдЫрд╡рд┐рдпреЛрдВ (рдФрд░ рдЕрдиреНрдп рд╕рдВрд╕рд╛рдзрдиреЛрдВ) рдХреЛ рд░рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рд╣рдо рдЗрд╕ рддрдереНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддреЗ рд╣реИрдВред рд▓реЛрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдореВрд▓реНрдп рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╣рдо рднрд╛рд╖рд╛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдХреЛ рд▓реЛрдб рдХрд░реЗрдВрдЧреЗ, рд╕реНрд╡рдпрдВ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рдирд╛рдо, рд╕рдореВрд╣реЛрдВ рдХреЗ рднреАрддрд░, рдореЗрд▓ рдЦрд╛рдПрдВрдЧреЗ (рдлрд╛рдЗрд▓реЗрдВ рдЦреБрдж рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдПрдЧрд╛)ред рд╕рдореВрд╣ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рдореВрд╣ рдФрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕рдореВрд╣ рдХреЗ рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдкрд╛рда рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдиреАрдЪреЗ рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рдХреА рдлрд╝рд╛рдЗрд▓ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред

locale_ru.group
 CIwResGroup { name "locale_ru" "./locale_ru/play.png" "./locale_ru/setup.png" "./locale_ru/musicoff.png" "./locale_ru/musicon.png" "./locale_ru/soundoff.png" "./locale_ru/soundon.png" } 


рд╕рдореВрд╣реЛрдВ рдХреА рдмрд╛рдд рдХрд░рддреЗ рд╣реБрдП, рджреЛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рд┐рдлрд╛рд░рд┐рд╢реЗрдВ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП:


рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбрд┐рд╡рд╛рдЗрд╕ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкрд░ рд╡рд░реНрддрдорд╛рди рд▓реЛрдХреЗрд▓ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

Locale.h
 #ifndef _LOCALE_H_ #define _LOCALE_H_ enum ELocale { elNothing = 0x0, elImage = 0x1, elSound = 0x2, elEnImage = 0x5, elRuImage = 0x9, elEnSound = 0x6, elRuSound = 0xA }; class Locale { public: static int getCurrentImageLocale(); static int getCurrentSoundLocale(); static int getCommonImageLocale() {return elImage;} static int getCommonSoundLocale() {return elSound;} static const char* getGroupName(int locale); }; #endif // _LOCALE_H_ 


Locale.cpp
 #include "Locale.h" #include "s3e.h" const char* Locale::getGroupName(int locale) { switch (locale) { case elImage: return "images"; case elEnSound: case elRuSound: case elSound: return "sounds"; case elEnImage: return "locale_en"; case elRuImage: return "locale_ru"; default: return NULL; } } int Locale::getCurrentImageLocale() { int32 lang = s3eDeviceGetInt(S3E_DEVICE_LANGUAGE); switch (lang) { case S3E_DEVICE_LANGUAGE_RUSSIAN: return elRuImage; default: return elEnImage; } } int Locale::getCurrentSoundLocale() { int32 lang = s3eDeviceGetInt(S3E_DEVICE_LANGUAGE); switch (lang) { case S3E_DEVICE_LANGUAGE_RUSSIAN: return elRuSound; default: return elEnSound; } } 


рдпрд╣ рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдзреНрд╡рдирд┐ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИред рд╣рдо рджреЛ рдЙрдк-рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ:


рдЗрди рдЙрдк-рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЛ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдореИрдВ рдЙрди рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреВрдВрдЧрд╛ред рдореИрдВ рдХреЗрд╡рд▓ рдЙрди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ рдЬрд┐рдиреНрд╣реЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдХрд┐рдП рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗрдЯрд┐рдВрдЧ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рд╣рдо рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдЬреЛ рдПрдХ рд╕рд╛рде рдмрдЬрдиреЗ рд╡рд╛рд▓реА рдзреНрд╡рдирд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред

app.icf
 [SOUND] MaxChannels=16 


рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рдореНрди рд╡рд┐рд╡рд░рдг рдЬреЛрдбрд╝реЗрдВред

mf.mkb
 #!/usr/bin/env mkb options { module_path="$MARMALADE_ROOT/examples" } subprojects { iw2d iwresmanager SoundEngine } ... files { ... [Data] (data) locale_en.group locale_ru.group sounds.group } assets { (data) background.png sprite.png music.mp3 (data-ram/data-gles1, data) locale_en.group.bin locale_ru.group.bin sounds.group.bin } 


рдзреНрд╡рдирд┐ рд╕рдВрд╕рд╛рдзрди рд╕рдореВрд╣ рдХрд╛ рд╡рд░реНрдгрди рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реЛрдЧрд╛ред

sounds.group
 CIwResGroup { name "sounds" "./sounds/menubutton.wav" "./sounds/sound.wav" CIwSoundSpec { name "menubutton" data "menubutton" vol 0.9 loop false } CIwSoundSpec { name "sound" data "sound" vol 0.9 loop false } CIwSoundGroup { name "sound_effects" maxPolyphony 8 killOldest true addSpec "menubutton" addSpec "sound" } } 


рджреЛ рдзреНрд╡рдирд┐ рдкреНрд░рднрд╛рд╡ рдпрд╣рд╛рдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВ рдФрд░ рд╣рдо рдЙрдирдХреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ (рдЬреИрд╕реЗ рд╡реЙрд▓реНрдпреВрдо рд╡реЙрд▓реНрдпреВрдо) рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ рдореЗрдВ, рд╣рдо рдСрдбрд┐рдпреЛ рд╕рдмрд╕рд┐рд╕реНрдЯрдо рдХреЗ рдЖрд░рдВрдн рдФрд░ рдкреВрд░реНрдгрддрд╛ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред

ResourceManager.cpp
 void ResourceManager::init() { IwResManagerInit(); #ifdef IW_BUILD_RESOURCES IwGetResManager()->AddHandler(new CIwResHandlerWAV); #endif IwGetResManager()->LoadGroup("sounds.group"); if (Locale::getCurrentImageLocale() == elEnImage) { IwGetResManager()->LoadGroup("locale_en.group"); } if (Locale::getCurrentImageLocale() == elRuImage) { IwGetResManager()->LoadGroup("locale_ru.group"); } } void ResourceManager::release() { for (RIter p = res.begin(); p != res.end(); ++p) { delete p->second; } res.clear(); IwResManagerTerminate(); IwSoundTerminate(); } 


Main.cpp рдореЗрдВ, рдзреНрд╡рдирд┐ рд╕рдмрд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдЕрдкрдбреЗрдЯ рд╡рд┐рдзрд┐ рдореЗрдВ рдХреЙрд▓ рдЬреЛрдбрд╝рдирд╛ рди рднреВрд▓реЗрдВ:

main.cpp
 #include "Main.h" #include "s3e.h" #include "Iw2D.h" #include "IwGx.h" #include "IwSound.h" #include "ResourceManager.h" #include "TouchPad.h" #include "Desktop.h" #include "Scene.h" #include "Background.h" #include "Sprite.h" void init() { // Initialise Mamrlade graphics system and Iw2D module IwGxInit(); Iw2DInit(); // Init IwSound IwSoundInit(); // Set the default background clear colour IwGxSetColClear(0x0, 0x0, 0x0, 0); // Initialise the resource manager rm.init(); touchPad.init(); desktop.init(); } void release() { desktop.release(); touchPad.release(); // Shut down the resource manager rm.release(); Iw2DTerminate(); IwGxTerminate(); } int main() { init(); { Scene scene; new Background(&scene, "background.png", 1, elNothing); new Sprite(&scene, "sprite.png", 122, 100, 2, elNothing); desktop.setScene(&scene); int32 duration = 1000 / 25; // Main Game Loop while (!desktop.isQuitMessageReceived()) { // Update keyboard system s3eKeyboardUpdate(); // Update Iw Sound Manager IwGetSoundManager()->Update(); // Update touchPad.update(); uint64 timestamp = s3eTimerGetMs(); desktop.update(timestamp); // Clear the screen IwGxClear(IW_GX_COLOUR_BUFFER_F | IW_GX_DEPTH_BUFFER_F); touchPad.clear(); // Refresh desktop.refresh(); // Show the surface Iw2DSurfaceShow(); // Yield to the opearting system s3eDeviceYield(duration); } } release(); return 0; } 


рд╕рдВрд╕рд╛рдзрди рд╕рдореВрд╣ рд╡рд░реНрдгрди рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдЬрдм рд▓реЛрдбрдЧреНрд░реЗрдЧ рд╡рд┐рдзрд┐ рдХреЛ рдбреАрдмрдЧрд░ рдХреЗ рдЕрдВрддрд░реНрдЧрдд рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рд╣рдордиреЗ рдХреБрдЫ рдЧрд▓рдд рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рд╣рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдорд┐рд▓рддрд╛ рд╣реИ:

рдЫрд╡рд┐

рд╕рдВрдХрд▓рди рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдбреЗрдЯрд╛-рд░реИрдо / рдбреЗрдЯрд╛-рдЬреАрдПрд▓рдПрд╕ 1 рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рднрд╛рд░рд┐рдд рд╕рдореВрд╣реЛрдВ рдХрд╛ рджреНрд╡рд┐рдЖрдзрд╛рд░реА рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд╣реЛрддрд╛ рд╣реИред рдбрд┐рдмрдЧрд░ рдХреЗ рддрд╣рдд рдХрд╛рдо рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рдЗрд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВ (рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛), рд▓реЗрдХрд┐рди рдореЛрдмрд╛рдЗрд▓ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо (рдЖрдИрдУрдПрд╕ рдпрд╛ рдПрдВрдбреНрд░реЙрдЗрдб) рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╕рдордп, рдпрд╣ рдореМрдЬреВрдж рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдиреНрдпрдерд╛, рд╡рд┐рдзрд╛рдирд╕рднрд╛ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИред

рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреЛ рдЫреЛрдбрд╝рдХрд░, рд╣рдореЗрдВ рдПрдХ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рдЖрд╕рд╛рдиреА рд╕реЗ рджреГрдврд╝рддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

app.icf
 [S3E] DataDirIsRAM=1 


рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдбреЗрдЯрд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛, рдЬрд┐рд╕рдореЗрдВ рдкрд╣рд▓реЗ рдХреЗрд╡рд▓ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрд╕рд╛рдзрди рдлрд╝рд╛рдЗрд▓реЗрдВ рд╣реЛрддреА рд╣реИрдВ, рд▓реЗрдЦрди рдпреЛрдЧреНрдп рд╣реЛ рдЬрд╛рддреА рд╣реИрдВред рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╣реИ рдФрд░ рд╣рдо iOS рдФрд░ рдПрдВрдбреНрд░реЙрдЗрдб рджреЛрдиреЛрдВ рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╛рдЗрд▓реЗрдВ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдбреЗрдЯрд╛ рдкреНрд░рдмрдВрдзрдХ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдирд╣реАрдВ рджреВрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рддреБрдЪреНрдЫ рд╣реИред рдЬреЛ рд▓реЛрдЧ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдпрд╣рд╛рдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ ред

рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ DataDirIsRAM рдзреНрд╡рдЬ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, Marmalade рдбреЗрдЯрд╛-gles1 рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рдбреЗрдЯрд╛-рд░реИрдо рд╕реЗ рдбреЗрдЯрд╛ рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рд╕рдореВрд╣ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рд╕реЗ рдпреБрдХреНрдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдбрд┐рдмрдЧрд░ рдХреЗ рддрд╣рдд рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕рдореВрд╣ рд▓реЛрдб рд╣реЛрдиреЗ рдкрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЛ рдЬрдиреНрдо рджреЗ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдореЛрдмрд╛рдЗрд▓ рдбрд┐рд╡рд╛рдЗрд╕ (рдПрдВрдбреНрд░реЙрдЗрдб рдпрд╛ рдЖрдИрдлреЛрди) рдХреЗ рд▓рд┐рдП рд╡рд┐рддрд░рдг рдХрд┐рдЯ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдЕрдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд╕рд╛рде рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕реЗ рд╣реЛрдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА mkb рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдмрджрд▓рд╛рд╡ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

  ... - (data-ram/data-gles1, data) + (data-ram/data-gles1, data/data-gles1) locale_en.group.bin locale_ru.group.bin sounds.group.bin 

рдореИрдВ рдореБрдЭреЗ рдЗрд╕ рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрдЬрд╝реЛрдорд┐рд╢ рдХреЛ рдзрдиреНрдпрд╡рд╛рдж рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЛ рдкреВрд░рд╛ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдПрдХ рдЫреЛрдЯреЗ рдбреЗрдореЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВрдЧреЗред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдореБрд░рдмреНрдмрд╛ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛

Source: https://habr.com/ru/post/In161959/


All Articles