Commit Graph

36 Commits (master)

Author SHA1 Message Date
kts 5e708022a5 added .gitignore rules for xcode 2014-11-16 22:30:55 -08:00
kts c7daa2d1b7 Added a test compiler program. Not much functionality yet, but it describes the precompilation (and, to a lesser extent, precompilation) of VM functions. 2014-03-16 19:37:51 -07:00
kts 0842a2252e Updated xcode project to compile the engine. tile_edtior and old engine probably will not compile in xcode at the moment, but this will be remedied later. Need to make modules directory definable in some way. 2014-03-13 04:10:59 -07:00
kts 3b24b50e4c Added fio and llist to xcode project. Should move stuff like fio, llist, elements, etc. to a common/ directory in the top of the project hierarchy. 2014-03-03 22:57:22 -08:00
kts 2f596f4d50 Fixed PTime on OS X. OpenGL performance still terrible on OS X. 2014-02-26 16:36:12 -08:00
kts c6efd2245b Made some changes for the timer to work on OS X. It is likely unoptimized, but more research will be done. Also, for some unknown reason, the OpenGL renderer now runs slower than the terrible software renderer (in OS X). No clue why as of yet. 2014-02-25 03:31:27 -08:00
kts 3634e0cfa3 Added engine as a target for the xcode project. SDL_Surface to OpenGL Texture function now packs pixel data according to the endianness of the machine, as acquired from a run-time test in the function. This should probably be checked for on start and have an appropriate system flag set. 2014-02-22 01:09:37 -08:00
kts 2e48e2e1fa The tile editor's Data struct(tiles_data) isa) and accompanying sets(up to 7 default) are now created on start. This allows for the saving of Data without a file needed to be loaded prior. Some code should be moved to data.c/.h and the entire thing needs to be stress tested. 2014-01-20 06:46:32 -08:00
kts 75b1960fe1 Table's count property was not initialized to 0 in newTable, thus causing erroneous behavior on OS X - now initialized properly. 2014-01-20 02:44:59 -08:00
kts a81419d662 Adding and deleting of Pair(s) and Inventory(s), as well as adding and deleting of Inventory Items now fully works. Some of the code is messy, but it works fine. Next on the itinerary is the saving of changed Elements to TileData/TablePair(s), then the saving of all such changed data back to a tsd file\! 2014-01-19 17:43:36 -08:00
kts 4ea6159ef6 Added data.c/.h to xcode project for both the engine and the editor and tested both on OS X. 2014-01-17 04:34:43 -08:00
kts cfb2eda1c4 Added tile_editor/helper.c/.h to the Tile Editor target in xcode. Also removed tile_editor/.helper.c.swp file that accidentally was committed. 2014-01-15 00:32:48 -08:00
kts 2c28c31bf8 Tile graphics may now be loaded by specifying the directory in the tile editor and pressing the load button. It will then look for doors.png, equips.png, floors.png, items.png, npcs.png, players.png, and walls.png. If any of these are not found, some or all of the graphic sets will be unavailable (the program iterates through them and returns if any fail, so if the 3rd tileset to be loaded fails, all thereafter will not load). The set and id can also be specified, after which the tile's graphic will be displayed. 2014-01-09 06:41:50 -08:00
kts b1aa56cade The tile editor has moved well beyond a skeleton, although much work is yet to be done. Added an Element struct for the tile_editor - basically the catch-all for input boxes, buttons, text fields, drop-down menus and so on. Fully functional is the button and text types, semi-functional (only visually) is text input (needs to be focus/editable), and non-existing are drop-down menus. The button callbacks for data and graphics loading do not actually load anything yet - will be done after text input, ofc. 2013-12-31 02:34:36 -08:00
kts 4ca32efeee Added an empty skeleton for the tile editor, including its own sub-directory in tile_editor/ (along with corresponding Makefile), as well as its own Target in timesynk's XCode project file. 2013-12-27 23:22:04 -08:00
kts 0005a93d65 Implemented Data system fully now (not integrated into ts engine itself yet). In the process added a new Table (hash table) system that matches keys to values. More information pertaining to that in data.h/data.c. Might switch over to a system wherein all Tiles are actually TileData structs (or contain TileData structs). This would increase the processing necessary, as values for properties must be acquired from a string instead of reading from a pre-defined struct, but it would increase the modularity immensely as there is no real limit on the amount of properties a Tile may contain (which will be most important once the interpreter is implemented and used for tile movement, collisions, etc.). 2013-12-20 18:24:06 -08:00
kts 770ad240e2 Updated Xcode to include parser.c/.h. Since it was not mentioned in last commit, parser.c/.h contains functions related to parsing slots, adding slots together, doing comparisons between slots, etc.. It is also where dice parsing and stat parsing will go as well. 2013-11-26 16:08:13 -08:00
kts d50282effa We now have a mostly working inventory system. Items can be picked up via ` and dropped using ` within the inventory. Currently using a new playerPickup() function, but it should be abstracted to a tilePickup(struct Tile *tile) function so that npcs, etc., can share in the fun. 2013-11-16 04:41:06 -08:00
kts 981e0cd2f2 Added SDL_image.framework as a framework to include in the produced app, thus allowing timesynk.app to run w/o dependencies. 2013-11-15 14:00:26 -08:00
kts 81c3ea6fdc Moved a portion of the user messages (e.g., 'You open the %s.') to various #define MESSAGE_* in message.h. Also fixed the bug I never looked into where entries in consoleLog would read past the string into neighboring memory - this was due to using strlen(string) for the byte-length in memcpy, as strlen does not count the terminating character '\0'. Fixed by adding +1 to the return value of strlen 2013-11-14 16:21:53 -08:00
kts 8893eb35d4 Did a hack to get transparency working on big endian systems - basically it grabs a portion of the pixel color value and uses that for alpha. This is terrible, but I did not want to waste time trying to figure out what was wrong, as it is more of a tertiary feature. Beyond that, added a new font_mini.png spritesheet that contains an 8x8 ASCII font. This is currently used in the new UI messages system, which is basically a window that is drawn over the map with the current in-games messages. At some point this will be split into two different categories, one from the PC perspective and the other from the player perspective (e.g., 'you bludgeon the nupi' - '4 damage (1d6+1)'). Also added a new Font struct that contains: int width, int height, SDL_Surface *spritesheet, float scale_x, float scale_y, and SDL_Surface *scaled_spritesheet. Helper function added of loadFontFromMemory(struct Font *font, unsigned char *memory, unsigned int length, int font_width, int font_height) - this creates a new SDL_Surface from the passed memory and sets the passed font's surface to it along with the width and height. Also added was a setFontScale(struct Font *font, float scale_x, float scale_y) - this calls interfaceScaleSurface on the font's spritesheet and sets scaled_spritesheet to point to that new surface. For the time being, the new font is used through interfaceDrawStringF and interfaceDrawCharF, two functions that closely match their normal counterparts, but instead use a passed font and its values for drawing. The normal draw char/string functions will likely be replaced with the new ones. 2013-11-14 03:03:10 -08:00
kts 639d4b9fcb Added a preprocessor conditional for OS X for SDL_Init, as SDL_INIT_EVENTTHREAD causes the program to become unresponsive (although still tick the world) akin to Win32/64. Fixed a crash when activating a non-existent Tile, as it would simply attempt to read the null tile. 2013-11-10 02:48:57 -08:00
kts 7bc43929e0 Added much code for the foundation of the netcode. Server automatically starts on port 31337 and runs as a separate thread in the SDL client. This TCP server functions as a basic echo server and can be connected to thru telnet or by typing 'connect 127.0.0.1 31337' in timesynk's console. Once connected, the echo functionality can be tested by using console command 'send my message goes here'. Somewhat buggy and crashses on occasion - suspected cause is consoleLog()ing a string that is not properly nul terminated, resulting in reading memory out of bounds. Curses client does not run the server properly at the moment, probably due to using select on server, clients, and stdin when combined with ncurses - will look into this later. 2013-11-06 23:40:19 -08:00
kts 8fc710f3a2 Successfully recoded both SDL and curses client to use a model that ticks the world according to a Tick Event/Signal. How this works in SDL is a simple SDL Timer that pushes an SDL_USEREVENT with a code of EVENT_TICK at some interval in ms. The curses client works by calling setitimer with tickSignal as a callback, triggering whenever a SIGALRM signal is given. This was chosen for maximum cross-compatability for POSIX platforms, even though Linux has excellent timer fd support. Both the SDL and curses interfaces can have their tickrate modified by calling tickrate some_number_in_ms from the console. 0 stops the timer. For all of this to work, main() no longer has the while loop contained in it, but rather calls interfaceLoop() and lets the interface handle it (as this is extremely platform/api specific - some platforms have user input strongly tied into the drawing window (SDL), so we cannot use a monolithic select()-style while loop for all). Much more to be cleaned up, but this sets the foundation for network code. 2013-11-04 02:32:07 -08:00
kts 5edcc76a86 interfacePrint is no longer directly called in non-interface contexts, but rather is handled by a messaging system. When one tile wishes to tell another tile a message, whether that be for descriptive purposes such as opening a door or otherwise, messageTile(Tile *sender, Tile *recipient, const char *message) is called. Within that, if the recipient->tid is PLAYER, then it calls interfacePrint. This will later be modified to check if the recipient->data->controller matches the actual user's controller (thus tying messages to particular users only). Also added was the basic struct for controller, but it is thus far unused in actual game code. The Controller will be used once a basic network/game structure is in order. 2013-11-03 22:53:13 -08:00
kts b567be76fd Some minor tweaks made, majority of which I have forgotten already. DoorTile will soon be migrated to a generic TriggerTile type, in which it will exist as a DOOR subtype. 2013-10-23 18:58:17 -07:00
kts c28a62d522 As per usual, added a bunch of stuff and remember almost none of them. Most importantly, a console interface has been added that can be summoned by pressing the tilde key. Much of the functionality, including the less-than-stellar associative array (that acts as a function pointer) was ripped from the noirchat project. The only important commands are 'quit' and, for SDL, 'set_video widthxheight 0|1', with 0 representing windowed and 1 representing fullscreen. Both the curses and SDL client now have camera offsets, allowing for the center of the screen to always be centered on the player. There are plans to have the camera offset be relative to the distance from the edges of the map (so if the player is 25% from the left-side of the map, the camera offset would be 25% off center). Really in need of code clean-up and reorganization. 2013-10-22 02:49:25 -07:00
kts 29cdd11ec8 Added basic NPC/monster functionality as well as a console system. Simply call ConsoleLog(&string) and it'll create a new ConsoleEntry, set the console_last_entry's next to it, set the new entry's prev to console_last_entry, and finally set console_last_entry to point to the new entry (functions very similarly to Tile Chains). This may later be changed to an array form so as to easily pull sections of the log from anywhere. 2013-10-19 22:56:46 -07:00
kts 45ebcfe970 Added a temporary font spritesheet and the ability to interfacePrint in SDL with aforementioned font. This simply works by getting the numerical offset of the ASCII character value within the spritesheet (same principle as the rest of the tiles). In the future SDL_ttf will be used, but for the time being this will suffice. 2013-10-17 19:38:00 -07:00
kts 4c204db4f3 Added support for doors. A DoorTile is a fairly basic tile - at the moment - sporting a state int to specify its current state via STATE_OPEN, STATE_CLOSED, STATE_BROKEN, or STATE_MISSING. Graphically/ascii-ly, the proper visual appearance is acquired by multiplying the door id by the total door states(4) and adding the current state value to the result. For example, for a door with the id of 0, you would have visual tile 0 for closed, 1 for open, 2 for broken, and 3 for missing. Beyond the doors, the curses tiles were moved from interface/curses.(c/h) to tiles/curses_tiles.(c/h) - they should, at some point, be generated in a similar manner to the tiles for the SDL client (using pack_tiles). 2013-10-17 15:11:29 -07:00
kts 22e2d1c3a8 Fixed compiling on XCode via conditional #includes - also removed player_struct as the player is a Tile now 2013-10-15 19:51:43 -07:00
kts 6e414d9223 Who knows what has been added! As far as I recall, *context(s) were tweaked, added compiled-in graphics for the SDL client, and probably some other stuff. 2013-10-14 19:21:33 -07:00
kts e1a32045cf Added a ton of stuff, SDL compile is broken, probably due to malloc issues. Must check over code in different environments. 2013-10-08 21:49:38 -07:00
kts 2d7a45e0b5 Map now resides on a multidimensional array titled map_matrix. This stores the Tiles in a Stack structure at each cell - I believe this should instead be changed so that each Tile instead has pointers to the previous and next Tiles, so that the map_matrix only holds Tile pointers rather than Stack structs containing some variable amount of Tile pointers. Also added a visible_matrix that denotes what tiles are visible to the player. This is simply a multi-dimensional array of ints that act as bit fields for various flags (such as TILE_VISIBLE, TILE_CAN_SEE, TILE_LIGHT_ONE, TILE_LIGHT_TWO, etc. - multiple light flags can be concatted to provide a broad array of light levels). 2013-09-28 20:50:52 -07:00
kts 1f973fc865 Added basic player movement through playerMove(direction, distance). Also added an interface through which player commands are attached to a command id, so as to allow for functions to be called via a command id or, if later implemented, a string. Finally, implemented the moving of an @ in curses or a square in SDL via the arrow keys. 2013-09-19 22:45:19 -07:00
kts 0c5dc4c822 Initial commit, contains a barebones structure with the interface for both (x)curses and SDL. Can be built via the Makefile or via the XCode project in the xcode/ subdirectory 2013-09-17 22:37:36 -07:00