diff -r 84c5b9217bce Goblin Camp/Makefile
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Goblin Camp/Makefile	Thu Jul 15 00:43:27 2010 -0400
@@ -0,0 +1,62 @@
+
+##
+# Things You Probably Need To Do
+#
+# 1. Install premake, SDL, and libpng.
+# 2. Download ticpp and build it:
+#    svn co http://ticpp.googlecode.com/svn/trunk/ ticpp
+#    cd ticpp
+#    premake --target gnu --ticpp-shared
+#    make
+# 3. Download libtcod:
+#    svn co http://doryen.eptalys.net/svn-libtcod/
+# 4. Edit trunk/src/sys_sdl_img_png.c in libtcod:
+#    Remove lines 33 and 36.
+# 5. Build libtcod with:
+#    cd svn-libtcod/trunk
+#    make -f makefiles/makefile-linux
+# 6. Download and build boost:
+#    svn co http://svn.boost.org/svn/boost/trunk boost-trunk
+#    cd boost-trunk
+#    ./bootstrap.sh
+#    ./bjam
+##
+
+##
+# Things You Probably Need To Change
+##
+
+TCOD=/home/karl/archive/downloads/svn-libtcod/trunk
+TICPP=/home/karl/archive/downloads/ticpp
+BOOST=/home/karl/archive/downloads/boost-trunk
+
+
+##
+# Things You Should Probably Leave Alone
+##
+
+INCS=-I$(TCOD)/include -I$(TICPP) -I$(BOOST) -Iinclude
+LIBS=-L$(TCOD) -L$(BOOST)/stage/lib -ltcod -ltcodxx -lboost_serialization -lboost_thread
+MACS=-DTIXML_USE_TICPP
+
+SRCS=$(wildcard src/*.cpp)
+OBJS=${SRCS:.cpp=.o} $(wildcard $(TICPP)/.obj/Debug/*.o)
+
+.PHONY: all run clean
+
+all: goblin-camp
+
+run: goblin-camp
+	LD_LIBRARY_PATH=$(TCOD):$(BOOST)/stage/lib:$(LD_LIBRARY_PATH) ./goblin-camp
+
+goblin-camp: $(OBJS)
+	g++ -o goblin-camp $(OBJS) $(LIBS)
+
+# Right now every module depends on every header file, which is ugly,
+# but at least if you change anything it should rebuild correctly.
+src/%.o: src/%.cpp $(wildcard include/*.hpp)
+	g++ -o src/$*.o -c $(MACS) $(INCS) src/$*.cpp
+
+clean:
+	-rm src/*.o goblin-camp
+
diff -r 84c5b9217bce Goblin Camp/include/Door.hpp
--- a/Goblin Camp/include/Door.hpp	Wed Jul 14 22:49:44 2010 +0300
+++ b/Goblin Camp/include/Door.hpp	Thu Jul 15 00:43:27 2010 -0400
@@ -30,4 +30,4 @@
 public:
 	Door(ConstructionType = 0, Coordinate = Coordinate(0,0));
 	virtual void Update();
-};
\ No newline at end of file
+};
diff -r 84c5b9217bce Goblin Camp/include/Entity.hpp
--- a/Goblin Camp/include/Entity.hpp	Wed Jul 14 22:49:44 2010 +0300
+++ b/Goblin Camp/include/Entity.hpp	Thu Jul 15 00:43:27 2010 -0400
@@ -40,8 +40,8 @@
 	public:
 		Entity();
 		virtual ~Entity();
-		virtual int X();
-		virtual int Y();
+		int X();
+		int Y();
 		int Uid();
 		static int uids;
 		virtual Coordinate Position();
diff -r 84c5b9217bce Goblin Camp/src/GCamp.cpp
--- a/Goblin Camp/src/GCamp.cpp	Wed Jul 14 22:49:44 2010 +0300
+++ b/Goblin Camp/src/GCamp.cpp	Thu Jul 15 00:43:27 2010 -0400
@@ -15,7 +15,9 @@
 along with Goblin Camp. If not, see <http://www.gnu.org/licenses/>.*/
 
 #include <libtcod.hpp>
+#ifdef WINDOWS
 #include <windows.h>
+#endif
 #include <boost/format.hpp>
 
 #include "GCamp.hpp"
@@ -28,7 +30,7 @@
 #include "UI.hpp"
 #include "JobManager.hpp"
 
-int main(std::string cmdline) {
+int main() {
 	int width = -1, height = -1;
 	bool fullscreen = false;
 
@@ -70,8 +72,10 @@
 	return MainMenu();
 }
 
+#ifdef WINDOWS
 int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR cmdLine, int)
 { return main(cmdLine); }
+#endif
 
 void MainLoop() {
 	Game* game = Game::Inst();
@@ -302,7 +306,7 @@
 		if (key.c >= ' ' && key.c <= '}' && saveName.size() < 28) {
 			saveName.push_back(key.c);
 		} else if (key.vk == TCODK_BACKSPACE && saveName.size() > 0) {
-			saveName.pop_back();
+      saveName.erase(saveName.end() - 1);
 		}
 
 		if (key.vk == TCODK_ESCAPE) return;
@@ -323,4 +327,4 @@
 
 	}
 	return;
-}
\ No newline at end of file
+}
diff -r 84c5b9217bce Goblin Camp/src/Game.cpp
--- a/Goblin Camp/src/Game.cpp	Wed Jul 14 22:49:44 2010 +0300
+++ b/Goblin Camp/src/Game.cpp	Thu Jul 15 00:43:27 2010 -0400
@@ -28,7 +28,7 @@
 #include "Tile.hpp"
 #include "Coordinate.hpp"
 #include "JobManager.hpp"
