Exit Full View

Games Cupboard / todo.txt

games cupboard
==============

Bugs
====

SpecialPoint (and SpecialArea?) are not handling mirroring correctly.
    We need to decide which coordinate system the SpecialPoint on the client uses.

Next
====

Consider a SpawnSpecialPoint extends SpecialPoint, instead of RegenGameObject.

Add Turn-timer
    A "timer" Command to add a timer.
    Parameter for the number of seconds.
    Double-click to start / stop & reset.

Add a chess clock
    A "clock" Command to add a chess clock
    Parameters : Duration (minutes and seconds), Increment (minutes and seconds)
       2nd player Duration and Increment (defaults to the same as player 1's)
    Double click to switch between players.

Backgammon

Charades

Later
=====

Replace "yes" and "no" sounds.
    Add : good game, I surrender, well played, thanks, oh no, yippee

Use localAndSend where appropriate.
    This will also involve removing GameObjectView.XXXMessage(),
        because those assume the data has already been changed on the client.

Much Later
==========

The first page of the lobby contains "sign in" "play as a guest" "create account"

A unique token for each player included in each message sent from the client for authentication.
    The code is sent in the GameInfo message.
    Maybe just a random double?


Game Ideas
==========

Most games from locked-down games.

Pong!

2 player Tetris

Shish Kebab
-----------
Lots of "players" wandering around a grid.
    maybe synchronized - with a countdown showing when the next move will take place.
        swipe to move on a phone
        arrow keys or swipe on "proper" computer.
    you win (or maybe lose) if you are surrounded on two sides.
    asteroids-style "looped" world (i.e. a torus geometry)
    you are always shown in the center, and the world scrolls
    add random agents, as well as "clever" agents.
    maybe you control more than one piece of meat.
    each player is either meat, green peppers, red peppers or onions.

    calculate the new "required" positions for each piece.
        if there is a collision, then these pieces don't move.
    move all pieces to the new locations.
    check for skewers (connect 3 or more)
        if there is a complete circle, then everybody dies.
    start the countdown again.


korge bugs
==========

stage.onresize gives "useless" data for width and height
    perhaps a future version should return the actual???

korge.scalemode.no_scale gives a tiny box inside the window (high dpi issue?)
    guess the window is scaling for high dpi, and the stage isn't
    perhaps have two setting no_scale and no_scale_except_high_dpi.

uitextinput
    does not show a caret when the text is blank.
        The caret is zero pixels high due to this code :
            if (glyphPositions.isEmpty()) return Bezier(Point(), Point(0, 0))

    caret is wide and badly positioned - width looks like it has been "fixed"
    it is "normal" for the caret width to be related to the font size - not a fixed width.
        perhaps : min( 2, fontsize / somefactor )
    could the caret be a solid color, rather than "inverse".
    backspace on the penultimate char shifts the caret position to the end of the text.
    Ctrl+A clears the text, and replaces it with garbage (the "ctrl+a" character???"). The fix :
        typed {
            if (!focused) return@typed
            if (it.meta || it.ctrl /*The fix*/ ) return@typed

the whole stage is rendered offset left and down a little (same as the window borders?!)
    no problem when using js. I've only seen this on jvm. I'm running kde on linux with a high dpi screen.

clipping doesn't work for roundedrect.
    if this due to an unavoidable limitation, perhaps add comments to clipcontainer stating which views
    will not be clipped.

tween :
    "once completed callback will be executed."
        however, the callback is called throughout the animation.

    all tweens go to 1.0 twice.

setting the alpha of a dark rounded rect (via a tween) causes the background to show through brighter!

roundrect.width is deprecated? how do we change the width then?
    note, i do not want to scale it. (which the deprecated message suggests i do).
    ditto for uitextinput

f11 (full-screen mode) doesn't work.
    i can switch to a different tab, then f11, then switch back.
    so it is only the key-press that isn't working, not full-screen itself.

MouseDown event gives unexpected results (unexpected to me at least).
    If I move over an object, pause and then click, I get what I expect.
        MouseEvent(type=DOWN button=LEFT)
    However, if I move the mouse, and without stopping, I click, I get :
        MouseEvent(type=DRAG button=NONE)
    Gamers often press the mouse without pausing, and therefore IMHO, this is a bug.

UIButton
    There's no clean way (it seems) to specify a MINIMUM width of the button, but allow it to
    grow based on the actual size of the text, and padding values.
        This, IMHO, is a very usual feature of a GUI toolkit.