#+STARTUP: indent * Project Deadlines ** October *** TODO APC :PROPERTIES: :ATTACH_DIR: ~/proj/the_march/src/apc :END: **** TODO Directory Structure for assets CLOCK: [2016-10-16 Sun 11:43]--[2016-10-16 Sun 11:45] => 0:02 #+BEGIN: clocktable :maxlevel 2 :scope subtree #+CAPTION: Clock summary at [2016-10-16 Sun 11:45] | Headline | Time | |--------------+--------| | *Total time* | *0:02* | |--------------+--------| #+END: **** TODO File syntax for directories CLOCK: [2016-10-18 Tue 9:30]--[2016-10-18 Tue 10:21] => 0:51 #+BEGIN: clocktable :maxlevel 2 :scope subtree #+CAPTION: Clock summary at [2016-10-16 Sun 11:46] | Headline | Time | |--------------+--------| | *Total time* | *0:01* | |--------------+--------| #+END: env_assets env/cityblock/ large/small/center (sets) signifigance of numbers in filenames vs letters letters - variations numbers - 1 horizontal, 2 vertical signifigance of numbering after _m env/cityblock /large /small /center /vertical /horizontal set_name set_id element_name element_id Directions in filenames for statics are ? Dont have framesheets so they dont need a direction. env_deco /env/deco/ name of archetype numbers signify variants alpha+ . '_m' . [digit]+ signifies mapping varriant ***** TODO Add x,y to filenames **** TODO Scanner :ATTACH: :PROPERTIES: :Attachments: scanner.c :ID: 2dec5876-7b81-4b9c-97fe-03b152fa276a :END: **** TODO Lexer :ATTACH: :PROPERTIES: :Attachments: lexer.c lexer_lex.rl :ID: faf3ff67-f8e9-41fe-9a32-2ced4bbf5b99 :END: **** TODO Parser/IR :ATTACH: :PROPERTIES: :Attachments: parser.y irmem.c ir.c ir.h :ID: fb24c302-4743-4a45-845a-4249d2b1a378 :END: ***** TODO Add mdats to IR to handle multiple mappings for archetypes CLOCK: [2016-10-20 Thu 20:12]--[2016-10-20 Thu 23:12] => 3:00 Recording: Lexer Lex(Mapfile) Maps can have variants and animations. Adding a state machine into the lexer that will parse png files and return its frame information. CLOCK: [2016-10-20 Thu 19:28]--[2016-10-20 Thu 19:46] => 0:18 insert_mdat now compiles CLOCK: [2016-10-20 Thu 18:10]--[2016-10-20 Thu 18:53] => 0:43 CLOCK: [2016-10-20 Thu 15:24]--[2016-10-20 Thu 16:24] => 1:00 CLOCK: [2016-10-20 Thu 13:13]--[2016-10-20 Thu 14:10] => 0:57 #+BEGIN: clocktable :maxlevel 2 :scope subtree #+CAPTION: Clock summary at [2016-10-20 Thu 14:10] | Headline | Time | |--------------+--------| | *Total time* | *0:57* | |--------------+--------| #+END: ****** DONE Create variant_list in odat ****** DONE Init num_variants ****** DONE Create mdat struct ****** DONE Create new quad struct ****** DONE Change insert_quad() to insert x,y,z, and ref_id ****** DONE Change parser.y to include quad_list ****** DONE In elements, populate parent_id with set. In sets, set parent_id to null. ****** DONE Incorporate mdat into parser and ir ****** TODO Implement Lexer_lexmapfile Where are we storing the map file animations? Mdats will have framesheets. ****** TODO Remove set name token in elements being passed back ****** DONE Lexer_lex should pass control to lexer_lexmapfile When it recognizes a '_m\0', call lexer_lexmapfile The const str passed to lexer_lex is screwing up the state machine because the suffix isnt truly pruned (so pe == . instead of \0) Mappings come before archetypes. ****** TODO ****** TODO ****** TODO ****** TODO ****** TODO parent_id should be pointer or ref_id? pointer Root mandatory, hitbox optional? Only a variant list? mopen/close in skeleton rule requires lexer to pass a operator for every new skeleton inesrt_mdat() needs more? **** TODO Output DEADLINE: <2016-10-20 Thu> *** TODO Test Suite for APC DEADLINE: <2016-10-20 Thu> *** TODO Animation Viewer DEADLINE: <2016-10-31 Mon> ** November *** TODO Core State Machine DEADLINE: <2016-11-10 Thu> *** TODO Renderer DEADLINE: <2016-11-10 Thu> *** TODO World Generator - Beta DEADLINE: <2016-11-20 Sun> *** TODO Core Improvements DEADLINE: <2016-11-20 Sun> *** TODO Front-end Hooks DEADLINE: <2016-11-20 Sun> *** TODO World Generator - Stable DEADLINE: <2016-11-30 Wed> *** TODO Physics Engine SCHEDULED: <2016-11-30 Wed> DEADLINE: <2016-12-20 Tue> *** TODO Actors DEADLINE: <2016-11-30 Wed> *** TODO Audio Backend DEADLINE: <2016-11-30 Wed> ** December *** TODO Account Management DEADLINE: <2016-12-10 Sat> *** TODO User Management DEADLINE: <2016-12-10 Sat> *** TODO Controllers - Beta DEADLINE: <2016-12-10 Sat> *** TODO Internal Data Handling DEADLINE: <2016-12-10 Sat> *** TODO Network Skeleton DEADLINE: <2016-12-10 Sat> *** TODO Social Media SCHEDULED: <2016-12-10 Sat> *** TODO Core Gameplay SCHEDULED: <2016-12-20 Tue> *** TODO Account Management - Stable DEADLINE: <2016-12-20 Tue> *** TODO Controllers - Stable DEADLINE: <2016-12-20 Tue> ** Christmas Holiday (December 21 - January 5) *** TODO Gameplay Developments *** TODO Front-End Improvements (remote) *** TODO AI Start *** TODO Website Beta ** January *** TODO Gameplay - Win Conditions DEADLINE: <2017-01-10 Tue> *** TODO Social Media Integration DEADLINE: <2017-01-10 Tue> *** TODO Viable AI (Lua ^ JS) DEADLINE: <2017-01-20 Fri> ** February *** TODO Beta Deployment DEADLINE: <2017-02-01 Wed> *** TODO Multiplay Beta DEADLINE: <2017-02-01 Wed> *** TODO Early Access for Marketing DEADLINE: <2017-02-01 Wed> * Notes 11/2 Changes to grammar Mapfiles and vdats are now going to be extracted at binary output time. This means that we dont have to handle text strings in the grammar, just filename and directory structure. E.g. mdats (which were mapfile data structs and are now called variants), no longer consist of quad lists but of the height/width of the frames inside the variant and the name of the filename so that it can be processed later at binary out. This is also true for vdats, which used to consist of spritesheets and are now just a height/width of the frames and the name of the file. Filepath is stored in vdat/variant. When should this get passed back? After height/width has been lexed. Theres a filename for every element. Not true for a set. Need to finish insert_vdat, insert_variant, lexfilename, ? 11/16 Adding directions to map files and models. Also adding SS operator to models to distinguish them from maps. ** DONE Add map operator changes to lexer.c ** DONE Rename mapping files ** TODO Review parser.y, irmem.c, ir.c, ir.h, lexer.c ** 11/16 *** DONE Determine when to alloc vdat and implement it Either have a SS opening operator that signifies to alloc_vdat or check the current vdat in insert_framesheet(). *Allocing an initial vdat at ir_init(), then allocing vdat for the next odat after vdat is complete. *** DONE Add directions to lexer_setstr fsm Add both the SS operator and the direction. *SS is the operator, D is the direction *** DONE Update lexer_setx() functions with directions First determine what to do about allocing the vdat because if we choose to have a single SS opening operator, then need to prune the str one past the operator so that lexstring only passes back a direction, and not the SS operator. This actually shouldnt be too difficult if we only have a single SS operator. *Didn't change anything because lex_lexstring() will handle SS and direction conversion. *** DONE Add files to test lexer_setstr directions inclusion Rewrite all the old ~/test/x files because they are all out of date at this point. Mapfiles need to be updated with directions after ~, and models need to have their SS operators incuded. Just need to make sure that the files are recognized correctly andd once they are, their str is set to the proper place for lexstring *** DONE Add directions to lexer_lexstring If encountering a mapfile or a SS operator, need to push operator, then convert the following letter (if it exists) to its numerical representation (0-8 for S-NW). Won't have to push operator if we only have a single operator. If it doesnt exist, need to push the default 0. **** TODO Write functions for ragel actions *** TODO Add files to test lexer_lexstring Need to make sure that lexstring does all the shit I just talked about. ** 11/18 *** DONE Link up ir and lexer because right now there are some inconsitencies *** DONE Add recursive sets Start with grammar insert_set() **** GET THIS DONE FIRST **** inset_set_vadtid() inset_set_svlink(); Insert_set_label -> insert_set_name + insert_set_ref() *** TODO Files that need changing **** DONE lexer.c Remove matching modelname and SS operator for framesheets X For vdats/maps, remove matching set names X Make a bunch of test files **** DONE lexer_fsm.rl **** TODO parser.y Set with only childlist valid? Ref_id rules make sense? **** TODO ir.h **** TODO ir.c **** TODO irmem.c *** DONE Add refs to end of models/mapsp *** DONE Change SS direction to SS_name_direction *** TODO Change PATH/NAME_MAX, MAX_MODEL_LEN, MAX_ELENAME_LEN, find out max odat name, should be a multiple of that. 11/27 Thinking of making FILENAME_MAX and FILEPATH_MAX for optimum clarity *** DONE Remove lexer_setstr, is useless now ** 11/22 *** TODO stpncpy() doesnt add a null byte if strlen(src) > n. Add one? *** DONE Does refid come after or before map? after *** DONE Test if SS LINK works in lexer.c ** 11/25 *** DONE Set parent odat name in insert_namelist? Either set the parent odats name, or set the parent odat which is the depth above *** TODO Add mlink to linkbuff *** TODO Should allocated vdats have num_models set to 0? Inside insert_framesheet of ir.c *** TODO insert_set() at end of set rule should insert the odat into its cdat represntation. ** 11/26 *** DONE Insert_namelist should handle implicitly defined sets Create the parents too. E.g. for A_B_C and setstack has A, shoudl create B, link to A, create C, link to B *** DONE current_set needs to return the current set at current depth Instead, just create a set at every depth in the setstack, assign parents/children based on setstack. *** DONE Where/when to malloc a set? When: When created in insert_namelist() Where: in set chunk stack *** TODO Reduce set_stack namelist (doesnt need 8 names for each depth)? *** TODO Revisit ir.h, Create list(in this todosection) of structs that need changing odat: remove hitbox, root map: remove entirely? root: remove? link: add mlink refid: whats the point of these things again? insert_x() functions: remove? *** TODO Handle case where numnames is > 8 *** TODO Where does ir_init get called? *** TODO Review insert_framesheet Should we set the odat vdat_idx/p here? *** TODO Write insert_set(); * Current TODO list ** General: *** TODO Rename NAME token to something more generic?? ** 11/01 ** TODO Make Null vdat why? ** DONE Fix all shift/reduce errors in new grammar ** DONE Add map variant changes (create new odat, share vdat)