summaryrefslogtreecommitdiffhomepage
path: root/StarsEx
diff options
context:
space:
mode:
authorAki <please@ignore.pl>2024-04-01 23:54:24 +0200
committerAki <please@ignore.pl>2024-04-01 23:54:24 +0200
commit068ebfe61d0ab59a7c2c58dcc19edcc2ddacf039 (patch)
tree0fee184235980fcbb2a7557d1a10b6e48143e9c4 /StarsEx
parent3be3bfaa17773550a696ed2b756136debfe79ae2 (diff)
downloadstarshatter-068ebfe61d0ab59a7c2c58dcc19edcc2ddacf039.zip
starshatter-068ebfe61d0ab59a7c2c58dcc19edcc2ddacf039.tar.gz
starshatter-068ebfe61d0ab59a7c2c58dcc19edcc2ddacf039.tar.bz2
Each Campaign now has a specific start date and time
Diffstat (limited to 'StarsEx')
-rw-r--r--StarsEx/Campaign.cpp23
-rw-r--r--StarsEx/Campaign.h5
-rw-r--r--StarsEx/CampaignSaveGame.cpp11
3 files changed, 30 insertions, 9 deletions
diff --git a/StarsEx/Campaign.cpp b/StarsEx/Campaign.cpp
index b139787..3751db8 100644
--- a/StarsEx/Campaign.cpp
+++ b/StarsEx/Campaign.cpp
@@ -109,7 +109,7 @@ static Campaign* current_campaign = 0;
Campaign::Campaign(int id, const char* n)
: campaign_id(id), name(n), mission_id(-1), mission(0), net_mission(0),
- scripted(false), sequential(false), time(0), load_time(0),
+ scripted(false), sequential(false), time(0), load_time(0), start_time(0),
player_group(0), player_unit(0), status(CAMPAIGN_INIT), lockout(0),
loaded_from_savegame(false)
{
@@ -119,7 +119,7 @@ Campaign::Campaign(int id, const char* n)
Campaign::Campaign(int id, const char* n, const char* p)
: campaign_id(id), name(n), mission_id(-1), mission(0), net_mission(0),
- scripted(false), sequential(false), time(0), load_time(0),
+ scripted(false), sequential(false), time(0), load_time(0), start_time(0),
player_group(0), player_unit(0), status(CAMPAIGN_INIT), lockout(0),
loaded_from_savegame(false)
{
@@ -487,6 +487,9 @@ Campaign::LoadCampaign(DataLoader* loader, bool full)
orders = ContentBundle::GetInstance()->GetText(orders);
}
}
+ else if (def->name()->value() == "stardate") {
+ GetDefNumber(start_time, def, filename);
+ }
else if (def->name()->value() == "scripted") {
if (def->term() && def->term()->isBool()) {
scripted = def->term()->isBool()->value();
@@ -1880,7 +1883,7 @@ Campaign::Prep()
LoadCampaign(loader, true);
}
- starshatter::engine::SetOperationStart();
+ starshatter::engine::SetOperationStart(start_time);
starshatter::engine::SetMissionStart();
Clock::GetInstance()->ResetGameTime(load_time);
@@ -2083,6 +2086,20 @@ Campaign::SetLoadTime(long double value)
load_time = value;
}
+
+long double
+Campaign::StartTime() const
+{
+ return start_time;
+}
+
+
+void
+Campaign::SetStartTime(long double value)
+{
+ start_time = value;
+}
+
// +--------------------------------------------------------------------+
bool
diff --git a/StarsEx/Campaign.h b/StarsEx/Campaign.h
index 8b38c51..e3548fb 100644
--- a/StarsEx/Campaign.h
+++ b/StarsEx/Campaign.h
@@ -189,8 +189,10 @@ public:
int GetMissionId() const { return mission_id; }
Bitmap* GetImage(int n) { return &image[n]; }
long double GetTime() const { return time; }
- long double LoadTime() const;
+ long double LoadTime() const;
void SetLoadTime(long double value);
+ long double StartTime() const;
+ void SetStartTime(long double value);
bool InCutscene() const;
bool IsDynamic() const;
@@ -268,6 +270,7 @@ protected:
long double time;
long double load_time;
+ long double start_time;
int lockout;
};
diff --git a/StarsEx/CampaignSaveGame.cpp b/StarsEx/CampaignSaveGame.cpp
index 62f8438..0c6d655 100644
--- a/StarsEx/CampaignSaveGame.cpp
+++ b/StarsEx/CampaignSaveGame.cpp
@@ -192,8 +192,8 @@ CampaignSaveGame::Load(const char* filename)
int grp_type = 0;
int grp_id = 0;
int status = 0;
- long double baseTime = 0;
- long double time = 0;
+ long double load_time = 0;
+ long double start_time = 0;
Text unit;
Text sitrep;
Text orders;
@@ -255,11 +255,11 @@ CampaignSaveGame::Load(const char* filename)
}
else if (def->name()->value() == "basetime") {
- GetDefNumber(baseTime, def, filename);
+ GetDefNumber(start_time, def, filename);
}
else if (def->name()->value() == "time") {
- GetDefNumber(time, def, filename);
+ GetDefNumber(load_time, def, filename);
}
else if (def->name()->value() == "sitrep") {
@@ -472,7 +472,8 @@ CampaignSaveGame::Load(const char* filename)
campaign->SetStatus(status);
if (sitrep.length()) campaign->SetSituation(sitrep);
if (orders.length()) campaign->SetOrders(orders);
- campaign->SetLoadTime(time);
+ campaign->SetLoadTime(load_time);
+ campaign->SetStartTime(start_time);
campaign->LockoutEvents(3600);
campaign->Start();