-#include "Gcamp.hpp"
+#include "GCamp.hpp"
 #include "Logger.hpp"
 #include "Map.hpp"
 #include "Announce.hpp"
@@ -960,7 +960,7 @@
 }
 
 void Game::CreateSquad(std::string name) {
-	squadList.insert(std::pair<std::string, boost::shared_ptr<Squad> >(name, new Squad(name)));
+	squadList.insert(std::pair<std::string, boost::shared_ptr<Squad> >(name, boost::shared_ptr<Squad>(new Squad(name))));
 }
 
 void Game::SetSquadTargetCoordinate(Coordinate target, boost::shared_ptr<Squad> squad) {
@@ -1004,4 +1004,4 @@
 	}
 
 	return boost::weak_ptr<Construction>();
-}
\ No newline at end of file
+}
diff -r 84c5b9217bce Goblin Camp/src/Logger.cpp
--- a/Goblin Camp/src/Logger.cpp	Wed Jul 14 22:49:44 2010 +0300
+++ b/Goblin Camp/src/Logger.cpp	Thu Jul 15 00:43:27 2010 -0400
@@ -19,7 +19,7 @@
 
 #include <boost/date_time/local_time/local_time.hpp>
 
-#include "logger.hpp"
+#include "Logger.hpp"
 
 Logger::Logger() {
     output.open("Log.txt");
diff -r 84c5b9217bce Goblin Camp/src/Menu.cpp
--- a/Goblin Camp/src/Menu.cpp	Wed Jul 14 22:49:44 2010 +0300
+++ b/Goblin Camp/src/Menu.cpp	Thu Jul 15 00:43:27 2010 -0400
@@ -675,7 +675,7 @@
 					&& y > topY+2+12 && y < topY+2+15) {
 						if (squadName != "" && !chosenSquad.lock()) { //Create
 							Game::Inst()->squadList.insert(std::pair<std::string, boost::shared_ptr<Squad> >
-								(squadName, new Squad(squadName, squadMembers, squadPriority)));
+								(squadName, boost::shared_ptr<Squad>(new Squad(squadName, squadMembers, squadPriority))));
 							chosenSquad = Game::Inst()->squadList[squadName];
 							//squadName = "";
 							//UI::Inst()->InputString("");
diff -r 84c5b9217bce Goblin Camp/src/NPC.cpp
--- a/Goblin Camp/src/NPC.cpp	Wed Jul 14 22:49:44 2010 +0300
+++ b/Goblin Camp/src/NPC.cpp	Thu Jul 15 00:43:27 2010 -0400
@@ -26,10 +26,10 @@
 #include <iostream>
 #endif
 
-#include "npc.hpp"
-#include "coordinate.hpp"
+#include "NPC.hpp"
+#include "Coordinate.hpp"
 #include "JobManager.hpp"
-#include "gcamp.hpp"
+#include "GCamp.hpp"
 #include "Game.hpp"
 #include "Announce.hpp"
 #include "Logger.hpp"
diff -r 84c5b9217bce Goblin Camp/src/Serialization.cpp
--- a/Goblin Camp/src/Serialization.cpp	Wed Jul 14 22:49:44 2010 +0300
+++ b/Goblin Camp/src/Serialization.cpp	Thu Jul 15 00:43:27 2010 -0400
@@ -727,7 +727,7 @@
 }
 
 void Game::SaveGame(std::string filename) {
-	std::ofstream ofs(filename, std::ios::binary);
+	std::ofstream ofs(filename.c_str(), std::ios::binary);
 	boost::archive::binary_oarchive oarch(ofs);
 	oarch<<*instance;
 	oarch<<*JobManager::Inst();
@@ -738,7 +738,7 @@
 
 
 void Game::LoadGame(std::string filename) {
-	std::ifstream ifs(filename, std::ios::binary);
+	std::ifstream ifs(filename.c_str(), std::ios::binary);
 	boost::archive::binary_iarchive iarch(ifs);
 	iarch>>*instance;
 	iarch>>*JobManager::Inst();
@@ -763,4 +763,4 @@
 	ar & growth;
 }
 
-#pragma warning(pop)
\ No newline at end of file
+#pragma warning(pop)
diff -r 84c5b9217bce Goblin Camp/src/StatusEffect.cpp
--- a/Goblin Camp/src/StatusEffect.cpp	Wed Jul 14 22:49:44 2010 +0300
+++ b/Goblin Camp/src/StatusEffect.cpp	Thu Jul 15 00:43:27 2010 -0400
@@ -15,7 +15,7 @@
 along with Goblin Camp. If not, see <http://www.gnu.org/licenses/>.*/
 
 #include "StatusEffect.hpp"
-#include "Gcamp.hpp"
+#include "GCamp.hpp"
 
 StatusEffect::StatusEffect(StatusEffectType typeval) : 
 type(typeval)
diff -r 84c5b9217bce Goblin Camp/src/UI.cpp
--- a/Goblin Camp/src/UI.cpp	Wed Jul 14 22:49:44 2010 +0300
+++ b/Goblin Camp/src/UI.cpp	Thu Jul 15 00:43:27 2010 -0400
@@ -23,7 +23,7 @@
 #include "UI.hpp"
 #include "Announce.hpp"
 #include "Game.hpp"
-#include "Gcamp.hpp"
+#include "GCamp.hpp"
 #include "Logger.hpp"
 #include "Map.hpp"
 #include "Job.hpp"
@@ -199,7 +199,7 @@
 		if (key.c >= ' ' && key.c <= '}' && key.c != '+' && key.c != '-' && (signed int)inputString.size() < inputStringLimit) {
 			inputString += key.c;
 		} else if (key.vk == TCODK_BACKSPACE) {
-			if (inputString.size() > 0) inputString.pop_back();
+			if (inputString.size() > 0) inputString.erase(inputString.end() - 1);
 		}
 	}
 	if (key.vk == TCODK_ESCAPE && menuOpen) {
@@ -763,10 +763,8 @@
 			console->setForegroundColor(TCODColor::white);
 		} else if (farmplot) {
 			console->rect(edgeX - (width-1), topY+1, width-2, height-2, true);
-		} else {
-			console->rect(edgeX - (width-1), topY+1, width-2, height-2, true);
 		}
-
+		
 		Game::Inst()->Draw(entity.lock()->Position()-5, &minimap, false);
 		console->setForegroundColor(TCODColor::white);
 		console->printFrame(edgeX - width, topY, width, height, false, TCOD_BKGND_DEFAULT, entity.lock()->Name().c_str());
@@ -795,4 +793,4 @@
 }
 
 bool UI::ShiftPressed() { return TCODConsole::isKeyPressed(TCODK_SHIFT); }
-TCOD_key_t UI::getKey() { return key; }
\ No newline at end of file
+TCOD_key_t UI::getKey() { return key; }

