Moved dungeon.c and dungeon.h templates into external files.

Also refactored to use named vars in the templates, so it's easier to
refactor, as order when you call .format() isn't important.
This commit is contained in:
Aaron Traas 2017-07-23 12:07:10 -04:00
parent 8765f49fdc
commit 319c5830c8
5 changed files with 269 additions and 260 deletions

View file

@ -0,0 +1,83 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Coverage - adventure.yaml</title>
<link rel="stylesheet" type="text/css" href="gcov.css">
<style>
.covered {{
text-align: center;
background-color: #A7FC9D;
}}
.covered::before {{
content: '\002714';
}}
.uncovered {{
text-align: center;
background-color: #FF0000;
}}
.uncovered::before {{
content: '\002715';
}}
</style>
</head>
<body>
<table width="100%" border=0 cellspacing=0 cellpadding=0>
<tr>
<td class="title" colspan="2">adventure.yaml Coverage report</td>
</tr>
<tr>
<td class="ruler" colspan="2"><img src="glass.png" width=3 height=3 alt=""></td>
</tr>
<tr valign="top">
<td>
<table cellpadding=1 border=0 width="100%">
<tr>
<td width="10%" class="headerItem">Test:</a></td>
<td width="35%" class="headerValue">adventure.yaml</td>
<td width="65%"></td>
</tr>
<tr>
<td class="headerItem">Date:</a></td>
<td class="headerValue">2017-07-07 21:47:56</td>
<td></td>
</tr>
</table>
</td>
<td>
<table cellpadding=1 border=0 width="100%">
<tr>
<td width="55%"></td>
<td width="15%" class="headerCovTableHead">Total</td>
<td width="15%" class="headerCovTableHead">Covered</td>
<td width="15%" class="headerCovTableHead">% Coverage</td>
</tr>
{summary}
</table>
</td>
</tr>
<tr>
<td><img src="glass.png" width=3 height=3 alt=""></td>
</tr>
<tr>
<td class="ruler" colspan="2"><img src="glass.png" width=3 height=3 alt=""></td>
</tr>
</table>
<br>
<center>
<table width="60%" border=0 cellpadding=1 cellspacing=1>
{categories}
</table>
</center>
<br>
<table width="100%" border=0 cellspacing=0 cellpadding=0>
<tr>
<td class="ruler"><img src="glass.png" width=3 height=3 alt=""></td>
</tr>
<tr>
<td class="versionInfo">Generated by: <a href="https://gitlab.com/esr/open-adventure/blob/master/tests/coverage_dungeon.py">Open Adventure Dungeon Coverage Generator</a></td>
</tr>
</table>
<br>
</body>
</html>

51
templates/dungeon.c.tpl Normal file
View file

@ -0,0 +1,51 @@
#include "{h_file}"
const char* arbitrary_messages[] = {{
{arbitrary_messages}
}};
const class_t classes[] = {{
{classes}
}};
const turn_threshold_t turn_thresholds[] = {{
{turn_thresholds}
}};
const location_t locations[] = {{
{locations}
}};
const object_t objects[] = {{
{objects}
}};
const obituary_t obituaries[] = {{
{obituaries}
}};
const hint_t hints[] = {{
{hints}
}};
long conditions[] = {{
{conditions}
}};
const motion_t motions[] = {{
{motions}
}};
const action_t actions[] = {{
{actions}
}};
const long tkey[] = {{{tkeys}}};
const travelop_t travel[] = {{
{travel}
}};
const char *ignore = "{ignore}";
/* end */

165
templates/dungeon.h.tpl Normal file
View file

