/* Copyright 2001, 2002 Michael J. Roberts */ /* * gameinfo.t - game information utility for tads 2 * * This header file is designed to be #include'd in a TADS game's source * file to define a simple utility function that generates a * "GameInfo.txt" file during preinit. IMPORTANT: Include this file * *before* std.t if you also include std.t. * * The GameInfo.txt file provides "card catalog" information about the * game. Automated tools, such as archive management software, can * extract the information for applications such as searching and * browsing. * * To include game information in your game, you must do the following: * * 1. Add a #include directive to your game's source code to include * this file. * * #include * * IMPORTANT: The order of inclusion is important. If you're including * adv.t and std.t in addition to this file, you must use the following * order: * * #include *. #include *. #include * * 2. Define a function in your game called getGameInfo(). This * function should simply return a list value. The list should consist * of pairs of strings; the first string in each pair is the name of a * parameter, and the second of each pair is the value for the parameter. * For example: * *. getGameInfo: function *. { *. return ['Name', 'My Game', *. 'Byline', 'by R. Teeterwaller', *. 'Desc', 'A simple test game.]; *. } * * 3. If you're using the standard preinit() function from std.t, you * can skip this step. Otherwise, add this line to your own preinit() * function, anywhere within the function: * * writeGameInfo(getGameInfo()); * * 4. After you compile your game, use the tads resource tool to bundle * GameInfo.txt into your .gam file, just as though it were an HTML TADS * multimedia resource. If you are including other multimedia resources * in your game, simply add GameInfo.txt to the list of files you bundle. * If you don't have any other resources, add this command line to your * build script, immediately after the TADS compiler commnd line: * *. tadsrsc mygame.gam -add GameInfo.txt * * (If you're using the 32-bit Windows version, the command name is * tadsrsc32. The command name may vary on other platforms.) */ #pragma C+ /* indicate that we've included this file, for std.t's use */ #define GAMEINFO_INCLUDED /* * write the name/value pairs from the given list to the file * 'GameInfo.txt' */ writeGameInfo: function(info) { local fp; local i; local cnt; /* open the output file */ fp = fopen('GameInfo.txt', 'wt'); /* write the values */ for (i = 1, cnt = length(info) ; i <= cnt ; i += 2) { /* write the name, a colon, and the value */ fwrite(fp, info[i]); fwrite(fp, ': '); fwrite(fp, info[i+1]); fwrite(fp, '\n'); } /* done with the file */ fclose(fp); } /* * Utility function to retrieve today's date in format YYY-MM-DD. */ getGameInfoToday: function { local dt; local mm, dd; /* * get the current time/date information - if this is called during * preinit, it will give the date on which the game was compiled, * which can be used as a simple way of keeping the release date * field in the game information automatically updated */ dt = gettime(GETTIME_DATE_AND_TIME); /* * get the month, and make sure it's at least two digits, adding a * leading zero if necessary */ mm = cvtstr(dt[2]); if (length(mm) == 1) mm = '0' + mm; /* get the day of the month, and make sure it's at least two digits */ dd = cvtstr(dt[3]); if (length(dd) == 1) dd = '0' + dd; /* build the return string in YYYY-MM-DD format */ return cvtstr(dt[1]) + '-' + mm + '-' + dd; }