Browse Source

- reordered files in cmake so files with long compile times will be
compiled first.
- changed format of modSettings.json, VCMI should properly update file
on the first run.
- implemented property "defaultTavern" that acts as default value for
"tavern" entry in hero class and town formats.

Ivan Savenko 12 years ago
parent
commit
c4716d0a9a

+ 2 - 2
AI/VCAI/CMakeLists.txt

@@ -4,10 +4,10 @@ cmake_minimum_required(VERSION 2.6)
 include_directories(${Boost_INCLUDE_DIRS} ${CMAKE_HOME_DIRECTORY} ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_HOME_DIRECTORY}/lib ${CMAKE_HOME_DIRECTORY}/AI/FuzzyLite)
 
 set(VCAI_SRCS
-        AIUtility.cpp
+        VCAI.cpp
         Goals.cpp
+        AIUtility.cpp
         main.cpp
-        VCAI.cpp
         Fuzzy.cpp
 )
 

+ 4 - 4
CMakeLists.txt

@@ -136,14 +136,14 @@ add_definitions(-DM_LIB_DIR="${CMAKE_INSTALL_PREFIX}/${LIB_DIR}")
 SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/vcmi")
 SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
 
+if (ENABLE_ERM)
+        add_subdirectory(scripting/erm)
+endif()
 add_subdirectory(lib)
-add_subdirectory(lib/minizip)
 add_subdirectory(client)
+add_subdirectory(lib/minizip)
 add_subdirectory(server)
 add_subdirectory(AI)
-if (ENABLE_ERM)
-	add_subdirectory(scripting/erm)
-endif()
 if (ENABLE_EDITOR)
 	add_subdirectory(editor)
 endif()

+ 0 - 2
Mods/WoG/config/wog/creatures.json

@@ -716,7 +716,6 @@
 			"defend": "BGORDFND.wav",
 			"killed": "BGORKILL.wav",
 			"move": "BGORMOVE.wav",
-			"shoot": "BGORSHOT.wav",
 			"wince": "BGORWNCE.wav"
 		}
 	},
@@ -1488,7 +1487,6 @@
 			"defend": "BGORDFND.wav",
 			"killed": "BGORKILL.wav",
 			"move": "BGORMOVE.wav",
-			"shoot": "BGORSHOT.wav",
 			"wince": "BGORWNCE.wav"
 		}
 	},

+ 7 - 6
client/CMakeLists.txt

@@ -6,9 +6,15 @@ include_directories(${SDL_INCLUDE_DIR} ${SDLIMAGE_INCLUDE_DIR} ${SDLMIXER_INCLUD
 include_directories(${Boost_INCLUDE_DIRS} ${ZLIB_INCLUDE_DIR} ${FFMPEG_INCLUDE_DIRS})
 
 set(client_SRCS
+        CPreGame.cpp
+        Client.cpp
+        CPlayerInterface.cpp
+        CMT.cpp
+        GUIClasses.cpp
+        battle/CBattleInterface.cpp
+
         ../CCallback.cpp
         battle/CBattleAnimations.cpp
-        battle/CBattleInterface.cpp
         battle/CBattleInterfaceClasses.cpp
         battle/CCreatureAnimation.cpp
         gui/CGuiHandler.cpp
@@ -28,17 +34,12 @@ set(client_SRCS
         CGameInfo.cpp
         CHeroWindow.cpp
         CKingdomInterface.cpp
-        Client.cpp
         CMessage.cpp
-        CMT.cpp
         CMusicHandler.cpp
-        CPlayerInterface.cpp
-        CPreGame.cpp
         CSpellWindow.cpp
         CVideoHandler.cpp
         CQuestLog.cpp
         Graphics.cpp
-        GUIClasses.cpp
         mapHandler.cpp
         NetPacksClient.cpp
 )

+ 1 - 0
config/factions/castle.json

@@ -116,6 +116,7 @@
 			},
 
 			"musicTheme" : "music/CstleTown",
+			"defaultTavern" : 5,
 
 			"townBackground": "TBCSBACK.bmp",
 			"guildWindow": "TPMAGECS.bmp",

+ 1 - 0
config/factions/conflux.json

@@ -120,6 +120,7 @@
 			},
 
 			"musicTheme" : "music/ElemTown",
+			"defaultTavern" : 5,
 
 			"townBackground": "TBELBACK.bmp",
 			"guildWindow": "TPMAGEEL.bmp",

+ 1 - 0
config/factions/dungeon.json

@@ -115,6 +115,7 @@
 			},
 
 			"musicTheme" : "music/Dungeon",
