Rainbow worlds gen.
The index computation could stand some modernizations...
This commit is contained in:
@@ -22,12 +22,9 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
|
||||||
extern GenerateFunctions generateDefaultFunctions;
|
|
||||||
|
|
||||||
extern GenerateFunctions generateMelnormeFunctions;
|
extern GenerateFunctions generateMelnormeFunctions;
|
||||||
extern GenerateFunctions generateMyconFunctions;
|
extern GenerateFunctions generateMyconFunctions;
|
||||||
extern GenerateFunctions generateOrzFunctions;
|
extern GenerateFunctions generateOrzFunctions;
|
||||||
extern GenerateFunctions generateRainbowWorldFunctions;
|
|
||||||
extern GenerateFunctions generateSolFunctions;
|
extern GenerateFunctions generateSolFunctions;
|
||||||
extern GenerateFunctions generateThraddashFunctions;
|
extern GenerateFunctions generateThraddashFunctions;
|
||||||
extern GenerateFunctions generateUtwigFunctions;
|
extern GenerateFunctions generateUtwigFunctions;
|
||||||
@@ -40,6 +37,8 @@ getGenerateFunctions (STAR_DESC *const star)
|
|||||||
switch (star->Index)
|
switch (star->Index)
|
||||||
{
|
{
|
||||||
// Legacy ones are disabled...
|
// Legacy ones are disabled...
|
||||||
|
case RAINBOW_DEFINED:
|
||||||
|
|
||||||
case SAMATRA_DEFINED:
|
case SAMATRA_DEFINED:
|
||||||
case ILWRATH_DEFINED:
|
case ILWRATH_DEFINED:
|
||||||
case SPATHI_DEFINED:
|
case SPATHI_DEFINED:
|
||||||
@@ -95,8 +94,6 @@ getGenerateFunctions (STAR_DESC *const star)
|
|||||||
case VUX_BEAST_DEFINED:
|
case VUX_BEAST_DEFINED:
|
||||||
case VUX_DEFINED:
|
case VUX_DEFINED:
|
||||||
return &generateVuxFunctions;
|
return &generateVuxFunctions;
|
||||||
case RAINBOW_DEFINED:
|
|
||||||
return &generateRainbowWorldFunctions;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -541,6 +541,7 @@ STAR_DESC starmap_array[] =
|
|||||||
{{4923, 294}, MAKE_STAR (DWARF_STAR, YELLOW_BODY, -1), 0, 3, 74, "Yehat"},
|
{{4923, 294}, MAKE_STAR (DWARF_STAR, YELLOW_BODY, -1), 0, 3, 74, "Yehat"},
|
||||||
{{ 522, 525}, MAKE_STAR (DWARF_STAR, YELLOW_BODY, -1), 0, 3, 92, "Pkunk"},
|
{{ 522, 525}, MAKE_STAR (DWARF_STAR, YELLOW_BODY, -1), 0, 3, 92, "Pkunk"},
|
||||||
{{6858, 577}, MAKE_STAR (DWARF_STAR, GREEN_BODY, -1), 0, 0, 123, "Mycon Trap"},
|
{{6858, 577}, MAKE_STAR (DWARF_STAR, GREEN_BODY, -1), 0, 0, 123, "Mycon Trap"},
|
||||||
|
{{4681, 916}, MAKE_STAR (DWARF_STAR, ORANGE_BODY, -1), 0, 6, 75, "Rainbow"},
|
||||||
{{1004, 1083}, MAKE_STAR (DWARF_STAR, GREEN_BODY, -1), 0, 2, 27, "Slylandro"},
|
{{1004, 1083}, MAKE_STAR (DWARF_STAR, GREEN_BODY, -1), 0, 2, 27, "Slylandro"},
|
||||||
{{1776, 1395}, MAKE_STAR (DWARF_STAR, YELLOW_BODY, -1), 0, 0, 98, "Colony"},
|
{{1776, 1395}, MAKE_STAR (DWARF_STAR, YELLOW_BODY, -1), 0, 0, 98, "Colony"},
|
||||||
|
|
||||||
@@ -563,15 +564,28 @@ STAR_DESC starmap_array[] =
|
|||||||
|
|
||||||
{{3587, 2566}, MAKE_STAR (DWARF_STAR, GREEN_BODY, -1), 0, 7, 86, "Androsynth"},
|
{{3587, 2566}, MAKE_STAR (DWARF_STAR, GREEN_BODY, -1), 0, 7, 86, "Androsynth"},
|
||||||
{{9469, 2806}, MAKE_STAR (DWARF_STAR, ORANGE_BODY, -1), 0, 6, 61, "Druuge"},
|
{{9469, 2806}, MAKE_STAR (DWARF_STAR, ORANGE_BODY, -1), 0, 6, 61, "Druuge"},
|
||||||
|
{{6020, 2979}, MAKE_STAR (DWARF_STAR, ORANGE_BODY, -1), 0, 3, 13, "Rainbow"},
|
||||||
|
|
||||||
{{ 229, 3666}, MAKE_STAR (DWARF_STAR, GREEN_BODY, -1), 0, 1, 76, "Ilwrath"},
|
{{ 229, 3666}, MAKE_STAR (DWARF_STAR, GREEN_BODY, -1), 0, 1, 76, "Ilwrath"},
|
||||||
{{2416, 3687}, MAKE_STAR (GIANT_STAR, ORANGE_BODY, -1), 0, 5, 109, "Spathiwa"},
|
{{2416, 3687}, MAKE_STAR (GIANT_STAR, ORANGE_BODY, -1), 0, 5, 109, "Spathiwa"},
|
||||||
{{4125, 3770}, MAKE_STAR (DWARF_STAR, BLUE_BODY, -1), 0, 0, 114, "Syreen Gaia"},
|
{{4125, 3770}, MAKE_STAR (DWARF_STAR, BLUE_BODY, -1), 0, 0, 114, "Syreen Gaia"},
|
||||||
{{5937, 3937}, MAKE_STAR (DWARF_STAR, ORANGE_BODY, -1), 0, 5, 10, "Syreen Vault"},
|
{{5937, 3937}, MAKE_STAR (DWARF_STAR, ORANGE_BODY, -1), 0, 5, 10, "Syreen Vault"},
|
||||||
|
|
||||||
|
{{7416, 5083}, MAKE_STAR (DWARF_STAR, GREEN_BODY, -1), 0, 3, 68, "Rainbow"},
|
||||||
{{4000, 5437}, MAKE_STAR (DWARF_STAR, GREEN_BODY, -1), 0, 1, 18, "Zoq-Fot-Pik"},
|
{{4000, 5437}, MAKE_STAR (DWARF_STAR, GREEN_BODY, -1), 0, 1, 18, "Zoq-Fot-Pik"},
|
||||||
{{9645, 5791}, MAKE_STAR (DWARF_STAR, ORANGE_BODY, -1), 0, 0, 130, "Burvixese"},
|
{{9645, 5791}, MAKE_STAR (DWARF_STAR, ORANGE_BODY, -1), 0, 0, 130, "Burvixese"},
|
||||||
{{6200, 5935}, MAKE_STAR (DWARF_STAR, YELLOW_BODY, -1), 0, 4, 21, "Sa-Matra"},
|
{{6200, 5935}, MAKE_STAR (DWARF_STAR, YELLOW_BODY, -1), 0, 4, 21, "Sa-Matra"},
|
||||||
{{1978, 5968}, MAKE_STAR (DWARF_STAR, GREEN_BODY, -1), 0, 2, 54, "Umgah and Talking Pet"},
|
{{1978, 5968}, MAKE_STAR (DWARF_STAR, GREEN_BODY, -1), 0, 2, 54, "Umgah and Talking Pet"},
|
||||||
|
|
||||||
|
{{8625, 7000}, MAKE_STAR (DWARF_STAR, GREEN_BODY, -1), 0, 1, 41, "Rainbow"},
|
||||||
|
{{ 395, 7458}, MAKE_STAR (DWARF_STAR, BLUE_BODY, -1), 0, 2, 60, "Rainbow"},
|
||||||
|
{{2836, 7857}, MAKE_STAR (DWARF_STAR, WHITE_BODY, -1), 0, 5, 53, "Rainbow"},
|
||||||
|
|
||||||
|
{{5437, 8270}, MAKE_STAR (DWARF_STAR, RED_BODY, -1), 0, 5, 48, "Rainbow"},
|
||||||
|
{{7666, 8666}, MAKE_STAR (DWARF_STAR, ORANGE_BODY, -1), 0, 2, 46, "Rainbow"},
|
||||||
|
{{8534, 8797}, MAKE_STAR (DWARF_STAR, ORANGE_BODY, -1), 0, 3, 3, "Rainbow"},
|
||||||
|
|
||||||
|
{{9960, 9042}, MAKE_STAR (GIANT_STAR, WHITE_BODY, -1), 0, 0, 42, "Rainbow"},
|
||||||
{{7414, 9124}, MAKE_STAR (DWARF_STAR, GREEN_BODY, -1), 0, 2, 47, "Supox"},
|
{{7414, 9124}, MAKE_STAR (DWARF_STAR, GREEN_BODY, -1), 0, 2, 47, "Supox"},
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
uqm_CFILES="gendefault.c
|
uqm_CFILES="gendefault.c
|
||||||
genmel.c genmyc.c genorz.c genrain.c
|
genmel.c genmyc.c genorz.c
|
||||||
gensol.c
|
gensol.c
|
||||||
genthrad.c genutw.c genvux.c"
|
genthrad.c genutw.c genvux.c"
|
||||||
uqm_HFILES="genall.h gendefault.h"
|
uqm_HFILES="genall.h gendefault.h"
|
||||||
@@ -9,4 +9,5 @@ uqm_CXXFILES="cxx-generator.cpp gensly-modern.cpp genshof-modern.cpp
|
|||||||
genvault-modern.cpp genchmmr-modern.cpp gendru-modern.cpp
|
genvault-modern.cpp genchmmr-modern.cpp gendru-modern.cpp
|
||||||
gentrap-modern.cpp gensup-modern.cpp genspa-modern.cpp
|
gentrap-modern.cpp gensup-modern.cpp genspa-modern.cpp
|
||||||
genpet-modern.cpp genzoq-modern.cpp genyeh-modern.cpp
|
genpet-modern.cpp genzoq-modern.cpp genyeh-modern.cpp
|
||||||
genilw-modern.cpp genpku-modern.cpp gensam-modern.cpp"
|
genilw-modern.cpp genpku-modern.cpp gensam-modern.cpp
|
||||||
|
genrain-modern.cpp"
|
||||||
|
|||||||
+40
-23
@@ -23,31 +23,47 @@
|
|||||||
#include "../../globdata.h"
|
#include "../../globdata.h"
|
||||||
#include "libs/mathlib.h"
|
#include "libs/mathlib.h"
|
||||||
|
|
||||||
|
#include <sstream>
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
static bool GenerateRainbowWorld_generatePlanets (SOLARSYS_STATE *solarSys);
|
namespace
|
||||||
static bool GenerateRainbowWorld_generateOrbital (SOLARSYS_STATE *solarSys,
|
{
|
||||||
PLANET_DESC *world);
|
using namespace std::literals::string_literals;
|
||||||
|
using namespace Planets::exports;
|
||||||
|
|
||||||
|
template< typename T >
|
||||||
|
T
|
||||||
|
lexical_cast( const std::string &s )
|
||||||
|
{
|
||||||
|
std::istringstream iss{ s };
|
||||||
|
iss.exceptions( std::istream::failbit | std::istream::badbit );
|
||||||
|
|
||||||
const GenerateFunctions generateRainbowWorldFunctions = {
|
T rv;
|
||||||
/* .initNpcs = */ GenerateDefault_initNpcs,
|
iss >> rv;
|
||||||
/* .reinitNpcs = */ GenerateDefault_reinitNpcs,
|
|
||||||
/* .uninitNpcs = */ GenerateDefault_uninitNpcs,
|
return rv;
|
||||||
/* .generatePlanets = */ GenerateRainbowWorld_generatePlanets,
|
}
|
||||||
/* .generateMoons = */ GenerateDefault_generateMoons,
|
|
||||||
/* .generateName = */ GenerateDefault_generateName,
|
class GenerateRainbowWorld
|
||||||
/* .generateOrbital = */ GenerateRainbowWorld_generateOrbital,
|
: public DefaultGenerator
|
||||||
/* .generateMinerals = */ GenerateDefault_generateMinerals,
|
{
|
||||||
/* .generateEnergy = */ GenerateDefault_generateEnergy,
|
private:
|
||||||
/* .generateLife = */ GenerateDefault_generateLife,
|
bool generatePlanets( SolarSystem *solarSys ) override;
|
||||||
/* .pickupMinerals = */ GenerateDefault_pickupMinerals,
|
bool generateOrbital( SolarSystem *solarSys,
|
||||||
/* .pickupEnergy = */ GenerateDefault_pickupEnergy,
|
PLANET_DESC *world ) override;
|
||||||
/* .pickupLife = */ GenerateDefault_pickupLife,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
auto init= []
|
||||||
|
{
|
||||||
|
Generator::add( "Rainbow", std::make_unique< GenerateRainbowWorld >() );
|
||||||
|
|
||||||
static bool
|
return 0xDEABEEF;
|
||||||
GenerateRainbowWorld_generatePlanets (SOLARSYS_STATE *solarSys)
|
}();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool
|
||||||
|
GenerateRainbowWorld::generatePlanets( SolarSystem *const solarSys )
|
||||||
{
|
{
|
||||||
COUNT angle;
|
COUNT angle;
|
||||||
|
|
||||||
@@ -70,8 +86,8 @@ GenerateRainbowWorld_generatePlanets (SOLARSYS_STATE *solarSys)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool
|
bool
|
||||||
GenerateRainbowWorld_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world)
|
GenerateRainbowWorld::generateOrbital( SolarSystem *const solarSys, PLANET_DESC *const world )
|
||||||
{
|
{
|
||||||
if (matchWorld (solarSys, world, 0, MATCH_PLANET))
|
if (matchWorld (solarSys, world, 0, MATCH_PLANET))
|
||||||
{
|
{
|
||||||
@@ -87,16 +103,17 @@ GenerateRainbowWorld_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *wor
|
|||||||
SDPtr = &star_array[0];
|
SDPtr = &star_array[0];
|
||||||
while (SDPtr != CurStarDescPtr)
|
while (SDPtr != CurStarDescPtr)
|
||||||
{
|
{
|
||||||
if (SDPtr->Index == RAINBOW_DEFINED)
|
if (SDPtr->supplement and SDPtr->supplement == "Rainbow"s)
|
||||||
++which_rainbow;
|
++which_rainbow;
|
||||||
++SDPtr;
|
++SDPtr;
|
||||||
}
|
}
|
||||||
|
std::cerr << "I think I'm at Rainbow world " << which_rainbow << std::endl;
|
||||||
rainbow_mask |= 1 << which_rainbow;
|
rainbow_mask |= 1 << which_rainbow;
|
||||||
SET_GAME_STATE (RAINBOW_WORLD0, LOBYTE (rainbow_mask));
|
SET_GAME_STATE (RAINBOW_WORLD0, LOBYTE (rainbow_mask));
|
||||||
SET_GAME_STATE (RAINBOW_WORLD1, HIBYTE (rainbow_mask));
|
SET_GAME_STATE (RAINBOW_WORLD1, HIBYTE (rainbow_mask));
|
||||||
}
|
}
|
||||||
|
|
||||||
GenerateDefault_generateOrbital (solarSys, world);
|
DefaultGenerator::generateOrbital (solarSys, world);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
Reference in New Issue
Block a user