Skip to content

Latest commit

 

History

History
198 lines (149 loc) · 5.64 KB

todo.md

File metadata and controls

198 lines (149 loc) · 5.64 KB

VNES - Tracking progress

Features in progress

(you can see the Raw if you want to understand what is this mess)

  • Make a mainmenu screen

    • Define image menu in script
    • More option on the main menu (Load game, New game, Option...)
  • Make a simple Game Over (so we have something to show)

  • Load custom ttf font (or other format ?) It's done but looks kinda ugly right now

    • Fix not displayed Unicode characters
    • Fix the blurry text
    • Check what font format should you use for homebrew : TTF or images
  • Labels

  • Remove the Choice collection

  • Trouver un moyen de rendre le code flexible - [x] Implementation - [x] Define characters in script files - [x] Load character image and expressions - [x] Change expression in SCRPT - [ ] Change position in SCRPT - [x] Interpolation - [ ] Variable duration - [ ] Real Tweening - [ ] GotoY support (? Do we really need that ?) - [x] Fix the gotox bug (seems to be defined somewhere else for some reason ? (update: it was in the script you dummy)) - [x] Hide/Show

  • Flags

  • Serious reformatting

    • Split into multiple files
    • Src folder for the code
    • delete unused variables and comments
    • Replace n_pressed and inputs check by a function // will be used on other engine; can be easily modified for each platform
      • BTN()
      • BTNP()
    • Move the SCRIPT include at the top (almost there)
    • function pointer instead of FSM for update/draw loop
  • Background manager

    • Nicer transition between backgrounds
    • Change transition speed in SCRPT
  • Sound manager

    • loop, fade (???)
  • Localization system

    • Different file, or generated one ?

Polish text:

  • CTC (that would be stupidly simple to do, honnestly)

  • Variable typewritter speed (slider in setting)

  • UI System

    • Datastructure
    • UI Navigation logic (not really robust but that work)
      • Draw the UI + Logic
        • Slider
        • Button
        • Checkbox
        • List
        • Script Runner
        • Change page
      • (!) Mouse control UI (not the end goal, but useful for touch support later)
      • Center text (better measure text ?)
    • ~~Move the definition of MenuPage content to the end of the script (so we can pass any function and variable (?)) ~~
    • Isolate the menu update logic in a separate function (so we can use it elsewhere)
    • Nicer in-game UI (textbox)
      • Better placement for the textbox
  • Draw free image on screen

    • Datastructure
    • Draw images on screen
    • Define in SCRPT
    • Load image
    • Toggle visibility
    • Position
    • Tweening
    • Z-Index (??)
    • Animation (????)
  • Savefile

    • Save
    • Load
    • Having some sort of persisitent data for settings
    • Multiple save file : UI ? -> Concatenate the button param/variable into the file path
    • Do research about save file on DS and PSP
  • Executer le parser qu'une seule fois

  • Clean De-Initialization code


Note taking / brainstroming

Datastructure personnage: { key (un char*) nom (char* qui vas être affiché) char* image_name

 //engine defined:
 Texture2D base_image;
 Texture2D expression[MAX_EXPRESSION];
 int expression_index = 0; //can be user defined I guess, nothing's stoping you

 bool visible = false;
 int x; int y;
 int gotox; int gotoy; //for interpolation

 int z_index (?? I will probably need it one day for sure);

​ ​ }

Idea: Define the name of a file, and the engine will handle loading it into the array with all needed expression

CharaList[n].img = "ange" load -> ange base.png, ange happy 1.png, ange happy 2.png, ange angry 2.png... or juste "ange base.png" and "ange 1.png" "ange 2.png" "ange n.png" <- Expression, put into an array (less complex I guess, but less user friendly) ^ Well, why don't you make a enum ? Or a hashtable ?

NOMBRE_PERSONNAGES; Chara_index = 0; //Pour la génération

Perso ListePerso[NOMBRE_PERSONNAGES];//Fait genre c'est un array avec une longueur arbitraire ^ Up

//Bad idea, there's no need to add characters at runtime! => Array now defined in script.h void AddPerso(pKey, pName, &pImg, &listExpression(?)){ ListePerso[Chara_index].key = pKey ListePerso[Chara_index].name = pName ListePerso[Chara_index].img = pImg

Chara_index++;

} => Ajoute le perso

-> Dans le SCRPT //Display t = H //hide c = key du personnage //Pour le moment faire en sorte qu'un seul perso à la fois ne soit affiché -> Evolution future : c = "key " -> Position //Change expression t = SWM/SWEL/SWER //dans certaines version on pourra simplifier en une/deux commandes c = "key expression_id" //parse at run time

//Dialogue t = N (forcément un enum, donc impossible de le def at runtime) < Du coup on peut ne pas avoir d'enum spécifique à un personnage ! (ça évite d'avoir une erreur si la Key est incorrecte) c = "KEY DIALOGUE"


DATASTRUCTURE FLAGS { char* key bool value -> A l'avenir, essayer de supporter des entiers }

NOMBRE_FLAGS; flag_index = 0;

ListeFlags[NOMBRE_FLAGS]

void AddFlags(char* pKey, bool pValue){

}

//Jump t = CJUMP c = FLAGKEY 1 KEYLABEL1 0 KEYLABEL2 c = FLAGKEY (SIGN VALUE KEYLABEL1) (SIGN VALUE KEYLABEL2)

​ -> Si l'un des deux est ommis, juste faire index++ ​ -> True et false serait plus intuitif à la redaction; il faut supporter les deux si possible (mieux pour évolution future)

SIGN: <, >, ==, <=, >=, !=

//Change flag t = FLAGS c = KEY VALUE(TRUE/FALSE)