Author Topic: C# Terminal libraries?  (Read 2814 times)

Xangi

  • Newcomer
  • Posts: 4
  • Karma: +0/-0
    • View Profile
C# Terminal libraries?
« on: July 28, 2015, 04:25:07 AM »
Hey so I just happened to stumble on this form just now and this seemed like a good place to have an account. I'm currently making a roguelike in C# and I'm wondering what kind of other terminal libraries there are available for the language. I'm currently using one called Malison which is great because of its form components and sub-terminals but it's a bit limited (character set not easily replaceable, no ability to make custom colors). I've also seen that there's some kind of curses port for C# but I've also heard that curses is a pain to work with. Generally the features I'm looking for are easily changed fonts/font sizes, ability to make custom colors for symbols if possible, and sub-terminal support so that the screen can easily be divided up. Obviously it's not critical that a library has every criteria but I'd like to know what my other choices are besides those two.

Cfyz

  • Rogueliker
  • ***
  • Posts: 194
  • Karma: +0/-0
    • View Profile
    • Email
Re: C# Terminal libraries?
« Reply #1 on: July 28, 2015, 10:58:04 AM »
Besides sub-terminal functionality, BearLibTerminal seems to fit the criteria. Depending on what do you mean under 'dividing the screen', that may be worked around using screen layers.
The library itself is native code with C# wrapper as a separate .cs file.

Xangi

  • Newcomer
  • Posts: 4
  • Karma: +0/-0
    • View Profile
Re: C# Terminal libraries?
« Reply #2 on: July 28, 2015, 11:28:25 PM »
Oh, I didn't see that it had C# bindings, whoops. Seems a bit overly complex but I'll try it out later. By dividing up the screen I mean defining cells, say, (10, 10) through (50, 50) as a terminal screen then being able to pass information to it like Terminal.write("blah", 0, 0) and have it use co-ordinates local to the sub-terminal (so it would print at 10, 10). I think it might be doable with layers and I know it could be doable with some custom objects but it's always better if the library has support for that kind of thing built in.