@ -0,0 +1,165 @@
#ifndef DUNGEON_H
#define DUNGEON_H
#include <stdio.h>
#include <stdbool.h>
#define SILENT -1 /* no sound */
/* Symbols for cond bits */
#define COND_LIT 0 /* Light */
#define COND_OILY 1 /* If bit 2 is on: on for oil, off for water */
#define COND_FLUID 2 /* Liquid asset, see bit 1 */
#define COND_NOARRR 3 /* Pirate doesn't go here unless following */
#define COND_NOBACK 4 /* Cannot use "back" to move away */
#define COND_ABOVE 5
#define COND_DEEP 6 /* Deep - e.g where dwarves are active */
#define COND_FOREST 7 /* In the forest */
#define COND_FORCED 8 /* Only one way in or out of here */
/* Bits past 10 indicate areas of interest to "hint" routines */
#define COND_HBASE 10 /* Base for location hint bits */
#define COND_HCAVE 11 /* Trying to get into cave */
#define COND_HBIRD 12 /* Trying to catch bird */
#define COND_HSNAKE 13 /* Trying to deal with snake */
#define COND_HMAZE 14 /* Lost in maze */
#define COND_HDARK 15 /* Pondering dark room */
#define COND_HWITT 16 /* At Witt's End */
#define COND_HCLIFF 17 /* Cliff with urn */
#define COND_HWOODS 18 /* Lost in forest */
#define COND_HOGRE 19 /* Trying to deal with ogre */
#define COND_HJADE 20 /* Found all treasures except jade */
typedef struct {{
const char** strs;
const int n;
}} string_group_t;
typedef struct {{
const string_group_t words;
const char* inventory;
int plac, fixd;
bool is_treasure;
const char** descriptions;
const char** sounds;
const char** texts;
const char** changes;
}} object_t;
typedef struct {{
const char* small;
const char* big;
}} descriptions_t;
typedef struct {{
descriptions_t description;
const long sound;
const bool loud;
}} location_t;
typedef struct {{
const char* query;
const char* yes_response;
}} obituary_t;
typedef struct {{
const int threshold;
const int point_loss;
const char* message;
}} turn_threshold_t;
typedef struct {{
const int threshold;
const char* message;
}} class_t;
typedef struct {{
const int number;
const int turns;
const int penalty;
const char* question;
const char* hint;
}} hint_t;
typedef struct {{
const string_group_t words;
}} motion_t;
typedef struct {{
const string_group_t words;
const char* message;
const bool noaction;
}} action_t;
enum condtype_t {{cond_goto, cond_pct, cond_carry, cond_with, cond_not}};
enum desttype_t {{dest_goto, dest_special, dest_speak}};
typedef struct {{
const long motion;
const long condtype;
const long condarg1;
const long condarg2;
const enum desttype_t desttype;
const long destval;
const bool nodwarves;
const bool stop;
}} travelop_t;
/* Abstract out the encoding of words in the travel array. Gives us
* some hope of getting to a less cryptic representation than we
* inherited from FORTRAN, someday. To understand these, read the
* encoding description for travel.
*/
#define T_TERMINATE(entry) ((entry).motion == 1)
extern const location_t locations[];
extern const object_t objects[];
extern const char* arbitrary_messages[];
extern const class_t classes[];
extern const turn_threshold_t turn_thresholds[];
extern const obituary_t obituaries[];
extern const hint_t hints[];
extern long conditions[];
extern const motion_t motions[];
extern const action_t actions[];
extern const travelop_t travel[];
extern const long tkey[];
extern const char *ignore;
#define NLOCATIONS {num_locations}
#define NOBJECTS {num_objects}
#define NHINTS {num_hints}
#define NCLASSES {num_classes}
#define NDEATHS {num_deaths}
#define NTHRESHOLDS {num_thresholds}
#define NMOTIONS {num_motions}
#define NACTIONS {num_actions}
#define NTRAVEL {num_travel}
#define NKEYS {num_keys}
#define BIRD_ENDSTATE {bird_endstate}
enum arbitrary_messages_refs {{
{arbitrary_messages}
}};
enum locations_refs {{
{locations}
}};
enum object_refs {{
{objects}
}};
enum motion_refs {{
{motions}
}};
enum action_refs {{
{actions}
}};
/* State definitions */
{state_definitions}
#endif /* end DUNGEON_H */