- moved version checking into one common method in the util file. Now all network related checks use this common method to determine version compatibility
This commit is contained in:
parent
1353f61069
commit
59c5fd2581
|
@ -116,23 +116,9 @@ ServerLine::ServerLine( MasterServerInfo *mServerInfo, int lineIndex, const char
|
||||||
selectButton.setText(">");
|
selectButton.setText(">");
|
||||||
|
|
||||||
//printf("glestVersionString [%s] masterServerInfo->getGlestVersion() [%s]\n",glestVersionString.c_str(),masterServerInfo->getGlestVersion().c_str());
|
//printf("glestVersionString [%s] masterServerInfo->getGlestVersion() [%s]\n",glestVersionString.c_str(),masterServerInfo->getGlestVersion().c_str());
|
||||||
if(glestVersionString != masterServerInfo->getGlestVersion()) {
|
bool compatible = checkVersionComptability(glestVersionString, masterServerInfo->getGlestVersion());
|
||||||
vector<string> tokens;
|
selectButton.setEnabled(compatible);
|
||||||
vector<string> tokensServer;
|
selectButton.setEditable(compatible);
|
||||||
Tokenize(glestVersionString,tokens,".");
|
|
||||||
Tokenize(masterServerInfo->getGlestVersion(),tokensServer,".");
|
|
||||||
// only check the first 3 sections with . to compare makor versions #'s
|
|
||||||
bool compatibleWithServer = (tokens.size() >= 3 && tokensServer.size() >= 3);
|
|
||||||
for(int i = 0; compatibleWithServer == true && i < 3; ++i) {
|
|
||||||
if(tokens[i] != tokensServer[i]) {
|
|
||||||
compatibleWithServer = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(compatibleWithServer == false) {
|
|
||||||
selectButton.setEnabled(false);
|
|
||||||
selectButton.setEditable(false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
GraphicComponent::applyAllCustomProperties(containerName);
|
GraphicComponent::applyAllCustomProperties(containerName);
|
||||||
}
|
}
|
||||||
|
|
|
@ -184,7 +184,9 @@ void ClientInterface::updateLobby() {
|
||||||
SystemFlags::OutputDebug(SystemFlags::debugNetwork,"In [%s::%s Line: %d] got NetworkMessageIntro, networkMessageIntro.getGameState() = %d, versionString [%s], sessionKey = %d, playerIndex = %d\n",__FILE__,__FUNCTION__,__LINE__,networkMessageIntro.getGameState(),versionString.c_str(),sessionKey,playerIndex);
|
SystemFlags::OutputDebug(SystemFlags::debugNetwork,"In [%s::%s Line: %d] got NetworkMessageIntro, networkMessageIntro.getGameState() = %d, versionString [%s], sessionKey = %d, playerIndex = %d\n",__FILE__,__FUNCTION__,__LINE__,networkMessageIntro.getGameState(),versionString.c_str(),sessionKey,playerIndex);
|
||||||
|
|
||||||
//check consistency
|
//check consistency
|
||||||
if(networkMessageIntro.getVersionString() != getNetworkVersionString()) {
|
bool compatible = checkVersionComptability(networkMessageIntro.getVersionString(), getNetworkVersionString());
|
||||||
|
if(compatible == false) {
|
||||||
|
//if(networkMessageIntro.getVersionString() != getNetworkVersionString()) {
|
||||||
SystemFlags::OutputDebug(SystemFlags::debugNetwork,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
SystemFlags::OutputDebug(SystemFlags::debugNetwork,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
||||||
|
|
||||||
bool versionMatched = false;
|
bool versionMatched = false;
|
||||||
|
|
|
@ -368,7 +368,9 @@ void ConnectionSlot::update(bool checkForNewClients) {
|
||||||
}
|
}
|
||||||
|
|
||||||
//check consistency
|
//check consistency
|
||||||
if(networkMessageIntro.getVersionString() != getNetworkVersionString()) {
|
bool compatible = checkVersionComptability(getNetworkVersionString(), networkMessageIntro.getVersionString());
|
||||||
|
if(compatible == false) {
|
||||||
|
//if(networkMessageIntro.getVersionString() != getNetworkVersionString()) {
|
||||||
SystemFlags::OutputDebug(SystemFlags::debugNetwork,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
SystemFlags::OutputDebug(SystemFlags::debugNetwork,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
||||||
|
|
||||||
bool versionMatched = false;
|
bool versionMatched = false;
|
||||||
|
|
|
@ -180,6 +180,7 @@ int round(float f);
|
||||||
|
|
||||||
//misc
|
//misc
|
||||||
bool fileExists(const string &path);
|
bool fileExists(const string &path);
|
||||||
|
bool checkVersionComptability(string clientVersionString, string serverVersionString);
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
void deleteValues(T beginIt, T endIt){
|
void deleteValues(T beginIt, T endIt){
|
||||||
|
|
|
@ -542,4 +542,24 @@ bool fileExists(const string &path){
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool checkVersionComptability(string clientVersionString, string serverVersionString) {
|
||||||
|
bool compatible = (clientVersionString == serverVersionString);
|
||||||
|
if(compatible == false) {
|
||||||
|
vector<string> tokens;
|
||||||
|
vector<string> tokensServer;
|
||||||
|
Tokenize(clientVersionString,tokens,".");
|
||||||
|
Tokenize(serverVersionString,tokensServer,".");
|
||||||
|
|
||||||
|
// only check the first 3 sections with . to compare makor versions #'s
|
||||||
|
compatible = (tokens.size() >= 3 && tokensServer.size() >= 3);
|
||||||
|
for(int i = 0; compatible == true && i < 3; ++i) {
|
||||||
|
if(tokens[i] != tokensServer[i]) {
|
||||||
|
compatible = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return compatible;
|
||||||
|
}
|
||||||
|
|
||||||
}}//end namespace
|
}}//end namespace
|
||||||
|
|
Loading…
Reference in New Issue
Block a user