Possible Suggestion: libfov ...
BlitzMax Forums/Brucey's Modules/Possible Suggestion: libfov ...
| ||
| @Brucey As it seems you are on a roll with all your oldskool mods (gme, libtcod etc) could I perhaps offer up another one - libfov I would have a go at this myself but I can't seem to get it to compile properly on OS X (although I believe this to be a problem at my end rather than with the lib itself) and also the sample included relies on SDL which would require some effort to get running on a Mac as you have to play around with SDLMain etc which I have no experience of. I'll look forward to your response with fingers crossed. Thanks -Mic |
| ||
| @Brucey And another - MicroPather I think these would be useful because they seperate out the different parts of the TCOD lib, so you can plug and play with what you need. Also, I have seen the posts on the libtcod forums with regards to the unstability of the 1.5 release and the fact there's no timescale for it's release and feel these two libraries would go part way to replacing a lof of the available functionality available in libtcod. Again, I would have stab at this myself but I know very little c++ and have no idea how to derive a BlitzMax type from a c++ class. Thanks -Mic |
| ||
| Well, the libtcod example (included with the module) is working fine - apart from some image issues related to 1.5. But otherwise, it seems to be working much as it did before (in 1.4). |
| ||
| Micropather would a great mod, but LibTcod already has several Fov algos available. |
| ||
| @GW As true as that is, the API in libfov is exceptionally easy to use and understand. Also if all you need are fov and pathfinding then libtcod is a little overkill. That's why I thought about having separate mods. That way you can just pick an choose whatever you need. @Brucey Ah. I didn't realize that. With some of the libtcod authors comments on the forum it seemed as though there was a lot more issues. I think he even suggested leaving the 1.5 branch alone until a formal beta was released. Let me know your thoughts. I'll be more than happy to help where I can. Thanks -Mic |
| ||
Here is the los i wrote for my roguelike engine. it seems a little inefficient but there is no performance hit.
Function UpdateLOS(m:tMonster, UpdateMap:Int = True)
If m = Null Then RuntimeError("Null in LOScheck!")
Local XX:Int, YY:Int
'reset all los for the map
For xx = 0 To MAPWIDTH - 1
For yy = 0 To MAPHEIGHT - 1
If Map[xx, yy].InLOS = True Then
Map[xx, yy].HasSeen = True
Map[xx, yy].InLOS = False
EndIf
Next
Next
For Local angle:Float = 1 To 360
Local dist:Int = 0
Local x:Float = Float(m.X) + 0.5 '// center of the cell
Local y:Float = Float(m.y) + 0.5
Local xmove:Float = Cos(angle)
Local ymove:Float = Sin(angle)
Repeat
x = x + xmove
y=y+ymove
dist = dist + 1
If dist >= m.Vision Then Exit '// vision range
If X >= MAPWIDTH Then Exit
If y >= MAPHEIGHT Then Exit
If x < 0 Then Exit
If y < 0 Then Exit
Map[x, y].InLOS = True
If Map[x, y].BlockVision Then Exit
Forever
Next
Map[m.X, m.Y].InLOS = True
'// show monsters in los
If m = player Then
For Local o:tMonster = EachIn monsters
If o <> Player Then
o.visible=False
If map[o.X,o.y].inLos = True Then
o.visible = True
End If
EndIf
Next
EndIf
End Function
|
| ||
| With some of the libtcod authors comments on the forum it seemed as though there was a lot more issues. I haven't noticed any, other than the image problems I've mentioned previously. It was a lot of hacking to get it ported to work with the 1.5 code though... but generally it seems to work much as it did before. |