本文整理汇总了C++中jsonbox::Value类的典型用法代码示例。如果您正苦于以下问题:C++ Value类的具体用法?C++ Value怎么用?C++ Value使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Value类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: loadEffectiveItems
void
MCBackpack::loadData()
{
CCUserDefault *userDefault = CCUserDefault::sharedUserDefault();
loadEffectiveItems();
if (! __icon_loaded) {
loadIcons();
}
if (MCGameState::sharedGameState()->isSaveFileExists()) {
string data = userDefault->getStringForKey(kMCBackpackKey, kMCZero);
if (data.size() > 0) {
#if MC_DEBUG_SAVEDATA == 1
const char *output = data.c_str();
#else
const char *input = data.c_str();
char *output;
mc_size_t len = strlen(input);
MCBase64Decode((mc_byte_t *) input, len, (mc_byte_t **) &output);
#endif
JsonBox::Value v;
v.loadFromString(output);
JsonBox::Object backpack = v.getObject();
/* 加载金钱 */
money_ = backpack[kMCMoneyKey].getInt();
}
} else {
money_ = 0;
}
}
示例2: loadGUIConf
void GameState::loadGUIConf(const std::string& filename){
JsonBox::Value v;
#if defined ANDROID
v.loadFromString(std::string(android::readAssetsFile(filename).data()));
#else
v.loadFromFile(filename);
#endif
if(!v["GUI"]["buttons"].isNull()){
int size = v["GUI"]["buttons"].getArray().size();
for(int i=0;i<size;++i){
sf::Vector2f pos(v["GUI"]["buttons"][size_t(i)]["position"]["x"].getInteger(),
v["GUI"]["buttons"][size_t(i)]["position"]["y"].getInteger());
sf::Vector2f bSize(v["GUI"]["buttons"][size_t(i)]["scale"]["width"].getInteger(),
v["GUI"]["buttons"][size_t(i)]["scale"]["height"].getInteger());
sf::Text t;
if(v["GUI"]["buttons"][size_t(i)]["text"]["font"].getString() != ""){
t.setFont(assets->getFont(v["GUI"]["buttons"][size_t(i)]["text"]["font"].getString()));
}
t.setString(v["GUI"]["buttons"][size_t(i)]["text"]["string"].getString());
t.setPosition(pos);
t.setCharacterSize(v["GUI"]["buttons"][size_t(i)]["text"]["size"].getInteger());
sf::Sprite sprite;
sprite.setPosition(pos);
if(v["GUI"]["buttons"][size_t(i)]["imageID"].getString() != ""){
auto textureID = v["GUI"]["buttons"][size_t(i)]["imageID"].getString();
if(assets->hasTexture(textureID)){
sprite.setTexture(assets->getTexture(textureID));
}else{
throw std::runtime_error("The " + textureID + " ID doesn't exists, add it to assets.json");
}
}
std::string actionID = v["GUI"]["buttons"][size_t(i)]["action"].getString();
constructorSystem::command action = [](Entity* e,sf::VertexArray* va,sf::FloatRect bounds){};
if(actionID == "climb"){
action = Constructions::climb;
}else if(actionID == "dig"){
action = Constructions::hole;
}else if(actionID == "tunnel"){
action = Constructions::tunnel;
}else if(actionID == "stairs"){
action = Constructions::stairs;
}else if(actionID == "wall"){
action = Constructions::wall;
}else if(actionID == "stop"){
action = Constructions::stop;
}else if(actionID == "bridge"){
action = Constructions::bridge;
}else if(actionID == "downhill"){
action = Constructions::downhill;
}else if(actionID == "uphill"){
action = Constructions::uphill;
}else if(actionID == "explosion"){
action = Constructions::explosion;
}
buttons.emplace_back(std::make_unique<GUI::Button>(pos,sprite,t,action));
}
}
}
示例3: loadConfig
void GameState::loadConfig(const std::string& filename){
JsonBox::Value v;
#if defined ANDROID
v.loadFromString(std::string(android::readAssetsFile(filename).data()));
#else
v.loadFromFile(filename);
#endif
if(v["Config"]["font"].getString() != ""){
font = v["Config"]["font"].getString();
}
}
示例4: loadJson
void EntityManager::loadJson(const std::string& filename)
{
JsonBox::Value v;
v.loadFromFile(filename);
JsonBox::Object o = v.getObject();
for(auto entity : o)
{
std::string key = entity.first;
this->data[key] = dynamic_cast<Entity*>(new T(key, entity.second, this));
}
}
示例5: unserialize
inline void unserialize(const JsonBox::Value & o, sf::Transform & t)
{
assert(o.isArray());
const JsonBox::Array & a = o.getArray();
t = sf::Transform(
a[0].getDouble(), a[4].getDouble(), a[12].getDouble(),
a[1].getDouble(), a[5].getDouble(), a[13].getDouble(),
a[3].getDouble(), a[7].getDouble(), a[15].getDouble()
);
}
示例6: MCObjectIdToDickKey
/**
* 从数据包加载任务
*/
bool
MCTaskAccessor::loadTasks(const char *aFilePath)
{
bool result = false;
do {
JsonBox::Value in;
JsonBox::Object o;
JsonBox::Object tasksDict;
JsonBox::Object::iterator oIter;
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
CCString* pstrFileContent = CCString::createWithContentsOfFile(aFilePath);
if (pstrFileContent) {
in.loadFromString(pstrFileContent->getCString());
}
#else
in.loadFromFile(CCFileUtils::sharedFileUtils()->fullPathForFilename(aFilePath).c_str());
#endif
CC_BREAK_IF(! in.isObject());
tasksDict = in.getObject();
for (oIter = tasksDict.begin(); oIter != tasksDict.end(); ++oIter) {
std::string t_id = oIter->first;
const char *s_t_id = t_id.c_str();
mc_object_id_t o_id = {
s_t_id[0],
s_t_id[1],
s_t_id[2],
s_t_id[3]
};
MCTask *task = new MCTask;
task->autorelease();
if (task) {
task->setID(o_id);
o = oIter->second.getObject();
task->loadTaskContent(o);
/* 默认为未完成状态,然后会在加载存档数据的时候更新为正确状态 */
task->setTaskStatus(MCTaskUncompleted);
task->proto_ = NULL;
tasks_->setObject(task, MCObjectIdToDickKey(o_id));
}
}
result = true;
} while (0);
return result;
}
示例7:
Inventory::Inventory(JsonBox::Value& v, EntityManager* mgr)
{
JsonBox::Object o = v.getObject();
load<Item>(o["items"], mgr);
load<Weapon>(o["weapons"], mgr);
load<Armor>(o["armor"], mgr);
}
示例8: load
void Weapon::load(const JsonBox::Value& v, EntityManager* mgr)
{
JsonBox::Object o = v.getObject();
this->damage = o["damage"].getInteger();
return;
}
示例9: load
void Armor::load(JsonBox::Value& v, EntityManager* mgr)
{
JsonBox::Object o = v.getObject();
this->defense = o["defense"].getInteger();
return;
}
示例10: load
void Creature::load(const JsonBox::Value& v, EntityManager* mgr)
{
JsonBox::Object o = v.getObject();
this->name = o["name"].getString();
this->hp = o["hp"].getInteger();
if(o.find("hp_max") != o.end())
{
this->maxHp = o["hp_max"].getInteger();
}
else
{
this->maxHp = hp;
}
this->strength = o["strength"].getInteger();
this->agility = o["agility"].getInteger();
this->evasion = o["evasion"].getDouble();
this->xp = o["xp"].getInteger();
if(o.find("inventory") != o.end())
{
this->inventory = Inventory(o["inventory"], mgr);
}
if(o.find("equipped_weapon") != o.end())
{
std::string equippedWeaponName = o["equipped_weapon"].getString();
this->equippedWeapon = equippedWeaponName == "nullptr" ? nullptr : mgr->getEntity<Weapon>(equippedWeaponName);
}
if(o.find("equipped_armor") != o.end())
{
std::string equippedArmorName = o["equipped_armor"].getString();
this->equippedArmor = equippedArmorName == "nullptr" ? nullptr : mgr->getEntity<Armor>(equippedArmorName);
}
return;
}
示例11: request
void RPCClient::request(JsonBox::Value& json, char* method, JsonBox::Object params)
{
string result = "";
stringstream sstream("");
DeviceInfo *dev = ((AppDelegate*)cocos2d::CCApplication::sharedApplication())->getDeviceInfo();
JsonBox::Object device;
dev->getJSONString(device);
params["authkey"] = JsonBox::Value(dev->getAuthKey());
params["device"] = JsonBox::Value(device);
JsonBox::Object data;
data["jsonrpc"] = JsonBox::Value("2.0");
data["id"] = JsonBox::Value("1");
data["method"] = JsonBox::Value(method);
data["params"] = JsonBox::Value(params);
sstream << data;
if(_send(sstream.str()))
_recv(result);
sstream.flush();
json.loadFromString(result);
}
示例12: Load
void Item::Load(JsonBox::Value& v, EntityManager* manager)
{
JsonBox::Object obj = v.getObject();
name = obj["name"].getString();
description = obj["description"].getString();
}
示例13: Load
void Player::Load(JsonBox::Value& saveData, EntityManager* manager)
{
Creature::Load(saveData, manager);
JsonBox::Object obj = saveData.getObject();
className = obj["CclassName"].getString();
level = obj["level"].getInteger();
}
示例14: load
void Inventory::load(JsonBox::Value& v, EntityManager* mgr)
{
for(auto item : v.getArray())
{
std::string itemId = item.getArray()[0].getString();
int quantity = item.getArray()[1].getInteger();
this->items.push_back(std::make_pair(mgr->getEntity<T>(itemId), quantity));
}
}
示例15: LoadArea
void Player::LoadArea(JsonBox::Value& areaData, EntityManager* manager)
{
JsonBox::Object obj = areaData.getObject();
for (auto area : obj)
{
std::string key = area.first;
manager->GetEntity<Area>(key)->Load(area.second, manager);
visitedAreas.insert(key);
}
}