diff --git a/doc/type/dependency.txt b/doc/type/dependency.txt
index b65a7615..774570aa 100644
--- a/doc/type/dependency.txt
+++ b/doc/type/dependency.txt
@@ -5,13 +5,17 @@ Data type: dependency
[[type:Package]]s can depend on other packages.
For example a [[type:stylesheet]] needs a particular version of the corresponding [[type:game]] package, and maybe some additional [[type:include]]s.
---Proeprties--
+--Properties--
! Property Type Description
| @package@ [[type:string]] Filename of the package this package depends on.
| @version@ [[type:version]] Minimal version of that package that is required.
+The two properties can also be written on a single line, separated by a space (see the examples).
+
--Example--
The magic-new stylesheet depends on a particular version of the game file:
>depends on:
> package: magic.mse-game
> version: 2007-06-06
+This can be written more compactly as
+>depends on: magic.mse-game 2007-06-06
diff --git a/src/mse.vcproj b/src/mse.vcproj
index 8c2f38be..c147da98 100644
--- a/src/mse.vcproj
+++ b/src/mse.vcproj
@@ -615,6 +615,12 @@
+
+
+
+
diff --git a/src/util/io/package.cpp b/src/util/io/package.cpp
index 13ee9c5a..a5d5d56a 100644
--- a/src/util/io/package.cpp
+++ b/src/util/io/package.cpp
@@ -436,9 +436,25 @@ String Package::toStandardName(const String& name) {
// ----------------------------------------------------------------------------- : Packaged
-IMPLEMENT_REFLECTION(PackageDependency) {
- REFLECT(package);
- REFLECT(version);
+template <> void Reader::handle(PackageDependency& dep) {
+ if (!isComplex()) {
+ handle(dep.package);
+ size_t pos = dep.package.find_first_of(_(' '));
+ if (pos != String::npos) {
+ dep.version = Version::fromString(dep.package.substr(pos+1));
+ dep.package = dep.package.substr(0,pos);
+ }
+ } else {
+ handle(_("package"), dep.package);
+ handle(_("version"), dep.version);
+ }
+}
+template <> void Writer::handle(const PackageDependency& dep) {
+ if (dep.version != Version()) {
+ handle(dep.package + _(" ") + dep.version.toString());
+ } else {
+ handle(dep.package);
+ }
}
// note: reflection must be declared before it is used