Update with more pre-generated levels

Also clean up test code to not output unless erroring
This commit is contained in:
mdiluzio 2014-12-16 22:35:56 +00:00
parent dbfd932a64
commit 526451ad02
4 changed files with 59 additions and 19 deletions

View file

@ -6,9 +6,14 @@
namespace
{
// Helper function for generating unique unit ids during static init
unit_id_t get_unique_unit_id()
unit_id_t get_unique_unit_id(unit_id_t* set = nullptr)
{
static unit_id_t p = 0;
// If we have a set value, then set our int
if( set )
p = *set;
return p++;
}
@ -30,6 +35,13 @@ namespace
}
}
// force a reset of the unit ID value
void forceResetUnitId()
{
unit_id_t i = 0;
get_unique_unit_id(&i);
}
// Get a unit from a visual
CUnit CUnit::GetUnitFromVis( unitVis_c vis )
{

View file

@ -9,6 +9,9 @@
#define UNIT_FORMATTER "UNIT:%u tm:%u vs:%c dr:%c ps:[%u,%u]"
// force a reset of the unit ID value
void forceResetUnitId();
// Base unit type
class CUnit
{

View file

@ -11,33 +11,61 @@ void AddUnitToGame( Team team, char vis, uvector2 vec, CTTRTSGame& game )
game.AddUnit(std::move(unit));
}
void OutputGame( CTTRTSGame& game )
void OutputGame( CTTRTSGame&& game )
{
std::ofstream output;
output.open (game.GetName() + ".txt");
output << game.GetStateAsString();
output.close();
forceResetUnitId();
}
int main()
{
// Basic 5v5 game
// Tiny 2v2 Game
{
CTTRTSGame game(21, 11);
game.SetName("Basic_5_v_5");
CTTRTSGame game(7, 5);
game.SetName("Tiny2v2");
AddUnitToGame( Team::Blue, '>', uvector2(1, 1), game);
AddUnitToGame( Team::Blue, '>', uvector2(1, 3), game);
AddUnitToGame( Team::Blue, '>', uvector2(1, 5), game);
AddUnitToGame( Team::Blue, '>', uvector2(1, 7), game);
AddUnitToGame( Team::Blue, '>', uvector2(1, 9), game);
AddUnitToGame( Team::Red, '<', uvector2(19, 1), game);
AddUnitToGame( Team::Red, '<', uvector2(19, 3), game);
AddUnitToGame( Team::Red, '<', uvector2(19, 5), game);
AddUnitToGame( Team::Red, '<', uvector2(19, 7), game);
AddUnitToGame( Team::Red, '<', uvector2(19, 9), game);
AddUnitToGame( Team::Red, '<', uvector2(5, 1), game);
AddUnitToGame( Team::Red, '<', uvector2(5, 3), game);
OutputGame(game);
OutputGame(std::move(game));
}
// Basic 5v5 game
{
CTTRTSGame game(21, 11);
game.SetName("Basic5v5");
for ( ucoord_t y : { 1,3,5,7,9 } )
AddUnitToGame( Team::Blue, '>', uvector2(1, y), game);
for ( ucoord_t y : { 1,3,5,7,9 } )
AddUnitToGame( Team::Red, '<', uvector2(19, y), game);
OutputGame(std::move(game));
}
// Chess 10v10 game
{
CTTRTSGame game(8, 8);
game.SetName("Chess");
for ( ucoord_t y : { 0,1,2,3,4,5,6,7 } ) {
AddUnitToGame(Team::Blue, '>', uvector2(0, y), game);
AddUnitToGame(Team::Blue, '>', uvector2(1, y), game);
}
for ( ucoord_t y : { 0,1,2,3,4,5,6,7 } ) {
AddUnitToGame(Team::Red, '<', uvector2(6, y), game);
AddUnitToGame(Team::Red, '<', uvector2(7, y), game);
}
OutputGame(std::move(game));
}
}

View file

@ -193,16 +193,13 @@ const char* tests()
// Main program entry point
int main()
{
std::cout<<"Running tests"<<std::endl;
const char* res = tests();
if( res )
{
std::cout<<"Tests failed - "<<res<<std::endl;
std::cout<<"ERROR: "<<res<<std::endl;
return -1;
}
std::cout<<"Tests succeeded"<<std::endl;
return 0;
};