Source: If Error Throw New Brick
As many may know, Magecrawl uses libtcod (via libtcod-net) for both graphics and engine support (FOV, LOS, etc). Months ago, I created a
SWIG'ed version of libtcod-net, so that I could stop supporting a hand-rolled wrapper. A (beta) release featuring that has now come out.
If you use libtcod via c#, I
highly recommend upgrading to the new wrapper, as the old one is deprecated and no new work will be done on it. Also, the new version has OSX versions for both C# and native C/C++ developers.
Get the hotness
here.
Source: If Error Throw New Brick
(Apologies in advance for the title, but it was too good to pass-up).
The primary reason for my cmake work all of this/last week was so the build could get out of my way and I could experiment on some idea for wrapping libtcod. While libtcod-net works, and is good enough for writing magecrawl, I've seen multiple people going through the work of wrapping libtcod for each language they are
Source: If Error Throw New Brick
The issue reported here has been debugged and fixed. The short answer for those not interested in the details is that I was using an API in libtcod wrong and that API was doing the wrong thing and corrupting its internal state. Get the newest libtcod-net here.
For those who are more technically minded, here's the story.
In between libtcod 1.5.0b2 and 1.5.0rc1, the C API changed for creating
Source: If Error Throw New Brick
Update: See this for a solution.
I've spent half of today debugging this issue. It appears that there is an issue I'm hitting in magecrawl where a TCODRandom gets stuck in a state where it returns 0's for every GetRandomInt call. I'm working with the maintainers of libtcod, but it appears the issue is one underlying libtcod itself.
The workaround is to use the constructor that takes an enum
Source: If Error Throw New Brick
libtcod-net 1.5.0rc1 has been released (same day as base library libtcod itself may I add :) ).
The major changes include TCODPathFinding being removed. It's been split up into TCODAStrPathFinding and TCODDijkstraPathFinding. This is obviously an API break, but one that can be replaced with a simple find a replace. Beyond that:
TCODSystem::GetCurrentFontSize
New random number generator type and
Source: If Error Throw New Brick
(Your regularly scheduled roguelike posts will continue after this brief announcement.)
Magecrawl uses libtcod-net heavily both for graphics display and in the game engine (pathfinding, LOS, etc). libtcod-net is just a thin c# wrapper layer around libtcod that I wrote before starting Magecrawl.. I think for any new roguelike, written in either in a managed or unmanaged language, libtcod is a