Assets::Assets()
: path("assets/")
-, tile_path(path + "tiles/") {
+, tile_path(path + "tiles/")
+, skin_path(path + "skins/") {
+ data.resources.Add({ "air", "Air", 0 });
+ data.resources.Add({ "biomass", "Biomass", 0 });
+ data.resources.Add({ "dirt", "Dirt", 0 });
+ data.resources.Add({ "ice", "Ice", 0 });
+ data.resources.Add({ "rock", "Rock", 0 });
+ data.resources.Add({ "sand", "Sand", 0 });
+ data.resources.Add({ "water", "Water", 0 });
+ data.resources.Add({ "wood", "Wood", 0 });
+
+ data.tiles.Add({ "algae", "Algae", 0, 0 });
+ data.tiles.Add({ "desert", "Desert", 0, 1 });
+ data.tiles.Add({ "forest", "Forest", 0, 2 });
+ data.tiles.Add({ "grass", "Grass", 0, 3 });
+ data.tiles.Add({ "ice", "Ice", 0, 4 });
+ data.tiles.Add({ "jungle", "Jungle", 0, 5 });
+ data.tiles.Add({ "mountain", "Mountain", 0, 6 });
+ data.tiles.Add({ "ocean", "Ocean", 0, 7 });
+ data.tiles.Add({ "rock", "Rock", 0, 8 });
+ data.tiles.Add({ "sand", "Sand", 0, 9 });
+ data.tiles.Add({ "taiga", "Taiga", 0, 10 });
+ data.tiles.Add({ "tundra", "Tundra", 0, 11 });
+ data.tiles.Add({ "water", "Water", 0, 12 });
+ data.tiles.Add({ "wheat", "Wheat", 0, 13 });
+
+ data.tiles["algae"] .resources.push_back({ data.resources["water"].id, 1.0 });
+ data.tiles["algae"] .resources.push_back({ data.resources["biomass"].id, 0.5 });
+ data.tiles["desert"] .resources.push_back({ data.resources["sand"].id, 1.0 });
+ data.tiles["forest"] .resources.push_back({ data.resources["wood"].id, 1.0 });
+ data.tiles["forest"] .resources.push_back({ data.resources["dirt"].id, 0.5 });
+ data.tiles["grass"] .resources.push_back({ data.resources["dirt"].id, 0.5 });
+ data.tiles["grass"] .resources.push_back({ data.resources["biomass"].id, 0.25 });
+ data.tiles["grass"] .resources.push_back({ data.resources["water"].id, 0.25 });
+ data.tiles["ice"] .resources.push_back({ data.resources["ice"].id, 1.0 });
+ data.tiles["ice"] .resources.push_back({ data.resources["water"].id, 0.25 });
+ data.tiles["jungle"] .resources.push_back({ data.resources["wood"].id, 0.5 });
+ data.tiles["jungle"] .resources.push_back({ data.resources["biomass"].id, 0.5 });
+ data.tiles["mountain"].resources.push_back({ data.resources["rock"].id, 1.0 });
+ data.tiles["ocean"] .resources.push_back({ data.resources["water"].id, 1.0 });
+ data.tiles["rock"] .resources.push_back({ data.resources["rock"].id, 1.0 });
+ data.tiles["sand"] .resources.push_back({ data.resources["sand"].id, 1.0 });
+ data.tiles["taiga"] .resources.push_back({ data.resources["wood"].id, 1.0 });
+ data.tiles["taiga"] .resources.push_back({ data.resources["water"].id, 0.5 });
+ data.tiles["tundra"] .resources.push_back({ data.resources["rock"].id, 1.0 });
+ data.tiles["tundra"] .resources.push_back({ data.resources["ice"].id, 0.5 });
+ data.tiles["water"] .resources.push_back({ data.resources["water"].id, 1.0 });
+ data.tiles["water"] .resources.push_back({ data.resources["biomass"].id, 0.25 });
+ data.tiles["wheat"] .resources.push_back({ data.resources["biomass"].id, 1.0 });
+ data.tiles["wheat"] .resources.push_back({ data.resources["water"].id, 0.25 });
+
graphics::Format format;
textures.tiles.Bind();
- textures.tiles.Reserve(256, 256, 9, format);
- LoadTileTexture("1", textures.tiles, 0);
- LoadTileTexture("2", textures.tiles, 1);
- LoadTileTexture("3", textures.tiles, 2);
- LoadTileTexture("4", textures.tiles, 3);
- LoadTileTexture("5", textures.tiles, 4);
- LoadTileTexture("6", textures.tiles, 5);
- LoadTileTexture("7", textures.tiles, 6);
- LoadTileTexture("8", textures.tiles, 7);
- LoadTileTexture("9", textures.tiles, 8);
+ textures.tiles.Reserve(256, 256, 14, format);
+ LoadTileTexture("algae", textures.tiles, 0);
+ LoadTileTexture("desert", textures.tiles, 1);
+ LoadTileTexture("forest", textures.tiles, 2);
+ LoadTileTexture("grass", textures.tiles, 3);
+ LoadTileTexture("ice", textures.tiles, 4);
+ LoadTileTexture("jungle", textures.tiles, 5);
+ LoadTileTexture("mountain", textures.tiles, 6);
+ LoadTileTexture("ocean", textures.tiles, 7);
+ LoadTileTexture("rock", textures.tiles, 8);
+ LoadTileTexture("sand", textures.tiles, 9);
+ LoadTileTexture("taiga", textures.tiles, 10);
+ LoadTileTexture("tundra", textures.tiles, 11);
+ LoadTileTexture("water", textures.tiles, 12);
+ LoadTileTexture("wheat", textures.tiles, 13);
+
+ textures.skins.Bind();
+ textures.skins.Reserve(256, 256, 9, format);
+ LoadSkinTexture("1", textures.skins, 0);
+ LoadSkinTexture("2", textures.skins, 1);
+ LoadSkinTexture("3", textures.skins, 2);
+ LoadSkinTexture("4", textures.skins, 3);
+ LoadSkinTexture("5", textures.skins, 4);
+ LoadSkinTexture("6", textures.skins, 5);
+ LoadSkinTexture("7", textures.skins, 6);
+ LoadSkinTexture("8", textures.skins, 7);
+ LoadSkinTexture("9", textures.skins, 8);
}
Assets::~Assets() {
SDL_FreeSurface(srf);
}
+void Assets::LoadSkinTexture(const std::string &name, graphics::ArrayTexture &tex, int layer) const {
+ std::string path = skin_path + name + ".png";
+ SDL_Surface *srf = IMG_Load(path.c_str());
+ if (!srf) {
+ throw SDLError("IMG_Load");
+ }
+ try {
+ tex.Data(layer, *srf);
+ } catch (...) {
+ SDL_FreeSurface(srf);
+ throw;
+ }
+ SDL_FreeSurface(srf);
+}
+
}
}