Code Monkey home page Code Monkey logo

gridmonger's Introduction

Gridmonger

Your trusty old-school cRPG mapping companion

Gridmonger in action

Project website

https://gridmonger.johnnovak.net

Build instructions

Requires Nim 2.0.2

Dependencies

You can install the dependencies with Nimble:

nimble install koi osdialog riff semver winim with

winim is only needed for the Windows builds.

Compiling

The main branch is usually in flux as it often contains work-in-progress changes intended go into the next release. Check out the latest tag instead to build the last stable version:

git tag
# replace with the latest tag
git checkout v1.1.0

To build the debug version (debug logging enabled, file dialogs disabled):

nim debug

To build the release version (file dialogs enabled):

nim release

Run nim help for the full list of build tasks.

NOTE: Create an empty directory Config in the project root directory to enable portable mode (that's what you normally want during development).

Manual & website

The website (GitHub Pages site) and manual are generated from Sphinx sources.

The website is published from the docs directory of the master branch.

Requirements

Building

  • To build the website, run nim site
  • To build the manual, run nim manual
  • To create the zipped distribution package of the manual from the generated files, run nim packageManual
  • Check out the release build instructions for further details.

Theme development

You can run make watch_docs_css or make watch_frontpage_css from the sphinx-doc directory to regenerate the CSS when the SASS files are changed during theme development.

Packaging & release process

See RELEASE.md.

Credits

The user interface uses the Roboto font by Google for all text (Regular, Bold, and Black variants).

The Gridmonger logo uses Versal Gothic by Juan Casco.

The TTF icon font was created with the amazing IcoMoon App. Most icons are from the below sources available through the app, some are my own creations, then a few were converted from random free SVG clipart I found online.

License

Developed by John Novak <[email protected]>, 2020-2024

This work is free. You can redistribute it and/or modify it under the terms of the Do What The Fuck You Want To Public License, Version 2, as published by Sam Hocevar. See the COPYING file for more details.

gridmonger's People

Contributors

fmoo avatar johnnovak avatar th30n avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

th30n bferguson3

gridmonger's Issues

Fails to build on Ubuntu/PopOS!

Initially this occurred when using Nim 2.0.4 but also occurs with 2.0.2 as per readme.

Same issue is encountered with v1.1.0 and v1.0.1 tags/releases. osdialogGtk2, 3 and Zenity all fail.

Newer commits result in a different error. See #11 Tried it just in case.

I saw some people having success on the forums with a debug build but that yielded the same end result on either of the machines I attempted to compile on.

On a side note, the readme should be updated to display: nim release -d=osdialogGtk3

helly@helly-kubuntu-22lts:~/Downloads/Build/gridmonger$ nim release -d=osdialogGtk3
Hint: used config file '/home/helly/.choosenim/toolchains/nim-2.0.2/config/nim.cfg' [Conf]
Hint: used config file '/home/helly/.choosenim/toolchains/nim-2.0.2/config/config.nims' [Conf]
Hint: used config file '/home/helly/Downloads/Build/gridmonger/config.nims' [Conf]
................................................................................................................................................................................
/home/helly/Downloads/Build/gridmonger/src/drawlevel.nim(1167, 26) Warning: isCursorActive, regionBorder all have default value 'false', this may be unintentional, either use ';' (semicolon) or explicitly write each default value [ImplicitDefaultValue]
/home/helly/Downloads/Build/gridmonger/src/drawlevel.nim(1186, 29) Warning: isCursorActive, regionBorder all have default value 'false', this may be unintentional, either use ';' (semicolon) or explicitly write each default value [ImplicitDefaultValue]
/home/helly/Downloads/Build/gridmonger/src/drawlevel.nim(1213, 30) Warning: isCursorActive, regionBorder all have default value 'false', this may be unintentional, either use ';' (semicolon) or explicitly write each default value [ImplicitDefaultValue]
/home/helly/Downloads/Build/gridmonger/src/drawlevel.nim(1243, 21) Warning: isCursorActive, regionBorder, fill all have default value 'false', this may be unintentional, either use ';' (semicolon) or explicitly write each default value [ImplicitDefaultValue]
/home/helly/Downloads/Build/gridmonger/src/drawlevel.nim(1297, 27) Warning: isCursorActive, regionBorder all have default value 'false', this may be unintentional, either use ';' (semicolon) or explicitly write each default value [ImplicitDefaultValue]
/home/helly/Downloads/Build/gridmonger/src/drawlevel.nim(1304, 27) Warning: isCursorActive, regionBorder all have default value 'false', this may be unintentional, either use ';' (semicolon) or explicitly write each default value [ImplicitDefaultValue]
/home/helly/Downloads/Build/gridmonger/src/drawlevel.nim(1339, 24) Warning: isCursorActive, regionBorder all have default value 'false', this may be unintentional, either use ';' (semicolon) or explicitly write each default value [ImplicitDefaultValue]
/home/helly/Downloads/Build/gridmonger/src/drawlevel.nim(1434, 29) Warning: isCursorActive, regionBorder all have default value 'false', this may be unintentional, either use ';' (semicolon) or explicitly write each default value [ImplicitDefaultValue]
/home/helly/Downloads/Build/gridmonger/src/drawlevel.nim(1439, 29) Warning: isCursorActive, regionBorder all have default value 'false', this may be unintentional, either use ';' (semicolon) or explicitly write each default value [ImplicitDefaultValue]
/home/helly/Downloads/Build/gridmonger/src/drawlevel.nim(1476, 24) Warning: isCursorActive, regionBorder all have default value 'false', this may be unintentional, either use ';' (semicolon) or explicitly write each default value [ImplicitDefaultValue]
/home/helly/Downloads/Build/gridmonger/src/drawlevel.nim(1481, 24) Warning: isCursorActive, regionBorder all have default value 'false', this may be unintentional, either use ';' (semicolon) or explicitly write each default value [ImplicitDefaultValue]
/home/helly/Downloads/Build/gridmonger/src/drawlevel.nim(1550, 24) Warning: isCursorActive, regionBorder all have default value 'false', this may be unintentional, either use ';' (semicolon) or explicitly write each default value [ImplicitDefaultValue]
/home/helly/Downloads/Build/gridmonger/src/drawlevel.nim(1556, 24) Warning: isCursorActive, regionBorder all have default value 'false', this may be unintentional, either use ';' (semicolon) or explicitly write each default value [ImplicitDefaultValue]
/home/helly/Downloads/Build/gridmonger/src/drawlevel.nim(1593, 25) Warning: isCursorActive, regionBorder all have default value 'false', this may be unintentional, either use ';' (semicolon) or explicitly write each default value [ImplicitDefaultValue]
/home/helly/Downloads/Build/gridmonger/src/drawlevel.nim(1598, 25) Warning: isCursorActive, regionBorder all have default value 'false', this may be unintentional, either use ';' (semicolon) or explicitly write each default value [ImplicitDefaultValue]
/home/helly/Downloads/Build/gridmonger/src/drawlevel.nim(1605, 24) Warning: isCursorActive, regionBorder all have default value 'false', this may be unintentional, either use ';' (semicolon) or explicitly write each default value [ImplicitDefaultValue]
/home/helly/Downloads/Build/gridmonger/src/drawlevel.nim(1686, 26) Warning: isCursorActive, regionBorder all have default value 'false', this may be unintentional, either use ';' (semicolon) or explicitly write each default value [ImplicitDefaultValue]
/home/helly/Downloads/Build/gridmonger/src/drawlevel.nim(1691, 26) Warning: isCursorActive, regionBorder all have default value 'false', this may be unintentional, either use ';' (semicolon) or explicitly write each default value [ImplicitDefaultValue]
/home/helly/Downloads/Build/gridmonger/src/drawlevel.nim(2510, 23) template/generic instantiation of `drawRegionBorderRows` from here
/home/helly/Downloads/Build/gridmonger/src/drawlevel.nim(2472, 8) Warning: template 'dp' is implicitly redefined; this is deprecated, add an explicit .redefine pragma [ImplicitTemplateRedefinition]
/home/helly/Downloads/Build/gridmonger/src/drawlevel.nim(2514, 23) template/generic instantiation of `drawRegionBorderCols` from here
/home/helly/Downloads/Build/gridmonger/src/drawlevel.nim(2492, 8) Warning: template 'dp' is implicitly redefined; this is deprecated, add an explicit .redefine pragma [ImplicitTemplateRedefinition]
/home/helly/Downloads/Build/gridmonger/src/drawlevel.nim(2524, 23) template/generic instantiation of `drawRegionBorderRows` from here
/home/helly/Downloads/Build/gridmonger/src/drawlevel.nim(2472, 8) Warning: template 'dp' is implicitly redefined; this is deprecated, add an explicit .redefine pragma [ImplicitTemplateRedefinition]
/home/helly/Downloads/Build/gridmonger/src/drawlevel.nim(2546, 23) template/generic instantiation of `drawRegionBorderCols` from here
/home/helly/Downloads/Build/gridmonger/src/drawlevel.nim(2492, 8) Warning: template 'dp' is implicitly redefined; this is deprecated, add an explicit .redefine pragma [ImplicitTemplateRedefinition]
.......
/home/helly/Downloads/Build/gridmonger/src/persistence.nim(1088, 3) template/generic instantiation of `writeLayer` from here
/home/helly/Downloads/Build/gridmonger/src/persistence.nim(1053, 10) Warning: template 'e' is implicitly redefined; this is deprecated, add an explicit .redefine pragma [ImplicitTemplateRedefinition]
/home/helly/Downloads/Build/gridmonger/src/persistence.nim(1089, 3) template/generic instantiation of `writeLayer` from here
/home/helly/Downloads/Build/gridmonger/src/persistence.nim(1053, 10) Warning: template 'e' is implicitly redefined; this is deprecated, add an explicit .redefine pragma [ImplicitTemplateRedefinition]
/home/helly/Downloads/Build/gridmonger/src/persistence.nim(1090, 3) template/generic instantiation of `writeLayer` from here
/home/helly/Downloads/Build/gridmonger/src/persistence.nim(1053, 10) Warning: template 'e' is implicitly redefined; this is deprecated, add an explicit .redefine pragma [ImplicitTemplateRedefinition]
/home/helly/Downloads/Build/gridmonger/src/persistence.nim(1091, 3) template/generic instantiation of `writeLayer` from here
/home/helly/Downloads/Build/gridmonger/src/persistence.nim(1053, 10) Warning: template 'e' is implicitly redefined; this is deprecated, add an explicit .redefine pragma [ImplicitTemplateRedefinition]
/home/helly/Downloads/Build/gridmonger/src/persistence.nim(1092, 3) template/generic instantiation of `writeLayer` from here
/home/helly/Downloads/Build/gridmonger/src/persistence.nim(1053, 10) Warning: template 'e' is implicitly redefined; this is deprecated, add an explicit .redefine pragma [ImplicitTemplateRedefinition]
.
/home/helly/Downloads/Build/gridmonger/src/main.nim(7248, 11) Error: ambiguous identifier: 'set' -- use one of the following:
  system.set: set
  hocon.set: proc (node: HoconNode, path: string, value: HoconNode, createPath: bool){.noSideEffect, gcsafe.}
  hocon.set: proc (node: HoconNode, path: string, str: string, createPath: bool){.noSideEffect, gcsafe.}
  hocon.set: proc [*missing parameters*](node: HoconNode, path: string, num: SomeNumber, createPath: bool)
  hocon.set: proc (node: HoconNode, path: string, flag: bool, createPath: bool){.noSideEffect, gcsafe.}

scDrawWallRepeat doesn't trigger with single shift

Hey, I've been following the manual. In this section: https://gridmonger.johnnovak.net/manual/basic-editing.html#draw-wall-repeat the docs suggests that "Draw Wall Repeat" mode is triggered by holding any shift key with either W or S (it should be R). On my machine (5.19.7-arch1-1 #1 SMP PREEMPT_DYNAMIC Mon, 05 Sep 2022 18:09:09 +0000 x86_64 GNU/Linux, with libinput and ibus input method) to enter this "Draw Wall Repeat" mode I need to hold both shifts down at the same time. This is quite inconvenient, and I'm assuming is a bug.

I've inspected the code src/main.nim, and I can see there are 2 bindings for scDrawWallRepeat shortcut. One binding is for the left shift, and the other for the right, but both also accept that they are modified by shift itself. After inspecting the event received from koi.currEvent(), it seems that only an unmodified shift key is registered for me. This is the output of echo ke I inserted in the code:

(kind: ekKey, key: left shift, action: down, mods: {})

I've removed the modifier requirements for scDrawWallRepeat bindings, and this does resolve the issue on my machine. But I'm not sure if this is the right solution, as I have a feeling that it works for you as expected -- with 1 shift pressed. This may also be an underlying issue in koi or glfw. So, I haven't created a PR, but the diff of my local fix is below. Additionally, my fix introduces another quirk in the behaviour. If I press & hold the other shift as well, everything works fine, but as soon as I release one, the "Draw Wall Repeat" mode is exited. I fear you have the same behaviour with existing code, because the code reacts on "key up" event, but it doesn't check if any other shift remains pressed.

diff --git a/src/main.nim b/src/main.nim
index b0dac65..ca47abd 100644
--- a/src/main.nim
+++ b/src/main.nim
@@ -920,8 +920,8 @@ let g_appShortcuts = {
   scDrawWall:                  @[mkKeyShortcut(keyW,      {})],
   scDrawSpecialWall:           @[mkKeyShortcut(keyR,      {})],
 
-  scDrawWallRepeat:            @[mkKeyShortcut(keyLeftShift,  {mkShift}),
-                                 mkKeyShortcut(keyRightShift, {mkShift})],
+  scDrawWallRepeat:            @[mkKeyShortcut(keyLeftShift,  {}),
+                                 mkKeyShortcut(keyRightShift, {})],
 
   scPreviousSpecialWall:       @[mkKeyShortcut(keyLeftBracket,  {})],
   scNextSpecialWall:           @[mkKeyShortcut(keyRightBracket, {})],

undecleared identifier: 'fileOpener' in appevents.nim

OS: Linux
NIM version: 2.0.2
packages installed: koi, nim-binstreams, nim-glfw, nim-nanovg, nim-osdialog, nim-riff, semver.nim, with
gridmonger version: git master a89b6ed

error log:

/home/silver/aur-packages-git/gridmonger/src/gridmonger/src/appevents.nim(199, 33) Error: undeclared identifier: 'fileOpener'
candidates (edit distance, scope distance); see '--spellSuggest': 
 (3, 3): 'g_fileOpenerCh'
 (3, 5): 'fileNewer'

linux builds / nim instructions

I'd like to try out gridmonger, but I can't figure out how to build it on Linux. There are at list a few problems I'm running into:

  • When checking out 'koi' and the gridmonger branch of nim-glfw, instructions say to run nimble develop. When I do that, the tool appears to download a new copy from github into a subfolder, and then use that.
  • The gridmonger branch of nim-glfw sets its version to 3.3.3.0, but the version koi appears to make use of is 3.3.4.0
  • After adding koi and nim-glfw (though I don't know if its the right branch), I get an error about joystick_linux.c not being found in glfw.

turn in walk mode

There should be keybindings to turn in walkmode if you don't have a keypad.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.