void Sector::write(lisp::Writer& writer) { writer.write_string("name", name); writer.write_float("gravity", gravity); writer.write_string("music", music); // write spawnpoints for(SpawnPoints::iterator i = spawnpoints.begin(); i != spawnpoints.end(); ++i) { SpawnPoint* spawn = *i; writer.start_list("spawn-points"); writer.write_string("name", spawn->name); writer.write_float("x", spawn->pos.x); writer.write_float("y", spawn->pos.y); writer.end_list("spawn-points"); } // write objects for(GameObjects::iterator i = gameobjects.begin(); i != gameobjects.end(); ++i) { Serializable* serializable = dynamic_cast<Serializable*> (*i); if(serializable) serializable->write(writer); } }
void PlayerStatus::write(lisp::Writer& writer) { switch(bonus) { case NO_BONUS: writer.write_string("bonus", "none"); break; case GROWUP_BONUS: writer.write_string("bonus", "growup"); break; case FIRE_BONUS: writer.write_string("bonus", "fireflower"); break; case ICE_BONUS: writer.write_string("bonus", "iceflower"); break; default: log_warning << "Unknown bonus type." << std::endl; writer.write_string("bonus", "none"); } writer.write_int("fireflowers", max_fire_bullets); writer.write_int("iceflowers", max_ice_bullets); writer.write_int("coins", coins); writer.write_int("max-score-multiplier", max_score_multiplier); }
void WillOWisp::write(lisp::Writer& writer) { writer.start_list("willowisp"); writer.write_float("x", start_position.x); writer.write_float("y", start_position.y); writer.write_string("sector", target_sector); writer.write_string("spawnpoint", target_spawnpoint); writer.end_list("willowisp"); }
void save_squirrel_table(HSQUIRRELVM vm, int table_idx, lisp::Writer& writer) { // offset because of sq_pushnull if(table_idx < 0) table_idx -= 1; //iterator table sq_pushnull(vm); while(SQ_SUCCEEDED(sq_next(vm, table_idx))) { if(sq_gettype(vm, -2) != OT_STRING) { std::cerr << "Table contains non-string key\n"; continue; } const char* key; sq_getstring(vm, -2, &key); switch(sq_gettype(vm, -1)) { case OT_INTEGER: { int val; sq_getinteger(vm, -1, &val); writer.write_int(key, val); break; } case OT_FLOAT: { float val; sq_getfloat(vm, -1, &val); writer.write_float(key, val); break; } case OT_BOOL: { SQBool val; sq_getbool(vm, -1, &val); writer.write_bool(key, val); break; } case OT_STRING: { const char* str; sq_getstring(vm, -1, &str); writer.write_string(key, str); break; } case OT_TABLE: { writer.start_list(key, true); save_squirrel_table(vm, -1, writer); writer.end_list(key); break; } case OT_CLOSURE: break; // ignore case OT_NATIVECLOSURE: break; default: std::cerr << "Can't serialize key '" << key << "' in table.\n"; break; } sq_pop(vm, 2); } sq_pop(vm, 1); }
void Camera::write(lisp::Writer& writer) { writer.start_list("camera"); if(mode == NORMAL) { writer.write_string("mode", "normal"); writer.write_bool("backscrolling", do_backscrolling); } else if(mode == AUTOSCROLL) { writer.write_string("mode", "autoscroll"); autoscroll_path->write(writer); } else if(mode == MANUAL) { writer.write_string("mode", "manual"); } writer.end_list("camera"); }
void Background::write(lisp::Writer& writer) { writer.start_list("background"); if (image_top.get() != NULL) writer.write_string("image-top", imagefile_top); writer.write_string("image", imagefile); if (image_bottom.get() != NULL) writer.write_string("image-bottom", imagefile_bottom); writer.write_float("speed", speed); writer.write_float("speed-y", speed_y); writer.write_int("layer", layer); writer.end_list("background"); }
void Dispenser::write(lisp::Writer& writer) { writer.start_list("dispenser"); writer.write_float("x", start_position.x); writer.write_float("y", start_position.y); writer.write_float("cycle", cycle); writer.write_string("badguy", badguy); writer.end_list("dispenser"); }