Imported the files from branch 'fixed-map'

This commit is contained in:
Kayne Ruse
2014-06-21 05:28:06 +10:00
parent 618666de43
commit a6de5f9e69
6 changed files with 218 additions and 9 deletions
+42
View File
@@ -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
+5 -9
View File
@@ -41,6 +41,11 @@ public:
double SquaredLength() const { double SquaredLength() const {
return x*x+y*y; return x*x+y*y;
} }
void Normalize() {
double l = Length();
x /= l;
y /= l;
}
//Arithmetic operators //Arithmetic operators
Vector2 operator+(Vector2 v) const { Vector2 operator+(Vector2 v) const {
@@ -97,15 +102,6 @@ public:
template<typename T> bool operator!=(T t) { return (x != t || y != t); } 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 //This is explicitly a POD
static_assert(std::is_pod<Vector2>::value, "Vector2 is not a POD"); static_assert(std::is_pod<Vector2>::value, "Vector2 is not a POD");
+44
View File
@@ -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
+35
View File
@@ -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() {
//
}
+52
View File
@@ -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
+40
View File
@@ -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