diff options
author | Aki <please@ignore.pl> | 2024-04-01 23:54:24 +0200 |
---|---|---|
committer | Aki <please@ignore.pl> | 2024-04-01 23:54:24 +0200 |
commit | 068ebfe61d0ab59a7c2c58dcc19edcc2ddacf039 (patch) | |
tree | 0fee184235980fcbb2a7557d1a10b6e48143e9c4 /StarsEx | |
parent | 3be3bfaa17773550a696ed2b756136debfe79ae2 (diff) | |
download | starshatter-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.cpp | 23 | ||||
-rw-r--r-- | StarsEx/Campaign.h | 5 | ||||
-rw-r--r-- | StarsEx/CampaignSaveGame.cpp | 11 |
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(); |