+			"defaultTavern" : 5,
 
 			"townBackground": "TBDNBACK.bmp",
 			"guildWindow": "TPMAGEDN.bmp",

+ 1 - 0
config/factions/fortress.json

@@ -116,6 +116,7 @@
 			},
 
 			"musicTheme" : "music/FortressTown",
+			"defaultTavern" : 5,
 
 			"townBackground": "TBFRBACK.bmp",
 			"guildWindow": "TPMAGEFR.bmp",

+ 1 - 0
config/factions/inferno.json

@@ -116,6 +116,7 @@
 			},
 
 			"musicTheme" : "music/InfernoTown",
+			"defaultTavern" : 5,
 
 			"townBackground": "TBINBACK.bmp",
 			"guildWindow": "TPMAGEIN.bmp",

+ 1 - 0
config/factions/necropolis.json

@@ -120,6 +120,7 @@
 			},
 
 			"musicTheme" : "music/NecroTown",
+			"defaultTavern" : 5,
 
 			"townBackground": "TBNCBACK.bmp",
 			"guildWindow": "TPMAGENC.bmp",

+ 1 - 0
config/factions/rampart.json

@@ -120,6 +120,7 @@
 			},
 
 			"musicTheme" : "music/Rampart",
+			"defaultTavern" : 5,
 
 			"townBackground": "TBRMBACK.bmp",
 			"guildWindow": "TPMAGERM.bmp",

+ 1 - 0
config/factions/stronghold.json

@@ -114,6 +114,7 @@
 			},
 
 			"musicTheme" : "music/Stronghold",
+			"defaultTavern" : 5,
 
 			"townBackground": "TBSTBACK.bmp",
 			"guildWindow": "TPMAGEST.bmp",

+ 1 - 0
config/factions/tower.json

@@ -115,6 +115,7 @@
 			},
 
 			"musicTheme" : "music/TowerTown",
+			"defaultTavern" : 5,
 
 			"townBackground": "TBTWBACK.bmp",
 			"guildWindow": "TPMAGETW.bmp",

+ 18 - 0
config/heroClasses.json

