Open now works by pressing CTRL+O
This commit is contained in:
@@ -3,6 +3,7 @@
|
|||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
|
#include <commdlg.h>
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
using namespace rapidxml;
|
using namespace rapidxml;
|
||||||
@@ -25,6 +26,7 @@ DataModelInstance::DataModelInstance(void)
|
|||||||
_modY=0;
|
_modY=0;
|
||||||
workspace->setParent(this);
|
workspace->setParent(this);
|
||||||
level->setParent(this);
|
level->setParent(this);
|
||||||
|
_loadedFileName="..//skooter.rbxm";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -37,7 +39,7 @@ void DataModelInstance::modXMLLevel(float modY)
|
|||||||
{
|
{
|
||||||
_modY += modY;
|
_modY += modY;
|
||||||
clearLevel();
|
clearLevel();
|
||||||
load();
|
debugGetOpen();
|
||||||
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@@ -226,16 +228,28 @@ bool DataModelInstance::scanXMLObject(xml_node<> * scanNode)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool DataModelInstance::load()
|
bool DataModelInstance::load(const char* filename)
|
||||||
{
|
{
|
||||||
ifstream levelFile("..//skooter.rbxm",ios::binary);
|
ifstream levelFile(filename,ios::binary);
|
||||||
if (levelFile) {
|
if (levelFile)
|
||||||
levelFile.seekg(0,levelFile.end);
|
{
|
||||||
int length = levelFile.tellg();
|
readXMLFileStream(&levelFile);
|
||||||
levelFile.seekg(0,levelFile.beg);
|
return true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool DataModelInstance::readXMLFileStream(std::ifstream* file)
|
||||||
|
{
|
||||||
|
file->seekg(0,file->end);
|
||||||
|
int length = file->tellg();
|
||||||
|
file->seekg(0,file->beg);
|
||||||
char * buffer = new char[length+1];
|
char * buffer = new char[length+1];
|
||||||
buffer[length]=0;
|
buffer[length]=0;
|
||||||
levelFile.read(buffer,length);
|
file->read(buffer,length);
|
||||||
|
file->close();
|
||||||
xml_document<> doc;
|
xml_document<> doc;
|
||||||
doc.parse<0>(buffer);
|
doc.parse<0>(buffer);
|
||||||
xml_node<> *mainNode = doc.first_node();
|
xml_node<> *mainNode = doc.first_node();
|
||||||
@@ -244,13 +258,42 @@ bool DataModelInstance::load()
|
|||||||
//node = node->first_node();
|
//node = node->first_node();
|
||||||
//xmlName = node->name();
|
//xmlName = node->name();
|
||||||
scanXMLObject(mainNode);
|
scanXMLObject(mainNode);
|
||||||
|
|
||||||
delete[] buffer;
|
delete[] buffer;
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool DataModelInstance::debugGetOpen()
|
||||||
|
{
|
||||||
|
ifstream levelFile(_loadedFileName.c_str(),ios::binary);
|
||||||
|
if (levelFile)
|
||||||
|
readXMLFileStream(&levelFile);
|
||||||
|
else
|
||||||
|
getOpen();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool DataModelInstance::getOpen()
|
||||||
|
{
|
||||||
|
_modY=0;
|
||||||
|
OPENFILENAME of;
|
||||||
|
ZeroMemory( &of , sizeof( of));
|
||||||
|
of.lStructSize = sizeof(OPENFILENAME);
|
||||||
|
of.lpstrFilter = "Roblox Files\0*.rbxm;*.rbxl\0\0";
|
||||||
|
char szFile[512];
|
||||||
|
of.lpstrFile = szFile ;
|
||||||
|
of.lpstrFile[0]='\0';
|
||||||
|
of.nMaxFile=500;
|
||||||
|
of.lpstrTitle="Hello";
|
||||||
|
of.Flags = OFN_FILEMUSTEXIST;
|
||||||
|
ShowCursor(TRUE);
|
||||||
|
BOOL file = GetOpenFileName(&of);
|
||||||
|
if (file)
|
||||||
|
{
|
||||||
|
_loadedFileName = of.lpstrFile;
|
||||||
|
load(of.lpstrFile);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
void DataModelInstance::setMessage(std::string msg)
|
void DataModelInstance::setMessage(std::string msg)
|
||||||
{
|
{
|
||||||
message = msg;
|
message = msg;
|
||||||
|
|||||||
@@ -13,7 +13,10 @@ public:
|
|||||||
void setMessage(std::string);
|
void setMessage(std::string);
|
||||||
void setMessageBrickCount();
|
void setMessageBrickCount();
|
||||||
void clearMessage();
|
void clearMessage();
|
||||||
bool load();
|
bool debugGetOpen();
|
||||||
|
bool getOpen();
|
||||||
|
bool load(const char* filename);
|
||||||
|
bool readXMLFileStream(std::ifstream* file);
|
||||||
void drawMessage(RenderDevice*);
|
void drawMessage(RenderDevice*);
|
||||||
WorkspaceInstance* getWorkspace();
|
WorkspaceInstance* getWorkspace();
|
||||||
WorkspaceInstance* workspace;
|
WorkspaceInstance* workspace;
|
||||||
@@ -21,6 +24,7 @@ public:
|
|||||||
LevelInstance * getLevel();
|
LevelInstance * getLevel();
|
||||||
Instance* guiRoot;
|
Instance* guiRoot;
|
||||||
std::string message;
|
std::string message;
|
||||||
|
std::string _loadedFileName;
|
||||||
bool showMessage;
|
bool showMessage;
|
||||||
G3D::GFontRef font;
|
G3D::GFontRef font;
|
||||||
Instance* getGuiRoot();
|
Instance* getGuiRoot();
|
||||||
|
|||||||
9
main.cpp
9
main.cpp
@@ -814,7 +814,7 @@ void Demo::onInit() {
|
|||||||
test->setSize(Vector3(4,1,2));
|
test->setSize(Vector3(4,1,2));
|
||||||
test->setPosition(Vector3(2,7,0));
|
test->setPosition(Vector3(2,7,0));
|
||||||
#else
|
#else
|
||||||
dataModel->load();
|
dataModel->debugGetOpen();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
@@ -1430,6 +1430,13 @@ void Demo::onKeyPressed(int key)
|
|||||||
{
|
{
|
||||||
deleteInstance();
|
deleteInstance();
|
||||||
}
|
}
|
||||||
|
if (GetHoldKeyState(VK_RCONTROL))
|
||||||
|
{
|
||||||
|
if (key=='O')
|
||||||
|
{
|
||||||
|
dataModel->getOpen();
|
||||||
|
}
|
||||||
|
}
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
if (key==VK_ADD)
|
if (key==VK_ADD)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user