lxgr-linux / pokete

A terminal based Pokemon like game
https://lxgr-linux.github.io/pokete
GNU General Public License v3.0
2.86k stars 180 forks source link

275 improve roadmap #276

Closed JanekKermit closed 3 months ago

JanekKermit commented 4 months ago

275 Changelog:

  1. Most important changes to /pokete_classes/roadmap.py
    • enlarged displayed roadmap (61x17 instead of 40x11)
    • added new StationObject class (extension of se.Box)
    • class Station is now an extension of StationObject, not se.Square
    • added map decorations (they are like stations, but do not require full-scale map and it's impossible to get to them with WSAD). They are stored in a variable 'decorations' in /pokete_data/mapstations.py
    • changed method set_color() to hide_if_visited(), the new one hides features like villages, Shops etc if the place has not been visited.
    • added animations for water and cursor (now the indicator of the place where you are blinks making it more visible) [methods StationObject.animate_water() and Station.animate_blink()]
  2. Added new more detailed roadmap layout, stations colors, decorations at /pokete_data/mapstations.py
  3. Changed /pokete_classes/color.py to use 256 color palette (old system caused weird colors in some terminals, like one built-in VS Code)

Preview:

obraz

lxgr-linux commented 4 months ago

Changed /pokete_classes/color.py to use 256 color palette (old system caused weird colors in some terminals, like one built-in VS Code)

I wouldn't do that, I chose the smaller color pallet, since it will also be displayed on fullscreen tty

lxgr-linux commented 4 months ago

PXL_20240508_145533190.MP.jpg

Character wise, this is how the roadmap looks like on TTY, but the colors seam to work.

JanekKermit commented 4 months ago

Alright, i think i know what the problem is. I'll install TTY and work on that

lxgr-linux commented 3 months ago

@JanekKermit Hey, so I did some formatting, added the periodic event manager to the roadmap and changed the blink animation to not use a thread. Also I would suggest deriving StationObject not from se.Box, but rather from se.Text, this might be better suited for this usecase and therefore the height end width attributes can be removed in mapstations.py. Also se.Text brings buildins for recoloring and other operations. I would also rather have color names than raw escapecodes in the mapstations.py, that's what the Color class is for, also the tty color switching could be made global, since it's a global thing to happen to all colors. Also non city stations should be grayed out again when using teleport.

But so far I really like the new roadmap.

JanekKermit commented 3 months ago

Hi, thanks for reformating. I tried using se.Test, but i couldn't make it work, if i remember correctly, there was some weird issues with engine interpreting station width incorrectly and destroying the roadmap window. Anyway, I will try to implement it via se.Text again and report if I encounter any errors. When it comes to colors I wanted to use broad color palette, that's why i used raw escape codes, but if you like Color class, I will use it.

lxgr-linux commented 3 months ago

Hmm, maybe you where setting the colors directly in the text rather than using the esccode attribute so set color. This is a common cause for such behaviour.

lxgr-linux commented 3 months ago

@JanekKermit I refactored the code a bit to make it mergable and changed the Station inheritance

JanekKermit commented 3 months ago

Thanks again for reformating and sorry for so many mistakes. Only thing I would like to point out is that you deleted is_cave() resulting in setting 3 out of 4 cave stations color to white on the teleportation map. Is this intentional?

lxgr-linux commented 3 months ago

Nor problem, I really liked, what you did and wanted it merged. And yes that was intentional, i thought it would then be clearer, where the map is.