Initial commit
This commit is contained in:
commit
6e67a0f132
13 changed files with 654 additions and 0 deletions
53
src/model/Map.cpp
Normal file
53
src/model/Map.cpp
Normal file
|
@ -0,0 +1,53 @@
|
|||
/*
|
||||
Copyright (c) 2014, Matthias Schiffer <mschiffer@universe-factory.net>
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright notice,
|
||||
this list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
|
||||
#include "Map.hpp"
|
||||
|
||||
|
||||
namespace RPGEdit {
|
||||
|
||||
namespace Model {
|
||||
|
||||
std::shared_ptr<Map> Map::load(__attribute__((unused)) const std::string &name) {
|
||||
std::shared_ptr<Map> map(new Map(16, 16));
|
||||
|
||||
map->tileset.push_back("dirt");
|
||||
|
||||
for (int i = 0; i < 16; i++) {
|
||||
for (int j = 0; j < 16; j++) {
|
||||
if (4 <= i && i < 12 && 4 <= j && j < 12)
|
||||
map->setTileAt(i, j, 1);
|
||||
else
|
||||
map->setTileAt(i, j, 0);
|
||||
}
|
||||
}
|
||||
|
||||
return map;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
85
src/model/Map.hpp
Normal file
85
src/model/Map.hpp
Normal file
|
@ -0,0 +1,85 @@
|
|||
/*
|
||||
Copyright (c) 2014, Matthias Schiffer <mschiffer@universe-factory.net>
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright notice,
|
||||
this list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <cstdint>
|
||||
#include <memory>
|
||||
#include <stdexcept>
|
||||
#include <vector>
|
||||
|
||||
namespace RPGEdit {
|
||||
|
||||
namespace Model {
|
||||
|
||||
class Map {
|
||||
private:
|
||||
std::vector<std::string> tileset;
|
||||
|
||||
size_t width, height;
|
||||
std::unique_ptr<uint32_t[]> tiles;
|
||||
|
||||
Map(size_t width0, size_t height0)
|
||||
: width(width0), height(height0), tiles(new uint32_t[width*height]) {
|
||||
}
|
||||
|
||||
public:
|
||||
std::vector<std::string> & getTileset() {
|
||||
return tileset;
|
||||
}
|
||||
|
||||
const std::vector<std::string> & getTileset() const {
|
||||
return tileset;
|
||||
}
|
||||
|
||||
size_t getWidth() const {
|
||||
return width;
|
||||
}
|
||||
|
||||
size_t getHeight() const {
|
||||
return height;
|
||||
}
|
||||
|
||||
void setTileAt(size_t x, size_t y, uint32_t value) {
|
||||
if (x >= width || y >= height)
|
||||
throw std::range_error("Map::setTileAt: bad coordinates");
|
||||
|
||||
tiles[y*width + x] = value;
|
||||
}
|
||||
|
||||
uint32_t getTileAt(ssize_t x, ssize_t y) const {
|
||||
if (x < 0 || (size_t)x >= width || y < 0 || (size_t)y >= height)
|
||||
return 0;
|
||||
|
||||
return tiles[y*width + x];
|
||||
}
|
||||
|
||||
static std::shared_ptr<Map> load(const std::string &name);
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
}
|
Reference in a new issue