From 09615be926efb7302bc348aa66feccb694b23ba8 Mon Sep 17 00:00:00 2001
From: Steph Enders <smenders@gmail.com>
Date: Wed, 15 Jun 2022 23:36:43 -0400
Subject: v0.1.0 - Initial Commit

Create dng - a maze/puzzle game enging using Lua and SFML

---
Initial setup commit

This setups up the project for messing around with C++ and Lua bindings.
So far this project just prints the defined dng map and lets you move
the character around.
What this fails to do is actually provide any reason to use Lua at the
moment. So I need to figure out some way of enabling logic on the
processing side of things.

Fixup warning from IntelliJ

Added onUpdate logic to move the enemies etc

Created some algorithm logic for enemy movement
Allowed for default overrides

Made shortest path alg more efficent

In the previous commit this algo waited until the "success" step came up
in the queue. Now we have the check during the push - and if an hits we
return true from the push_moves fn.

Since we're only interested in the initial move (since we check moves
every frame) we can only return true and then use the current step as
the origin position to diff against the start to get the dx,dy

Add scene controls and win/loss scenarios

Setup ability to check collisions and transition game scene

Remove SFML for now

Create level 2

Fixup - Can now have levels without a proc.lua

Checked existence of wrong file for loading defaults

Add readme and ignore build files

Setup so it can build on debian

Reformat bill merge

Make installable

You can now do: `sudo make install` and have it publish and distribute
the dng lua files to the share dir

Bump version to 0.3.1

Opps forgot to unignore dng folder

Force local version if in current dir

This should allow development to ALWAYS prefer the local version of the
lib - so if you have an installed version it won't override local
changes

Set version to 0.3.2

Bump version to 0.3.3

Update to use SFML (for gameplay)

Intro/Win/Loss not supported yet

Remove install logic for now + make mov overrides

Allow for restart on win/loss

Add scroll viewport and max window sizes

Display win/loss (need restart view fix)

Fix recenter view on restart

v0.4.0 - SFML

Dynamic text rescale

This isn't the best since we rescale it every frame we render it on, we
should render all the text once and remember it.

If we want to support "resizing" we can do that in its own logic loop

MessageBox + Filesystem lookups for files

Created MessageBox which is a helper class to allow for printing any
dialog in a scalable way.

Added path overrides for lua files as well as the ability to seek the
filesystem for specific paths for the fonts and such.

Set version to 0.4.2

Creating submodules?

Added SFML as third party lib

Use git submodules for dependencies

Set license to zlib/png

Add thirdparty licenses and include in package

Set version to 0.1.0
---
 src/linux/res.h | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 77 insertions(+)
 create mode 100644 src/linux/res.h

(limited to 'src/linux')

diff --git a/src/linux/res.h b/src/linux/res.h
new file mode 100644
index 0000000..9e3b8c5
--- /dev/null
+++ b/src/linux/res.h
@@ -0,0 +1,77 @@
+//========================================================================
+// dng
+//------------------------------------------------------------------------
+// Copyright (c) 2022 Steph Enders <steph@senders.io>
+//
+// 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 DNG_RES_H
+#define DNG_RES_H
+
+#include <filesystem>
+
+const std::filesystem::path DEFAULT_PROC{"dnglib/defaults.lua"};
+const std::filesystem::path DEFAULT_FONT{"res/PressStart2P-vaV7.ttf"};
+// TODO setup to allow switching to monospace instead of game font
+// const std::filesystem::path DEFAULT_MONOSPACE_FONT{
+//    "res/LiberationMono-Regular.ttf"};
+
+struct Res {
+
+  std::filesystem::path defaultsFile;
+  std::filesystem::path fontFile;
+
+} typedef Res;
+
+inline Res get_resources() {
+  using namespace std::filesystem;
+
+  auto current_dir = current_path();
+  auto exe_dir = canonical("/proc/self/exe").remove_filename();
+  auto install_dir = path{"/usr/local/share/dng/"};
+
+  Res res;
+  if (exists(current_dir / DEFAULT_PROC)) {
+    res.defaultsFile = current_dir / DEFAULT_PROC;
+  } else if (exists(exe_dir / DEFAULT_PROC)) {
+    res.defaultsFile = exe_dir / DEFAULT_PROC;
+  } else if (exists(install_dir / DEFAULT_PROC)) {
+    res.defaultsFile = install_dir / DEFAULT_PROC;
+  } else {
+    res.defaultsFile = DEFAULT_PROC; // just return w/ no path info
+  }
+  // TODO make configurable
+  path fontp = DEFAULT_FONT;
+  if (exists(current_dir / fontp)) {
+    res.fontFile = current_dir / fontp;
+  } else if (exists(exe_dir / fontp)) {
+    res.fontFile = exe_dir / fontp;
+  } else if (exists(install_dir / fontp)) {
+    res.fontFile = install_dir / fontp;
+  } else {
+    res.fontFile = fontp; // just return w/ no path info
+  }
+
+  return res;
+}
+
+#endif // DNG_RES_H
\ No newline at end of file
-- 
cgit v1.2.3-54-g00ecf