基于RapidXml的StringEngine不好用(在VS和GCC下表现不同),因此只好再写一个
This commit is contained in:
parent
6ded19818a
commit
7e850436b1
|
@ -155,6 +155,10 @@
|
|||
<ClInclude Include="MapEditor.h" />
|
||||
<ClInclude Include="MiniEngine\MiniEngine.h" />
|
||||
<ClInclude Include="MiniEngine\MiniEngine_Event.h" />
|
||||
<ClInclude Include="MiniEngine\rapidxml\rapidxml.hpp" />
|
||||
<ClInclude Include="MiniEngine\rapidxml\rapidxml_iterators.hpp" />
|
||||
<ClInclude Include="MiniEngine\rapidxml\rapidxml_print.hpp" />
|
||||
<ClInclude Include="MiniEngine\rapidxml\rapidxml_utils.hpp" />
|
||||
<ClInclude Include="Scene.h" />
|
||||
<ClInclude Include="stdafx.h" />
|
||||
<ClInclude Include="targetver.h" />
|
||||
|
|
|
@ -51,6 +51,18 @@
|
|||
<ClInclude Include="UnitInit.h">
|
||||
<Filter>头文件</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="MiniEngine\rapidxml\rapidxml.hpp">
|
||||
<Filter>头文件</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="MiniEngine\rapidxml\rapidxml_iterators.hpp">
|
||||
<Filter>头文件</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="MiniEngine\rapidxml\rapidxml_print.hpp">
|
||||
<Filter>头文件</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="MiniEngine\rapidxml\rapidxml_utils.hpp">
|
||||
<Filter>头文件</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="stdafx.cpp">
|
||||
|
|
|
@ -8,6 +8,5 @@ struct Env
|
|||
MiniEngine::Renderer* rnd;
|
||||
MiniEngine::Font* font;
|
||||
Frame* frame;
|
||||
MiniEngine::StringEngine* strEngine;
|
||||
};
|
||||
|
||||
|
|
|
@ -9,25 +9,47 @@ using namespace MiniEngine;
|
|||
#include <cstdlib>
|
||||
#include <cstring>
|
||||
#include <ctime>
|
||||
#include <iterator>
|
||||
#include <vector>
|
||||
using namespace std;
|
||||
|
||||
vector<pair<string, string>> strvec;
|
||||
void InitStringEngine()
|
||||
{
|
||||
StringEngine* _str_engine=new StringEngine("Strings.xml","zh_CN");
|
||||
if(_str_engine==nullptr||(!_str_engine->ready()))
|
||||
FILE* fp = fopen("Strings.txt", "r");
|
||||
char tagbuff[256];
|
||||
memset(tagbuff, 0, 256);
|
||||
char content[1024];
|
||||
memset(content, 0, 1024);
|
||||
while (fscanf(fp, "%s%*c", tagbuff) == 1)
|
||||
{
|
||||
printf("[Error] String Engine is not ready. \n");
|
||||
abort();
|
||||
fgets(content, 1024, fp);
|
||||
strvec.push_back(make_pair(tagbuff, content));
|
||||
}
|
||||
global.strEngine = _str_engine;
|
||||
fclose(fp);
|
||||
}
|
||||
|
||||
string GetString(const string & Tag)
|
||||
{
|
||||
for (auto iter = strvec.begin();iter != strvec.end();++iter)
|
||||
{
|
||||
if (iter->first == Tag)
|
||||
{
|
||||
return iter->second;
|
||||
}
|
||||
}
|
||||
|
||||
return "STRING_NOT_FOUND";
|
||||
}
|
||||
|
||||
void QuitStringEngine()
|
||||
{
|
||||
delete global.strEngine;
|
||||
global.strEngine = nullptr;
|
||||
|
||||
}
|
||||
|
||||
|
||||
#include <MiniEngine/rapidxml/rapidxml.hpp>
|
||||
#include <MiniEngine/rapidxml/rapidxml_print.hpp>
|
||||
using namespace rapidxml;
|
||||
|
||||
void GameMain()
|
||||
{
|
||||
|
@ -38,4 +60,14 @@ void GameMain()
|
|||
InitUnitData();
|
||||
|
||||
global.frame->run(new MapEditorScene);
|
||||
|
||||
xml_document<> doc;
|
||||
xml_node<>* rootnode = doc.allocate_node(node_type::node_element, "en_US");
|
||||
doc.append_node(rootnode);
|
||||
rootnode->append_node(doc.allocate_node(node_type::node_element, "Fuck", "Fuck XML"));
|
||||
std::string s;
|
||||
print(std::back_inserter(s), doc);
|
||||
printf("%s\n", s.c_str());
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
#pragma once
|
||||
#include "MiniEngine/MiniEngine.h"
|
||||
void GameMain();
|
||||
std::string GetString(const std::string& Tag);
|
|
@ -1,6 +1,9 @@
|
|||
#include "MapEditor.h"
|
||||
#include "Button.h"
|
||||
#include "Game.h"
|
||||
using namespace MiniEngine;
|
||||
|
||||
#include <memory>
|
||||
using namespace std;
|
||||
|
||||
struct SizePack
|
||||
|
@ -14,26 +17,49 @@ void MapEditorScene::start(void* ptr)
|
|||
SizePack* ppack=(SizePack*)global.frame->run(new MapEditorMapSizeConfigureScene,new SizePack);
|
||||
}
|
||||
|
||||
class MapEditorMapSizeConfigureSceneReturnButton : public StaticButtonBase
|
||||
class FramedStaticButtonBase : public StaticButtonBase
|
||||
{
|
||||
public:
|
||||
virtual void draw() override
|
||||
{
|
||||
global.rnd->copyTo(text, pos);
|
||||
RGBA c = global.rnd->getColor();
|
||||
global.rnd->setColor(RGBA(255, 255, 255, 255));
|
||||
global.rnd->drawRect(pos);
|
||||
global.rnd->setColor(c);
|
||||
}
|
||||
};
|
||||
|
||||
class MapEditorMapSizeConfigureSceneReturnButton : public FramedStaticButtonBase
|
||||
{
|
||||
public:
|
||||
virtual void onMouseDown(Looper& lp, Event& ev) override
|
||||
{
|
||||
/// If return is pressed, stop the looper.
|
||||
lp.stop();
|
||||
}
|
||||
};
|
||||
|
||||
//virtual
|
||||
void MapEditorMapSizeConfigureScene::start(void* ptr)
|
||||
{
|
||||
Rect winSize=global.wnd->getSize();
|
||||
Rect winSize = global.wnd->getSize();
|
||||
|
||||
Texture text_a1 = global.font->renderUTF8(*(global.rnd),global.strEngine->getString("INPUT_SIZE"), RGBA(255, 255, 255, 255));
|
||||
Texture text_a2 = global.font->renderUTF8(*(global.rnd),global.strEngine->getString("BACK"), RGBA(255, 255, 255, 255));
|
||||
Texture text_a3 = global.font->renderUTF8(*(global.rnd),global.strEngine->getString("CREATE_MAP"), RGBA(255, 255, 255, 255));
|
||||
Texture text_b1 = global.font->renderUTF8(*(global.rnd),global.strEngine->getString("W:"), RGBA(255, 255, 255, 255));
|
||||
Texture text_b2 = global.font->renderUTF8(*(global.rnd),global.strEngine->getString("H:"), RGBA(255, 255, 255, 255));
|
||||
Texture text_c1 = global.font->renderUTF8(*(global.rnd),global.strEngine->getString("999"), RGBA(255, 255, 255, 255));
|
||||
Texture text_a1 = global.font->renderUTF8(*(global.rnd),GetString("FUCK"), RGBA(255, 255, 255, 255));
|
||||
Texture text_a2 = global.font->renderUTF8(*(global.rnd),GetString("BACK"), RGBA(255, 255, 255, 255));
|
||||
Texture text_a3 = global.font->renderUTF8(*(global.rnd),GetString("CREATE_MAP"), RGBA(255, 255, 255, 255));
|
||||
Texture text_b1 = global.font->renderUTF8(*(global.rnd),"W:", RGBA(255, 255, 255, 255));
|
||||
Texture text_b2 = global.font->renderUTF8(*(global.rnd),"H:", RGBA(255, 255, 255, 255));
|
||||
Texture text_c1 = global.font->renderUTF8(*(global.rnd),"999", RGBA(255, 255, 255, 255));
|
||||
|
||||
Looper lp;
|
||||
LooperAdapter lpa(lp);
|
||||
ButtonAdapter btna(lpa);
|
||||
|
||||
shared_ptr<MapEditorMapSizeConfigureSceneReturnButton> pReturnButton(new MapEditorMapSizeConfigureSceneReturnButton);
|
||||
pReturnButton->text = text_a2;
|
||||
pReturnButton->pos = Rect(winSize.w / 2 - text_a1.getw()/2, winSize.h / 2 + 20, text_a1.getw(), 20);
|
||||
btna.addButton(pReturnButton.get());
|
||||
|
||||
lp.run();
|
||||
}
|
||||
|
|
|
@ -1,8 +0,0 @@
|
|||
<zh_CN>
|
||||
<INPUT_SIZE>输入尺寸</INPUT_SIZE>
|
||||
<BACK>返回</BACK>
|
||||
<CREATE_MAP>创建地图</CREATE_MAP>
|
||||
<SAVE>保存</SAVE>
|
||||
<SAVE_MAP>保存地图</SAVE_MAP>
|
||||
<EXIT_EDITOR>退出编辑器</EXIT_EDITOR>
|
||||
</zh_CN>
|
|
@ -14,4 +14,3 @@ extern MiniEngine::Texture textstr_hp;/// HP
|
|||
extern MiniEngine::Texture textstr_enemy;/// Enemy
|
||||
extern MiniEngine::Texture textstr_player;/// Player
|
||||
extern MiniEngine::Texture textstr_cooling;/// Cooling
|
||||
|
||||
|
|
Reference in New Issue
Block a user