diff --git a/Version.txt b/Version.txt index 8890a384f..049c282e8 100644 --- a/Version.txt +++ b/Version.txt @@ -13,8 +13,7 @@ SET(C4ENGINEID "${C4PROJECT_TLD}.${C4PROJECT_DOMAIN}.${C4ENGINENICK}") SET(C4XVER1 5) SET(C4XVER2 3) -SET(C4XVER3 2) -SET(C4XVER4 30) +SET(C4XVER3 90) # C4VERSIONBUILDNAME should be witty and somewhat frequently changing # for alpha and beta releases, and meaningful and stable for stable releases. diff --git a/planet/System.ocg/LanguageDE.txt b/planet/System.ocg/LanguageDE.txt index 24ff173f3..658dc08e6 100644 --- a/planet/System.ocg/LanguageDE.txt +++ b/planet/System.ocg/LanguageDE.txt @@ -841,7 +841,7 @@ IDS_PRC_NOMISSIONACCESS=Noch kein Zugang zu dieser Mission. IDS_PRC_NOMUSIC=Musik nicht verfügbar. IDS_PRC_NONETREPLAY=Aufnahmen können nicht im Netzwerkmodus wiedergegeben werden. IDS_PRC_NOREPLPLRCLR=Keine passende Ersatzfarbe für Spieler %s gefunden. Benutze Standardfarbe. -IDS_PRC_NOREQC4X=Dieses Szenario benötigt die Clonk Engine Version %d.%d%d.%d oder höher. +IDS_PRC_NOREQC4X=Dieses Szenario benötigt die Clonk Engine Version %d.%d.%d oder höher. IDS_PRC_NOSND=Fehler bei Sound-Datei. IDS_PRC_NOSYSMATS=System-Materialien nicht vorhanden. IDS_PRC_OBJECTSLOADED=%d Objekte platziert. diff --git a/planet/System.ocg/LanguageUS.txt b/planet/System.ocg/LanguageUS.txt index cb572446f..838781d20 100644 --- a/planet/System.ocg/LanguageUS.txt +++ b/planet/System.ocg/LanguageUS.txt @@ -841,7 +841,7 @@ IDS_PRC_NOMISSIONACCESS=Access to this mission not yet granted. IDS_PRC_NOMUSIC=Music not available. IDS_PRC_NONETREPLAY=Cannot play back records while in network mode. IDS_PRC_NOREPLPLRCLR=Couldn't find a suitable replacement player color for player %s. Using default. -IDS_PRC_NOREQC4X=This scenario can only be played with engine version %d.%d%d.%d or higher. +IDS_PRC_NOREQC4X=This scenario can only be played with engine version %d.%d.%d or higher. IDS_PRC_NOSND=Error at sound file. IDS_PRC_NOSYSMATS=System materials missing. IDS_PRC_OBJECTSLOADED=%d objects positioned. diff --git a/src/C4Version.h.in b/src/C4Version.h.in index 98da0caa0..fceeccacb 100644 --- a/src/C4Version.h.in +++ b/src/C4Version.h.in @@ -36,7 +36,6 @@ #define C4XVER1 @C4XVER1@ #define C4XVER2 @C4XVER2@ #define C4XVER3 @C4XVER3@ -#define C4XVER4 @C4XVER4@ #define C4VERSIONBUILDNAME "@C4VERSIONBUILDNAME@" #define C4VERSIONEXTRA "@C4VERSIONEXTRA@" #define C4REVISION "@C4REVISION@" @@ -53,22 +52,14 @@ #define C4ENGINEINFOLONG "@C4ENGINENAME@@C4VERSIONBUILDNAME@@C4VERSIONEXTRA@" #define C4ENGINECAPTION "@C4ENGINENAME@@C4VERSIONBUILDNAME@" -#if C4XVER4 < 10 -#define C4XVER4S "00" C4XVERTOC4XVERS(C4XVER4) -#elif C4XVER4 < 100 -#define C4XVER4S "0" C4XVERTOC4XVERS(C4XVER4) -#else -#define C4XVER4S C4XVERTOC4XVERS(C4XVER4) -#endif - #define C4XVERTOC4XVERS(s) C4XVERTOC4XVERS2(s) #define C4XVERTOC4XVERS2(s) #s -// if C4XVER3 >= 90, this is a pre-release version; add VCS revision instead of build number +// if C4XVER3 >= 90, this is a pre-release version; add VCS revision #if C4XVER3 >= 90 #define C4VERSION C4XVERTOC4XVERS(C4XVER1) "." C4XVERTOC4XVERS(C4XVER2) "." C4XVERTOC4XVERS(C4XVER3) " [" C4REVISION "]" C4VERSIONEXTRA C4BUILDOPT #else -#define C4VERSION C4XVERTOC4XVERS(C4XVER1) "." C4XVERTOC4XVERS(C4XVER2) "." C4XVERTOC4XVERS(C4XVER3) " [" C4XVER4S "]" C4VERSIONEXTRA C4BUILDOPT +#define C4VERSION C4XVERTOC4XVERS(C4XVER1) "." C4XVERTOC4XVERS(C4XVER2) "." C4XVERTOC4XVERS(C4XVER3) C4VERSIONEXTRA C4BUILDOPT #endif #endif diff --git a/src/c4group/Resource.rc b/src/c4group/Resource.rc index f760d95d5..46cf853d5 100644 --- a/src/c4group/Resource.rc +++ b/src/c4group/Resource.rc @@ -14,8 +14,8 @@ LANGUAGE LANG_GERMAN, SUBLANG_GERMAN // VS_VERSION_INFO VERSIONINFO - FILEVERSION C4XVER1,C4XVER2,C4XVER3,C4XVER4 - PRODUCTVERSION C4XVER1,C4XVER2,C4XVER3,C4XVER4 + FILEVERSION C4XVER1,C4XVER2,C4XVER3 + PRODUCTVERSION C4XVER1,C4XVER2,C4XVER3 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L diff --git a/src/control/C4GameSave.cpp b/src/control/C4GameSave.cpp index d951444b6..f7437bf9b 100644 --- a/src/control/C4GameSave.cpp +++ b/src/control/C4GameSave.cpp @@ -68,7 +68,7 @@ bool C4GameSave::SaveCore() rC4S = Game.C4S; // Always mark current engine version rC4S.Head.C4XVer[0]=C4XVER1; rC4S.Head.C4XVer[1]=C4XVER2; - rC4S.Head.C4XVer[2]=C4XVER3; rC4S.Head.C4XVer[3]=C4XVER4; + rC4S.Head.C4XVer[2]=C4XVER3; // Some flags are not to be set for initial settings: // They depend on whether specific runtime data is present, which may simply not be stored into initial // saves, because they rely on any data present and up-to-date within the scenario! @@ -303,7 +303,7 @@ void C4GameSave::WriteDescGameTime(StdStrBuf &sBuf) void C4GameSave::WriteDescEngine(StdStrBuf &sBuf) { - char ver[5]; sprintf(ver, "%03d", (int) C4XVER4); + char ver[32]; sprintf(ver, "%d.%d.%d", (int)C4XVER1, (int)C4XVER2, (int)C4XVER3); sBuf.AppendFormat(LoadResStr("IDS_DESC_VERSION"), ver); WriteDescLineFeed(sBuf); } @@ -545,7 +545,7 @@ void C4GameSaveRecord::AdjustCore(C4Scenario &rC4S) rC4S.Head.Icon=29; // default record title char buf[1024 + 1]; - sprintf(buf, "%03i %s [%d]", iNum, Game.ScenarioTitle.getData(), (int) C4XVER4); + sprintf(buf, "%03i %s [%d.%d.%d]", iNum, Game.ScenarioTitle.getData(), (int)C4XVER1, (int)C4XVER2, (int)C4XVER3); SCopy(buf, rC4S.Head.Title, C4MaxTitle); } diff --git a/src/game/C4Game.cpp b/src/game/C4Game.cpp index 429f56dd3..a566833c0 100644 --- a/src/game/C4Game.cpp +++ b/src/game/C4Game.cpp @@ -146,7 +146,7 @@ bool C4Game::InitDefs() if (!iDefs) { LogFatal(LoadResStr("IDS_PRC_NODEFS")); return false; } // Check def engine version (should be done immediately on def load) - iDefs=::Definitions.CheckEngineVersion(C4XVER1,C4XVER2,C4XVER3,C4XVER4); + iDefs=::Definitions.CheckEngineVersion(C4XVER1,C4XVER2,C4XVER3); if (iDefs>0) { LogF(LoadResStr("IDS_PRC_DEFSINVC4X"),iDefs); } // Check for unmet requirements @@ -207,9 +207,9 @@ bool C4Game::OpenScenario() { LogFatal(LoadResStr("IDS_PRC_FILEINVALID")); return false; } // Check minimum engine version - if (CompareVersion(C4S.Head.C4XVer[0],C4S.Head.C4XVer[1],C4S.Head.C4XVer[2],C4S.Head.C4XVer[3]) > 0) + if (CompareVersion(C4S.Head.C4XVer[0],C4S.Head.C4XVer[1],C4S.Head.C4XVer[2]) > 0) { - LogFatal(FormatString(LoadResStr("IDS_PRC_NOREQC4X"), C4S.Head.C4XVer[0],C4S.Head.C4XVer[1],C4S.Head.C4XVer[2],C4S.Head.C4XVer[3]).getData()); + LogFatal(FormatString(LoadResStr("IDS_PRC_NOREQC4X"), C4S.Head.C4XVer[0],C4S.Head.C4XVer[1],C4S.Head.C4XVer[2]).getData()); return false; } diff --git a/src/game/C4GameVersion.h b/src/game/C4GameVersion.h index f3878a537..07c1062bc 100644 --- a/src/game/C4GameVersion.h +++ b/src/game/C4GameVersion.h @@ -28,14 +28,14 @@ struct C4GameVersion ValidatedStdCopyStrBuf sEngineName; // status only - not used for comparison int32_t iVer[4]; - C4GameVersion(const char *szEngine=C4ENGINENAME, int32_t iVer1=C4XVER1, int32_t iVer2=C4XVER2, int32_t iVer3=C4XVER3, int32_t iVer4=C4XVER4) - { Set(szEngine, iVer1, iVer2, iVer3, iVer4); } - void Set(const char *szEngine=C4ENGINENAME, int32_t iVer1=C4XVER1, int32_t iVer2=C4XVER2, int32_t iVer3=C4XVER3, int32_t iVer4=C4XVER4) - { sEngineName.CopyValidated(szEngine); iVer[0]=iVer1; iVer[1]=iVer2; iVer[2]=iVer3; iVer[3]=iVer4; } + C4GameVersion(const char *szEngine=C4ENGINENAME, int32_t iVer1=C4XVER1, int32_t iVer2=C4XVER2, int32_t iVer3=C4XVER3) + { Set(szEngine, iVer1, iVer2, iVer3); } + void Set(const char *szEngine=C4ENGINENAME, int32_t iVer1=C4XVER1, int32_t iVer2=C4XVER2, int32_t iVer3=C4XVER3) + { sEngineName.CopyValidated(szEngine); iVer[0]=iVer1; iVer[1]=iVer2; iVer[2]=iVer3; } StdStrBuf GetString() const - { return FormatString("%s %d.%d.%d [%03d]", sEngineName.getData(), (int)iVer[0], (int)iVer[1], (int)iVer[2], (int)iVer[3]); } + { return FormatString("%s %d.%d.%d", sEngineName.getData(), (int)iVer[0], (int)iVer[1], (int)iVer[2]); } bool operator == (const C4GameVersion &rCmp) const - { return /*sEngineName==rCmp.sEngineName &&*/ iVer[0]==rCmp.iVer[0] && iVer[1]==rCmp.iVer[1] && iVer[2]==rCmp.iVer[2] && iVer[3]==rCmp.iVer[3]; } + { return /*sEngineName==rCmp.sEngineName &&*/ iVer[0]==rCmp.iVer[0] && iVer[1]==rCmp.iVer[1] && iVer[2]==rCmp.iVer[2]; } void CompileFunc(StdCompiler *pComp, bool fEngineName) { @@ -46,18 +46,17 @@ struct C4GameVersion } else if (pComp->isCompiler()) sEngineName = ""; - pComp->Value(mkArrayAdapt(iVer,4,0));; + pComp->Value(mkArrayAdapt(iVer,3,0));; } }; // helper -inline int CompareVersion(int iVer1, int iVer2, int iVer3, int iVer4, - int iRVer1 = C4XVER1, int iRVer2 = C4XVER2, int iRVer3 = C4XVER3, int iRVer4 = C4XVER4) +inline int CompareVersion(int iVer1, int iVer2, int iVer3, + int iRVer1 = C4XVER1, int iRVer2 = C4XVER2, int iRVer3 = C4XVER3) { if (iVer1 > iRVer1) return 1; if (iVer1 < iRVer1) return -1; if (iVer2 > iRVer2) return 1; if (iVer2 < iRVer2) return -1; if (iVer3 > iRVer3) return 1; if (iVer3 < iRVer3) return -1; - if (iVer4 > iRVer4) return 1; if (iVer4 < iRVer4) return -1; return 0; } diff --git a/src/gui/C4StartupNetDlg.cpp b/src/gui/C4StartupNetDlg.cpp index 6ce721f2c..1b5d53741 100644 --- a/src/gui/C4StartupNetDlg.cpp +++ b/src/gui/C4StartupNetDlg.cpp @@ -871,7 +871,7 @@ void C4StartupNetDlg::UpdateMasterserver() else { pMasterserverClient = new C4StartupNetListEntry(pGameSelList, NULL, this); - StdStrBuf strVersion; strVersion.Format("%d.%d.%d.%d", C4XVER1, C4XVER2, C4XVER3, C4XVER4); + StdStrBuf strVersion; strVersion.Format("%d.%d.%d", C4XVER1, C4XVER2, C4XVER3); StdStrBuf strQuery; strQuery.Format("%s?version=%s&platform=%s", Config.Network.GetLeagueServerAddress(), strVersion.getData(), C4_OS); pMasterserverClient->SetRefQuery(strQuery.getData(), C4StartupNetListEntry::NRQT_Masterserver); } diff --git a/src/landscape/C4Scenario.cpp b/src/landscape/C4Scenario.cpp index c2d364e90..dc03e98dd 100644 --- a/src/landscape/C4Scenario.cpp +++ b/src/landscape/C4Scenario.cpp @@ -147,7 +147,7 @@ void C4SHead::Default() Origin.Clear(); Icon=18; *Title = *Loader = *Font = *Engine = *MissionAccess = '\0'; - C4XVer[0] = C4XVer[1] = C4XVer[2] = C4XVer[3] = 0; + C4XVer[0] = C4XVer[1] = C4XVer[2] = 0; Difficulty = StartupPlayerCount = RandomSeed = 0; SaveGame = Replay = NoInitialize = false; Film = 0; diff --git a/src/landscape/C4Scenario.h b/src/landscape/C4Scenario.h index 2b25d5f7b..4745522cb 100644 --- a/src/landscape/C4Scenario.h +++ b/src/landscape/C4Scenario.h @@ -68,7 +68,7 @@ enum C4SFilmMode class C4SHead { public: - int32_t C4XVer[4]; + int32_t C4XVer[3]; char Title[C4MaxTitle+1]; char Loader[C4MaxTitle+1]; char Font[C4MaxTitle+1]; // scenario specific font; may be 0 diff --git a/src/network/C4Network2.cpp b/src/network/C4Network2.cpp index b2a7ea5d9..f1c1ebc53 100644 --- a/src/network/C4Network2.cpp +++ b/src/network/C4Network2.cpp @@ -1073,9 +1073,9 @@ void C4Network2::HandleConn(const C4PacketConn &Pkt, C4Network2IOConnection *pCo // check engine version bool fWrongPassword = false; - if (Pkt.getVer() != C4XVER4) + if (Pkt.getVer() != C4XVER1*10000 + C4XVER2*100 + C4XVER3) { - reply.Format("wrong engine (%d, I have %d)", Pkt.getVer(), C4XVER4); + reply.Format("wrong engine (%d.%d.%d, I have %d.%d.%d)", Pkt.getVer()/10000, Pkt.getVer()/100%100, Pkt.getVer()%100, C4XVER1, C4XVER2, C4XVER3); fOK = false; } else diff --git a/src/network/C4Packet2.cpp b/src/network/C4Packet2.cpp index f9889b5fd..f8ad1d0e6 100644 --- a/src/network/C4Packet2.cpp +++ b/src/network/C4Packet2.cpp @@ -408,12 +408,12 @@ void C4PacketList::CompileFunc(StdCompiler *pComp) // *** C4PacketConn C4PacketConn::C4PacketConn() - : iVer(C4XVER4) + : iVer(C4XVER1*10000 + C4XVER2*100 + C4XVER3) { } C4PacketConn::C4PacketConn(const C4ClientCore &nCCore, uint32_t inConnID, const char *szPassword) - : iVer(C4XVER4), + : iVer(C4XVER1*10000 + C4XVER2*100 + C4XVER3), iConnID(inConnID), CCore(nCCore), Password(szPassword) diff --git a/src/object/C4Def.cpp b/src/object/C4Def.cpp index efc24b8b2..2f23482eb 100644 --- a/src/object/C4Def.cpp +++ b/src/object/C4Def.cpp @@ -38,7 +38,7 @@ void C4Def::DefaultDefCore() { - rC4XVer[0]=rC4XVer[1]=rC4XVer[2]=rC4XVer[3]=0; + rC4XVer[0]=rC4XVer[1]=rC4XVer[2]=0; RequireDef.Clear(); Shape.Default(); Entrance.Default(); @@ -105,7 +105,7 @@ bool C4Def::LoadDefCore(C4Group &hGroup) Source.Clear(); // Let's be bold: Rewrite, with current version - /*rC4XVer[0] = C4XVER1; rC4XVer[1] = C4XVER2; rC4XVer[2] = C4XVER3; rC4XVer[3] = C4XVER4; + /*rC4XVer[0] = C4XVER1; rC4XVer[1] = C4XVER2; rC4XVer[2] = C4XVER3; hGroup.Rename(C4CFN_DefCore, C4CFN_DefCore ".old"); Save(hGroup);*/ diff --git a/src/object/C4Def.h b/src/object/C4Def.h index 364a4f963..086f7145f 100644 --- a/src/object/C4Def.h +++ b/src/object/C4Def.h @@ -106,7 +106,7 @@ class C4Def: public C4PropListStatic { public: C4ID id; - int32_t rC4XVer[4]; + int32_t rC4XVer[3]; C4IDList RequireDef; C4Shape Shape; C4Rect Entrance; diff --git a/src/object/C4DefList.cpp b/src/object/C4DefList.cpp index e7ecec85c..d55cac6a9 100644 --- a/src/object/C4DefList.cpp +++ b/src/object/C4DefList.cpp @@ -290,14 +290,14 @@ int32_t C4DefList::RemoveTemporary() return removed; } -int32_t C4DefList::CheckEngineVersion(int32_t ver1, int32_t ver2, int32_t ver3, int32_t ver4) +int32_t C4DefList::CheckEngineVersion(int32_t ver1, int32_t ver2, int32_t ver3) { int32_t rcount=0; C4Def *cdef,*prev,*next; for (cdef=FirstDef,prev=NULL; cdef; cdef=next) { next=cdef->Next; - if (CompareVersion(cdef->rC4XVer[0],cdef->rC4XVer[1],cdef->rC4XVer[2],cdef->rC4XVer[3],ver1,ver2,ver3,ver4) > 0) + if (CompareVersion(cdef->rC4XVer[0],cdef->rC4XVer[1],cdef->rC4XVer[2],ver1,ver2,ver3) > 0) { if (prev) prev->Next=cdef->Next; else FirstDef=cdef->Next; diff --git a/src/object/C4DefList.h b/src/object/C4DefList.h index bfbb75416..037c675ff 100644 --- a/src/object/C4DefList.h +++ b/src/object/C4DefList.h @@ -58,7 +58,7 @@ public: int32_t GetDefCount(); int32_t GetIndex(C4ID id); int32_t RemoveTemporary(); - int32_t CheckEngineVersion(int32_t ver1, int32_t ver2, int32_t ver3, int32_t ver4); + int32_t CheckEngineVersion(int32_t ver1, int32_t ver2, int32_t ver3); int32_t CheckRequireDef(); void Draw(C4ID id, C4Facet &cgo, bool fSelected, int32_t iColor); void Remove(C4Def *def); diff --git a/src/res/Info.plist b/src/res/Info.plist index dc6d15749..2abe622c1 100644 --- a/src/res/Info.plist +++ b/src/res/Info.plist @@ -185,6 +185,6 @@ CFBundleShortVersionString ${C4VERSION} CFBundleVersion - ${C4XVER4} + ${C4XVER1}.${C4XVER2}.${C4XVER3} diff --git a/src/res/engine.rc b/src/res/engine.rc index 950409e46..dd0db85d4 100644 --- a/src/res/engine.rc +++ b/src/res/engine.rc @@ -41,8 +41,8 @@ __GDF_XML DATA "WindowsGamesExplorer.xml" // VS_VERSION_INFO VERSIONINFO - FILEVERSION C4XVER1,C4XVER2,C4XVER3,C4XVER4 - PRODUCTVERSION C4XVER1,C4XVER2,C4XVER3,C4XVER4 + FILEVERSION C4XVER1,C4XVER2,C4XVER3 + PRODUCTVERSION C4XVER1,C4XVER2,C4XVER3 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L diff --git a/src/script/C4Script.cpp b/src/script/C4Script.cpp index 2666e1bda..c85e5faac 100644 --- a/src/script/C4Script.cpp +++ b/src/script/C4Script.cpp @@ -573,7 +573,6 @@ C4ScriptConstDef C4ScriptConstMap[]= { "C4X_Ver1", C4V_Int, C4XVER1}, { "C4X_Ver2", C4V_Int, C4XVER2}, { "C4X_Ver3", C4V_Int, C4XVER3}, - { "C4X_Ver4", C4V_Int, C4XVER4}, { NULL, C4V_Nil, 0} };