Melnorme now are dynamic.
It seems that each Melnorme is distinct at each system. In my play-testing here, they stay dead if killed. Which is, well, sensible. I don't remember if this was the behaviour in the original game.
This commit is contained in:
+10
-12
@@ -22,7 +22,6 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
|
||||||
extern GenerateFunctions generateMelnormeFunctions;
|
|
||||||
extern GenerateFunctions generateMyconFunctions;
|
extern GenerateFunctions generateMyconFunctions;
|
||||||
extern GenerateFunctions generateOrzFunctions;
|
extern GenerateFunctions generateOrzFunctions;
|
||||||
extern GenerateFunctions generateSolFunctions;
|
extern GenerateFunctions generateSolFunctions;
|
||||||
@@ -37,8 +36,17 @@ getGenerateFunctions (STAR_DESC *const star)
|
|||||||
switch (star->Index)
|
switch (star->Index)
|
||||||
{
|
{
|
||||||
// Legacy ones are disabled...
|
// Legacy ones are disabled...
|
||||||
case RAINBOW_DEFINED:
|
case MELNORME0_DEFINED:
|
||||||
|
case MELNORME1_DEFINED:
|
||||||
|
case MELNORME2_DEFINED:
|
||||||
|
case MELNORME3_DEFINED:
|
||||||
|
case MELNORME4_DEFINED:
|
||||||
|
case MELNORME5_DEFINED:
|
||||||
|
case MELNORME6_DEFINED:
|
||||||
|
case MELNORME7_DEFINED:
|
||||||
|
case MELNORME8_DEFINED:
|
||||||
|
|
||||||
|
case RAINBOW_DEFINED:
|
||||||
case SAMATRA_DEFINED:
|
case SAMATRA_DEFINED:
|
||||||
case ILWRATH_DEFINED:
|
case ILWRATH_DEFINED:
|
||||||
case SPATHI_DEFINED:
|
case SPATHI_DEFINED:
|
||||||
@@ -65,16 +73,6 @@ getGenerateFunctions (STAR_DESC *const star)
|
|||||||
|
|
||||||
case SOL_DEFINED:
|
case SOL_DEFINED:
|
||||||
return &generateSolFunctions;
|
return &generateSolFunctions;
|
||||||
case MELNORME0_DEFINED:
|
|
||||||
case MELNORME1_DEFINED:
|
|
||||||
case MELNORME2_DEFINED:
|
|
||||||
case MELNORME3_DEFINED:
|
|
||||||
case MELNORME4_DEFINED:
|
|
||||||
case MELNORME5_DEFINED:
|
|
||||||
case MELNORME6_DEFINED:
|
|
||||||
case MELNORME7_DEFINED:
|
|
||||||
case MELNORME8_DEFINED:
|
|
||||||
return &generateMelnormeFunctions;
|
|
||||||
case BOMB_DEFINED:
|
case BOMB_DEFINED:
|
||||||
case UTWIG_DEFINED:
|
case UTWIG_DEFINED:
|
||||||
return &generateUtwigFunctions;
|
return &generateUtwigFunctions;
|
||||||
|
|||||||
+12
-8
@@ -542,30 +542,28 @@ STAR_DESC starmap_array[] =
|
|||||||
{{ 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"},
|
{{4681, 916}, MAKE_STAR (DWARF_STAR, ORANGE_BODY, -1), 0, 6, 75, "Rainbow"},
|
||||||
|
{{9333, 937}, MAKE_STAR (SUPER_GIANT_STAR, YELLOW_BODY, -1), 0, 2, 5, "Melnorme", "0"},
|
||||||
|
{{1559, 993}, MAKE_STAR (SUPER_GIANT_STAR, RED_BODY, -1), 0, 1, 80, "Melnorme", "1"},
|
||||||
|
|
||||||
{{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"},
|
||||||
|
|
||||||
{{1777, 1405}, MAKE_STAR (DWARF_STAR, YELLOW_BODY, -1), 0, 0, 99},
|
{{1777, 1405}, MAKE_STAR (DWARF_STAR, YELLOW_BODY, -1), 0, 0, 99},
|
||||||
|
|
||||||
// ADAM ADDED
|
// ADAM ADDED
|
||||||
{{1703, 1432}, MAKE_STAR (GIANT_STAR, GREEN_BODY, -1), 0, 0, 171},
|
{{1703, 1432}, MAKE_STAR (GIANT_STAR, GREEN_BODY, -1), 0, 0, 171},
|
||||||
|
|
||||||
{{1752, 1450}, MAKE_STAR (DWARF_STAR, YELLOW_BODY, -1), SOL_DEFINED, 0, 129},
|
{{1752, 1450}, MAKE_STAR (DWARF_STAR, YELLOW_BODY, -1), SOL_DEFINED, 0, 129},
|
||||||
|
|
||||||
|
|
||||||
{{1848, 1469}, MAKE_STAR (DWARF_STAR, BLUE_BODY, -1), 0, 4, 82, "Shofixti"},
|
{{1848, 1469}, MAKE_STAR (DWARF_STAR, BLUE_BODY, -1), 0, 4, 82, "Shofixti"},
|
||||||
|
|
||||||
{{1751, 1479}, MAKE_STAR (GIANT_STAR, GREEN_BODY, -1), 0, 1, 59, "Wreck"},
|
{{1751, 1479}, MAKE_STAR (GIANT_STAR, GREEN_BODY, -1), 0, 1, 59, "Wreck"},
|
||||||
{{1707, 1501}, MAKE_STAR (DWARF_STAR, GREEN_BODY, -1), 0, 0, 52},
|
{{1707, 1501}, MAKE_STAR (DWARF_STAR, GREEN_BODY, -1), 0, 0, 52},
|
||||||
|
{{3352, 1940}, MAKE_STAR (SUPER_GIANT_STAR, WHITE_BODY, -1), 0, 0, 97, "Melnorme", "2"},
|
||||||
|
|
||||||
{{2104, 2083}, MAKE_STAR (DWARF_STAR, ORANGE_BODY, -1), 0, 0, 118, "Zoq-Fot-Pik Scout"},
|
{{2104, 2083}, MAKE_STAR (DWARF_STAR, ORANGE_BODY, -1), 0, 0, 118, "Zoq-Fot-Pik Scout"},
|
||||||
|
|
||||||
{{ 742, 2268}, MAKE_STAR (DWARF_STAR, ORANGE_BODY, -1), 0, 0, 117, "Chmmr"},
|
{{ 742, 2268}, MAKE_STAR (DWARF_STAR, ORANGE_BODY, -1), 0, 0, 117, "Chmmr"},
|
||||||
|
|
||||||
{{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"},
|
||||||
|
{{3654, 2587}, MAKE_STAR (SUPER_GIANT_STAR, GREEN_BODY, -1), 0, 1, 86, "Melnorme", "3"},
|
||||||
{{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"},
|
{{6020, 2979}, MAKE_STAR (DWARF_STAR, ORANGE_BODY, -1), 0, 3, 13, "Rainbow"},
|
||||||
|
|
||||||
|
{{2354, 3291}, MAKE_STAR (SUPER_GIANT_STAR, RED_BODY, -1), 0, 1, 106, "Melnorme", "4"},
|
||||||
{{ 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"},
|
||||||
@@ -577,16 +575,22 @@ STAR_DESC starmap_array[] =
|
|||||||
{{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"},
|
||||||
|
|
||||||
|
{{1578, 6668}, MAKE_STAR (SUPER_GIANT_STAR, GREEN_BODY, -1), 0, 1, 56, "Melnorme", "5"},
|
||||||
|
|
||||||
{{8625, 7000}, MAKE_STAR (DWARF_STAR, GREEN_BODY, -1), 0, 1, 41, "Rainbow"},
|
{{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"},
|
{{ 395, 7458}, MAKE_STAR (DWARF_STAR, BLUE_BODY, -1), 0, 2, 60, "Rainbow"},
|
||||||
|
{{5875, 7729}, MAKE_STAR (SUPER_GIANT_STAR, YELLOW_BODY, -1), 0, 1, 34, "Melnorme", "6"},
|
||||||
{{2836, 7857}, MAKE_STAR (DWARF_STAR, WHITE_BODY, -1), 0, 5, 53, "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"},
|
{{5437, 8270}, MAKE_STAR (DWARF_STAR, RED_BODY, -1), 0, 5, 48, "Rainbow"},
|
||||||
|
{{2582, 8507}, MAKE_STAR (SUPER_GIANT_STAR, YELLOW_BODY, -1), 0, 1, 2, "Melnorme", "7"},
|
||||||
{{7666, 8666}, MAKE_STAR (DWARF_STAR, ORANGE_BODY, -1), 0, 2, 46, "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"},
|
{{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"},
|
{{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"},
|
||||||
|
{{9159, 9745}, MAKE_STAR (SUPER_GIANT_STAR, BLUE_BODY, -1), 0, 1, 4, "Melnorme", "8"},
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
{{MAX_X_UNIVERSE << 1, MAX_Y_UNIVERSE << 1}, 0, 0, 0, 0},
|
{{MAX_X_UNIVERSE << 1, MAX_Y_UNIVERSE << 1}, 0, 0, 0, 0},
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
uqm_CFILES="gendefault.c
|
uqm_CFILES="gendefault.c
|
||||||
genmel.c genmyc.c genorz.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"
|
||||||
@@ -10,4 +10,4 @@ uqm_CXXFILES="cxx-generator.cpp gensly-modern.cpp genshof-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"
|
genrain-modern.cpp genmel-modern.cpp"
|
||||||
|
|||||||
@@ -0,0 +1,133 @@
|
|||||||
|
//Copyright Paul Reiche, Fred Ford. 1992-2002
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "genall.h"
|
||||||
|
#include "../../build.h"
|
||||||
|
#include "../../gendef.h"
|
||||||
|
#include "../../starmap.h"
|
||||||
|
#include "../../globdata.h"
|
||||||
|
#include "../../state.h"
|
||||||
|
#include "libs/log.h"
|
||||||
|
|
||||||
|
#include <sstream>
|
||||||
|
#include <iostream>
|
||||||
|
#include <map>
|
||||||
|
|
||||||
|
namespace
|
||||||
|
{
|
||||||
|
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 );
|
||||||
|
|
||||||
|
T rv;
|
||||||
|
iss >> rv;
|
||||||
|
|
||||||
|
return rv;
|
||||||
|
}
|
||||||
|
|
||||||
|
class GenerateMelnorme
|
||||||
|
: public DefaultGenerator
|
||||||
|
{
|
||||||
|
void initNpcs( SolarSystem *solarSys ) override;
|
||||||
|
|
||||||
|
static int SelectMelnormeRefVar();
|
||||||
|
static DWORD GetMelnormeRef();
|
||||||
|
static void SetMelnormeRef( DWORD Ref );
|
||||||
|
};
|
||||||
|
|
||||||
|
auto init= []
|
||||||
|
{
|
||||||
|
Generator::add( "Melnorme", std::make_unique< GenerateMelnorme >() );
|
||||||
|
|
||||||
|
return 0xDEADBEEF;
|
||||||
|
}();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
GenerateMelnorme::initNpcs( SolarSystem *const solarSys )
|
||||||
|
{
|
||||||
|
GLOBAL (BattleGroupRef) = GetMelnormeRef ();
|
||||||
|
if (GLOBAL (BattleGroupRef) == 0)
|
||||||
|
{
|
||||||
|
CloneShipFragment (MELNORME_SHIP, &GLOBAL (npc_built_ship_q), 0);
|
||||||
|
GLOBAL (BattleGroupRef) = PutGroupInfo (GROUPS_ADD_NEW, 1);
|
||||||
|
ReinitQueue (&GLOBAL (npc_built_ship_q));
|
||||||
|
SetMelnormeRef (GLOBAL (BattleGroupRef));
|
||||||
|
}
|
||||||
|
|
||||||
|
DefaultGenerator::initNpcs (solarSys);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int
|
||||||
|
GenerateMelnorme::SelectMelnormeRefVar()
|
||||||
|
{
|
||||||
|
const auto arg_p= CurStarDescPtr->supArg;
|
||||||
|
const std::string arg= arg_p ? arg_p : "";
|
||||||
|
|
||||||
|
static const std::map< std::string, int > lookups
|
||||||
|
{
|
||||||
|
{ "0"s, MELNORME0_GRPOFFS0 },
|
||||||
|
{ "1"s, MELNORME1_GRPOFFS0 },
|
||||||
|
{ "2"s, MELNORME2_GRPOFFS0 },
|
||||||
|
{ "3"s, MELNORME3_GRPOFFS0 },
|
||||||
|
{ "4"s, MELNORME4_GRPOFFS0 },
|
||||||
|
{ "5"s, MELNORME5_GRPOFFS0 },
|
||||||
|
{ "6"s, MELNORME6_GRPOFFS0 },
|
||||||
|
{ "7"s, MELNORME7_GRPOFFS0 },
|
||||||
|
{ "8"s, MELNORME8_GRPOFFS0 },
|
||||||
|
};
|
||||||
|
|
||||||
|
if( not lookups.count( arg ) ) return -1;
|
||||||
|
|
||||||
|
return lookups.at( arg );
|
||||||
|
}
|
||||||
|
|
||||||
|
DWORD
|
||||||
|
GenerateMelnorme::GetMelnormeRef()
|
||||||
|
{
|
||||||
|
int RefVar = SelectMelnormeRefVar ();
|
||||||
|
if (RefVar < 0)
|
||||||
|
{
|
||||||
|
log_add (log_Warning, "GetMelnormeRef(): reference unknown");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return GET_GAME_STATE_32 (RefVar);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
GenerateMelnorme::SetMelnormeRef( DWORD Ref )
|
||||||
|
{
|
||||||
|
int RefVar = SelectMelnormeRefVar ();
|
||||||
|
if (RefVar < 0)
|
||||||
|
{
|
||||||
|
log_add (log_Warning, "SetMelnormeRef(): reference unknown");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
SET_GAME_STATE_32 (RefVar, Ref);
|
||||||
|
}
|
||||||
|
|
||||||
@@ -1,114 +0,0 @@
|
|||||||
//Copyright Paul Reiche, Fred Ford. 1992-2002
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This program is free software; you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation; either version 2 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "genall.h"
|
|
||||||
#include "../../build.h"
|
|
||||||
#include "../../gendef.h"
|
|
||||||
#include "../../starmap.h"
|
|
||||||
#include "../../globdata.h"
|
|
||||||
#include "../../state.h"
|
|
||||||
#include "libs/log.h"
|
|
||||||
|
|
||||||
|
|
||||||
static bool GenerateMelnorme_initNpcs (SOLARSYS_STATE *solarSys);
|
|
||||||
|
|
||||||
static int SelectMelnormeRefVar (void);
|
|
||||||
static DWORD GetMelnormeRef (void);
|
|
||||||
static void SetMelnormeRef (DWORD Ref);
|
|
||||||
|
|
||||||
|
|
||||||
const GenerateFunctions generateMelnormeFunctions = {
|
|
||||||
/* .initNpcs = */ GenerateMelnorme_initNpcs,
|
|
||||||
/* .reinitNpcs = */ GenerateDefault_reinitNpcs,
|
|
||||||
/* .uninitNpcs = */ GenerateDefault_uninitNpcs,
|
|
||||||
/* .generatePlanets = */ GenerateDefault_generatePlanets,
|
|
||||||
/* .generateMoons = */ GenerateDefault_generateMoons,
|
|
||||||
/* .generateName = */ GenerateDefault_generateName,
|
|
||||||
/* .generateOrbital = */ GenerateDefault_generateOrbital,
|
|
||||||
/* .generateMinerals = */ GenerateDefault_generateMinerals,
|
|
||||||
/* .generateEnergy = */ GenerateDefault_generateEnergy,
|
|
||||||
/* .generateLife = */ GenerateDefault_generateLife,
|
|
||||||
/* .pickupMinerals = */ GenerateDefault_pickupMinerals,
|
|
||||||
/* .pickupEnergy = */ GenerateDefault_pickupEnergy,
|
|
||||||
/* .pickupLife = */ GenerateDefault_pickupLife,
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
static bool
|
|
||||||
GenerateMelnorme_initNpcs (SOLARSYS_STATE *solarSys)
|
|
||||||
{
|
|
||||||
GLOBAL (BattleGroupRef) = GetMelnormeRef ();
|
|
||||||
if (GLOBAL (BattleGroupRef) == 0)
|
|
||||||
{
|
|
||||||
CloneShipFragment (MELNORME_SHIP, &GLOBAL (npc_built_ship_q), 0);
|
|
||||||
GLOBAL (BattleGroupRef) = PutGroupInfo (GROUPS_ADD_NEW, 1);
|
|
||||||
ReinitQueue (&GLOBAL (npc_built_ship_q));
|
|
||||||
SetMelnormeRef (GLOBAL (BattleGroupRef));
|
|
||||||
}
|
|
||||||
|
|
||||||
GenerateDefault_initNpcs (solarSys);
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static int
|
|
||||||
SelectMelnormeRefVar (void)
|
|
||||||
{
|
|
||||||
switch (CurStarDescPtr->Index)
|
|
||||||
{
|
|
||||||
case MELNORME0_DEFINED: return MELNORME0_GRPOFFS0;
|
|
||||||
case MELNORME1_DEFINED: return MELNORME1_GRPOFFS0;
|
|
||||||
case MELNORME2_DEFINED: return MELNORME2_GRPOFFS0;
|
|
||||||
case MELNORME3_DEFINED: return MELNORME3_GRPOFFS0;
|
|
||||||
case MELNORME4_DEFINED: return MELNORME4_GRPOFFS0;
|
|
||||||
case MELNORME5_DEFINED: return MELNORME5_GRPOFFS0;
|
|
||||||
case MELNORME6_DEFINED: return MELNORME6_GRPOFFS0;
|
|
||||||
case MELNORME7_DEFINED: return MELNORME7_GRPOFFS0;
|
|
||||||
case MELNORME8_DEFINED: return MELNORME8_GRPOFFS0;
|
|
||||||
default:
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static DWORD
|
|
||||||
GetMelnormeRef (void)
|
|
||||||
{
|
|
||||||
int RefVar = SelectMelnormeRefVar ();
|
|
||||||
if (RefVar < 0)
|
|
||||||
{
|
|
||||||
log_add (log_Warning, "GetMelnormeRef(): reference unknown");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
return GET_GAME_STATE_32 (RefVar);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
SetMelnormeRef (DWORD Ref)
|
|
||||||
{
|
|
||||||
int RefVar = SelectMelnormeRefVar ();
|
|
||||||
if (RefVar < 0)
|
|
||||||
{
|
|
||||||
log_add (log_Warning, "SetMelnormeRef(): reference unknown");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
SET_GAME_STATE_32 (RefVar, Ref);
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -23,7 +23,6 @@
|
|||||||
#include "../../globdata.h"
|
#include "../../globdata.h"
|
||||||
#include "libs/mathlib.h"
|
#include "libs/mathlib.h"
|
||||||
|
|
||||||
#include <sstream>
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
namespace
|
namespace
|
||||||
@@ -31,19 +30,6 @@ namespace
|
|||||||
using namespace std::literals::string_literals;
|
using namespace std::literals::string_literals;
|
||||||
using namespace Planets::exports;
|
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 );
|
|
||||||
|
|
||||||
T rv;
|
|
||||||
iss >> rv;
|
|
||||||
|
|
||||||
return rv;
|
|
||||||
}
|
|
||||||
|
|
||||||
class GenerateRainbowWorld
|
class GenerateRainbowWorld
|
||||||
: public DefaultGenerator
|
: public DefaultGenerator
|
||||||
{
|
{
|
||||||
@@ -107,7 +93,7 @@ GenerateRainbowWorld::generateOrbital( SolarSystem *const solarSys, PLANET_DESC
|
|||||||
++which_rainbow;
|
++which_rainbow;
|
||||||
++SDPtr;
|
++SDPtr;
|
||||||
}
|
}
|
||||||
std::cerr << "I think I'm at Rainbow world " << which_rainbow << std::endl;
|
std::cerr << "I think I'm at Rainbow world #" << (int) 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));
|
||||||
|
|||||||
Reference in New Issue
Block a user