Imported the files from branch 'fixed-map'
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
/* Copyright: (c) Kayne Ruse 2014
|
||||
*
|
||||
* This software is provided 'as-is', without any express or implied
|
||||
* warranty. In no event will the authors be held liable for any damages
|
||||
* arising from the use of this software.
|
||||
*
|
||||
* Permission is granted to anyone to use this software for any purpose,
|
||||
* including commercial applications, and to alter it and redistribute it
|
||||
* freely, subject to the following restrictions:
|
||||
*
|
||||
* 1. The origin of this software must not be misrepresented; you must not
|
||||
* claim that you wrote the original software. If you use this software
|
||||
* in a product, an acknowledgment in the product documentation would be
|
||||
* appreciated but is not required.
|
||||
*
|
||||
* 2. Altered source versions must be plainly marked as such, and must not be
|
||||
* misrepresented as being the original software.
|
||||
*
|
||||
* 3. This notice may not be removed or altered from any source
|
||||
* distribution.
|
||||
*/
|
||||
#ifndef SIMPLERNG_HPP_
|
||||
#define SIMPLERNG_HPP_
|
||||
|
||||
//a simple, stateless, random number generator
|
||||
class SimpleRNG {
|
||||
public:
|
||||
SimpleRNG() { SetSeed(8891.0); }
|
||||
SimpleRNG(double x) { SetSeed(x); }
|
||||
|
||||
double SetSeed(double s) { return seed = s; }
|
||||
double GetSeed() { return seed; }
|
||||
|
||||
double operator()(double x) {
|
||||
return (x + seed) * 11235.0 + 81321.0;
|
||||
};
|
||||
|
||||
private:
|
||||
double seed;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -41,6 +41,11 @@ public:
|
||||
double SquaredLength() const {
|
||||
return x*x+y*y;
|
||||
}
|
||||
void Normalize() {
|
||||
double l = Length();
|
||||
x /= l;
|
||||
y /= l;
|
||||
}
|
||||
|
||||
//Arithmetic operators
|
||||
Vector2 operator+(Vector2 v) const {
|
||||
@@ -97,15 +102,6 @@ public:
|
||||
template<typename T> bool operator!=(T t) { return (x != t || y != t); }
|
||||
};
|
||||
|
||||
//non-member templates (flip the order)
|
||||
template<typename T> Vector2 operator+(T t, Vector2 v) { return v + t; }
|
||||
template<typename T> Vector2 operator-(T t, Vector2 v) { return v - t; }
|
||||
template<typename T> Vector2 operator*(T t, Vector2 v) { return v * t; }
|
||||
template<typename T> Vector2 operator/(T t, Vector2 v) { return v / t; }
|
||||
|
||||
template<typename T> bool operator==(T t, Vector2 v) { return v == t; }
|
||||
template<typename T> bool operator!=(T t, Vector2 v) { return v != t; }
|
||||
|
||||
//This is explicitly a POD
|
||||
static_assert(std::is_pod<Vector2>::value, "Vector2 is not a POD");
|
||||
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
/* Copyright: (c) Kayne Ruse 2014
|
||||
*
|
||||
* This software is provided 'as-is', without any express or implied
|
||||
* warranty. In no event will the authors be held liable for any damages
|
||||
* arising from the use of this software.
|
||||
*
|
||||
* Permission is granted to anyone to use this software for any purpose,
|
||||
* including commercial applications, and to alter it and redistribute it
|
||||
* freely, subject to the following restrictions:
|
||||
*
|
||||
* 1. The origin of this software must not be misrepresented; you must not
|
||||
* claim that you wrote the original software. If you use this software
|
||||
* in a product, an acknowledgment in the product documentation would be
|
||||
* appreciated but is not required.
|
||||
*
|
||||
* 2. Altered source versions must be plainly marked as such, and must not be
|
||||
* misrepresented as being the original software.
|
||||
*
|
||||
* 3. This notice may not be removed or altered from any source
|
||||
* distribution.
|
||||
*/
|
||||
#ifndef CHUNKDATA_HPP_
|
||||
#define CHUNKDATA_HPP_
|
||||
|
||||
#include "terrain_type.hpp"
|
||||
|
||||
#include <type_traits>
|
||||
|
||||
struct ChunkData {
|
||||
enum class Moddable {
|
||||
LOCKED, //do not change
|
||||
HARD, //minor changes
|
||||
SOFT, //major changes
|
||||
CLEAR, //untouched
|
||||
};
|
||||
|
||||
TerrainType type;
|
||||
// int fountainCount;
|
||||
Moddable mod;
|
||||
};
|
||||
|
||||
static_assert(std::is_pod<ChunkData>::value, "ChunkData is not a POD");
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,35 @@
|
||||
/* Copyright: (c) Kayne Ruse 2014
|
||||
*
|
||||
* This software is provided 'as-is', without any express or implied
|
||||
* warranty. In no event will the authors be held liable for any damages
|
||||
* arising from the use of this software.
|
||||
*
|
||||
* Permission is granted to anyone to use this software for any purpose,
|
||||
* including commercial applications, and to alter it and redistribute it
|
||||
* freely, subject to the following restrictions:
|
||||
*
|
||||
* 1. The origin of this software must not be misrepresented; you must not
|
||||
* claim that you wrote the original software. If you use this software
|
||||
* in a product, an acknowledgment in the product documentation would be
|
||||
* appreciated but is not required.
|
||||
*
|
||||
* 2. Altered source versions must be plainly marked as such, and must not be
|
||||
* misrepresented as being the original software.
|
||||
*
|
||||
* 3. This notice may not be removed or altered from any source
|
||||
* distribution.
|
||||
*/
|
||||
#include "overworld_generator.hpp"
|
||||
|
||||
OverworldGenerator::OverworldGenerator() {
|
||||
for (int i = 0; i < OVERWORLD_WIDTH; i++) {
|
||||
for (int j = 0; j < OVERWORLD_HEIGHT; j++) {
|
||||
chunks[i][j].type = TerrainType::NONE;
|
||||
chunks[i][j].mod = ChunkData::Moddable::CLEAR;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
OverworldGenerator::~OverworldGenerator() {
|
||||
//
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
/* Copyright: (c) Kayne Ruse 2014
|
||||
*
|
||||
* This software is provided 'as-is', without any express or implied
|
||||
* warranty. In no event will the authors be held liable for any damages
|
||||
* arising from the use of this software.
|
||||
*
|
||||
* Permission is granted to anyone to use this software for any purpose,
|
||||
* including commercial applications, and to alter it and redistribute it
|
||||
* freely, subject to the following restrictions:
|
||||
*
|
||||
* 1. The origin of this software must not be misrepresented; you must not
|
||||
* claim that you wrote the original software. If you use this software
|
||||
* in a product, an acknowledgment in the product documentation would be
|
||||
* appreciated but is not required.
|
||||
*
|
||||
* 2. Altered source versions must be plainly marked as such, and must not be
|
||||
* misrepresented as being the original software.
|
||||
*
|
||||
* 3. This notice may not be removed or altered from any source
|
||||
* distribution.
|
||||
*/
|
||||
#ifndef OVERWORLDGENERATOR_HPP_
|
||||
#define OVERWORLDGENERATOR_HPP_
|
||||
|
||||
#include "chunk_data.hpp"
|
||||
|
||||
#include "lua/lua.hpp"
|
||||
|
||||
#define OVERWORLD_GENERATOR_PSEUDOINDEX "OverworldGenerator"
|
||||
|
||||
constexpr int OVERWORLD_WIDTH = 256;
|
||||
constexpr int OVERWORLD_HEIGHT = 256;
|
||||
|
||||
//TODO: SuperGenerator API
|
||||
//TODO: SuperGenerator DOCS
|
||||
class OverworldGenerator {
|
||||
public:
|
||||
OverworldGenerator();
|
||||
~OverworldGenerator();
|
||||
|
||||
//accessors and mutators
|
||||
ChunkData* GetChunk(int x, int y) { return &chunks[x][y]; }
|
||||
|
||||
lua_State* SetLuaState(lua_State* L) { return luaState = L; }
|
||||
lua_State* GetLuaState() { return luaState; }
|
||||
|
||||
private:
|
||||
ChunkData chunks[OVERWORLD_WIDTH][OVERWORLD_HEIGHT];
|
||||
lua_State* luaState = nullptr;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,40 @@
|
||||
/* Copyright: (c) Kayne Ruse 2014
|
||||
*
|
||||
* This software is provided 'as-is', without any express or implied
|
||||
* warranty. In no event will the authors be held liable for any damages
|
||||
* arising from the use of this software.
|
||||
*
|
||||
* Permission is granted to anyone to use this software for any purpose,
|
||||
* including commercial applications, and to alter it and redistribute it
|
||||
* freely, subject to the following restrictions:
|
||||
*
|
||||
* 1. The origin of this software must not be misrepresented; you must not
|
||||
* claim that you wrote the original software. If you use this software
|
||||
* in a product, an acknowledgment in the product documentation would be
|
||||
* appreciated but is not required.
|
||||
*
|
||||
* 2. Altered source versions must be plainly marked as such, and must not be
|
||||
* misrepresented as being the original software.
|
||||
*
|
||||
* 3. This notice may not be removed or altered from any source
|
||||
* distribution.
|
||||
*/
|
||||
#ifndef TERRAINTYPE_HPP_
|
||||
#define TERRAINTYPE_HPP_
|
||||
|
||||
enum class TerrainType {
|
||||
//default: something's wrong
|
||||
NONE = 0,
|
||||
|
||||
//standard overworld
|
||||
PLAINS,
|
||||
GRASS,
|
||||
DIRT,
|
||||
SAND,
|
||||
WATER,
|
||||
|
||||
//not used
|
||||
LAST,
|
||||
};
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user