@@ -3,6 +3,7 @@
 	{
 		"index": 0,
 		"faction" : "castle",
+		"defaultTavern" : 5,
 		"animation":
 		{
 			"battle" : { "male" : "CH00.DEF",  "female" : "CH01.DEF" },
@@ -13,6 +14,7 @@
 	{
 		"index": 1,
 		"faction" : "castle",
+		"defaultTavern" : 5,
 		"animation":
 		{
 			"battle" : { "male" : "CH00.DEF",  "female" : "CH01.DEF" },
@@ -23,6 +25,7 @@
 	{
 		"index": 2,
 		"faction" : "rampart",
+		"defaultTavern" : 5,
 		"animation":
 		{
 			"battle" : { "male" : "CH02.DEF",  "female" : "CH03.DEF" },
@@ -33,6 +36,7 @@
 	{
 		"index": 3,
 		"faction" : "rampart",
+		"defaultTavern" : 5,
 		"animation":
 		{
 			"battle" : { "male" : "CH02.DEF",  "female" : "CH03.DEF" },
@@ -43,6 +47,7 @@
 	{
 		"index": 4,
 		"faction" : "tower",
+		"defaultTavern" : 5,
 		"animation":
 		{
 			"battle" : { "male" : "CH05.DEF",  "female" : "CH04.DEF" },
@@ -53,6 +58,7 @@
 	{
 		"index": 5,
 		"faction" : "tower",
+		"defaultTavern" : 5,
 		"animation":
 		{
 			"battle" : { "male" : "CH05.DEF",  "female" : "CH04.DEF" },
@@ -63,6 +69,7 @@
 	{
 		"index": 6,
 		"faction" : "inferno",
+		"defaultTavern" : 5,
 		"animation":
 		{
 			"battle" : { "male" : "CH06.DEF",  "female" : "CH07.DEF" },
@@ -73,6 +80,7 @@
 	{
 		"index": 7,
 		"faction" : "inferno",
+		"defaultTavern" : 5,
 		"animation":
 		{
 			"battle" : { "male" : "CH06.DEF",  "female" : "CH07.DEF" },
@@ -83,6 +91,7 @@
 	{
 		"index": 8,
 		"faction" : "necropolis",
+		"defaultTavern" : 5,
 		"animation":
 		{
 			"battle" : { "male" : "CH08.DEF",  "female" : "CH09.DEF" },
@@ -93,6 +102,7 @@
 	{
 		"index": 9,
 		"faction" : "necropolis",
+		"defaultTavern" : 5,
 		"animation":
 		{
 			"battle" : { "male" : "CH08.DEF",  "female" : "CH09.DEF" },
@@ -103,6 +113,7 @@
 	{
 		"index": 10,
 		"faction" : "dungeon",
+		"defaultTavern" : 5,
 		"animation":
 		{
 			"battle" : { "male" : "CH010.DEF", "female" : "CH11.DEF" },
@@ -113,6 +124,7 @@
 	{
 		"index": 11,
 		"faction" : "dungeon",
+		"defaultTavern" : 5,
 		"animation":
 		{
 			"battle" : { "male" : "CH010.DEF", "female" : "CH11.DEF" },
@@ -123,6 +135,7 @@
 	{
 		"index": 12,
 		"faction" : "stronghold",
+		"defaultTavern" : 5,
 		"animation":
 		{
 			"battle" : { "male" : "CH013.DEF", "female" : "CH012.DEF" },
@@ -133,6 +146,7 @@
 	{
 		"index": 13,
 		"faction" : "stronghold",
+		"defaultTavern" : 5,
 		"animation":
 		{
 			"battle" : { "male" : "CH013.DEF", "female" : "CH012.DEF" },
@@ -143,6 +157,7 @@
 	{
 		"index": 14,
 		"faction" : "fortress",
+		"defaultTavern" : 5,
 		"animation":
 		{
 			"battle" : { "male" : "CH014.DEF", "female" : "CH015.DEF" },
@@ -153,6 +168,7 @@
 	{
 		"index": 15,
 		"faction" : "fortress",
+		"defaultTavern" : 5,
 		"animation":
 		{
 			"battle" : { "male" : "CH014.DEF", "female" : "CH015.DEF" },
@@ -163,6 +179,7 @@
 	{
 		"index": 16,
 		"faction" : "conflux",
+		"defaultTavern" : 5,
 		"animation":
 		{
 			"battle" : { "male" : "CH16.DEF",  "female" : "CH17.DEF" },
@@ -173,6 +190,7 @@
 	{
 		"index": 17,
 		"faction" : "conflux",
+		"defaultTavern" : 5,
 		"animation":
 		{
 			"battle" : { "male" : "CH16.DEF",  "female" : "CH17.DEF" },

+ 8 - 2
config/schemas/faction.json

@@ -109,7 +109,7 @@
 			"additionalProperties" : false,
 			"required" : [
 				"adventureMap", "buildingsIcons", "buildings", "creatures", "guildWindow", "names",
-				"hallBackground", "hallSlots", "horde", "mageGuild", "moatDamage",
+				"hallBackground", "hallSlots", "horde", "mageGuild", "moatDamage", "defaultTavern",
 				"musicTheme", "siege", "structures", "townBackground", "warMachine"
 			],
 			"description": "town",
@@ -158,12 +158,18 @@
 					"additionalProperties" : {
 						"type" : "number"
 					}
+				},				
+				"defaultTavern" : {
+					"type" : "number",
+					"description" : "Default chance for hero to appear in tavern, used only when value vas not set in tavern field",
+					"minimum" : 0
 				},
 				"tavern" : {
 					"type" : "object",
 					"description" : "Hero classes available in tavern. Value indicates chance for hero of this class to appear",
 					"additionalProperties" : {
-						"type" : "number"
+						"type" : "number",
+						"minimum" : 0
 					}
 				},
 				"names" : {

+ 9 - 2
config/schemas/heroClass.json

@@ -5,7 +5,7 @@
 	"description" : "Format used to define classes of heroes in VCMI",
 	"required" : [
 		"animation", "faction", "highLevelChance", "lowLevelChance",
-		"name", "primarySkills", "secondarySkills", "tavern"
+		"name", "primarySkills", "secondarySkills", "tavern", "defaultTavern"
 	],
 
 	"additionalProperties" : false,
@@ -94,11 +94,18 @@
 				"type":"number"
 			}
 		},
+		"defaultTavern" : {
+			"type" : "number",
+			"description" : "Default chance for hero to appear in tavern, used only when value vas not set in tavern field",
+			"minimum" : 0
+		},
+
 		"tavern": {
 			"type":"object",
 			"description": "Chance for this hero to appear in tavern of this factions. Reversed version of field \"tavern\" from town format",
 			"additionalProperties":{
-				"type":"number"
+				"type":"number",
+				"minimum" : 0
 			}
 		}
 	}

+ 1 - 1
debian/control

@@ -2,7 +2,7 @@ Source: vcmi
 Section: games
 Priority: optional
 Maintainer: Ivan Savenko <[email protected]>
-Build-Depends: debhelper (>= 8), cmake, libsdl-image1.2-dev, libsdl-ttf2.0-dev, libsdl-mixer1.2-dev (>= 1.2.8), zlib1g-dev, libavformat-dev, libswscale-dev, libboost-dev (>=1.46), libboost-program-options-dev (>=1.46), libboost-filesystem-dev (>=1.46), libboost-system-dev (>=1.46), libboost-thread-dev (>=1.46)
+Build-Depends: debhelper (>= 8), cmake, libsdl-image1.2-dev, libsdl-ttf2.0-dev, libsdl-mixer1.2-dev (>= 1.2.8), zlib1g-dev, libavformat-dev, libswscale-dev, libboost-dev (>=1.48), libboost-program-options-dev (>=1.48), libboost-filesystem-dev (>=1.48), libboost-system-dev (>=1.48), libboost-locale-dev (>=1.48), libboost-thread-dev (>=1.48)
 Standards-Version: 3.9.1
 Homepage: http://vcmi.eu
 

+ 9 - 3
launcher/modManager/cmodlist.cpp

@@ -28,7 +28,7 @@ bool CModEntry::compareVersions(QString lesser, QString greater)
 	return false;
 }
 
-CModEntry::CModEntry(QVariantMap repository, QVariantMap localData, QVariant modSettings, QString modname):
+CModEntry::CModEntry(QVariantMap repository, QVariantMap localData, QVariantMap modSettings, QString modname):
     repository(repository),
     localData(localData),
     modSettings(modSettings),
@@ -41,7 +41,7 @@ bool CModEntry::isEnabled() const
 	if (!isInstalled())
 		return false;
 
-	return modSettings.toBool();
+	return modSettings["active"].toBool();
 }
 
 bool CModEntry::isDisabled() const
@@ -140,7 +140,13 @@ CModEntry CModList::getMod(QString modname) const
 
 	QVariantMap repo;
 	QVariantMap local = localModList[modname].toMap();
-	QVariant settings = modSettings[modname];
+	QVariantMap settings;
+
+	QVariant conf = modSettings[modname];
+	if (conf.canConvert<QVariantMap>())
+		settings = modSettings[modname].toMap();
+	else
+		settings.insert("active", conf);
 
 	for (auto entry : repositories)
 	{

+ 3 - 3
launcher/modManager/cmodlist.h

@@ -22,11 +22,11 @@ class CModEntry
 	// repository contains newest version only (if multiple are available)
 	QVariantMap repository;
 	QVariantMap localData;
-	QVariant modSettings;
+	QVariantMap modSettings;
 
 	QString modname;
 public:
-	CModEntry(QVariantMap repository, QVariantMap localData, QVariant modSettings, QString modname);
+	CModEntry(QVariantMap repository, QVariantMap localData, QVariantMap modSettings, QString modname);
 
 	// installed and enabled
 	bool isEnabled() const;
@@ -76,4 +76,4 @@ public:
 
 	// returns list of all available mods
 	QVector<QString> getModList() const;
-};
+};

+ 3 - 1
launcher/modManager/cmodmanager.cpp

@@ -192,8 +192,10 @@ bool CModManager::doEnableMod(QString mod, bool on)
 {
 	QVariant value(on);
 	QVariantMap list = modSettings["activeMods"].toMap();
+	QVariantMap modData = list[mod].toMap();
 
-	list.insert(mod, value);
+	modData.insert("active", value);
+	list.insert(mod, modData);
 	modSettings.insert("activeMods", list);
 
 	modList->setModSettings(modSettings["activeMods"]);

+ 19 - 0
lib/CHeroHandler.cpp

@@ -108,6 +108,7 @@ CHeroClass *CHeroClassHandler::loadFromJson(const JsonNode & node)
 		heroClass->secSkillProbability.push_back(node["secondarySkills"][secSkill].Float());
 	}
 
+	heroClass->defaultTavernChance = node["defaultTavern"].Float();
 	for(auto & tavern : node["tavern"].Struct())
 	{
 		int value = tavern.second.Float();
@@ -189,6 +190,24 @@ void CHeroClassHandler::loadObject(std::string scope, std::string name, const Js
 	VLC->modh->identifiers.registerObject(scope, "heroClass", name, object->id);
 }
 
+void CHeroClassHandler::afterLoadFinalization()
+{
+	// for each pair <class, town> set selection probability if it was not set before in tavern entries
+	for (CHeroClass * heroClass : heroClasses)
+	{
+		for (CFaction * faction : VLC->townh->factions)
+		{
+			if (!faction->town)
+				continue;
+			if (heroClass->selectionProbability.count(faction->index))
+				continue;
+
+			float chance = heroClass->defaultTavernChance * faction->town->defaultTavernChance;
+			heroClass->selectionProbability[faction->index] = round(sqrt(chance));
+		}
+	}
+}
+
 std::vector<bool> CHeroClassHandler::getDefaultAllowed() const
 {
 	return std::vector<bool>(heroClasses.size(), true);

+ 7 - 1
lib/CHeroHandler.h

@@ -103,6 +103,10 @@ public:
 	TFaction faction;
 	ui8 id;
 
+	// default chance for hero of specific class to appear in tavern, if field "tavern" was not set
+	// resulting chance = sqrt(town.chance * heroClass.chance)
+	ui32 defaultTavernChance;
+
 	std::vector<int> primarySkillInitial;  // initial primary skills
 	std::vector<int> primarySkillLowLevel; // probability (%) of getting point of primary skill when getting level
 	std::vector<int> primarySkillHighLevel;// same for high levels (> 10)
@@ -121,7 +125,7 @@ public:
 
 	template <typename Handler> void serialize(Handler &h, const int version)
 	{
-		h & identifier & name & faction & id;// & aggression;
+		h & identifier & name & faction & id & defaultTavernChance;// & aggression;
 		h & primarySkillInitial   & primarySkillLowLevel;
 		h & primarySkillHighLevel & secSkillProbability;
 		h & selectionProbability;
@@ -162,6 +166,8 @@ public:
 	void loadObject(std::string scope, std::string name, const JsonNode & data) override;
 	void loadObject(std::string scope, std::string name, const JsonNode & data, size_t index) override;
 
+	void afterLoadFinalization();
+
 	std::vector<bool> getDefaultAllowed() const;
 
 	~CHeroClassHandler();

+ 7 - 6
lib/CMakeLists.txt

@@ -5,6 +5,13 @@ include_directories(${CMAKE_HOME_DIRECTORY} ${CMAKE_CURRENT_SOURCE_DIRECTORY} ${
 include_directories(${Boost_INCLUDE_DIRS} ${SDL_INCLUDE_DIR} ${ZLIB_INCLUDE_DIR})
 
 set(lib_SRCS
+		RegisterTypes.cpp
+		IGameCallback.cpp
+		CGameState.cpp
+		CObjectHandler.cpp
+		Connection.cpp
+		NetPacksLib.cpp
+
 		filesystem/AdapterLoaders.cpp
 		filesystem/CCompressedStream.cpp
 		filesystem/CFilesystemLoader.cpp
@@ -47,24 +54,18 @@ set(lib_SRCS
 		CCreatureSet.cpp
 		CDefObjInfoHandler.cpp
 		CGameInterface.cpp
-		CGameState.cpp
 		CGeneralTextHandler.cpp
 		CHeroHandler.cpp
 		CModHandler.cpp
-		CObjectHandler.cpp
 		CObstacleInstance.cpp
-		Connection.cpp
 		CSpellHandler.cpp
 		CThreadHelper.cpp
 		CTownHandler.cpp
 		GameConstants.cpp
 		HeroBonus.cpp
-		IGameCallback.cpp
 		JsonDetail.cpp
 		JsonNode.cpp
-		NetPacksLib.cpp
 		ResourceSet.cpp
-		RegisterTypes.cpp
 		VCMI_Lib.cpp
 		VCMIDirs.cpp
 )

+ 18 - 4
lib/CModHandler.cpp

@@ -445,17 +445,31 @@ std::vector <TModID> CModHandler::resolveDependencies(std::vector <TModID> input
 	return output;
 }
 
+static void updateModSettingsFormat(JsonNode & config)
+{
+	for (auto & entry : config.Struct())
+	{
+		if (entry.second.getType() == JsonNode::DATA_BOOL)
+		{
+			entry.second["active"].Bool() = entry.second.Bool();
+		}
+	}
+}
+
 void CModHandler::initialize(std::vector<std::string> availableMods)
 {
 	std::string confName = "config/modSettings.json";
 	JsonNode modConfig;
 
-	// Porbably new install. Create initial configuration
+	// Probably new install. Create initial configuration
 	if (!CResourceHandler::get()->existsResource(ResourceID(confName)))
 		CResourceHandler::get()->createResource(confName);
 	else
 		modConfig = JsonNode(ResourceID(confName));
 
+	// mod compatibility: check if modSettings has old, 0.94 format
+	updateModSettingsFormat(modConfig["activeMods"]);
+
 	const JsonNode & modList = modConfig["activeMods"];
 	JsonNode resultingList;
 
@@ -473,12 +487,12 @@ void CModHandler::initialize(std::vector<std::string> availableMods)
 			if (config.isNull())
 				continue;
 
-			if (!modList[name].isNull() && modList[name].Bool() == false )
+			if (!modList[name].isNull() && modList[name]["active"].Bool() == false )
 			{
-				resultingList[name].Bool() = false;
+				resultingList[name]["active"].Bool() = false;
 				continue; // disabled mod
 			}
-			resultingList[name].Bool() = true;
+			resultingList[name]["active"].Bool() = true;
 
 			CModInfo & mod = allMods[name];
 

+ 1 - 0
lib/CTownHandler.cpp

@@ -503,6 +503,7 @@ void CTownHandler::loadTown(CTown &town, const JsonNode & source)
 		}
 	}
 
+	town.defaultTavernChance = source["defaultTavern"].Float();
 	/// set chance of specific hero class to appear in this town
 	for(auto &node : source["tavern"].Struct())
 	{

+ 4 - 1
lib/CTownHandler.h

@@ -148,6 +148,9 @@ public:
 	ui16 primaryRes;
 	ArtifactID warMachine;
 	si32 moatDamage;
+	// default chance for hero of specific class to appear in tavern, if field "tavern" was not set
+	// resulting chance = sqrt(town.chance * heroClass.chance)
+	ui32 defaultTavernChance;
 
 	// Client-only data. Should be moved away from lib
 	struct ClientInfo
@@ -197,7 +200,7 @@ public:
 	template <typename Handler> void serialize(Handler &h, const int version)
 	{
 		h & names & faction & creatures & dwellings & dwellingNames & buildings & hordeLvl & mageLevel
-			& primaryRes & warMachine & clientInfo & moatDamage;
+			& primaryRes & warMachine & clientInfo & moatDamage & defaultTavernChance;
 
 		auto findNull = [](const std::pair<BuildingID, ConstTransitivePtr<CBuilding>> &building)
 		{ return building.second == nullptr; };

+ 1 - 1
scripting/erm/CMakeLists.txt

@@ -4,8 +4,8 @@ cmake_minimum_required(VERSION 2.6)
 include_directories(${CMAKE_HOME_DIRECTORY} ${CMAKE_CURRENT_SOURCE_DIRECTORY})
 
 set(lib_SRCS
-        ERMInterpreter.cpp
         ERMParser.cpp
+        ERMInterpreter.cpp
         ERMScriptModule.cpp
 )
 

+ 1 - 1
server/CMakeLists.txt

@@ -6,8 +6,8 @@ include_directories(${Boost_INCLUDE_DIRS})
 
 set(server_SRCS
         CGameHandler.cpp
-        CQuery.cpp
         CVCMIServer.cpp
+        CQuery.cpp
         NetPacksServer.cpp
 )