Began merging the jam branch into the development (read more)
The list of changes committed: * Removed SimpleRNG * Added Timer (for debugging) * Added BoundingBox * Added floating point snapToBase() * Added error check to Vector2::Normalize() * Updated makefiles, project compiles
This commit is contained in:
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
#config
|
#config
|
||||||
INCLUDES+=. scenes ../common/gameplay ../common/graphics ../common/map ../common/network ../common/network/packet ../common/network/serial ../common/ui ../common/utilities
|
INCLUDES+=. scenes ../common/debugging ../common/gameplay ../common/graphics ../common/map ../common/network ../common/network/packet ../common/network/serial ../common/ui ../common/utilities
|
||||||
LIBS+=client.a ../libcommon.a -lSDL_net -lwsock32 -liphlpapi -lmingw32 -lSDLmain -lSDL -llua
|
LIBS+=client.a ../libcommon.a -lSDL_net -lwsock32 -liphlpapi -lmingw32 -lSDLmain -lSDL -llua
|
||||||
CXXFLAGS+=-std=c++11 $(addprefix -I,$(INCLUDES))
|
CXXFLAGS+=-std=c++11 $(addprefix -I,$(INCLUDES))
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,37 @@
|
|||||||
|
#config
|
||||||
|
INCLUDES+=.
|
||||||
|
LIBS+=
|
||||||
|
CXXFLAGS+=-std=c++11 $(addprefix -I,$(INCLUDES))
|
||||||
|
|
||||||
|
#source
|
||||||
|
CXXSRC=$(wildcard *.cpp)
|
||||||
|
|
||||||
|
#objects
|
||||||
|
OBJDIR=obj
|
||||||
|
OBJ+=$(addprefix $(OBJDIR)/,$(CXXSRC:.cpp=.o))
|
||||||
|
|
||||||
|
#output
|
||||||
|
OUTDIR=..
|
||||||
|
OUT=$(addprefix $(OUTDIR)/,libcommon.a)
|
||||||
|
|
||||||
|
#targets
|
||||||
|
all: $(OBJ) $(OUT)
|
||||||
|
ar -crs $(OUT) $(OBJ)
|
||||||
|
|
||||||
|
$(OBJ): | $(OBJDIR)
|
||||||
|
|
||||||
|
$(OUT): | $(OUTDIR)
|
||||||
|
|
||||||
|
$(OBJDIR):
|
||||||
|
mkdir $(OBJDIR)
|
||||||
|
|
||||||
|
$(OUTDIR):
|
||||||
|
mkdir $(OUTDIR)
|
||||||
|
|
||||||
|
$(OBJDIR)/%.o: %.cpp
|
||||||
|
$(CXX) $(CXXFLAGS) -c -o $@ $<
|
||||||
|
|
||||||
|
clean:
|
||||||
|
$(RM) *.o *.a *.exe
|
||||||
|
|
||||||
|
rebuild: clean all
|
||||||
@@ -19,24 +19,11 @@
|
|||||||
* 3. This notice may not be removed or altered from any source
|
* 3. This notice may not be removed or altered from any source
|
||||||
* distribution.
|
* distribution.
|
||||||
*/
|
*/
|
||||||
#ifndef SIMPLERNG_HPP_
|
#include "timer.hpp"
|
||||||
#define SIMPLERNG_HPP_
|
|
||||||
|
|
||||||
//a simple, stateless, random number generator
|
std::ostream& operator<<(std::ostream& os, Timer& t) {
|
||||||
class SimpleRNG {
|
os << t.GetName() << ": ";
|
||||||
public:
|
os << std::chrono::duration_cast<std::chrono::nanoseconds>(t.GetTime()).count();
|
||||||
SimpleRNG() { SetSeed(8891.0); }
|
os << "ns";
|
||||||
SimpleRNG(double x) { SetSeed(x); }
|
return os;
|
||||||
|
}
|
||||||
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
|
|
||||||
@@ -0,0 +1,54 @@
|
|||||||
|
/* 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 TIMER_HPP_
|
||||||
|
#define TIMER_HPP_
|
||||||
|
|
||||||
|
#include <chrono>
|
||||||
|
#include <string>
|
||||||
|
#include <ostream>
|
||||||
|
|
||||||
|
class Timer {
|
||||||
|
public:
|
||||||
|
typedef std::chrono::high_resolution_clock Clock;
|
||||||
|
|
||||||
|
Timer() = default;
|
||||||
|
Timer(std::string s) : name(s), start(Clock::now()) {};
|
||||||
|
~Timer() = default;
|
||||||
|
|
||||||
|
inline void Start() { start = Clock::now(); }
|
||||||
|
inline void Stop() { time = Clock::now() - start; }
|
||||||
|
|
||||||
|
//accessors and mutators
|
||||||
|
Clock::duration GetTime() { return time; }
|
||||||
|
|
||||||
|
std::string SetName(std::string s) { return name = s; }
|
||||||
|
std::string GetName() { return name; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::string name;
|
||||||
|
Clock::time_point start;
|
||||||
|
Clock::duration time;
|
||||||
|
};
|
||||||
|
|
||||||
|
std::ostream& operator<<(std::ostream& os, Timer& t);
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
all:
|
all:
|
||||||
|
$(MAKE) -C debugging
|
||||||
$(MAKE) -C gameplay
|
$(MAKE) -C gameplay
|
||||||
$(MAKE) -C graphics
|
$(MAKE) -C graphics
|
||||||
$(MAKE) -C map
|
$(MAKE) -C map
|
||||||
|
|||||||
@@ -0,0 +1,77 @@
|
|||||||
|
/* Copyright: (c) Kayne Ruse 2013, 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 BOUNDINGBOX_HPP_
|
||||||
|
#define BOUNDINGBOX_HPP_
|
||||||
|
|
||||||
|
#include <type_traits>
|
||||||
|
#include <algorithm>
|
||||||
|
|
||||||
|
class BoundingBox {
|
||||||
|
public:
|
||||||
|
//This is explicitly a POD
|
||||||
|
int x, y;
|
||||||
|
int w, h;
|
||||||
|
|
||||||
|
BoundingBox() = default;
|
||||||
|
BoundingBox(int i, int j, int k, int l): x(i), y(j), w(k), h(l) {};
|
||||||
|
~BoundingBox() = default;
|
||||||
|
BoundingBox& operator=(BoundingBox const&) = default;
|
||||||
|
|
||||||
|
int Size() {
|
||||||
|
return std::max(w*h,0);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CheckOverlap(BoundingBox rhs) {
|
||||||
|
return !(
|
||||||
|
x >= rhs.x + rhs.w ||
|
||||||
|
y >= rhs.y + rhs.h ||
|
||||||
|
rhs.x >= x + w ||
|
||||||
|
rhs.y >= y + h);
|
||||||
|
}
|
||||||
|
|
||||||
|
BoundingBox CalcOverlap(BoundingBox rhs) {
|
||||||
|
if (!CheckOverlap(rhs)) {
|
||||||
|
return {0, 0, 0, 0};
|
||||||
|
}
|
||||||
|
BoundingBox ret;
|
||||||
|
ret.x = std::max(x, rhs.x);
|
||||||
|
ret.y = std::max(y, rhs.y);
|
||||||
|
ret.w = std::min(x+w, rhs.x+rhs.w) - ret.x;
|
||||||
|
ret.h = std::min(y+h, rhs.y+rhs.h) - ret.y;
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
//This is explicitly a POD
|
||||||
|
static_assert(std::is_pod<Vector2>::value, "BoundingBox is not a POD");
|
||||||
|
|
||||||
|
#include "vector2.hpp"
|
||||||
|
|
||||||
|
//operators
|
||||||
|
inline BoundingBox operator+(BoundingBox b, Vector2 v) {
|
||||||
|
return {b.x + (int)v.x, b.y + (int)v.y, b.w, b.h};
|
||||||
|
}
|
||||||
|
inline BoundingBox operator+(Vector2 v, BoundingBox b) {
|
||||||
|
return b + v;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -32,6 +32,10 @@ int snapToBase(int base, int x) {
|
|||||||
return x / base * base;
|
return x / base * base;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
double snapToBase(double base, double x) {
|
||||||
|
return floor(x / base) * base;
|
||||||
|
}
|
||||||
|
|
||||||
std::string truncatePath(std::string pathname) {
|
std::string truncatePath(std::string pathname) {
|
||||||
return std::string(
|
return std::string(
|
||||||
std::find_if(
|
std::find_if(
|
||||||
|
|||||||
@@ -25,6 +25,8 @@
|
|||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
int snapToBase(int base, int x);
|
int snapToBase(int base, int x);
|
||||||
|
double snapToBase(double base, double x);
|
||||||
|
|
||||||
std::string truncatePath(std::string pathname);
|
std::string truncatePath(std::string pathname);
|
||||||
|
|
||||||
//fixing known bugs in g++
|
//fixing known bugs in g++
|
||||||
|
|||||||
@@ -43,6 +43,8 @@ public:
|
|||||||
}
|
}
|
||||||
void Normalize() {
|
void Normalize() {
|
||||||
double l = Length();
|
double l = Length();
|
||||||
|
if (l == 0)
|
||||||
|
throw(std::domain_error("Divide by zero"));
|
||||||
x /= l;
|
x /= l;
|
||||||
y /= l;
|
y /= l;
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
#config
|
#config
|
||||||
INCLUDES+=. accounts characters combat enemies mapgen mapgen/generators rooms ../common/gameplay ../common/map ../common/network ../common/network/packet ../common/network/serial ../common/utilities
|
INCLUDES+=. accounts characters combat enemies mapgen mapgen/generators rooms ../common/debugging ../common/gameplay ../common/map ../common/network ../common/network/packet ../common/network/serial ../common/utilities
|
||||||
LIBS+=server.a ../libcommon.a -lSDL_net -lwsock32 -liphlpapi -lmingw32 -lSDLmain -lSDL -llua -lsqlite3
|
LIBS+=server.a ../libcommon.a -lSDL_net -lwsock32 -liphlpapi -lmingw32 -lSDLmain -lSDL -llua -lsqlite3
|
||||||
CXXFLAGS+=-std=c++11 $(addprefix -I,$(INCLUDES))
|
CXXFLAGS+=-std=c++11 $(addprefix -I,$(INCLUDES))
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user