├── GameData
├── MiniAVC-V2
│ └── Plugins
│ │ └── placeholder.txt
└── KSP-AVC
│ ├── Textures
│ ├── DropDownActive.png
│ ├── DropDownHover.png
│ ├── DropDownNormal.png
│ ├── DropDownOnHover.png
│ ├── DropDownOnNormal.png
│ ├── OverlayBackground.png
│ └── DropDownBackground.png
│ ├── KSP-AVC.version
│ └── CHANGES.txt
├── .github
└── FUNDING.yml
├── Artwork
├── DropDownHover.psd
├── DropDownActive.psd
├── DropDownNormal.psd
├── DropDownOnHover.psd
├── DropDownBackground.psd
├── DropDownOnNormal.psd
└── OverlayBackground.psd
├── Output
└── KSP-AVC
│ └── Textures
│ ├── DropDownActive.png
│ ├── DropDownHover.png
│ ├── DropDownNormal.png
│ ├── DropDownOnHover.png
│ ├── DropDownOnNormal.png
│ ├── OverlayBackground.png
│ └── DropDownBackground.png
├── TODO.txt
├── KSP-AVC
├── AssemblyVersion.cs
├── Properties
│ └── AssemblyInfo.cs
├── Utils.cs
├── AssemblyVersion.tt
├── AddonLibrary.cs
├── ChangeLogGui.cs
├── CheckerProgressGui.cs
├── ToolTipGui.cs
├── CompatibilityOverrideEnableGui.cs
├── FirstRunGui.cs
├── InstallChecker.cs
├── KSP-AVC.csproj
├── KSP-AVC.csproj.173
└── KSP-AVC.csproj.orig
├── MiniAVC-V2
├── AssemblyVersion.cs
├── Properties
│ └── AssemblyInfo.cs
├── AddonSettings.cs
├── AssemblyVersion.tt
├── UpdateFrequency.cs
├── MiniAVC-V2.csproj
├── MiniAVC.csproj.173
├── MiniAVC.csproj.orig
├── ToolTipGui.cs
├── AddonLibrary.cs
├── Starter.cs
└── FirstRunGui.cs
├── TestCases
├── mods versions
│ ├── SafeChute.version
│ ├── FuelTanksPlus.version
│ ├── RSSeaDragon.version
│ ├── DiscontinuedParts.version
│ ├── RealScaleBoosters.version
│ ├── ModularRocketSystems.version
│ ├── ColorCodedCanisters.version
│ ├── RealScaleBoostersStockalike.version
│ ├── UniversalStorage.version
│ ├── KWRocketryRebalanced.version
│ ├── [x] Science!.version
│ ├── KerbalEngineer.version
│ ├── Chatterer.version
│ ├── B9PartSwitch.version
│ ├── RasterPropMonitor.version
│ ├── EditorExtensionsRedux.version
│ ├── RealChute.version
│ ├── HyperEdit.version
│ ├── FuelTankExpansion.version
│ ├── ToolbarControl.version
│ ├── TimeControl.version
│ ├── ClickThroughBlocker.version
│ ├── KerbalAlarmClock.version
│ ├── PatchManager.version
│ ├── MagiCore.version
│ ├── UniversalStorageStockResourceFuelCell.version
│ ├── CrewLight.version
│ ├── OldPartsReduxAlpha.version
│ ├── Bluedog_DB.version
│ ├── RealTimeClock2.version
│ ├── AutoAction.version
│ ├── kOS.version
│ ├── EnvironmentalVisualEnhancements.version
│ ├── SCANsat.version
│ ├── KIS.version
│ ├── EasyVesselSwitch.version
│ ├── SR.version
│ ├── AdjustableModPanel.version
│ ├── EVAStruts.version
│ ├── PhysicsRangeExtender.version
│ ├── BasicOrbit.version
│ ├── TweakScale.version
│ ├── EVATransfer.version
│ ├── USI-LS.version
│ ├── RemoteTech.version
│ ├── KAS.version
│ ├── FlexoDocking.version
│ ├── USITools.version
│ ├── KerbalAcademy.version
│ ├── CCK.version
│ ├── CRP.version
│ ├── TrackingStationEvolved.version
│ ├── ManeuverNodeEvolved.version
│ ├── ContractRewardModifier.version
│ ├── WaypointManager.version
│ └── ContractConfigurator.version
├── KspVersion.version
├── KspVersion1.version
├── KspVersion2.version
├── KspMaxVersion.version
├── KspMinVersion.version
├── KspMaxVersion1.version
├── KspMaxVersion2.version
├── KspMinVersion1.version
├── KspMinVersion2.version
├── KspMinMaxVersion.version
├── KspMinMaxVersion1.version
├── KspMinMaxVersion2.version
└── KspMinMaxVersion3.version
├── KSP-AVC.sln.DotSettings
├── MiniAVCUpdateFrequency.dat_example
├── deploy.bat
├── KSP-AVC.version
├── MiniAVC-V2.version
├── AVCToolkit
├── Json
│ ├── IJsonObject.cs
│ ├── JsonFieldAttribute.cs
│ ├── JsonObject.cs
│ └── JsonSerialiser.cs
├── GitHubInfo.cs
├── Properties
│ └── AssemblyInfo.cs
├── AddonInfo.cs
├── AVCToolkit.csproj
├── AVCToolkit.csproj.173
├── AVCToolkit.csproj.orig
└── Program.cs
├── jenkins.txt
├── jenkinsMiniAVC.txt
├── Documents
├── MiniAVC
│ ├── CHANGES.txt
│ └── README.md
└── KSP-AVC
│ └── CHANGES.txt
├── .gitattributes
├── KSP-AVC.sln
└── .gitignore
/GameData/MiniAVC-V2/Plugins/placeholder.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | patreon: linuxgurugamer
2 |
--------------------------------------------------------------------------------
/Artwork/DropDownHover.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxgurugamer/KSPAddonVersionChecker/HEAD/Artwork/DropDownHover.psd
--------------------------------------------------------------------------------
/Artwork/DropDownActive.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxgurugamer/KSPAddonVersionChecker/HEAD/Artwork/DropDownActive.psd
--------------------------------------------------------------------------------
/Artwork/DropDownNormal.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxgurugamer/KSPAddonVersionChecker/HEAD/Artwork/DropDownNormal.psd
--------------------------------------------------------------------------------
/Artwork/DropDownOnHover.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxgurugamer/KSPAddonVersionChecker/HEAD/Artwork/DropDownOnHover.psd
--------------------------------------------------------------------------------
/Artwork/DropDownBackground.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxgurugamer/KSPAddonVersionChecker/HEAD/Artwork/DropDownBackground.psd
--------------------------------------------------------------------------------
/Artwork/DropDownOnNormal.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxgurugamer/KSPAddonVersionChecker/HEAD/Artwork/DropDownOnNormal.psd
--------------------------------------------------------------------------------
/Artwork/OverlayBackground.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxgurugamer/KSPAddonVersionChecker/HEAD/Artwork/OverlayBackground.psd
--------------------------------------------------------------------------------
/Output/KSP-AVC/Textures/DropDownActive.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxgurugamer/KSPAddonVersionChecker/HEAD/Output/KSP-AVC/Textures/DropDownActive.png
--------------------------------------------------------------------------------
/Output/KSP-AVC/Textures/DropDownHover.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxgurugamer/KSPAddonVersionChecker/HEAD/Output/KSP-AVC/Textures/DropDownHover.png
--------------------------------------------------------------------------------
/Output/KSP-AVC/Textures/DropDownNormal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxgurugamer/KSPAddonVersionChecker/HEAD/Output/KSP-AVC/Textures/DropDownNormal.png
--------------------------------------------------------------------------------
/GameData/KSP-AVC/Textures/DropDownActive.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxgurugamer/KSPAddonVersionChecker/HEAD/GameData/KSP-AVC/Textures/DropDownActive.png
--------------------------------------------------------------------------------
/GameData/KSP-AVC/Textures/DropDownHover.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxgurugamer/KSPAddonVersionChecker/HEAD/GameData/KSP-AVC/Textures/DropDownHover.png
--------------------------------------------------------------------------------
/GameData/KSP-AVC/Textures/DropDownNormal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxgurugamer/KSPAddonVersionChecker/HEAD/GameData/KSP-AVC/Textures/DropDownNormal.png
--------------------------------------------------------------------------------
/GameData/KSP-AVC/Textures/DropDownOnHover.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxgurugamer/KSPAddonVersionChecker/HEAD/GameData/KSP-AVC/Textures/DropDownOnHover.png
--------------------------------------------------------------------------------
/Output/KSP-AVC/Textures/DropDownOnHover.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxgurugamer/KSPAddonVersionChecker/HEAD/Output/KSP-AVC/Textures/DropDownOnHover.png
--------------------------------------------------------------------------------
/Output/KSP-AVC/Textures/DropDownOnNormal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxgurugamer/KSPAddonVersionChecker/HEAD/Output/KSP-AVC/Textures/DropDownOnNormal.png
--------------------------------------------------------------------------------
/Output/KSP-AVC/Textures/OverlayBackground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxgurugamer/KSPAddonVersionChecker/HEAD/Output/KSP-AVC/Textures/OverlayBackground.png
--------------------------------------------------------------------------------
/GameData/KSP-AVC/Textures/DropDownOnNormal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxgurugamer/KSPAddonVersionChecker/HEAD/GameData/KSP-AVC/Textures/DropDownOnNormal.png
--------------------------------------------------------------------------------
/GameData/KSP-AVC/Textures/OverlayBackground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxgurugamer/KSPAddonVersionChecker/HEAD/GameData/KSP-AVC/Textures/OverlayBackground.png
--------------------------------------------------------------------------------
/Output/KSP-AVC/Textures/DropDownBackground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxgurugamer/KSPAddonVersionChecker/HEAD/Output/KSP-AVC/Textures/DropDownBackground.png
--------------------------------------------------------------------------------
/GameData/KSP-AVC/Textures/DropDownBackground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linuxgurugamer/KSPAddonVersionChecker/HEAD/GameData/KSP-AVC/Textures/DropDownBackground.png
--------------------------------------------------------------------------------
/TODO.txt:
--------------------------------------------------------------------------------
1 | update ZeroMiniAVC to delete the new versions of MiniAVC
2 | update MiniAVC to delete the old renamed versions of the old one
3 | Change name of MiniAVC assembly to MiniAVC-v2
--------------------------------------------------------------------------------
/KSP-AVC/AssemblyVersion.cs:
--------------------------------------------------------------------------------
1 |
2 | // This code was generated by a tool. Any changes made manually will be lost
3 | // the next time this code is regenerated.
4 | //
5 |
6 | using System.Reflection;
7 |
8 | [assembly: AssemblyFileVersion("1.4.1.8")]
9 | [assembly: AssemblyVersion("1.4.1.8")]
10 |
--------------------------------------------------------------------------------
/MiniAVC-V2/AssemblyVersion.cs:
--------------------------------------------------------------------------------
1 |
2 | // This code was generated by a tool. Any changes made manually will be lost
3 | // the next time this code is regenerated.
4 | //
5 |
6 | using System.Reflection;
7 |
8 | [assembly: AssemblyVersion("2.0.0.1")]
9 | [assembly: AssemblyFileVersion("2.0.0.1")]
10 |
--------------------------------------------------------------------------------
/TestCases/mods versions/SafeChute.version:
--------------------------------------------------------------------------------
1 | {"NAME":"SafeChute",
2 | "URL":"https://raw.githubusercontent.com/henrybauer/SafeChute/master/SafeChute.version",
3 | "DOWNLOAD":"http://forum.kerbalspaceprogram.com/threads/100855",
4 | "VERSION":{"MAJOR":2,"MINOR":1,"PATCH":10,"BUILD":0},
5 | "KSP_VERSION":{"MAJOR":1,"MINOR":4,"PATCH":1}
6 | }
7 |
--------------------------------------------------------------------------------
/TestCases/mods versions/FuelTanksPlus.version:
--------------------------------------------------------------------------------
1 | {
2 | "NAME": "Fuel Tanks Plus",
3 | "URL": "http://ksp.necrobones.com/files/FuelTanksPlus/FuelTanksPlus.version",
4 | "DOWNLOAD": "http://spacedock.info/mod/92/Fuel%20Tanks%20Plus",
5 | "VERSION": {
6 | "MAJOR": 2,
7 | "MINOR": 0,
8 | "PATCH": 2
9 | },
10 | "KSP_VERSION_MIN": {
11 | "MAJOR": 1,
12 | "MINOR": 4,
13 | "PATCH": 0
14 | }
15 | }
--------------------------------------------------------------------------------
/TestCases/KspVersion.version:
--------------------------------------------------------------------------------
1 | {
2 | "NAME":"KspVersion",
3 | "URL":"file://D:/Users/jbb/github/KSPAddonVersionChecker/TestCases/KspVersion.version",
4 | "VERSION":
5 | {
6 | "MAJOR":1,
7 | "MINOR":1,
8 | "PATCH":6,
9 | "BUILD":2
10 | },
11 | "KSP_VERSION":
12 | {
13 | "MAJOR":1,
14 | "MINOR":4,
15 | "PATCH":1
16 | }
17 | }
--------------------------------------------------------------------------------
/TestCases/mods versions/RSSeaDragon.version:
--------------------------------------------------------------------------------
1 | {
2 | "NAME": "Real Scale Sea Dragon",
3 | "URL": "http://ksp.necrobones.com/files/RSSeaDragon/RSSeaDragon.version",
4 | "DOWNLOAD": "http://spacedock.info/mod/440/Real%20Scale%20Sea%20Dragon",
5 | "VERSION": {
6 | "MAJOR": 0,
7 | "MINOR": 3,
8 | "PATCH": 4
9 | },
10 | "KSP_VERSION_MIN": {
11 | "MAJOR": 1,
12 | "MINOR": 1,
13 | "PATCH": 0
14 | }
15 | }
--------------------------------------------------------------------------------
/TestCases/mods versions/DiscontinuedParts.version:
--------------------------------------------------------------------------------
1 | {
2 | "NAME": "Discontinued Parts",
3 | "URL": "http://ksp.necrobones.com/files/DiscontinuedParts/DiscontinuedParts.version",
4 | "DOWNLOAD": "http://spacedock.info/mod/137/Discontinued%20Parts",
5 | "VERSION": {
6 | "MAJOR": 0,
7 | "MINOR": 4,
8 | "PATCH": 0
9 | },
10 | "KSP_VERSION_MIN": {
11 | "MAJOR": 1,
12 | "MINOR": 0,
13 | "PATCH": 5
14 | }
15 | }
--------------------------------------------------------------------------------
/TestCases/KspVersion1.version:
--------------------------------------------------------------------------------
1 | {
2 | "NAME":"KspVersion, Update Available",
3 | "URL":"file://D:/Users/jbb/github/KSPAddonVersionChecker/TestCases/KspVersion.version",
4 | "VERSION":
5 | {
6 | "MAJOR":1,
7 | "MINOR":1,
8 | "PATCH":6,
9 | "BUILD":0
10 | },
11 | "KSP_VERSION":
12 | {
13 | "MAJOR":1,
14 | "MINOR":4,
15 | "PATCH":1
16 | }
17 | }
--------------------------------------------------------------------------------
/TestCases/mods versions/RealScaleBoosters.version:
--------------------------------------------------------------------------------
1 | {
2 | "NAME": "Real Scale Boosters",
3 | "URL": "http://ksp.necrobones.com/files/RealScaleBoosters/RealScaleBoosters.version",
4 | "DOWNLOAD": "http://spacedock.info/mod/90/Real%20Scale%20Boosters",
5 | "VERSION": {
6 | "MAJOR": 0,
7 | "MINOR": 16,
8 | "PATCH": 0
9 | },
10 | "KSP_VERSION_MIN": {
11 | "MAJOR": 1,
12 | "MINOR": 2,
13 | "PATCH": 0
14 | }
15 | }
--------------------------------------------------------------------------------
/KSP-AVC.sln.DotSettings:
--------------------------------------------------------------------------------
1 |
2 | GUI
--------------------------------------------------------------------------------
/TestCases/KspVersion2.version:
--------------------------------------------------------------------------------
1 | {
2 | "NAME":"KspVersion, No Update Available",
3 | "URL":"file://D:/Users/jbb/github/KSPAddonVersionChecker/TestCases/KspVersion.version",
4 | "VERSION":
5 | {
6 | "MAJOR":1,
7 | "MINOR":1,
8 | "PATCH":6,
9 | "BUILD":0
10 | },
11 | "KSP_VERSION":
12 | {
13 | "MAJOR":1,
14 | "MINOR":4,
15 | "PATCH":0
16 | }
17 | }
--------------------------------------------------------------------------------
/TestCases/mods versions/ModularRocketSystems.version:
--------------------------------------------------------------------------------
1 | {
2 | "NAME": "Modular Rocket Systems",
3 | "URL": "http://ksp.necrobones.com/files/ModRocketSys/ModularRocketSystems.version",
4 | "DOWNLOAD": "http://spacedock.info/mod/86/Modular%20Rocket%20Systems",
5 | "VERSION": {
6 | "MAJOR": 1,
7 | "MINOR": 13,
8 | "PATCH": 2
9 | },
10 | "KSP_VERSION_MIN": {
11 | "MAJOR": 1,
12 | "MINOR": 2,
13 | "PATCH": 0
14 | }
15 | }
--------------------------------------------------------------------------------
/TestCases/mods versions/ColorCodedCanisters.version:
--------------------------------------------------------------------------------
1 | {
2 | "NAME": "Color Coded Canisters",
3 | "URL": "http://ksp.necrobones.com/files/ColorCodedCanisters/ColorCodedCanisters.version",
4 | "DOWNLOAD": "http://spacedock.info/mod/91/Color%20Coded%20Canisters",
5 | "VERSION": {
6 | "MAJOR": 2,
7 | "MINOR": 0,
8 | "PATCH": 1
9 | },
10 | "KSP_VERSION_MIN": {
11 | "MAJOR": 1,
12 | "MINOR": 4,
13 | "PATCH": 0
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/TestCases/mods versions/RealScaleBoostersStockalike.version:
--------------------------------------------------------------------------------
1 | {
2 | "NAME": "RSB Stockalike",
3 | "URL": "http://ksp.necrobones.com/files/RealScaleBoosters/RealScaleBoostersStockalike.version",
4 | "DOWNLOAD": "http://ksp.necrobones.com/files/RealScaleBoosters/",
5 | "VERSION": {
6 | "MAJOR": 0,
7 | "MINOR": 4,
8 | "PATCH": 0
9 | },
10 | "KSP_VERSION_MIN": {
11 | "MAJOR": 1,
12 | "MINOR": 1,
13 | "PATCH": 0
14 | }
15 | }
--------------------------------------------------------------------------------
/TestCases/mods versions/UniversalStorage.version:
--------------------------------------------------------------------------------
1 | {"NAME":"Universal Storage","URL":"http://ksp-avc.cybutek.net/version.php?id=365","DOWNLOAD":"http://spacedock.info/mod/329/Universal%20Storage","CHANGE_LOG_URL":"http://spacedock.info/mod/329/Universal%20Storage","VERSION":{"MAJOR":1,"MINOR":4,"PATCH":0,"BUILD":0},"KSP_VERSION":{"MAJOR":1,"MINOR":4,"PATCH":0},"KSP_VERSION_MIN":{"MAJOR":1,"MINOR":2,"PATCH":1},"KSP_VERSION_MAX":{"MAJOR":1,"MINOR":4,"PATCH":99}}
--------------------------------------------------------------------------------
/TestCases/mods versions/KWRocketryRebalanced.version:
--------------------------------------------------------------------------------
1 | {
2 | "NAME":"KWRocketryRebalanced",
3 | "URL":"https://raw.githubusercontent.com/linuxgurugamer/KWRocketryRedux/Rebalanced/KWRocketryRebalanced/GameData/KWRocketry/KWRocketryRebalanced.version",
4 |
5 | "VERSION":
6 | {
7 | "MAJOR": 3,
8 | "MINOR": 2,
9 | "PATCH": 5,
10 | "BUILD": 2
11 | },
12 | "KSP_VERSION":
13 | {
14 | "MAJOR": 1,
15 | "MINOR": 4,
16 | "PATCH": 1
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/TestCases/mods versions/[x] Science!.version:
--------------------------------------------------------------------------------
1 | {
2 | "NAME":"[x] Science!",
3 | "URL":"https://themoose.co.uk/ksp/%5Bx%5D%20Science!.version",
4 | "DOWNLOAD":"https://themoose.co.uk/ksp/downloads.html",
5 | "CHANGE_LOG_URL":"https://themoose.co.uk/ksp/CHANGES.md",
6 | "VERSION":
7 | {
8 | "MAJOR":5,
9 | "MINOR":13,
10 | "PATCH":0
11 | },
12 | "KSP_VERSION":
13 | {
14 | "MAJOR":1,
15 | "MINOR":4,
16 | "PATCH":1
17 | }
18 | }
--------------------------------------------------------------------------------
/TestCases/mods versions/KerbalEngineer.version:
--------------------------------------------------------------------------------
1 | {
2 | "NAME":"Kerbal Engineer Redux",
3 | "URL":"http://ksp-avc.cybutek.net/version.php?id=6",
4 | "VERSION":
5 | {
6 | "MAJOR":1,
7 | "MINOR":1,
8 | "PATCH":4,
9 | "BUILD":3
10 | },
11 | "KSP_VERSION":
12 | {
13 | "MAJOR":1,
14 | "MINOR":4,
15 | "PATCH":1
16 | },
17 | "KSP_VERSION_MIN":
18 | {
19 | "MAJOR":1,
20 | "MINOR":2,
21 | "PATCH":9
22 | },
23 | "KSP_VERSION_MAX":
24 | {
25 | "MAJOR":1,
26 | "MINOR":4,
27 | "PATCH":9
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/TestCases/KspMaxVersion.version:
--------------------------------------------------------------------------------
1 | {
2 | "NAME":"KspVersion & KspMaxVersion",
3 | "URL":"file://D:/Users/jbb/github/KSPAddonVersionChecker/TestCases/KspMaxVersion.version",
4 | "VERSION":
5 | {
6 | "MAJOR":1,
7 | "MINOR":1,
8 | "PATCH":6,
9 | "BUILD":2
10 | },
11 | "KSP_VERSION":
12 | {
13 | "MAJOR":1,
14 | "MINOR":2,
15 | "PATCH":0
16 | },
17 | "KSP_VERSION_MAX":
18 | {
19 | "MAJOR":1,
20 | "MINOR":4,
21 | "PATCH":1
22 | }
23 | }
--------------------------------------------------------------------------------
/TestCases/KspMinVersion.version:
--------------------------------------------------------------------------------
1 | {
2 | "NAME":"KspVersion & KspMinVersion",
3 | "URL":"file://D:/Users/jbb/github/KSPAddonVersionChecker/TestCases/KspMinVersion.version",
4 | "VERSION":
5 | {
6 | "MAJOR":1,
7 | "MINOR":1,
8 | "PATCH":6,
9 | "BUILD":2
10 | },
11 | "KSP_VERSION":
12 | {
13 | "MAJOR":1,
14 | "MINOR":2,
15 | "PATCH":0
16 | },
17 | "KSP_VERSION_MIN":
18 | {
19 | "MAJOR":1,
20 | "MINOR":2,
21 | "PATCH":0
22 | }
23 | }
--------------------------------------------------------------------------------
/TestCases/mods versions/Chatterer.version:
--------------------------------------------------------------------------------
1 | {
2 | "NAME":"Chatterer",
3 | "URL":"http://ksp-avc.cybutek.net/version.php?id=27",
4 | "VERSION":
5 | {
6 | "MAJOR":0,
7 | "MINOR":9,
8 | "PATCH":94,
9 | "BUILD":2077
10 | },
11 | "KSP_VERSION":
12 | {
13 | "MAJOR":1,
14 | "MINOR":4,
15 | "PATCH":0
16 | },
17 | "KSP_VERSION_MIN":
18 | {
19 | "MAJOR":1,
20 | "MINOR":3,
21 | "PATCH":0
22 | },
23 | "KSP_VERSION_MAX":
24 | {
25 | "MAJOR":1,
26 | "MINOR":4,
27 | "PATCH":99
28 | },
29 | }
--------------------------------------------------------------------------------
/TestCases/KspMaxVersion1.version:
--------------------------------------------------------------------------------
1 | {
2 | "NAME":"KspVersion & KspMaxVersion, Update Available",
3 | "URL":"file://D:/Users/jbb/github/KSPAddonVersionChecker/TestCases/KspMaxVersion.version",
4 | "VERSION":
5 | {
6 | "MAJOR":1,
7 | "MINOR":1,
8 | "PATCH":6,
9 | "BUILD":0
10 | },
11 | "KSP_VERSION":
12 | {
13 | "MAJOR":1,
14 | "MINOR":2,
15 | "PATCH":0
16 | },
17 | "KSP_VERSION_MAX":
18 | {
19 | "MAJOR":1,
20 | "MINOR":4,
21 | "PATCH":0
22 | }
23 | }
--------------------------------------------------------------------------------
/TestCases/KspMaxVersion2.version:
--------------------------------------------------------------------------------
1 | {
2 | "NAME":"KspVersion & KspMaxVersion, No Update Available",
3 | "URL":"file://D:/Users/jbb/github/KSPAddonVersionChecker/TestCases/KspMaxVersion.version",
4 | "VERSION":
5 | {
6 | "MAJOR":1,
7 | "MINOR":1,
8 | "PATCH":6,
9 | "BUILD":0
10 | },
11 | "KSP_VERSION":
12 | {
13 | "MAJOR":1,
14 | "MINOR":2,
15 | "PATCH":0
16 | },
17 | "KSP_VERSION_MAX":
18 | {
19 | "MAJOR":1,
20 | "MINOR":3,
21 | "PATCH":0
22 | }
23 | }
--------------------------------------------------------------------------------
/TestCases/KspMinVersion1.version:
--------------------------------------------------------------------------------
1 | {
2 | "NAME":"KspVersion & KspMinVersion, Update Available",
3 | "URL":"file://D:/Users/jbb/github/KSPAddonVersionChecker/TestCases/KspMinVersion.version",
4 | "VERSION":
5 | {
6 | "MAJOR":1,
7 | "MINOR":1,
8 | "PATCH":6,
9 | "BUILD":0
10 | },
11 | "KSP_VERSION":
12 | {
13 | "MAJOR":1,
14 | "MINOR":2,
15 | "PATCH":0
16 | },
17 | "KSP_VERSION_MIN":
18 | {
19 | "MAJOR":1,
20 | "MINOR":2,
21 | "PATCH":0
22 | }
23 | }
--------------------------------------------------------------------------------
/TestCases/KspMinVersion2.version:
--------------------------------------------------------------------------------
1 | {
2 | "NAME":"KspVersion & KspMinVersion, No Update Available",
3 | "URL":"file://D:/Users/jbb/github/KSPAddonVersionChecker/TestCases/KspMinVersion.version",
4 | "VERSION":
5 | {
6 | "MAJOR":1,
7 | "MINOR":1,
8 | "PATCH":6,
9 | "BUILD":0
10 | },
11 | "KSP_VERSION":
12 | {
13 | "MAJOR":1,
14 | "MINOR":2,
15 | "PATCH":0
16 | },
17 | "KSP_VERSION_MIN":
18 | {
19 | "MAJOR":1,
20 | "MINOR":5,
21 | "PATCH":0
22 | }
23 | }
--------------------------------------------------------------------------------
/TestCases/mods versions/B9PartSwitch.version:
--------------------------------------------------------------------------------
1 | {
2 | "NAME" : "B9 Part Switch",
3 | "DOWNLOAD" : "https://github.com/blowfishpro/B9PartSwitch/releases",
4 | "URL" : "https://s3.amazonaws.com/blowfish-ksp-b9partswitch-avc/ksp-1.3.1/B9PartSwitch.version",
5 | "GITHUB" : {
6 | "USERNAME" : "blowfishpro",
7 | "REPOSITORY" : "B9PartSwitch"
8 | },
9 | "VERSION" : {
10 | "MAJOR" : 2,
11 | "MINOR" : 0,
12 | "PATCH" : 0
13 | },
14 | "KSP_VERSION" : {
15 | "MAJOR" : 1,
16 | "MINOR" : 3,
17 | "PATCH" : 1
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/MiniAVCUpdateFrequency.dat_example:
--------------------------------------------------------------------------------
1 | //Rename this file to MiniAVCUpdateFrequency.dat and put it into the GameData folder
2 | //If you don't feel confident in the DateTime format, just edit the "MinTimeBetweenAvcRuns" value and MiniAVC creates the proper timestamp on the next launch
3 | //If you change the timespan, you should always delete the "AvcRunsNext" entry.
4 | MINI-AVC
5 | {
6 | UPDATE_FREQUENCY
7 | {
8 | MinTimeBetweenAvcRuns = 0 //Timespan between AVC runs in hours (-1 = Disable MiniAVC, 0 = Run on each game start)
9 | AvcRunsNext = 1/1/0001 12:00:00 AM
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/TestCases/mods versions/RasterPropMonitor.version:
--------------------------------------------------------------------------------
1 | {
2 | "NAME": "RasterPropMonitor",
3 | "URL": "https://raw.githubusercontent.com/Mihara/RasterPropMonitor/master/GameData/JSI/RasterPropMonitor/RasterPropMonitor.version",
4 | "DOWNLOAD": "https://github.com/Mihara/RasterPropMonitor/releases",
5 | "VERSION": {
6 | "MAJOR": 0,
7 | "MINOR": 30,
8 | "PATCH": 0
9 | },
10 | "KSP_VERSION": {
11 | "MAJOR": 1,
12 | "MINOR": 4,
13 | "PATCH": 1
14 | },
15 | "KSP_VERSION_MIN":
16 | {
17 | "MAJOR": 1,
18 | "MINOR": 4,
19 | "PATCH": 0
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/deploy.bat:
--------------------------------------------------------------------------------
1 |
2 | @echo off
3 |
4 | rem H is the destination game folder
5 | rem GAMEDIR is the name of the mod folder (usually the mod name)
6 | rem GAMEDATA is the name of the local GameData
7 | rem VERSIONFILE is the name of the version file, usually the same as GAMEDATA,
8 | rem but not always
9 |
10 | set H=%KSPDIR%
11 | set GAMEDIR=KSP-AVC
12 | set GAMEDATA="GameData"
13 | set VERSIONFILE=%GAMEDIR%.version
14 |
15 | copy /Y "%1%2" "%GAMEDATA%\%GAMEDIR%\Plugins"
16 | copy /Y %VERSIONFILE% %GAMEDATA%\%GAMEDIR%
17 |
18 | xcopy /y /s /I %GAMEDATA%\%GAMEDIR% "%H%\GameData\%GAMEDIR%"
19 |
--------------------------------------------------------------------------------
/KSP-AVC.version:
--------------------------------------------------------------------------------
1 | {
2 | "NAME": "KSP-AVC Plugin",
3 | "URL": "http://ksp.spacetux.net/avc/KSP-AVC",
4 | "DOWNLOAD": "https://github.com/linuxgurugamer/KSPAddonVersionChecker/releases",
5 | "GITHUB": {
6 | "USERNAME": "linuxgurugamer",
7 | "REPOSITORY": "KSPAddonVersionChecker"
8 | },
9 | "VERSION": {
10 | "MAJOR": 1,
11 | "MINOR": 4,
12 | "PATCH": 1,
13 | "BUILD": 9
14 | },
15 | "KSP_VERSION": {
16 | "MAJOR": 1,
17 | "MINOR": 12,
18 | "PATCH": 2
19 | },
20 | "KSP_VERSION_MIN": {
21 | "MAJOR": 1,
22 | "MINOR": 12,
23 | "PATCH": 0
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/TestCases/mods versions/EditorExtensionsRedux.version:
--------------------------------------------------------------------------------
1 | {
2 | "NAME":"EditorExtensionsRedux",
3 | "URL":"http://ksp-avc.cybutek.net/version.php?id=236",
4 | "DOWNLOAD":"https://kerbalstuff.com/mod/1342/EditorExtensionsRedux/download",
5 | "VERSION":
6 | {
7 | "MAJOR":3,
8 | "MINOR":3,
9 | "PATCH":19,
10 | "BUILD":2
11 | },
12 | "KSP_VERSION":
13 | {
14 | "MAJOR":1,
15 | "MINOR":4,
16 | "PATCH":1
17 | },
18 | "KSP_VERSION_MIN":
19 | {
20 | "MAJOR":1,
21 | "MINOR":4,
22 | "PATCH":1
23 | },
24 | "KSP_VERSION_MAX":
25 | {
26 | "MAJOR":1,
27 | "MINOR":4,
28 | "PATCH":1
29 | }
30 | }
--------------------------------------------------------------------------------
/TestCases/mods versions/RealChute.version:
--------------------------------------------------------------------------------
1 | {
2 | "NAME": "RealChute",
3 | "URL": "https://raw.githubusercontent.com/StupidChris/RealChute/master/Output/GameData/RealChute/RealChute.version",
4 |
5 | "VERSION":
6 | {
7 | "MAJOR": 1,
8 | "MINOR": 4,
9 | "PATCH": 6,
10 | "BUILD": 0
11 | },
12 |
13 | "KSP_VERSION":
14 | {
15 | "MAJOR": 1,
16 | "MINOR": 4,
17 | "PATCH": 1
18 | },
19 |
20 | "KSP_VERSION_MIN":
21 | {
22 | "MAJOR": 1,
23 | "MINOR": 4,
24 | "PATCH": 0
25 | },
26 |
27 | "KSP_VERSION_MAX":
28 | {
29 | "MAJOR": 1,
30 | "MINOR": 4,
31 | "PATCH": 99
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/MiniAVC-V2.version:
--------------------------------------------------------------------------------
1 | {
2 | "NAME": "MiniAVC-V2 Plugin",
3 | "URL": "http://ksp.spacetux.net/avc/MiniAVC-V2",
4 | "DOWNLOAD": "https://github.com/linuxgurugamer/KSPAddonVersionChecker/releases",
5 | "GITHUB": {
6 | "USERNAME": "linuxgurugamer",
7 | "REPOSITORY": "KSPAddonVersionChecker"
8 | },
9 | "VERSION": {
10 | "MAJOR": 2,
11 | "MINOR": 0,
12 | "PATCH": 0,
13 | "BUILD": 1
14 | },
15 | "KSP_VERSION": {
16 | "MAJOR": 1,
17 | "MINOR": 12,
18 | "PATCH": 2
19 | },
20 | "KSP_VERSION_MIN": {
21 | "MAJOR": 1,
22 | "MINOR": 12,
23 | "PATCH": 0
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/GameData/KSP-AVC/KSP-AVC.version:
--------------------------------------------------------------------------------
1 | {
2 | "NAME": "KSP-AVC Plugin",
3 | "URL": "http://ksp.spacetux.net/avc/KSP-AVC",
4 | "DOWNLOAD": "https://github.com/linuxgurugamer/KSPAddonVersionChecker/releases",
5 | "GITHUB": {
6 | "USERNAME": "linuxgurugamer",
7 | "REPOSITORY": "KSPAddonVersionChecker"
8 | },
9 | "VERSION": {
10 | "MAJOR": 1,
11 | "MINOR": 4,
12 | "PATCH": 1,
13 | "BUILD": 8
14 | },
15 | "KSP_VERSION": {
16 | "MAJOR": 1,
17 | "MINOR": 12,
18 | "PATCH": 2
19 | },
20 | "KSP_VERSION_MIN": {
21 | "MAJOR": 1,
22 | "MINOR": 12,
23 | "PATCH": 0
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/TestCases/mods versions/HyperEdit.version:
--------------------------------------------------------------------------------
1 | {
2 | "NAME": "HyperEdit",
3 | "URL": "https://raw.githubusercontent.com/Ezriilc/HyperEdit/master/HyperEdit.version",
4 | "DOWNLOAD": "http://www.kerbaltek.com/hyperedit",
5 | "VERSION": {
6 | "MAJOR": 1,
7 | "MINOR": 5,
8 | "PATCH": 6,
9 | "BUILD": 0
10 | },
11 | "KSP_VERSION": {
12 | "MAJOR": 1,
13 | "MINOR": 3,
14 | "PATCH": 1
15 | },
16 | "KSP_VERSION_MIN": {
17 | "MAJOR": 1,
18 | "MINOR": 3,
19 | "PATCH": 1
20 | },
21 | "KSP_VERSION_MAX": {
22 | "MAJOR": 1,
23 | "MINOR": 3,
24 | "PATCH": 99
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/TestCases/mods versions/FuelTankExpansion.version:
--------------------------------------------------------------------------------
1 | {
2 | "NAME": "MunarIndustries Fuel Tank Expansion",
3 | "URL": "https://raw.githubusercontent.com/linuxgurugamer/ModularFuelTankExpansion/master/GameData/MunarIndustries/FuelTankExpansion.version",
4 | "VERSION": {
5 | "MAJOR": 0,
6 | "MINOR": 9,
7 | "PATCH": 6,
8 | "BUILD": 1
9 | },
10 | "KSP_VERSION": {
11 | "MAJOR": 1,
12 | "MINOR": 3,
13 | "PATCH": 0
14 | },
15 | "KSP_VERSION_MIN": {
16 | "MAJOR": 1,
17 | "MINOR": 3,
18 | "PATCH": 0
19 | },
20 | "KSP_VERSION_MAX": {
21 | "MAJOR": 1,
22 | "MINOR": 4,
23 | "PATCH": 99
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/TestCases/mods versions/ToolbarControl.version:
--------------------------------------------------------------------------------
1 | {
2 | "NAME" : "ToolbarControl",
3 | "URL" : "https://raw.githubusercontent.com/linuxgurugamer/ToolbarControl/master/ToolbarControl.version",
4 | "DOWNLOAD" : "https://github.com/linuxgurugamer/ToolbarControl/releases",
5 | "GITHUB" :
6 | {
7 | "USERNAME" : "linuxgurugamer",
8 | "REPOSITORY" : "ToolbarControl"
9 | },
10 | "VERSION" :
11 | {
12 | "MAJOR" : 0,
13 | "MINOR" : 1,
14 | "PATCH" : 5,
15 | "BUILD" : 6
16 | },
17 | "KSP_VERSION":
18 | {
19 | "MAJOR": 1,
20 | "MINOR": 4,
21 | "PATCH": 1
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/TestCases/KspMinMaxVersion.version:
--------------------------------------------------------------------------------
1 | {
2 | "NAME":"KspMinVersion & KspMaxVersion",
3 | "URL":"file://D:/Users/jbb/github/KSPAddonVersionChecker/TestCases/KspMinMaxVersion.version",
4 | "VERSION":
5 | {
6 | "MAJOR":1,
7 | "MINOR":1,
8 | "PATCH":6,
9 | "BUILD":2
10 | },
11 | "KSP_VERSION":
12 | {
13 | "MAJOR":1,
14 | "MINOR":2,
15 | "PATCH":0
16 | },
17 | "KSP_VERSION_MIN":
18 | {
19 | "MAJOR":1,
20 | "MINOR":2,
21 | "PATCH":0
22 | },
23 | "KSP_VERSION_MAX":
24 | {
25 | "MAJOR":1,
26 | "MINOR":2,
27 | "PATCH":0
28 | }
29 | }
--------------------------------------------------------------------------------
/TestCases/KspMinMaxVersion1.version:
--------------------------------------------------------------------------------
1 | {
2 | "NAME":"KspMinVersion & KspMaxVersion, Update Available",
3 | "URL":"file://D:/Users/jbb/github/KSPAddonVersionChecker/TestCases/KspMinMaxVersion.version",
4 | "VERSION":
5 | {
6 | "MAJOR":1,
7 | "MINOR":1,
8 | "PATCH":6,
9 | "BUILD":0
10 | },
11 | "KSP_VERSION":
12 | {
13 | "MAJOR":1,
14 | "MINOR":2,
15 | "PATCH":0
16 | },
17 | "KSP_VERSION_MIN":
18 | {
19 | "MAJOR":1,
20 | "MINOR":2,
21 | "PATCH":0
22 | },
23 | "KSP_VERSION_MAX":
24 | {
25 | "MAJOR":1,
26 | "MINOR":4,
27 | "PATCH":1
28 | }
29 | }
--------------------------------------------------------------------------------
/TestCases/mods versions/TimeControl.version:
--------------------------------------------------------------------------------
1 | {
2 | "NAME": "TimeControl",
3 | "URL": "http://ksp-avc.cybutek.net/version.php?id=310",
4 | "DOWNLOAD": "https://github.com/ntwest/TimeControl/releases",
5 | "CHANGE_LOG_URL": "https://github.com/ntwest/TimeControl/blob/master/CHANGELOG.md",
6 | "VERSION": {
7 | "MAJOR": 2,
8 | "MINOR": 9,
9 | "PATCH": 0,
10 | "BUILD": 0
11 | },
12 | "KSP_VERSION": {
13 | "MAJOR": 1,
14 | "MINOR": 4,
15 | "PATCH": 1
16 | },
17 | "KSP_VERSION_MIN": {
18 | "MAJOR": 1,
19 | "MINOR": 4,
20 | "PATCH": 1
21 | },
22 | "KSP_VERSION_MAX": {
23 | "MAJOR": 1,
24 | "MINOR": 4,
25 | "PATCH": 1
26 | }
27 | }
--------------------------------------------------------------------------------
/TestCases/mods versions/ClickThroughBlocker.version:
--------------------------------------------------------------------------------
1 | {
2 |
3 | "NAME": "ClickThroughBlocker",
4 | "URL" : "https://raw.githubusercontent.com/linuxgurugamer/ClickThroughBlocker/master/ClickThroughBlocker.version",
5 | "DOWNLOAD" : "https://github.com/linuxgurugamer/ClickThroughBlocker/releases",
6 | "GITHUB" :
7 | {
8 | "USERNAME" : "linuxgurugamer",
9 | "REPOSITORY" : "ClickThroughBlocker"
10 | },
11 | "URL": "http://ksp-avc.cybutek.net/version.php?id=546",
12 | "VERSION": {
13 | "MAJOR": 0,
14 | "MINOR": 1,
15 | "PATCH": 6,
16 | "BUILD": 0
17 | },
18 | "KSP_VERSION": {
19 | "MAJOR": 1,
20 | "MINOR": 4,
21 | "PATCH": 1
22 | }
23 | }
--------------------------------------------------------------------------------
/TestCases/mods versions/KerbalAlarmClock.version:
--------------------------------------------------------------------------------
1 | {
2 | "NAME": "Kerbal Alarm Clock",
3 | "URL": "https://raw.githubusercontent.com/TriggerAu/KerbalAlarmClock/master/KerbalAlarmClock/KerbalAlarmClock.version",
4 | "DOWNLOAD" : "https://github.com/TriggerAu/KerbalAlarmClock/releases",
5 | "VERSION": {
6 | "MAJOR": 3,
7 | "MINOR": 9,
8 | "PATCH": 0,
9 | "BUILD": 0
10 | },
11 | "KSP_VERSION": {
12 | "MAJOR": 1,
13 | "MINOR": 4,
14 | "PATCH": 1
15 | },
16 | "KSP_VERSION_MIN": {
17 | "MAJOR": 1,
18 | "MINOR": 4,
19 | "PATCH": 0
20 | },
21 | "KSP_VERSION_MAX": {
22 | "MAJOR": 1,
23 | "MINOR": 4,
24 | "PATCH": 99
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/TestCases/KspMinMaxVersion2.version:
--------------------------------------------------------------------------------
1 | {
2 | "NAME":"KspMinVersion & KspMaxVersion, No Update Available, Max too low",
3 | "URL":"file://D:/Users/jbb/github/KSPAddonVersionChecker/TestCases/KspMinMaxVersion.version",
4 | "VERSION":
5 | {
6 | "MAJOR":1,
7 | "MINOR":1,
8 | "PATCH":6,
9 | "BUILD":0
10 | },
11 | "KSP_VERSION":
12 | {
13 | "MAJOR":1,
14 | "MINOR":2,
15 | "PATCH":0
16 | },
17 | "KSP_VERSION_MIN":
18 | {
19 | "MAJOR":1,
20 | "MINOR":2,
21 | "PATCH":0
22 | },
23 | "KSP_VERSION_MAX":
24 | {
25 | "MAJOR":1,
26 | "MINOR":4,
27 | "PATCH":0
28 | }
29 | }
--------------------------------------------------------------------------------
/TestCases/mods versions/PatchManager.version:
--------------------------------------------------------------------------------
1 | {
2 | "NAME": "PatchManager",
3 | "URL": "https://raw.githubusercontent.com/linuxgurugamer/PatchManager/master/PatchManager.version",
4 | "DOWNLOAD" : "https://github.com/linuxgurugamer/PatchManager/releases",
5 | "GITHUB" :
6 | {
7 | "USERNAME" : "linuxgurugamer",
8 | "REPOSITORY" : "PatchManager"
9 | },
10 |
11 | "URL": "https://raw.githubusercontent.com/linuxgurugamer/PatchManager/master/PatchManager.version",
12 | "VERSION": {
13 | "MAJOR": 0,
14 | "MINOR": 0,
15 | "PATCH": 15,
16 | "BUILD": 0
17 | },
18 | "KSP_VERSION": {
19 | "MAJOR": 1,
20 | "MINOR": 4,
21 | "PATCH": 1
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/TestCases/KspMinMaxVersion3.version:
--------------------------------------------------------------------------------
1 | {
2 | "NAME":"KspMinVersion & KspMaxVersion, No Update Available, Min too high",
3 | "URL":"file://D:/Users/jbb/github/KSPAddonVersionChecker/TestCases/KspMinMaxVersion.version",
4 | "VERSION":
5 | {
6 | "MAJOR":1,
7 | "MINOR":1,
8 | "PATCH":6,
9 | "BUILD":0
10 | },
11 | "KSP_VERSION":
12 | {
13 | "MAJOR":1,
14 | "MINOR":2,
15 | "PATCH":0
16 | },
17 | "KSP_VERSION_MIN":
18 | {
19 | "MAJOR":1,
20 | "MINOR":4,
21 | "PATCH":2
22 | },
23 | "KSP_VERSION_MAX":
24 | {
25 | "MAJOR":1,
26 | "MINOR":5,
27 | "PATCH":0
28 | }
29 | }
--------------------------------------------------------------------------------
/TestCases/mods versions/MagiCore.version:
--------------------------------------------------------------------------------
1 | {
2 | "NAME":"MagiCore",
3 | "URL":"https://raw.githubusercontent.com/magico13/MagiCore/master/GameData/MagiCore/MagiCore.version",
4 | "VERSION":
5 | {
6 | "MAJOR":1,
7 | "MINOR":3,
8 | "PATCH":1,
9 | "BUILD":0
10 | },
11 | "GITHUB":
12 | {
13 | "USERNAME":"magico13",
14 | "REPOSITORY":"MagiCore",
15 | "ALLOW_PRE_RELEASE":false,
16 | },
17 | "KSP_VERSION_MIN":
18 | {
19 | "MAJOR":1,
20 | "MINOR":2,
21 | "PATCH":0
22 | },
23 | "KSP_VERSION_MAX":
24 | {
25 | "MAJOR":1,
26 | "MINOR":4,
27 | "PATCH":8
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/TestCases/mods versions/UniversalStorageStockResourceFuelCell.version:
--------------------------------------------------------------------------------
1 | {
2 | "NAME":"Universal Storage - Stock Resource Fuel Cell",
3 | "DOWNLOAD":"https://github.com/QuickBASIC/UniversalStorageStockResourceFuelCell/releases",
4 | "VERSION":
5 | {
6 | "MAJOR":0,
7 | "MINOR":1,
8 | "PATCH":4,
9 | "BUILD":1
10 | },
11 | "KSP_VERSION":
12 | {
13 | "MAJOR":1,
14 | "MINOR":1,
15 | "PATCH":3
16 | },
17 | "KSP_VERSION_MIN":
18 | {
19 | "MAJOR":1,
20 | "MINOR":1,
21 | "PATCH":3
22 | },
23 | "KSP_VERSION_MAX":
24 | {
25 | "MAJOR":1,
26 | "MINOR":4,
27 | "PATCH":99
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/TestCases/mods versions/CrewLight.version:
--------------------------------------------------------------------------------
1 | {
2 | "NAME":"Crew Light",
3 | "URL":"https://raw.githubusercontent.com/Li0n-0/CrewLight/master/GameData/CrewLight/CrewLight.version",
4 | "DOWNLOAD":"https://github.com/Li0n-0/CrewLight/releases",
5 | "VERSION":
6 | {
7 | "MAJOR":1,
8 | "MINOR":13,
9 | "PATCH":0,
10 | "BUILD":0
11 | },
12 | "KSP_VERSION":
13 | {
14 | "MAJOR":1,
15 | "MINOR":4,
16 | "PATCH":1
17 | },
18 | "KSP_VERSION_MIN":
19 | {
20 | "MAJOR":1,
21 | "MINOR":4,
22 | "PATCH":1
23 | },
24 | "KSP_VERSION_MAX":
25 | {
26 | "MAJOR":1,
27 | "MINOR":4,
28 | "PATCH":1
29 | }
30 | }
--------------------------------------------------------------------------------
/TestCases/mods versions/OldPartsReduxAlpha.version:
--------------------------------------------------------------------------------
1 | {
2 | "NAME":"Old Parts Redux Alpha",
3 | "URL":"https://spacedock.info/mod/1744/Old%20Parts%20Redux",
4 | "DOWNLOAD":"https://spacedock.info/mod/1744/Old%20Parts%20Redux/download/0.6.3",
5 | },
6 | "VERSION":
7 | {
8 | "MAJOR":1,
9 | "MINOR":0,
10 | "PATCH":0,
11 | "BUILD":0
12 | },
13 | "KSP_VERSION":
14 | {
15 | "MAJOR":1,
16 | "MINOR":4,
17 | "PATCH":0
18 | },
19 | "KSP_VERSION_MIN":
20 | {
21 | "MAJOR":1,
22 | "MINOR":4,
23 | "PATCH":0
24 | },
25 | "KSP_VERSION_MAX":
26 | {
27 | "MAJOR":1,
28 | "MINOR":4,
29 | "PATCH":9
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/TestCases/mods versions/Bluedog_DB.version:
--------------------------------------------------------------------------------
1 | {
2 | "NAME": "Bluedog Design Bureau",
3 | "DOWNLOAD": "https://github.com/CobaltWolf/Bluedog-Design-Bureau/releases",
4 | "URL": "https://raw.githubusercontent.com/CobaltWolf/Bluedog-Design-Bureau/master/Gamedata/Bluedog_DB/Bluedog_DB.version",
5 | "VERSION": {
6 | "MAJOR": 1,
7 | "MINOR": 1,
8 | "PATCH": 6,
9 | "BUILD": 0
10 | },
11 | "KSP_VERSION": {
12 | "MAJOR": 1,
13 | "MINOR": 3,
14 | "PATCH": 0
15 | },
16 | "KSP_VERSION_MIN": {
17 | "MAJOR": 1,
18 | "MINOR": 3,
19 | "PATCH": 0
20 | },
21 | "KSP_VERSION_MAX": {
22 | "MAJOR": 1,
23 | "MINOR": 3,
24 | "PATCH": 99
25 | }
26 | }
--------------------------------------------------------------------------------
/TestCases/mods versions/RealTimeClock2.version:
--------------------------------------------------------------------------------
1 | {
2 | "NAME":"Real Time Clock 2",
3 | "URL":"https://raw.githubusercontent.com/Li0n-0/Real-Time-Clock-2/master/GameData/RealTimeClock2/RealTimeClock2.version",
4 | "DOWNLOAD":"https://github.com/Li0n-0/Real-Time-Clock-2/releases",
5 | "VERSION":
6 | {
7 | "MAJOR":1,
8 | "MINOR":7,
9 | "PATCH":0,
10 | "BUILD":0
11 | },
12 | "KSP_VERSION":
13 | {
14 | "MAJOR":1,
15 | "MINOR":4,
16 | "PATCH":1
17 | },
18 | "KSP_VERSION_MIN":
19 | {
20 | "MAJOR":1,
21 | "MINOR":4,
22 | "PATCH":1
23 | },
24 | "KSP_VERSION_MAX":
25 | {
26 | "MAJOR":1,
27 | "MINOR":4,
28 | "PATCH":1
29 | }
30 | }
--------------------------------------------------------------------------------
/TestCases/mods versions/AutoAction.version:
--------------------------------------------------------------------------------
1 | {
2 | "NAME": "AutoAction",
3 | "URL": "http://ksp-avc.cybutek.net/version.php?id=373",
4 | "DOWNLOAD": "https://github.com/formicant/AutoAction/releases",
5 | "GITHUB":
6 | {
7 | "USERNAME": "formicant",
8 | "REPOSITORY": "AutoAction",
9 | "ALLOW_PRE_RELEASE": false,
10 | },
11 | "VERSION":
12 | {
13 | "MAJOR": 1,
14 | "MINOR": 9,
15 | "PATCH": 4,
16 | "BUILD": 0
17 | },
18 | "KSP_VERSION":
19 | {
20 | "MAJOR": 1,
21 | "MINOR": 4,
22 | "PATCH": 1
23 | },
24 | "KSP_VERSION_MIN":
25 | {
26 | "MAJOR": 1,
27 | "MINOR": 4,
28 | "PATCH": 0
29 | },
30 | "KSP_VERSION_MAX":
31 | {
32 | "MAJOR": 1,
33 | "MINOR": 4,
34 | "PATCH": 1
35 | },
36 | }
37 |
--------------------------------------------------------------------------------
/TestCases/mods versions/kOS.version:
--------------------------------------------------------------------------------
1 | {
2 | "NAME": "kOS",
3 | "URL": "https://raw.githubusercontent.com/KSP-KOS/KOS/master/Resources/GameData/kOS/kOS.version",
4 | "DOWNLOAD": "TODO - when release...",
5 | "CHANGE_LOG_URL": "https://raw.githubusercontent.com/KSP-KOS/KOS/master/CHANGELOG.md",
6 | "GITHUB": {
7 | "USERNAME":"KSP-KOS",
8 | "REPOSITORY":"KOS",
9 | "ALLOW_PRE_RELEASE":false
10 | },
11 | "VERSION": {
12 | "MAJOR": 1,
13 | "MINOR": 1,
14 | "PATCH": 5,
15 | "BUILD": 2
16 | },
17 | "KSP_VERSION": {
18 | "MAJOR": 1,
19 | "MINOR": 4,
20 | "PATCH": 1
21 | },
22 | "KSP_VERSION_MIN": {
23 | "MAJOR": 1,
24 | "MINOR": 4,
25 | "PATCH": 1
26 | },
27 | "KSP_VERSION_MAX": {
28 | "MAJOR": 1,
29 | "MINOR": 4,
30 | "PATCH": 1
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/TestCases/mods versions/EnvironmentalVisualEnhancements.version:
--------------------------------------------------------------------------------
1 | {
2 | "NAME": "Environmental Visual Enhancements",
3 | "URL": "https://raw.githubusercontent.com/WazWaz/EnvironmentalVisualEnhancements/master/EnvironmentalVisualEnhancements.version",
4 | "DOWNLOAD" : "https://github.com/WazWaz/EnvironmentalVisualEnhancements/releases",
5 | "GITHUB": {
6 | "USERNAME": "WazWaz",
7 | "REPOSITORY": "EnvironmentalVisualEnhancements",
8 | "ALLOW_PRE_RELEASE": false
9 | },
10 | "VERSION": {
11 | "MAJOR": 1,
12 | "MINOR": 4,
13 | "PATCH": 0,
14 | "BUILD": 1
15 | },
16 | "KSP_VERSION": {
17 | "MAJOR": 1,
18 | "MINOR": 4,
19 | "PATCH": 0
20 | },
21 | "KSP_VERSION_MIN": {
22 | "MAJOR": 1,
23 | "MINOR": 4,
24 | "PATCH": 0
25 | },
26 | "KSP_VERSION_MAX": {
27 | "MAJOR": 1,
28 | "MINOR": 4,
29 | "PATCH": 99
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/TestCases/mods versions/SCANsat.version:
--------------------------------------------------------------------------------
1 | {
2 | "NAME":"SCANsat",
3 | "URL":"https://raw.githubusercontent.com/S-C-A-N/SCANsat/release/SCANassets/SCANsat.version",
4 | "DOWNLOAD":"https://github.com/S-C-A-N/SCANsat/releases",
5 | "GITHUB":{
6 | "USERNAME":"S-C-A-N",
7 | "REPOSITORY":"SCANsat",
8 | "ALLOW_PRE_RELEASE":false
9 | },
10 | "VERSION":{
11 | "MAJOR":1,
12 | "MINOR":1,
13 | "PATCH":8,
14 | "BUILD":5
15 | },
16 | "KSP_VERSION":{
17 | "MAJOR":1,
18 | "MINOR":4,
19 | "PATCH":1
20 | },
21 | "KSP_VERSION_MIN":{
22 | "MAJOR":1,
23 | "MINOR":4,
24 | "PATCH":0
25 | },
26 | "KSP_VERSION_MAX":{
27 | "MAJOR":1,
28 | "MINOR":4,
29 | "PATCH":8
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/TestCases/mods versions/KIS.version:
--------------------------------------------------------------------------------
1 | {
2 | "CHANGE_LOG_URL": "https://raw.githubusercontent.com/ihsoft/KIS/master/CHANGELOG.md",
3 | "DOWNLOAD": "http://forum.kerbalspaceprogram.com/index.php?/topic/149848-12-kerbal-inventory-system-kis-v131/",
4 | "KSP_VERSION": {
5 | "MAJOR": 1,
6 | "MINOR": 4,
7 | "PATCH": 0
8 | },
9 | "KSP_VERSION_MAX": {
10 | "MAJOR": 1,
11 | "MINOR": 4,
12 | "PATCH": 99
13 | },
14 | "KSP_VERSION_MIN": {
15 | "MAJOR": 1,
16 | "MINOR": 4,
17 | "PATCH": 0
18 | },
19 | "NAME": "Kerbal Inventory System",
20 | "URL": "https://raw.githubusercontent.com/ihsoft/KIS/master/KIS.version",
21 | "VERSION": {
22 | "BUILD": 40620,
23 | "MAJOR": 1,
24 | "MINOR": 10,
25 | "PATCH": 6640
26 | }
27 | }
--------------------------------------------------------------------------------
/TestCases/mods versions/EasyVesselSwitch.version:
--------------------------------------------------------------------------------
1 | {
2 | "CHANGE_LOG_URL": "https://raw.githubusercontent.com/ihsoft/EasyVesselSwitch/master/CHANGELOG.md",
3 | "DOWNLOAD": "http://kerbal.curseforge.com/projects/easy-vessel-switch-evs",
4 | "KSP_VERSION": {
5 | "MAJOR": 1,
6 | "MINOR": 4,
7 | "PATCH": 0
8 | },
9 | "KSP_VERSION_MAX": {
10 | "MAJOR": 1,
11 | "MINOR": 4,
12 | "PATCH": 99
13 | },
14 | "KSP_VERSION_MIN": {
15 | "MAJOR": 1,
16 | "MINOR": 4,
17 | "PATCH": 0
18 | },
19 | "NAME": "Easy Vessel Switch",
20 | "URL": "https://raw.githubusercontent.com/ihsoft/EasyVesselSwitch/master/EasyVesselSwitch.version",
21 | "VERSION": {
22 | "BUILD": 41793,
23 | "MAJOR": 1,
24 | "MINOR": 6,
25 | "PATCH": 6640
26 | }
27 | }
--------------------------------------------------------------------------------
/TestCases/mods versions/SR.version:
--------------------------------------------------------------------------------
1 | {
2 | "NAME":"StageRecovery",
3 | "URL":"https://raw.githubusercontent.com/magico13/StageRecovery/master/GameData/StageRecovery/SR.version",
4 | "DOWNLOAD":"http://forum.kerbalspaceprogram.com/index.php?/topic/78226-1",
5 | "CHANGE_LOG_URL":"https://raw.githubusercontent.com/magico13/StageRecovery/master/GameData/StageRecovery/SR-Readme.txt",
6 | "VERSION":{
7 | "MAJOR":1,
8 | "MINOR":8,
9 | "PATCH":0,
10 | "BUILD":0
11 | },
12 | "KSP_VERSION":{
13 | "MAJOR":1,
14 | "MINOR":4,
15 | "PATCH":0
16 | },
17 | "KSP_VERSION_MIN":{
18 | "MAJOR":1,
19 | "MINOR":4,
20 | "PATCH":0
21 | },
22 | "KSP_VERSION_MAX":{
23 | "MAJOR":1,
24 | "MINOR":4,
25 | "PATCH":8
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/TestCases/mods versions/AdjustableModPanel.version:
--------------------------------------------------------------------------------
1 | {
2 | "NAME": "Adjustable Mod Panel",
3 | "DOWNLOAD": "https://github.com/radistmorse/KSPAdjustableModPanel/releases",
4 | "URL": "https://raw.githubusercontent.com/radistmorse/KSPAdjustableModPanel/master/AdjustableModPanel.version",
5 | "GITHUB": {
6 | "USERNAME": "radistmorse",
7 | "REPOSITORY": "KSPAdjustableModPanel"
8 | },
9 | "VERSION": {
10 | "MAJOR": 1,
11 | "MINOR": 4,
12 | "PATCH": 0,
13 | "BUILD": 0
14 | },
15 | "KSP_VERSION": {
16 | "MAJOR": 1,
17 | "MINOR": 4,
18 | "PATCH": 0
19 | },
20 | "KSP_VERSION_MIN": {
21 | "MAJOR": 1,
22 | "MINOR": 4,
23 | "PATCH": 0
24 | },
25 | "KSP_VERSION_MAX": {
26 | "MAJOR": 1,
27 | "MINOR": 4,
28 | "PATCH": 99
29 | }
30 | }
--------------------------------------------------------------------------------
/TestCases/mods versions/EVAStruts.version:
--------------------------------------------------------------------------------
1 | {
2 | "NAME":"EVA Struts",
3 | "URL":"https://raw.githubusercontent.com/DMagic1/KSP_EVA_Struts/master/GameData/EVAStruts/EVAStruts.version",
4 | "DOWNLOAD":"https://github.com/DMagic1/KSP_EVA_Strut/releases",
5 | "GITHUB":{
6 | "USERNAME":"DMagic1",
7 | "REPOSITORY":"KSP_EVA_Struts",
8 | "ALLOW_PRE_RELEASE":false,
9 | },
10 | "VERSION":{
11 | "MAJOR":1,
12 | "MINOR":0,
13 | "PATCH":5,
14 | "BUILD":0
15 | },
16 | "KSP_VERSION":{
17 | "MAJOR":1,
18 | "MINOR":4,
19 | "PATCH":1
20 | },
21 | "KSP_VERSION_MIN":{
22 | "MAJOR":1,
23 | "MINOR":4,
24 | "PATCH":0
25 | },
26 | "KSP_VERSION_MAX":{
27 | "MAJOR":1,
28 | "MINOR":4,
29 | "PATCH":8
30 | }
31 | }
--------------------------------------------------------------------------------
/TestCases/mods versions/PhysicsRangeExtender.version:
--------------------------------------------------------------------------------
1 | {
2 | "NAME": "PhysicsRangeExtender",
3 | "URL":"https://github.com/jrodrigv/PhysicsRangeExtender/raw/master/PhysicsRangeExtender/Distribution/GameData/PhysicsRangeExtender/PhysicsRangeExtender.version",
4 | "DOWNLOAD":"https://github.com/jrodrigv/PhysicsRangeExtender/releases/tag/1.6.0",
5 | "CHANGE_LOG_URL":"https://github.com/jrodrigv/PhysicsRangeExtender/raw/master/PhysicsRangeExtender/Distribution/GameData/PhysicsRangeExtender/ChangeLog.txt",
6 | "VERSION": {
7 | "MAJOR": 1,
8 | "MINOR": 6,
9 | "PATCH": 0
10 | },
11 | "KSP_VERSION": {
12 | "MAJOR": 1,
13 | "MINOR": 4,
14 | "PATCH": 0
15 | },
16 | "KSP_VERSION_MIN": {
17 | "MAJOR": 1,
18 | "MINOR": 4,
19 | "PATCH": 0
20 | },
21 | "KSP_VERSION_MAX": {
22 | "MAJOR": 1,
23 | "MINOR": 4,
24 | "PATCH": 99
25 | }
26 | }
--------------------------------------------------------------------------------
/TestCases/mods versions/BasicOrbit.version:
--------------------------------------------------------------------------------
1 | {
2 | "NAME":"Basic Orbit",
3 | "URL":"https://raw.githubusercontent.com/DMagic1/KSP_BasicOrbit/master/GameData/BasicOrbit/BasicOrbit.version",
4 | "DOWNLOAD":"https://github.com/DMagic1/KSP_BasicOrbit/releases",
5 | "GITHUB":{
6 | "USERNAME":"DMagic1",
7 | "REPOSITORY":"KSP_BasicOrbit",
8 | "ALLOW_PRE_RELEASE":false,
9 | },
10 | "VERSION":{
11 | "MAJOR":1,
12 | "MINOR":0,
13 | "PATCH":8,
14 | "BUILD":0
15 | },
16 | "KSP_VERSION":{
17 | "MAJOR":1,
18 | "MINOR":4,
19 | "PATCH":1
20 | },
21 | "KSP_VERSION_MIN":{
22 | "MAJOR":1,
23 | "MINOR":4,
24 | "PATCH":0
25 | },
26 | "KSP_VERSION_MAX":{
27 | "MAJOR":1,
28 | "MINOR":4,
29 | "PATCH":8
30 | }
31 | }
--------------------------------------------------------------------------------
/TestCases/mods versions/TweakScale.version:
--------------------------------------------------------------------------------
1 | {
2 | "NAME":"TweakScale",
3 | "URL":"https://github.com/pellinor0/TweakScale/blob/master/GameData/TweakScale/TweakScale.version",
4 | "DOWNLOAD":"http://spacedock.info/mod/127/TweakScale/",
5 | "GITHUB":{
6 | "USERNAME":"Pellinor",
7 | "REPOSITORY":"TweakScale",
8 | "ALLOW_PRE_RELEASE":false,
9 | },
10 | "VERSION":{
11 | "MAJOR":2,
12 | "MINOR":3,
13 | "PATCH":10,
14 | "BUILD":0
15 | },
16 | "KSP_VERSION":{
17 | "MAJOR":1,
18 | "MINOR":4,
19 | "PATCH":1
20 | },
21 | "KSP_VERSION_MIN":
22 | {
23 | "MAJOR":1,
24 | "MINOR":4,
25 | "PATCH":0
26 | },
27 | "KSP_VERSION_MAX":
28 | {
29 | "MAJOR":1,
30 | "MINOR":4,
31 | "PATCH":99
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/TestCases/mods versions/EVATransfer.version:
--------------------------------------------------------------------------------
1 | {
2 | "NAME":"EVA Transfer",
3 | "URL":"https://raw.githubusercontent.com/DMagic1/KSP-EVA-Transfer/master/GameData/EVATransfer/EVATransfer.version",
4 | "DOWNLOAD":"https://github.com/DMagic1/KSP-EVA-Transfer/releases",
5 | "GITHUB":{
6 | "USERNAME":"DMagic1",
7 | "REPOSITORY":"KSP-EVA-Transfer",
8 | "ALLOW_PRE_RELEASE":false,
9 | },
10 | "VERSION":{
11 | "MAJOR":1,
12 | "MINOR":0,
13 | "PATCH":8,
14 | "BUILD":0
15 | },
16 | "KSP_VERSION":{
17 | "MAJOR":1,
18 | "MINOR":4,
19 | "PATCH":1
20 | },
21 | "KSP_VERSION_MIN":{
22 | "MAJOR":1,
23 | "MINOR":4,
24 | "PATCH":0
25 | },
26 | "KSP_VERSION_MAX":{
27 | "MAJOR":1,
28 | "MINOR":4,
29 | "PATCH":8
30 | }
31 | }
--------------------------------------------------------------------------------
/TestCases/mods versions/USI-LS.version:
--------------------------------------------------------------------------------
1 | {
2 | "NAME":"USI-LS",
3 | "URL":"https://raw.githubusercontent.com/BobPalmer/USI-LS/master/FOR_RELEASE/GameData/UmbraSpaceIndustries/LifeSupport/USI-LS.version",
4 | "DOWNLOAD":"https://github.com/BobPalmer/USI-LS/releases",
5 | "GITHUB":{
6 | "USERNAME":"BobPalmer",
7 | "REPOSITORY":"USI-LS",
8 | "ALLOW_PRE_RELEASE":false
9 | },
10 | "VERSION":{
11 | "MAJOR":0,
12 | "MINOR":9,
13 | "PATCH":0,
14 | "BUILD":0
15 | },
16 | "KSP_VERSION":{
17 | "MAJOR":1,
18 | "MINOR":4,
19 | "PATCH":1
20 | },
21 | "KSP_VERSION_MIN":{
22 | "MAJOR":1,
23 | "MINOR":4,
24 | "PATCH":0
25 | },
26 | "KSP_VERSION_MAX":{
27 | "MAJOR":1,
28 | "MINOR":4,
29 | "PATCH":9
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/TestCases/mods versions/RemoteTech.version:
--------------------------------------------------------------------------------
1 | {
2 | "NAME": "RemoteTech",
3 | "URL": "https://raw.githubusercontent.com/RemoteTechnologiesGroup/RemoteTech/master/GameData/RemoteTech/RemoteTech.version",
4 | "CHANGE_LOG_URL": "https://raw.githubusercontent.com/RemoteTechnologiesGroup/RemoteTech/master/CHANGES.md",
5 | "DOWNLOAD": "http://spacedock.info/mod/520/RemoteTech",
6 | "GITHUB":
7 | {
8 | "USERNAME": "RemoteTechnologiesGroup",
9 | "REPOSITORY": "RemoteTech",
10 | "ALLOW_PRE_RELEASE": false
11 | },
12 | "VERSION":{
13 | "MAJOR":1,
14 | "MINOR":8,
15 | "PATCH":10,
16 | "BUILD":1
17 | },
18 | "KSP_VERSION":{
19 | "MAJOR":1,
20 | "MINOR":4,
21 | "PATCH":1
22 | },
23 | "KSP_VERSION_MIN":{
24 | "MAJOR":1,
25 | "MINOR":4,
26 | "PATCH":0
27 | },
28 | "KSP_VERSION_MAX":{
29 | "MAJOR":1,
30 | "MINOR":4,
31 | "PATCH":1
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/TestCases/mods versions/KAS.version:
--------------------------------------------------------------------------------
1 | {
2 | "CHANGE_LOG_URL": "https://raw.githubusercontent.com/ihsoft/KAS/master/changelog.md",
3 | "DOWNLOAD": "http://forum.kerbalspaceprogram.com/threads/92514",
4 | "GITHUB": {
5 | "REPOSITORY": "KAS",
6 | "USERNAME": "ihsoft"
7 | },
8 | "KSP_VERSION": {
9 | "MAJOR": 1,
10 | "MINOR": 4,
11 | "PATCH": 0
12 | },
13 | "KSP_VERSION_MAX": {
14 | "MAJOR": 1,
15 | "MINOR": 4,
16 | "PATCH": 99
17 | },
18 | "KSP_VERSION_MIN": {
19 | "MAJOR": 1,
20 | "MINOR": 4,
21 | "PATCH": 0
22 | },
23 | "NAME": "Kerbal Attachment System",
24 | "URL": "https://raw.githubusercontent.com/ihsoft/KAS/master/kas.version",
25 | "VERSION": {
26 | "BUILD": 0,
27 | "MAJOR": 0,
28 | "MINOR": 6,
29 | "PATCH": 4
30 | }
31 | }
--------------------------------------------------------------------------------
/TestCases/mods versions/FlexoDocking.version:
--------------------------------------------------------------------------------
1 | {
2 | "NAME":"Flexible Docking",
3 | "URL":"https://raw.githubusercontent.com/DMagic1/KSP_Flexible_Docking/master/GameData/FlexoDocking/FlexoDocking.version",
4 | "DOWNLOAD":"https://github.com/DMagic1/KSP_Flexible_Docking/releases",
5 | "GITHUB":{
6 | "USERNAME":"DMagic1",
7 | "REPOSITORY":"KSP_Flexible_Docking",
8 | "ALLOW_PRE_RELEASE":false,
9 | },
10 | "VERSION":{
11 | "MAJOR":1,
12 | "MINOR":0,
13 | "PATCH":6,
14 | "BUILD":0
15 | },
16 | "KSP_VERSION":{
17 | "MAJOR":1,
18 | "MINOR":4,
19 | "PATCH":1
20 | },
21 | "KSP_VERSION_MIN":{
22 | "MAJOR":1,
23 | "MINOR":4,
24 | "PATCH":0
25 | },
26 | "KSP_VERSION_MAX":{
27 | "MAJOR":1,
28 | "MINOR":4,
29 | "PATCH":8
30 | }
31 | }
--------------------------------------------------------------------------------
/TestCases/mods versions/USITools.version:
--------------------------------------------------------------------------------
1 | {
2 | "NAME":"USI Tools",
3 | "URL":"https://raw.githubusercontent.com/BobPalmer/UmbraSpaceIndustries/master/FOR_RELEASE/GameData/000_USITools/USITools.version",
4 | "DOWNLOAD":"https://github.com/BobPalmer/UmbraSpaceIndustries/releases",
5 | "GITHUB":{
6 | "USERNAME":"BobPalmer",
7 | "REPOSITORY":"UmbraSpaceIndustries",
8 | "ALLOW_PRE_RELEASE":false
9 | },
10 | "VERSION":{
11 | "MAJOR":0,
12 | "MINOR":12,
13 | "PATCH":0,
14 | "BUILD":0
15 | },
16 | "KSP_VERSION":{
17 | "MAJOR":1,
18 | "MINOR":4,
19 | "PATCH":1
20 | },
21 | "KSP_VERSION_MIN":{
22 | "MAJOR":1,
23 | "MINOR":4,
24 | "PATCH":0
25 | },
26 | "KSP_VERSION_MAX":{
27 | "MAJOR":1,
28 | "MINOR":4,
29 | "PATCH":9
30 | }
31 | }
--------------------------------------------------------------------------------
/TestCases/mods versions/KerbalAcademy.version:
--------------------------------------------------------------------------------
1 | {
2 | "NAME" : "Contract Pack: Kerbal Academy",
3 | "URL" : "https://github.com/severedsolo/KerbalAcademy/blob/master/KerbalAcademy.version",
4 | "DOWNLOAD" : "https://github.com/severedsolo/KerbalAcademy/releases",
5 | "GITHUB" :
6 | {
7 | "USERNAME" : "severedsolo",
8 | "REPOSITORY" : "KerbalAcademy"
9 | },
10 | "VERSION" :
11 | {
12 | "MAJOR" : 1,
13 | "MINOR" : 1,
14 | "PATCH" : 7,
15 | "BUILD" : 0
16 | },
17 | "KSP_VERSION" :
18 | {
19 | "MAJOR" : 1,
20 | "MINOR" : 2,
21 | "PATCH" : 2
22 | },
23 | "KSP_VERSION_MIN" :
24 | {
25 | "MAJOR" : 1,
26 | "MINOR" : 1,
27 | "PATCH" : 3
28 | },
29 | "KSP_VERSION_MAX" :
30 | {
31 | "MAJOR" : 1,
32 | "MINOR" : 99,
33 | "PATCH" : 99
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/TestCases/mods versions/CCK.version:
--------------------------------------------------------------------------------
1 | {
2 | "DOWNLOAD": "https://github.com/BobPalmer/CommunityCategoryKit/releases",
3 | "GITHUB": {
4 | "ALLOW_PRE_RELEASE": false,
5 | "REPOSITORY": "CommunityCategoryKit",
6 | "USERNAME": "BobPalmer"
7 | },
8 | "KSP_VERSION":{
9 | "MAJOR":1,
10 | "MINOR":4,
11 | "PATCH":0
12 | },
13 | "KSP_VERSION_MIN":{
14 | "MAJOR":1,
15 | "MINOR":4,
16 | "PATCH":0
17 | },
18 | "KSP_VERSION_MAX":{
19 | "MAJOR":1,
20 | "MINOR":4,
21 | "PATCH":9
22 | },
23 | "NAME": "Community Category Kit",
24 | "URL": "https://raw.githubusercontent.com/BobPalmer/CommunityCategoryKit/master/FOR_RELEASE/GameData/CommunityCategoryKit/CCK.version",
25 | "VERSION": {
26 | "BUILD": 0,
27 | "MAJOR": 3,
28 | "MINOR": 0,
29 | "PATCH": 0
30 | }
31 | }
--------------------------------------------------------------------------------
/TestCases/mods versions/CRP.version:
--------------------------------------------------------------------------------
1 | {
2 | "NAME":"Community Resource Pack",
3 | "URL":"https://raw.githubusercontent.com/BobPalmer/CommunityResourcePack/master/FOR_RELEASE/GameData/CommunityResourcePack/CRP.version",
4 | "DOWNLOAD":"https://github.com/BobPalmer/CommunityResourcePack/releases",
5 | "GITHUB":{
6 | "USERNAME":"BobPalmer",
7 | "REPOSITORY":"CommunityResourcePack",
8 | "ALLOW_PRE_RELEASE":false
9 | },
10 | "VERSION":{
11 | "MAJOR":0,
12 | "MINOR":10,
13 | "PATCH":0,
14 | "BUILD":0
15 | },
16 | "KSP_VERSION":{
17 | "MAJOR":1,
18 | "MINOR":4,
19 | "PATCH":1
20 | },
21 | "KSP_VERSION_MIN":{
22 | "MAJOR":1,
23 | "MINOR":4,
24 | "PATCH":0
25 | },
26 | "KSP_VERSION_MAX":{
27 | "MAJOR":1,
28 | "MINOR":4,
29 | "PATCH":9
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/TestCases/mods versions/TrackingStationEvolved.version:
--------------------------------------------------------------------------------
1 | {
2 | "NAME":"Tracking Station Evolved",
3 | "URL":"https://raw.githubusercontent.com/DMagic1/KSP_BetterTracking/master/GameData/TrackingStationEvolved/TrackingStationEvolved.version",
4 | "DOWNLOAD":"https://github.com/DMagic1/KSP_BetterTracking/releases",
5 | "GITHUB":{
6 | "USERNAME":"DMagic1",
7 | "REPOSITORY":"KSP_BetterTracking",
8 | "ALLOW_PRE_RELEASE":false,
9 | },
10 | "VERSION":{
11 | "MAJOR":1,
12 | "MINOR":0,
13 | "PATCH":2,
14 | "BUILD":0
15 | },
16 | "KSP_VERSION":{
17 | "MAJOR":1,
18 | "MINOR":4,
19 | "PATCH":1
20 | },
21 | "KSP_VERSION_MIN":{
22 | "MAJOR":1,
23 | "MINOR":4,
24 | "PATCH":1
25 | },
26 | "KSP_VERSION_MAX":{
27 | "MAJOR":1,
28 | "MINOR":4,
29 | "PATCH":8
30 | }
31 | }
--------------------------------------------------------------------------------
/TestCases/mods versions/ManeuverNodeEvolved.version:
--------------------------------------------------------------------------------
1 | {
2 | "NAME":"Maeneuver Node Evolved",
3 | "URL":"https://raw.githubusercontent.com/DMagic1/KSP_Better_Maneuvering/master/GameData/ManeuverNodeEvolved/ManeuverNodeEvolved.version",
4 | "DOWNLOAD":"https://github.com/DMagic1/KSP_Better_Maneuvering/releases",
5 | "GITHUB":{
6 | "USERNAME":"DMagic1",
7 | "REPOSITORY":"KSP_Better_Maneuvering",
8 | "ALLOW_PRE_RELEASE":false,
9 | },
10 | "VERSION":{
11 | "MAJOR":1,
12 | "MINOR":0,
13 | "PATCH":4,
14 | "BUILD":0
15 | },
16 | "KSP_VERSION":{
17 | "MAJOR":1,
18 | "MINOR":4,
19 | "PATCH":1
20 | },
21 | "KSP_VERSION_MIN":{
22 | "MAJOR":1,
23 | "MINOR":4,
24 | "PATCH":0
25 | },
26 | "KSP_VERSION_MAX":{
27 | "MAJOR":1,
28 | "MINOR":4,
29 | "PATCH":8
30 | }
31 | }
--------------------------------------------------------------------------------
/TestCases/mods versions/ContractRewardModifier.version:
--------------------------------------------------------------------------------
1 | {
2 | "NAME":"Contract Reward Modifier",
3 | "URL":"https://raw.githubusercontent.com/DMagic1/Contract-Modifier/master/GameData/ContractRewardModifier/ContractRewardModifier.version",
4 | "DOWNLOAD":"http://spacedock.info/mod/132/Contract%20Reward%20Modifier/download/2.6",
5 | "GITHUB":{
6 | "USERNAME":"DMagic1",
7 | "REPOSITORY":"Contract-Modifier",
8 | "ALLOW_PRE_RELEASE":false,
9 | },
10 | "VERSION":{
11 | "MAJOR":1,
12 | "MINOR":0,
13 | "PATCH":2,
14 | "BUILD":6
15 | },
16 | "KSP_VERSION":{
17 | "MAJOR":1,
18 | "MINOR":4,
19 | "PATCH":1
20 | },
21 | "KSP_VERSION_MIN":{
22 | "MAJOR":1,
23 | "MINOR":4,
24 | "PATCH":0
25 | },
26 | "KSP_VERSION_MAX":{
27 | "MAJOR":1,
28 | "MINOR":4,
29 | "PATCH":8
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/AVCToolkit/Json/IJsonObject.cs:
--------------------------------------------------------------------------------
1 | //
2 | // Copyright (C) 2014 CYBUTEK
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 | //
17 |
18 | namespace AVCToolkit.Json
19 | {
20 | public interface IJsonObject
21 | {
22 | #region Methods: public
23 |
24 | JsonObject ToJsonObject();
25 |
26 | #endregion
27 | }
28 | }
--------------------------------------------------------------------------------
/TestCases/mods versions/WaypointManager.version:
--------------------------------------------------------------------------------
1 | {
2 | "NAME":"Waypoint Manager",
3 | "URL":"https://raw.githubusercontent.com/jrossignol/WaypointManager/master/GameData/WaypointManager/WaypointManager.version",
4 | "DOWNLOAD":"https://github.com/jrossignol/WaypointManager/releases",
5 | "CHANGE_LOG_URL":"https://raw.githubusercontent.com/jrossignol/WaypointManager/2.7.2/CHANGES.txt",
6 | "GITHUB":{
7 | "USERNAME":"jrossignol",
8 | "REPOSITORY":"WaypointManager",
9 | "ALLOW_PRE_RELEASE":false
10 | },
11 | "VERSION":{
12 | "MAJOR":2,
13 | "MINOR":7,
14 | "PATCH":2,
15 | "BUILD":0
16 | },
17 | "KSP_VERSION":{
18 | "MAJOR":1,
19 | "MINOR":4,
20 | "PATCH":0
21 | },
22 | "KSP_VERSION_MIN":{
23 | "MAJOR":1,
24 | "MINOR":4,
25 | "PATCH":0
26 | },
27 | "KSP_VERSION_MAX":{
28 | "MAJOR":1,
29 | "MINOR":4,
30 | "PATCH":99
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/TestCases/mods versions/ContractConfigurator.version:
--------------------------------------------------------------------------------
1 | {
2 | "NAME":"Contract Configurator",
3 | "URL":"https://raw.githubusercontent.com/jrossignol/ContractConfigurator/master/GameData/ContractConfigurator/ContractConfigurator.version",
4 | "DOWNLOAD":"https://github.com/jrossignol/ContractConfigurator/releases",
5 | "CHANGE_LOG_URL":"https://raw.githubusercontent.com/jrossignol/ContractConfigurator/1.24.0/CHANGES.txt",
6 | "GITHUB":{
7 | "USERNAME":"jrossignol",
8 | "REPOSITORY":"ContractConfigurator",
9 | "ALLOW_PRE_RELEASE":false
10 | },
11 | "VERSION":{
12 | "MAJOR":1,
13 | "MINOR":24,
14 | "PATCH":0,
15 | "BUILD":0
16 | },
17 | "KSP_VERSION":{
18 | "MAJOR":1,
19 | "MINOR":4,
20 | "PATCH":0
21 | },
22 | "KSP_VERSION_MIN":{
23 | "MAJOR":1,
24 | "MINOR":4,
25 | "PATCH":0
26 | },
27 | "KSP_VERSION_MAX":{
28 | "MAJOR":1,
29 | "MINOR":4,
30 | "PATCH":1
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/KSP-AVC/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | //
2 | // Copyright (C) 2014 CYBUTEK
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 | //
17 |
18 | #region Using Directives
19 |
20 | using System.Reflection;
21 | using System.Runtime.InteropServices;
22 |
23 | #endregion
24 |
25 | [assembly: AssemblyTitle("KSP-AVC")]
26 | [assembly: AssemblyProduct("KSP-AVC")]
27 | [assembly: AssemblyCopyright("Copyright © 2015 CYBUTEK, Linuxgurugamer 2018")]
28 | [assembly: ComVisible(false)]
29 | [assembly: Guid("be1fd3ec-c1ba-47ec-9e16-f83da6fe87d5")]
30 | //[assembly: AssemblyVersion("1.1.6.2")]
--------------------------------------------------------------------------------
/MiniAVC-V2/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | //
2 | // Copyright (C) 2014 CYBUTEK
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 | //
17 |
18 | #region Using Directives
19 |
20 | using System.Reflection;
21 | using System.Runtime.InteropServices;
22 |
23 | #endregion
24 |
25 | [assembly: AssemblyTitle("MiniAVC")]
26 | [assembly: AssemblyProduct("MiniAVC")]
27 | [assembly: AssemblyCopyright("Copyright © CYBUTEK 2014, Linuxgurugamer 2018")]
28 | [assembly: ComVisible(false)]
29 | [assembly: Guid("d3138342-d8a8-4ab3-96e7-e7f086c13212")]
30 | //[assembly: AssemblyVersion("1.0.3.3")]
--------------------------------------------------------------------------------
/jenkins.txt:
--------------------------------------------------------------------------------
1 | #
2 | # This file contains several types of information:
3 | #
4 | # 0 KSP version, if not the current
5 | # 1 Mod install directory, version file to use when building zip file
6 | # 2 Project definitions
7 | # 3 Files to copy, source, dest
8 | # 4 Directory to copy, sourcedir, destdir
9 | # 5 Add ModuleManager to GameData
10 | # 6 Spacedock.info mod id
11 | # 7 Additional folders in the GameData to be included in the final zip
12 | # 8 Additional mods to include, will copy into GameData and will be included in zip
13 |
14 | # Special case if files are in the GameData directory itself
15 | # Special Case: 7:GameData
16 |
17 | #
18 | # All paths are relative to the top git folder of the repo
19 | #
20 | # and must use forward slashes
21 | #
22 |
23 | # 0:KSPVersion
24 | # 0:1.3
25 |
26 | # 1:GAMEDIR, VERSIONFILE [, GITHUBREPO ]
27 | 1:KSP-AVC, KSP-AVC.version, KSPAddonVersionChecker
28 |
29 | # 2:PROJNAME, PROJFILE, VERSIONFILE, PLUGINSFOLDER
30 | 2:KSP-AVC,KSP-AVC/KSP-AVC.csproj,KSP-AVC.version,GameData/KSP-AVC/Plugins
31 |
32 | # 3:SOURCEFILE, DESTDIR
33 | 3:KSP-AVC.version,GameData/KSP-AVC
34 | #3:LICENSE.md,GameData/KerbalHotSeat
35 | #3:README.md,GameData/KerbalHotSeat
36 |
37 | 11:KSP-AVC
38 |
39 | #
40 | # End of file
41 | #
42 |
--------------------------------------------------------------------------------
/jenkinsMiniAVC.txt:
--------------------------------------------------------------------------------
1 | #
2 | # This file contains several types of information:
3 | #
4 | # 0 KSP version, if not the current
5 | # 1 Mod install directory, version file to use when building zip file
6 | # 2 Project definitions
7 | # 3 Files to copy, source, dest
8 | # 4 Directory to copy, sourcedir, destdir
9 | # 5 Add ModuleManager to GameData
10 | # 6 Spacedock.info mod id
11 | # 7 Additional folders in the GameData to be included in the final zip
12 | # 8 Additional mods to include, will copy into GameData and will be included in zip
13 | # 11 zip file name
14 | # Special case if files are in the GameData directory itself
15 | # Special Case: 7:GameData
16 |
17 | #
18 | # All paths are relative to the top git folder of the repo
19 | #
20 | # and must use forward slashes
21 | #
22 |
23 | # 0:KSPVersion
24 | # 0:1.3
25 |
26 | # 1:GAMEDIR, VERSIONFILE [, GITHUBREPO ]
27 | 1:MiniAVC-V2, MiniAVC-V2.version, KSPAddonVersionChecker
28 |
29 | # 2:PROJNAME, PROJFILE, VERSIONFILE, PLUGINSFOLDER
30 | 2:MiniAVC-V2,MiniAVC-V2/MiniAVC-V2.csproj,MiniAVC-V2.version,GameData/MiniAVC-V2/Plugins
31 |
32 | # 3:SOURCEFILE, DESTDIR
33 | 3:MiniAVC-V2.version,GameData/MiniAVC-V2
34 | #3:LICENSE.md,GameData/KerbalHotSeat
35 | #3:README.md,GameData/KerbalHotSeat
36 |
37 | 11:MiniAVC-V2
38 |
39 | #
40 | # End of file
41 | #
42 |
--------------------------------------------------------------------------------
/AVCToolkit/GitHubInfo.cs:
--------------------------------------------------------------------------------
1 | //
2 | // Copyright (C) 2014 CYBUTEK
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 | //
17 |
18 | #region Using Directives
19 |
20 | using AVCToolkit.Json;
21 |
22 | #endregion
23 |
24 | namespace AVCToolkit
25 | {
26 | public class GitHubInfo
27 | {
28 | #region Properties
29 |
30 | [JsonField("ALLOW_PRE_RELEASE", Order = 3)]
31 | public bool? AllowPreRelease { get; set; }
32 |
33 | [JsonField("REPOSITORY", Order = 2)]
34 | public string Repository { get; set; }
35 |
36 | [JsonField("USERNAME", Order = 1)]
37 | public string Username { get; set; }
38 |
39 | #endregion
40 | }
41 | }
--------------------------------------------------------------------------------
/AVCToolkit/Json/JsonFieldAttribute.cs:
--------------------------------------------------------------------------------
1 | //
2 | // Copyright (C) 2014 CYBUTEK
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 | //
17 |
18 | #region Using Directives
19 |
20 | using System;
21 |
22 | #endregion
23 |
24 | namespace AVCToolkit.Json
25 | {
26 | [AttributeUsage(AttributeTargets.Property)]
27 | public class JsonFieldAttribute : Attribute
28 | {
29 | #region Constructors
30 |
31 | public JsonFieldAttribute(string name)
32 | {
33 | this.Name = name;
34 | }
35 |
36 | #endregion
37 |
38 | #region Properties
39 |
40 | public string Name { get; private set; }
41 |
42 | public int Order { get; set; }
43 |
44 | #endregion
45 | }
46 | }
--------------------------------------------------------------------------------
/Documents/MiniAVC/CHANGES.txt:
--------------------------------------------------------------------------------
1 | 1.0.3.3
2 | Build on KSP 1.2.0.1586
3 | Fixed: URLs are escaped before being processed.
4 |
5 | 1.0.3.2
6 | Built on KSP 1.1.0.1230
7 |
8 | 1.0.3.1
9 | Built on KSP Experimental 1.1.0.1171
10 |
11 | 1.0.3.0
12 | Added: Remote version files take priority when local/remote add-on versions are the same.
13 | Added: 'Any' type versions are now fully supported.
14 | Added: Wildcards for version fields with '-1'.
15 |
16 | 1.0.2.4
17 | Updated for KSP v0.25.0
18 | Fixed: Typo in AddonInfo.ToString()
19 | Fixed: Bug with empty version files.
20 |
21 | 1.0.2.3
22 | Changed: Done a lot of under the hood refactoring.
23 | Fixed: Bug that would freeze the computer when checking many add-ons.
24 |
25 | 1.0.2.2
26 | Changed: Versions will always have the minimum formatting of 'x.x'.
27 | Fixed: Issue with non-RAW GitHub version file hosting, extending the url formatter.
28 |
29 | 1.0.2.1
30 | Added: Some extra exception handling and cleaned up some of the code.
31 |
32 | 1.0.2.0
33 | Added: GitHub latest release checking.
34 | Added: Version file reading is now case insensitive.
35 | Fixed: Bug in version equality checking. (Now using a custom VersionInfo object).
36 |
37 | 1.0.1.1
38 | Fixed: Bug where it did not do the allow check.
39 |
40 | 1.0.1.0
41 | Added: Tooltip when hovering over the download button showing the destination URL.
42 | Added: File not found handling.
43 |
44 | 1.0.0.0
45 | Initial release of MiniAVC based on the core KSP-AVC Plugin v1.1.1 system.
--------------------------------------------------------------------------------
/KSP-AVC/Utils.cs:
--------------------------------------------------------------------------------
1 | //
2 | // Copyright (C) 2014 CYBUTEK
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 | //
17 |
18 | #region Using Directives
19 |
20 | using System;
21 | using System.IO;
22 | using System.Reflection;
23 |
24 | using UnityEngine;
25 |
26 | #endregion
27 |
28 | namespace KSP_AVC
29 | {
30 | public static class Utils
31 | {
32 | #region Fields
33 |
34 | private static readonly string textureDirectory = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "../Textures");
35 |
36 | #endregion
37 |
38 | #region Methods: public
39 |
40 | public static Texture2D GetTexture(string file, int width, int height)
41 | {
42 | try
43 | {
44 | var texture = new Texture2D(width, height, TextureFormat.ARGB32, false);
45 | texture.LoadImage(File.ReadAllBytes(Path.Combine(textureDirectory, file)));
46 | return texture;
47 | }
48 | catch (Exception ex)
49 | {
50 | Logger.Exception(ex);
51 | return null;
52 | }
53 | }
54 |
55 | #endregion
56 | }
57 | }
58 |
--------------------------------------------------------------------------------
/AVCToolkit/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | //
2 | // Copyright (C) 2014 CYBUTEK
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 | //
17 |
18 | #region Using Directives
19 |
20 | using System.Reflection;
21 | using System.Runtime.InteropServices;
22 |
23 | #endregion
24 |
25 | // General Information about an assembly is controlled through the following
26 | // set of attributes. Change these attribute values to modify the information
27 | // associated with an assembly.
28 |
29 | [assembly: AssemblyTitle("AVCToolkit")]
30 | [assembly: AssemblyProduct("AVCToolkit")]
31 | [assembly: AssemblyCopyright("Copyright © 2014 CYBUTEK, Linuxgurugamer 2018")]
32 |
33 | // Setting ComVisible to false makes the types in this assembly not visible
34 | // to COM components. If you need to access a type in this assembly from
35 | // COM, set the ComVisible attribute to true on that type.
36 |
37 | [assembly: ComVisible(false)]
38 |
39 | // The following GUID is for the ID of the typelib if this project is exposed to COM
40 |
41 | [assembly: Guid("73a52241-684b-4817-b305-31f3b8a4a92f")]
42 |
43 | // Version information for an assembly consists of the following four values:
44 | //
45 | // Major Version
46 | // Minor Version
47 | // Build Number
48 | // Revision
49 | //
50 | // You can specify all the values or you can default the Build and Revision Numbers
51 | // by using the '*' as shown below:
52 | // [assembly: AssemblyVersion("1.0.*")]
53 |
54 | [assembly: AssemblyVersion("1.0.0.0")]
--------------------------------------------------------------------------------
/AVCToolkit/Json/JsonObject.cs:
--------------------------------------------------------------------------------
1 | //
2 | // Copyright (C) 2014 CYBUTEK
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 | //
17 |
18 | #region Using Directives
19 |
20 | using System.Collections.Generic;
21 | using System.Linq;
22 |
23 | #endregion
24 |
25 | namespace AVCToolkit.Json
26 | {
27 | public class JsonObject
28 | {
29 | #region Fields
30 |
31 | private readonly Dictionary fields = new Dictionary();
32 |
33 | #endregion
34 |
35 | #region Constructors
36 |
37 | public JsonObject(object obj)
38 | {
39 | foreach (var property in obj.GetType().GetProperties().Where(p => p.IsDefined(typeof(JsonFieldAttribute), true)).ToList().OrderBy(p => (p.GetCustomAttributes(typeof(JsonFieldAttribute), true).First() as JsonFieldAttribute).Order))
40 | {
41 | var name = (property.GetCustomAttributes(typeof(JsonFieldAttribute), true).First() as JsonFieldAttribute).Name;
42 | var value = property.GetValue(obj, null);
43 |
44 | this.fields.Add(name, value);
45 | }
46 | }
47 |
48 | #endregion
49 |
50 | #region Properties
51 |
52 | public int Count
53 | {
54 | get { return this.fields.Count; }
55 | }
56 |
57 | public Dictionary Fields
58 | {
59 | get { return this.fields; }
60 | }
61 |
62 | public bool HasVisibleFields
63 | {
64 | get { return this.fields.Any(f => f.Value != null); }
65 | }
66 |
67 | #endregion
68 | }
69 | }
--------------------------------------------------------------------------------
/AVCToolkit/AddonInfo.cs:
--------------------------------------------------------------------------------
1 | //
2 | // Copyright (C) 2014 CYBUTEK
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 | //
17 |
18 | #region Using Directives
19 |
20 | using AVCToolkit.Json;
21 |
22 | #endregion
23 |
24 | namespace AVCToolkit
25 | {
26 | public class AddonInfo
27 | {
28 | #region Fields
29 |
30 | private GitHubInfo gitHub = new GitHubInfo();
31 |
32 | #endregion
33 |
34 | #region Properties
35 |
36 | [JsonField("CHANGE_LOG", Order = 4)]
37 | public string ChangeLog { get; set; }
38 |
39 | [JsonField("CHANGE_LOG_URL", Order = 5)]
40 | public string ChangeLogUrl { get; set; }
41 |
42 | [JsonField("DOWNLOAD", Order = 3)]
43 | public string Download { get; set; }
44 |
45 | [JsonField("GITHUB", Order = 6)]
46 | public GitHubInfo GitHub
47 | {
48 | get { return this.gitHub; }
49 | set { this.gitHub = value; }
50 | }
51 |
52 | [JsonField("KSP_VERSION", Order = 8)]
53 | public VersionInfo KspVersion { get; set; }
54 |
55 | [JsonField("KSP_VERSION_MAX", Order = 10)]
56 | public VersionInfo KspVersionMax { get; set; }
57 |
58 | [JsonField("KSP_VERSION_MIN", Order = 9)]
59 | public VersionInfo KspVersionMin { get; set; }
60 |
61 | [JsonField("NAME", Order = 1)]
62 | public string Name { get; set; }
63 |
64 | [JsonField("URL", Order = 2)]
65 | public string Url { get; set; }
66 |
67 | [JsonField("VERSION", Order = 7)]
68 | public VersionInfo Version { get; set; }
69 |
70 | #endregion
71 | }
72 | }
--------------------------------------------------------------------------------
/AVCToolkit/AVCToolkit.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {FD522EDB-A592-41C8-9342-C3629C18A6AD}
8 | Exe
9 | Properties
10 | AVCToolkit
11 | AVCToolkit
12 | v4.5
13 | 512
14 |
15 |
16 |
17 | AnyCPU
18 | true
19 | full
20 | false
21 | ..\Output\AVCToolkit\
22 | DEBUG;TRACE
23 | prompt
24 | 4
25 | false
26 |
27 |
28 | AnyCPU
29 | none
30 | true
31 | ..\Output\AVCToolkit\
32 | TRACE
33 | prompt
34 | 4
35 | false
36 | false
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
--------------------------------------------------------------------------------
/MiniAVC-V2/AddonSettings.cs:
--------------------------------------------------------------------------------
1 | // Copyright (C) 2014 CYBUTEK
2 | //
3 | // This program is free software: you can redistribute it and/or modify it under the terms of the GNU
4 | // General Public License as published by the Free Software Foundation, either version 3 of the
5 | // License, or (at your option) any later version.
6 | //
7 | // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
8 | // even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
9 | // General Public License for more details.
10 | //
11 | // You should have received a copy of the GNU General Public License along with this program. If not,
12 | // see .
13 |
14 | using System.Collections.Generic;
15 | using System.IO;
16 | using System.Xml.Serialization;
17 | using UnityEngine;
18 |
19 | namespace MiniAVC_V2
20 | {
21 | public class AddonSettings
22 | {
23 | private bool firstRun = true;
24 |
25 | public AddonSettings() { }
26 |
27 | public AddonSettings(string fileName)
28 | {
29 | FileName = fileName;
30 | }
31 |
32 | public bool AllowCheck { get; set; }
33 |
34 | [XmlIgnore]
35 | public string FileName { get; set; }
36 |
37 | public bool FirstRun
38 | {
39 | get { return firstRun; }
40 | set { firstRun = value; }
41 | }
42 |
43 | public List IgnoredUpdates { get; set; } = new List();
44 |
45 | public static AddonSettings Load(string rootPath)
46 | {
47 | Debug.Log("AddonSettings.Load, rootPath: " + rootPath);
48 | var filePath = Path.Combine(rootPath, "MiniAVC.xml");
49 |
50 | if (!File.Exists(filePath))
51 | {
52 | return new AddonSettings(filePath);
53 | }
54 |
55 | AddonSettings settings;
56 | using (var stream = new FileStream(filePath, FileMode.Open))
57 | {
58 | settings = new XmlSerializer(typeof(AddonSettings)).Deserialize(stream) as AddonSettings;
59 | settings.FileName = filePath;
60 | stream.Close();
61 | }
62 | return settings;
63 | }
64 |
65 | public void Save()
66 | {
67 | using (var stream = new FileStream(FileName, FileMode.Create))
68 | {
69 | new XmlSerializer(typeof(AddonSettings)).Serialize(stream, this);
70 | stream.Close();
71 | }
72 | }
73 | }
74 | }
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | ###############################################################################
2 | # Set default behavior to automatically normalize line endings.
3 | ###############################################################################
4 | * text=auto
5 |
6 | ###############################################################################
7 | # Set default behavior for command prompt diff.
8 | #
9 | # This is need for earlier builds of msysgit that does not have it on by
10 | # default for csharp files.
11 | # Note: This is only used by command line
12 | ###############################################################################
13 | #*.cs diff=csharp
14 |
15 | ###############################################################################
16 | # Set the merge driver for project and solution files
17 | #
18 | # Merging from the command prompt will add diff markers to the files if there
19 | # are conflicts (Merging from VS is not affected by the settings below, in VS
20 | # the diff markers are never inserted). Diff markers may cause the following
21 | # file extensions to fail to load in VS. An alternative would be to treat
22 | # these files as binary and thus will always conflict and require user
23 | # intervention with every merge. To do so, just uncomment the entries below
24 | ###############################################################################
25 | #*.sln merge=binary
26 | #*.csproj merge=binary
27 | #*.vbproj merge=binary
28 | #*.vcxproj merge=binary
29 | #*.vcproj merge=binary
30 | #*.dbproj merge=binary
31 | #*.fsproj merge=binary
32 | #*.lsproj merge=binary
33 | #*.wixproj merge=binary
34 | #*.modelproj merge=binary
35 | #*.sqlproj merge=binary
36 | #*.wwaproj merge=binary
37 |
38 | ###############################################################################
39 | # behavior for image files
40 | #
41 | # image files are treated as binary by default.
42 | ###############################################################################
43 | #*.jpg binary
44 | #*.png binary
45 | #*.gif binary
46 |
47 | ###############################################################################
48 | # diff behavior for common document formats
49 | #
50 | # Convert binary document formats to text before diffing them. This feature
51 | # is only available from the command line. Turn it on by uncommenting the
52 | # entries below.
53 | ###############################################################################
54 | #*.doc diff=astextplain
55 | #*.DOC diff=astextplain
56 | #*.docx diff=astextplain
57 | #*.DOCX diff=astextplain
58 | #*.dot diff=astextplain
59 | #*.DOT diff=astextplain
60 | #*.pdf diff=astextplain
61 | #*.PDF diff=astextplain
62 | #*.rtf diff=astextplain
63 | #*.RTF diff=astextplain
64 |
--------------------------------------------------------------------------------
/KSP-AVC/AssemblyVersion.tt:
--------------------------------------------------------------------------------
1 | <#@ template debug="false" hostspecific="true" language="C#" #>
2 | <#@ import namespace="System.IO" #>
3 | <#@ output extension=".cs" #>
4 |
5 | <#@ assembly name="EnvDTE" #><# /* This assembly provides access to Visual Studio project properties. */ #>
6 | <#
7 |
8 | // Instructions
9 | // 1. Add a new Text Template to the project
10 | // 2. Copy this file into the new template
11 | // 3. Update the string: versionfile with the complete path to the .version file
12 | // 4. Remove the following line from the file AssemblyInfo.cs (usually located in the "Property" folder inside your C# project):
13 | // [assembly: AssemblyVersion("1.0.0.0")]
14 | // 5. Add the following to the PreBuild steps:
15 | //
16 | // set textTemplatingPath="%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Community\Common7\IDE\texttransform.exe"
17 | // %textTemplatingPath% "$(ProjectDir)AssemblyVersion.tt"
18 |
19 |
20 | int major = 0;
21 | int minor = 0;
22 | int build = 0;
23 | int patch = 0;
24 | bool versionSection = false;
25 |
26 | int i = 0;
27 | int i2 = 0;
28 | string s;
29 |
30 |
31 | // For Visual Studio / MSBuild Build-Time Template Resolution
32 | string RootDirectory = System.IO.Path.GetDirectoryName(Host.TemplateFile) + @"\..\";
33 |
34 | //
35 | // Update the following with the name of the .version file which is in the root directory
36 | //
37 | string versionfile = RootDirectory + "KSP-AVC.version";
38 |
39 | if (!File.Exists(versionfile))
40 | {
41 | Write("File: " + versionfile + " missing\n");
42 | }
43 |
44 | try
45 | {
46 | foreach (var line in File.ReadAllLines(versionfile))
47 | {
48 | if (line != null)
49 | {
50 | if (!versionSection)
51 | {
52 | if (line.Contains("\"VERSION\""))
53 | versionSection = true;
54 | }
55 | else
56 | {
57 | if (line.Contains("}"))
58 | versionSection = false;
59 | i = line.IndexOf(":");
60 | i2 = line.IndexOf(",");
61 | if (i2 == -1)
62 | i2 = line.Length;
63 | if (i >= 0 && i2 >= 0)
64 | {
65 | s = line.Substring(i + 1, i2 - i - 1);
66 |
67 | if (line.Contains("MAJOR"))
68 | Int32.TryParse(s, out major);
69 |
70 | if (line.Contains("MINOR"))
71 | Int32.TryParse(s, out minor);
72 |
73 | if (line.Contains("PATCH"))
74 | Int32.TryParse(s, out patch);
75 |
76 | if (line.Contains("BUILD"))
77 | Int32.TryParse(s, out build);
78 | }
79 | }
80 | }
81 | }
82 |
83 | }
84 | catch
85 | {
86 | major = 1;
87 | minor = 0;
88 | patch = 0;
89 | build = 0;
90 | }
91 | //Write("File done");
92 |
93 | #>
94 | // This code was generated by a tool. Any changes made manually will be lost
95 | // the next time this code is regenerated.
96 | //
97 |
98 | using System.Reflection;
99 |
100 | [assembly: AssemblyFileVersion("<#= major #>.<#= minor #>.<#= patch #>.<#= build #>")]
101 | [assembly: AssemblyVersion("<#= major #>.<#= minor #>.<#= patch #>.<#= build #>")]
102 |
--------------------------------------------------------------------------------
/MiniAVC-V2/AssemblyVersion.tt:
--------------------------------------------------------------------------------
1 | <#@ template debug="false" hostspecific="true" language="C#" #>
2 | <#@ import namespace="System.IO" #>
3 | <#@ output extension=".cs" #>
4 |
5 | <#@ assembly name="EnvDTE" #><# /* This assembly provides access to Visual Studio project properties. */ #>
6 | <#
7 |
8 | // Instructions
9 | // 1. Add a new Text Template to the project
10 | // 2. Copy this file into the new template
11 | // 3. Update the string: versionfile with the complete path to the .version file
12 | // 4. Remove the following line from the file AssemblyInfo.cs (usually located in the "Property" folder inside your C# project):
13 | // [assembly: AssemblyVersion("1.0.0.0")]
14 | // 5. Add the following to the PreBuild steps:
15 | //
16 | // set textTemplatingPath="%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Community\Common7\IDE\texttransform.exe"
17 | // %textTemplatingPath% "$(ProjectDir)AssemblyVersion.tt"
18 |
19 |
20 | int major = 0;
21 | int minor = 0;
22 | int build = 0;
23 | int patch = 0;
24 | bool versionSection = false;
25 |
26 | int i = 0;
27 | int i2 = 0;
28 | string s;
29 |
30 |
31 | // For Visual Studio / MSBuild Build-Time Template Resolution
32 | string RootDirectory = System.IO.Path.GetDirectoryName(Host.TemplateFile) + @"\..\";
33 |
34 | //
35 | // Update the following with the name of the .version file which is in the root directory
36 | //
37 | string versionfile = RootDirectory + "MiniAVC-V2.version";
38 |
39 | if (!File.Exists(versionfile))
40 | {
41 | Write("File: " + versionfile + " missing\n");
42 | }
43 |
44 | try
45 | {
46 | foreach (var line in File.ReadAllLines(versionfile))
47 | {
48 | if (line != null)
49 | {
50 | if (!versionSection)
51 | {
52 | if (line.Contains("\"VERSION\""))
53 | versionSection = true;
54 | }
55 | else
56 | {
57 | if (line.Contains("}"))
58 | versionSection = false;
59 | i = line.IndexOf(":");
60 | i2 = line.IndexOf(",");
61 | if (i2 == -1)
62 | i2 = line.Length;
63 | if (i >= 0 && i2 >= 0)
64 | {
65 | s = line.Substring(i + 1, i2 - i - 1);
66 |
67 | if (line.Contains("MAJOR"))
68 | Int32.TryParse(s, out major);
69 |
70 | if (line.Contains("MINOR"))
71 | Int32.TryParse(s, out minor);
72 |
73 | if (line.Contains("PATCH"))
74 | Int32.TryParse(s, out patch);
75 |
76 | if (line.Contains("BUILD"))
77 | Int32.TryParse(s, out build);
78 | }
79 | }
80 | }
81 | }
82 |
83 | }
84 | catch
85 | {
86 | major = 1;
87 | minor = 0;
88 | patch = 0;
89 | build = 0;
90 | }
91 | //Write("File done");
92 |
93 | #>
94 | // This code was generated by a tool. Any changes made manually will be lost
95 | // the next time this code is regenerated.
96 | //
97 |
98 | using System.Reflection;
99 |
100 | [assembly: AssemblyVersion("<#= major #>.<#= minor #>.<#= patch #>.<#= build #>")]
101 | [assembly: AssemblyFileVersion("<#= major #>.<#= minor #>.<#= patch #>.<#= build #>")]
102 |
--------------------------------------------------------------------------------
/MiniAVC-V2/UpdateFrequency.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using UnityEngine;
6 | using System.IO;
7 |
8 | namespace MiniAVC_V2
9 | {
10 | class UpdateFrequency
11 | {
12 | public static bool ConfigLoaded { get; private set; }
13 | public static int AvcInterval { get; private set; }
14 | public static DateTime NextRun { get; private set; }
15 | static string configPath = KSPUtil.ApplicationRootPath + "GameData/MiniAVCUpdateFrequency.dat";
16 |
17 | public static bool SkipRun
18 | {
19 | get
20 | {
21 | if (DateTime.Compare(DateTime.Now, NextRun) <= 0 && AvcInterval != 0)
22 | {
23 | return true;
24 | }
25 | return false;
26 | }
27 | }
28 |
29 | public static bool DisableCheck
30 | {
31 | get
32 | {
33 | if (AvcInterval == -1)
34 | {
35 | return true;
36 | }
37 | return false;
38 | }
39 | }
40 |
41 | public static void LoadConfig()
42 | {
43 | if (!File.Exists(configPath))
44 | {
45 | Logger.Log($"Config not found: {configPath}");
46 | return;
47 | }
48 |
49 | ConfigNode LoadNodeFromFile = ConfigNode.Load(configPath);
50 | ConfigNode node = LoadNodeFromFile.GetNode("MINI-AVC");
51 |
52 | var nodes = node.GetNodes();
53 | if(node.HasNode("UPDATE_FREQUENCY"))
54 | {
55 | try
56 | {
57 | ConfigNode _temp = new ConfigNode();
58 | _temp = node.GetNode("UPDATE_FREQUENCY");
59 |
60 | AvcInterval = Int32.Parse(_temp.GetValue("MinTimeBetweenAvcRuns"));
61 | if (_temp.HasValue("AvcRunsNext"))
62 | {
63 | NextRun = DateTime.Parse(_temp.GetValue("AvcRunsNext"));
64 | }
65 | }
66 | catch { }
67 | }
68 | ConfigLoaded = true;
69 | Logger.Log("Config loaded");
70 | }
71 |
72 | public static void SaveConfig()
73 | {
74 | ConfigNode cfgnode = new ConfigNode();
75 | ConfigNode KSPAVC = cfgnode.AddNode("MINI-AVC");
76 |
77 | ConfigNode Interval = KSPAVC.AddNode("UPDATE_FREQUENCY");
78 | {
79 | Interval.AddValue("MinTimeBetweenAvcRuns", AvcInterval.ToString() + " //Timespan between AVC runs in hours (-1 = Disable MiniAVC, 0 = Run on each game start)");
80 |
81 | if (DateTime.Compare(DateTime.Now, NextRun) >= 0 && AvcInterval > 0)
82 | {
83 | Interval.AddValue("AvcRunsNext", DateTime.Now.AddHours(AvcInterval).ToString());
84 | }
85 | else
86 | {
87 | Interval.AddValue("AvcRunsNext", NextRun.ToString());
88 | }
89 | }
90 | cfgnode.Save(configPath);
91 | Logger.Log("Config saved!");
92 | }
93 | }
94 | }
95 |
--------------------------------------------------------------------------------
/AVCToolkit/Json/JsonSerialiser.cs:
--------------------------------------------------------------------------------
1 | //
2 | // Copyright (C) 2014 CYBUTEK
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 | //
17 |
18 | #region Using Directives
19 |
20 | using System;
21 | using System.Collections.Generic;
22 |
23 | using AVCToolkit.Json;
24 |
25 | #endregion
26 |
27 | namespace AVCToolkit
28 | {
29 | public static class JsonSerialiser
30 | {
31 | #region Methods: public
32 |
33 | public static string Serialise(object obj)
34 | {
35 | var jsonObject = new JsonObject(obj);
36 | var json = "{";
37 |
38 | var first = true;
39 | foreach (var field in jsonObject.Fields)
40 | {
41 | var jsonField = SerialiseField(field);
42 | if (jsonField == String.Empty)
43 | {
44 | continue;
45 | }
46 | if (!first)
47 | {
48 | json += ",";
49 | }
50 | json += jsonField;
51 | first = false;
52 | }
53 |
54 | return json + "}";
55 | }
56 |
57 | #endregion
58 |
59 | #region Methods: private
60 |
61 | private static bool IsPrimitive(object value)
62 | {
63 | return value is byte ||
64 | value is sbyte ||
65 | value is short ||
66 | value is ushort ||
67 | value is int ||
68 | value is uint ||
69 | value is long ||
70 | value is ulong ||
71 | value is float ||
72 | value is double ||
73 | value is decimal ||
74 | value is bool;
75 | }
76 |
77 | private static string SerialiseField(KeyValuePair field)
78 | {
79 | if (field.Value == null)
80 | {
81 | return String.Empty;
82 | }
83 |
84 | if (IsPrimitive(field.Value))
85 | {
86 | return "\"" + field.Key + "\":" + field.Value;
87 | }
88 |
89 | var jsonObject = new JsonObject(field.Value);
90 | if (jsonObject.Count > 0)
91 | {
92 | if (jsonObject.HasVisibleFields)
93 | {
94 | return "\"" + field.Key + "\":" + Serialise(field.Value);
95 | }
96 | return String.Empty;
97 | }
98 |
99 | return "\"" + field.Key + "\":\"" + field.Value + "\"";
100 | }
101 |
102 | #endregion
103 | }
104 | }
--------------------------------------------------------------------------------
/AVCToolkit/AVCToolkit.csproj.173:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {FD522EDB-A592-41C8-9342-C3629C18A6AD}
8 | Exe
9 | Properties
10 | AVCToolkit
11 | AVCToolkit
12 | v3.5
13 | 512
14 |
15 |
16 |
17 | AnyCPU
18 | true
19 | full
20 | false
21 | ..\Output\AVCToolkit\
22 | DEBUG;TRACE
23 | prompt
24 | 4
25 |
26 |
27 | AnyCPU
28 | none
29 | true
30 | ..\Output\AVCToolkit\
31 | TRACE
32 | prompt
33 | 4
34 | false
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 | $(PostBuildEventDependsOn);
62 | PostBuildMacros;
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
78 |
--------------------------------------------------------------------------------
/AVCToolkit/AVCToolkit.csproj.orig:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {FD522EDB-A592-41C8-9342-C3629C18A6AD}
8 | Exe
9 | Properties
10 | AVCToolkit
11 | AVCToolkit
12 | v3.5
13 | 512
14 |
15 |
16 |
17 | AnyCPU
18 | true
19 | full
20 | false
21 | ..\Output\AVCToolkit\
22 | DEBUG;TRACE
23 | prompt
24 | 4
25 |
26 |
27 | AnyCPU
28 | none
29 | true
30 | ..\Output\AVCToolkit\
31 | TRACE
32 | prompt
33 | 4
34 | false
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 | $(PostBuildEventDependsOn);
62 | PostBuildMacros;
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
78 |
--------------------------------------------------------------------------------
/KSP-AVC/AddonLibrary.cs:
--------------------------------------------------------------------------------
1 | //
2 | // Copyright (C) 2014 CYBUTEK
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 | //
17 |
18 | #region Using Directives
19 |
20 | using System;
21 | using System.Collections.Generic;
22 | using System.IO;
23 | using System.Linq;
24 | using System.Reflection;
25 | using System.Threading;
26 | using UnityEngine;
27 |
28 | #endregion
29 |
30 | namespace KSP_AVC
31 | {
32 | public static class AddonLibrary
33 | {
34 | #region Fields
35 |
36 | private static readonly string rootPath;
37 | private static List addons;
38 |
39 | #endregion
40 |
41 | #region Constructors
42 |
43 | static AddonLibrary()
44 | {
45 | rootPath = GetRootPath();
46 | ThreadPool.QueueUserWorkItem(ProcessAddonPopulation);
47 | }
48 |
49 | #endregion
50 |
51 | #region Properties
52 |
53 | public static IEnumerable Addons
54 | {
55 | get { return (addons != null) ? addons.Where(a => !a.HasError).ToList() : null; }
56 | }
57 |
58 | public static bool Populated { get; private set; }
59 |
60 | public static int ProcessCount
61 | {
62 | get { return (addons != null) ? addons.Count(a => a.IsProcessingComplete) : 0; }
63 | }
64 |
65 | public static IEnumerable Processed
66 | {
67 | get { return (addons != null) ? addons.Where(a => !a.HasError && a.IsProcessingComplete) : null; }
68 | }
69 |
70 | public static bool ProcessingComplete
71 | {
72 | get { return addons != null && addons.All(a => a.IsProcessingComplete); }
73 | }
74 |
75 | public static int TotalCount
76 | {
77 | get { return (addons != null) ? addons.Count : 0; }
78 | }
79 |
80 | #endregion
81 |
82 | #region Methods: private
83 |
84 | private static string GetRootPath()
85 | {
86 | var rootPath = Assembly.GetExecutingAssembly().Location;
87 | var gameDataIndex = rootPath.IndexOf("GameData", StringComparison.CurrentCultureIgnoreCase);
88 | return Path.Combine(rootPath.Remove(gameDataIndex, rootPath.Length - gameDataIndex), "GameData");
89 | }
90 |
91 | private static void ProcessAddonPopulation(object state)
92 | {
93 | try
94 | {
95 | Populated = false;
96 | var addonList = Directory.GetFiles(rootPath, "*.version", SearchOption.AllDirectories).ToList();
97 | foreach (var a in addonList)
98 | Logger.Log("addonList: " + a);
99 | addons = Directory.GetFiles(rootPath, "*.version", SearchOption.AllDirectories).Select(path => new Addon(path)).ToList();
100 | Populated = true;
101 | }
102 | catch (Exception ex)
103 | {
104 | Logger.Exception(ex);
105 | }
106 | }
107 |
108 | #endregion
109 | }
110 | }
--------------------------------------------------------------------------------
/KSP-AVC.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio Version 16
4 | VisualStudioVersion = 16.0.30204.135
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "KSP-AVC", "KSP-AVC\KSP-AVC.csproj", "{F745CC0C-B7A0-4EF2-BF5A-1D3F0C19202C}"
7 | EndProject
8 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MiniAVC-V2", "MiniAVC-V2\MiniAVC-V2.csproj", "{F1351BAB-76F1-41DE-B01C-496163CB44D8}"
9 | EndProject
10 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AVCToolkit", "AVCToolkit\AVCToolkit.csproj", "{FD522EDB-A592-41C8-9342-C3629C18A6AD}"
11 | EndProject
12 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{6DF0E8C4-1D1F-40BA-A655-FF074C24FE50}"
13 | ProjectSection(SolutionItems) = preProject
14 | buildRelease.bat = buildRelease.bat
15 | ChangeLog.txt = ChangeLog.txt
16 | deploy.bat = deploy.bat
17 | jenkins.txt = jenkins.txt
18 | jenkinsMiniAVC.txt = jenkinsMiniAVC.txt
19 | KSP-AVC.version = KSP-AVC.version
20 | MiniAVC-V2.version = MiniAVC-V2.version
21 | TODO.txt = TODO.txt
22 | EndProjectSection
23 | EndProject
24 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "TestCases", "TestCases", "{34AF4147-05C0-43DB-B9C4-9D2162560CAE}"
25 | ProjectSection(SolutionItems) = preProject
26 | TestCases\KspMaxVersion.version = TestCases\KspMaxVersion.version
27 | TestCases\KspMaxVersion1.version = TestCases\KspMaxVersion1.version
28 | TestCases\KspMaxVersion2.version = TestCases\KspMaxVersion2.version
29 | TestCases\KspMinMaxVersion.version = TestCases\KspMinMaxVersion.version
30 | TestCases\KspMinMaxVersion1.version = TestCases\KspMinMaxVersion1.version
31 | TestCases\KspMinMaxVersion2.version = TestCases\KspMinMaxVersion2.version
32 | TestCases\KspMinMaxVersion3.version = TestCases\KspMinMaxVersion3.version
33 | TestCases\KspMinVersion.version = TestCases\KspMinVersion.version
34 | TestCases\KspMinVersion1.version = TestCases\KspMinVersion1.version
35 | TestCases\KspMinVersion2.version = TestCases\KspMinVersion2.version
36 | TestCases\KspVersion.version = TestCases\KspVersion.version
37 | TestCases\KspVersion1.version = TestCases\KspVersion1.version
38 | TestCases\KspVersion2.version = TestCases\KspVersion2.version
39 | EndProjectSection
40 | EndProject
41 | Global
42 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
43 | Debug|Any CPU = Debug|Any CPU
44 | Release|Any CPU = Release|Any CPU
45 | EndGlobalSection
46 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
47 | {F745CC0C-B7A0-4EF2-BF5A-1D3F0C19202C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
48 | {F745CC0C-B7A0-4EF2-BF5A-1D3F0C19202C}.Debug|Any CPU.Build.0 = Debug|Any CPU
49 | {F745CC0C-B7A0-4EF2-BF5A-1D3F0C19202C}.Release|Any CPU.ActiveCfg = Release|Any CPU
50 | {F745CC0C-B7A0-4EF2-BF5A-1D3F0C19202C}.Release|Any CPU.Build.0 = Release|Any CPU
51 | {F1351BAB-76F1-41DE-B01C-496163CB44D8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
52 | {F1351BAB-76F1-41DE-B01C-496163CB44D8}.Debug|Any CPU.Build.0 = Debug|Any CPU
53 | {F1351BAB-76F1-41DE-B01C-496163CB44D8}.Release|Any CPU.ActiveCfg = Release|Any CPU
54 | {F1351BAB-76F1-41DE-B01C-496163CB44D8}.Release|Any CPU.Build.0 = Release|Any CPU
55 | {FD522EDB-A592-41C8-9342-C3629C18A6AD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
56 | {FD522EDB-A592-41C8-9342-C3629C18A6AD}.Debug|Any CPU.Build.0 = Debug|Any CPU
57 | {FD522EDB-A592-41C8-9342-C3629C18A6AD}.Release|Any CPU.ActiveCfg = Release|Any CPU
58 | {FD522EDB-A592-41C8-9342-C3629C18A6AD}.Release|Any CPU.Build.0 = Release|Any CPU
59 | EndGlobalSection
60 | GlobalSection(SolutionProperties) = preSolution
61 | HideSolutionNode = FALSE
62 | EndGlobalSection
63 | GlobalSection(ExtensibilityGlobals) = postSolution
64 | SolutionGuid = {C215420A-C972-49E5-B498-3C8E2BC4C6D5}
65 | EndGlobalSection
66 | EndGlobal
67 |
--------------------------------------------------------------------------------
/KSP-AVC/ChangeLogGui.cs:
--------------------------------------------------------------------------------
1 | //
2 | // Copyright (C) 2014 CYBUTEK
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 | //
17 |
18 | #region Using Directives
19 |
20 | using System;
21 |
22 | using UnityEngine;
23 |
24 | #endregion
25 |
26 | namespace KSP_AVC
27 | {
28 | public class ChangeLogGui : MonoBehaviour
29 | {
30 | #region Fields
31 |
32 | private GUIStyle closeStyle;
33 | private GUIStyle labelStyle;
34 | private Rect position = new Rect(0, 0, Screen.width, Screen.height);
35 | private Vector2 scrollPosition;
36 |
37 | #endregion
38 |
39 | #region Properties
40 |
41 | public string Name { get; set; }
42 |
43 | public string Text { get; set; }
44 |
45 | #endregion
46 |
47 | #region Methods: protected
48 |
49 | protected void Awake()
50 | {
51 | try
52 | {
53 | DontDestroyOnLoad(this);
54 | }
55 | catch (Exception ex)
56 | {
57 | Logger.Exception(ex);
58 | }
59 | }
60 |
61 | protected void OnDestroy()
62 | {
63 | Logger.Log("ChangeLogGui was destroyed.");
64 | }
65 |
66 | protected void OnGUI()
67 | {
68 | try
69 | {
70 | GUI.skin = null;
71 | this.position = GUILayout.Window(this.GetInstanceID(), this.position, this.Window, this.Name + " - Change Log", HighLogic.Skin.window);
72 | }
73 | catch (Exception ex)
74 | {
75 | Logger.Exception(ex);
76 | }
77 | }
78 |
79 | protected void Start()
80 | {
81 | try
82 | {
83 | this.InitialiseStyles();
84 | }
85 | catch (Exception ex)
86 | {
87 | Logger.Exception(ex);
88 | }
89 | }
90 |
91 | #endregion
92 |
93 | #region Methods: private
94 |
95 | private void InitialiseStyles()
96 | {
97 | this.closeStyle = new GUIStyle(HighLogic.Skin.button)
98 | {
99 | normal =
100 | {
101 | textColor = Color.white
102 | },
103 | };
104 |
105 | this.labelStyle = new GUIStyle(HighLogic.Skin.label)
106 | {
107 | normal =
108 | {
109 | textColor = Color.white
110 | },
111 | fontStyle = FontStyle.Bold,
112 | stretchWidth = true,
113 | stretchHeight = true,
114 | wordWrap = true
115 | };
116 | }
117 |
118 | private void Window(int id)
119 | {
120 | try
121 | {
122 | GUI.skin = HighLogic.Skin;
123 | this.scrollPosition = GUILayout.BeginScrollView(this.scrollPosition, false, true);
124 | GUI.skin = null;
125 | GUILayout.Label(this.Text, this.labelStyle);
126 | GUILayout.EndScrollView();
127 |
128 | if (GUILayout.Button("CLOSE", this.closeStyle))
129 | {
130 | Destroy(this);
131 | }
132 | }
133 | catch (Exception ex)
134 | {
135 | Logger.Exception(ex);
136 | }
137 | }
138 |
139 | #endregion
140 | }
141 | }
--------------------------------------------------------------------------------
/Documents/KSP-AVC/CHANGES.txt:
--------------------------------------------------------------------------------
1 | 1.1.6.2
2 | Build on KSP 1.2.0.1586
3 | Fixed: URLs are escaped before being processed.
4 | Fixed: UI is destroyed upon entering the Space Centre. This mitigates issues that may cause the progress window to remain visible indefinitely.
5 |
6 | 1.1.6.1
7 | Build on KSP 1.1.0.1230
8 |
9 | 1.1.6.0
10 | Built on KSP Experimental 1.1.0.1171
11 | Added: 10-second timeout on invalid URLs.
12 | Added: DevHelper GUI avoidence.
13 |
14 | 1.1.5.0
15 | Added: Remote version files take priority when local/remote add-on versions are the same.
16 | Added: 'Any' type versions are now fully supported.
17 | Added: Wildcards for version fields with '-1'.
18 | Added: New informational toolbar to the top left of the screen, replacing the drop down button.
19 | Added: Toolbar display's the number of installed add-ons that are KSP-AVC ready.
20 | Added: Toolbar has a dynamic list that will allow scrolling when taller than half the game screen height.
21 | Added: Toolbar has a 'Copy to Clipboard' button that will copy the list and environment information (KSP/Unity/OS) to the clipboard.
22 |
23 | 1.1.4.3
24 | Updated for KSP v0.25.0
25 | Fixed: Typo in AddonInfo.ToString()
26 | Fixed: Bug with empty version files which would cause the top drop down to not work.
27 |
28 | 1.1.4.2
29 | Changed: Done a lot of under the hood refactoring.
30 | Fixed: Bug that would freeze the computer when checking many add-ons.
31 | Fixed: Bug that caused the compatibility display to show as a long thin window.
32 |
33 | 1.1.4.1
34 | Fixed: Log spam.
35 | Fixed: Checking window staying open after displaying the first run / updated window.
36 |
37 | 1.1.4.0
38 | Added: Drop down action menu support allowing for multiple actions per add-on.
39 | Added: Change log support, allowing the player to view the add-on's change log.
40 | Added: Drop down list showing all KSP-AVC ready add-ons on loading and main menu.
41 | Changed: Versions will always have the minimum formatting of 'x.x'.
42 | Fixed: Issue with non-RAW GitHub version file hosting, extending the url formatter.
43 | Fixed: Bug where it would do a re-check when reloading the database.
44 |
45 | 1.1.3.1
46 | Fixed: Game breaking bug.
47 |
48 | 1.1.3.0
49 | Added: GitHub latest release checking.
50 | Added: Version file reading is now case insensitive.
51 | Fixed: Bug in version equality checking. (Now using a custom VersionInfo object).
52 |
53 | 1.1.2.0
54 | Added: Tooltip when hovering over the download button showing the destination URL.
55 | Fixed: Certain situations would cause the root directory to be incorrect.
56 | Fixed: File not found handling solving the lock whilst on the checking display.
57 |
58 | 1.1.1.0
59 | Added: Blanket exception handling and logging.
60 | Added: Logger will flush on destruction and GC finaliser.
61 | Added: Check to remove '/tree/' from github urls.
62 | Changed: Remote checking back to WWW because WebRequest in Mono does not support TLS/SSL.
63 | Changed: Version file search is now limited to just the GameData directory.
64 | Fixed: Possible null refs caused by invalid remote urls.
65 |
66 | 1.1.0.0
67 | Complete re-write of the core code.
68 | Added: Replaced LitJson with embeded MiniJson for compatibility and to reduce dependancies.
69 | Added: Better utilisation of multi-threading.
70 | Added: Check progress window which will show whilst processing.
71 | Changed: Remote version file fetching now uses WebRequest instead of Unity's archaic WWW.
72 | Fixed: Version formatting bug where it did not recognise build numbers in certain cases.
73 |
74 | 1.0.4.0
75 | Added: Url check to fix problems caused by non-raw github .version files.
76 | Added: Logging system now also saves into the standard ksp log file.
77 | Changed: Extended logging system now saves with the associated '.dll' file.
78 |
79 | 1.0.3.0
80 | Updated for KSP version 0.24.2.
81 | Added: Extended logging system that saves to "KSP-AVC.log".
82 | Added: First run checker which will show to indicate a successful install.
83 | Changed: Window is now centred on the screen.
84 |
85 | 1.0.2.0
86 | Updated for KSP version 0.24.
87 | Fixed a small bug with parsing KSP versions.
88 |
89 | 1.0.1.0
90 | Added minimum and maximum KSP version support.
91 | Updates will only be shown if the remote version is compatible with the installed version of KSP.
--------------------------------------------------------------------------------
/GameData/KSP-AVC/CHANGES.txt:
--------------------------------------------------------------------------------
1 | 1.1.6.2
2 | Build on KSP 1.2.0.1586
3 | Fixed: URLs are escaped before being processed.
4 | Fixed: UI is destroyed upon entering the Space Centre. This mitigates issues that may cause the progress window to remain visible indefinitely.
5 |
6 | 1.1.6.1
7 | Build on KSP 1.1.0.1230
8 |
9 | 1.1.6.0
10 | Built on KSP Experimental 1.1.0.1171
11 | Added: 10-second timeout on invalid URLs.
12 | Added: DevHelper GUI avoidence.
13 |
14 | 1.1.5.0
15 | Added: Remote version files take priority when local/remote add-on versions are the same.
16 | Added: 'Any' type versions are now fully supported.
17 | Added: Wildcards for version fields with '-1'.
18 | Added: New informational toolbar to the top left of the screen, replacing the drop down button.
19 | Added: Toolbar display's the number of installed add-ons that are KSP-AVC ready.
20 | Added: Toolbar has a dynamic list that will allow scrolling when taller than half the game screen height.
21 | Added: Toolbar has a 'Copy to Clipboard' button that will copy the list and environment information (KSP/Unity/OS) to the clipboard.
22 |
23 | 1.1.4.3
24 | Updated for KSP v0.25.0
25 | Fixed: Typo in AddonInfo.ToString()
26 | Fixed: Bug with empty version files which would cause the top drop down to not work.
27 |
28 | 1.1.4.2
29 | Changed: Done a lot of under the hood refactoring.
30 | Fixed: Bug that would freeze the computer when checking many add-ons.
31 | Fixed: Bug that caused the compatibility display to show as a long thin window.
32 |
33 | 1.1.4.1
34 | Fixed: Log spam.
35 | Fixed: Checking window staying open after displaying the first run / updated window.
36 |
37 | 1.1.4.0
38 | Added: Drop down action menu support allowing for multiple actions per add-on.
39 | Added: Change log support, allowing the player to view the add-on's change log.
40 | Added: Drop down list showing all KSP-AVC ready add-ons on loading and main menu.
41 | Changed: Versions will always have the minimum formatting of 'x.x'.
42 | Fixed: Issue with non-RAW GitHub version file hosting, extending the url formatter.
43 | Fixed: Bug where it would do a re-check when reloading the database.
44 |
45 | 1.1.3.1
46 | Fixed: Game breaking bug.
47 |
48 | 1.1.3.0
49 | Added: GitHub latest release checking.
50 | Added: Version file reading is now case insensitive.
51 | Fixed: Bug in version equality checking. (Now using a custom VersionInfo object).
52 |
53 | 1.1.2.0
54 | Added: Tooltip when hovering over the download button showing the destination URL.
55 | Fixed: Certain situations would cause the root directory to be incorrect.
56 | Fixed: File not found handling solving the lock whilst on the checking display.
57 |
58 | 1.1.1.0
59 | Added: Blanket exception handling and logging.
60 | Added: Logger will flush on destruction and GC finaliser.
61 | Added: Check to remove '/tree/' from github urls.
62 | Changed: Remote checking back to WWW because WebRequest in Mono does not support TLS/SSL.
63 | Changed: Version file search is now limited to just the GameData directory.
64 | Fixed: Possible null refs caused by invalid remote urls.
65 |
66 | 1.1.0.0
67 | Complete re-write of the core code.
68 | Added: Replaced LitJson with embeded MiniJson for compatibility and to reduce dependancies.
69 | Added: Better utilisation of multi-threading.
70 | Added: Check progress window which will show whilst processing.
71 | Changed: Remote version file fetching now uses WebRequest instead of Unity's archaic WWW.
72 | Fixed: Version formatting bug where it did not recognise build numbers in certain cases.
73 |
74 | 1.0.4.0
75 | Added: Url check to fix problems caused by non-raw github .version files.
76 | Added: Logging system now also saves into the standard ksp log file.
77 | Changed: Extended logging system now saves with the associated '.dll' file.
78 |
79 | 1.0.3.0
80 | Updated for KSP version 0.24.2.
81 | Added: Extended logging system that saves to "KSP-AVC.log".
82 | Added: First run checker which will show to indicate a successful install.
83 | Changed: Window is now centred on the screen.
84 |
85 | 1.0.2.0
86 | Updated for KSP version 0.24.
87 | Fixed a small bug with parsing KSP versions.
88 |
89 | 1.0.1.0
90 | Added minimum and maximum KSP version support.
91 | Updates will only be shown if the remote version is compatible with the installed version of KSP.
--------------------------------------------------------------------------------
/MiniAVC-V2/MiniAVC-V2.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {F1351BAB-76F1-41DE-B01C-496163CB44D8}
8 | Library
9 | Properties
10 | MiniAVC_V2
11 | MiniAVC-V2
12 | v4.5
13 | 512
14 |
15 |
16 |
17 | true
18 | full
19 | false
20 | bin\Debug\
21 | DEBUG;TRACE
22 | prompt
23 | 4
24 | false
25 |
26 |
27 | none
28 | true
29 | ..\Output\MiniAVC\
30 | TRACE
31 | prompt
32 | 4
33 | false
34 |
35 |
36 |
37 |
38 |
39 |
40 | True
41 | True
42 | AssemblyVersion.tt
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 | False
58 |
59 |
60 | False
61 |
62 |
63 |
64 |
65 |
66 |
67 | TextTemplatingFileGenerator
68 | AssemblyVersion.cs
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 | $(PostBuildEventDependsOn);
86 | PostBuildMacros;
87 |
88 |
89 |
90 |
91 |
92 | "$(DevEnvDir)\texttransform.exe" "$(ProjectDir)AssemblyVersion.tt"
93 |
94 |
95 |
102 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | ## Ignore Visual Studio temporary files, build results, and
2 | ## files generated by popular Visual Studio add-ons.
3 |
4 | # User-specific files
5 | *.suo
6 | *.user
7 | *.sln.docstates
8 |
9 | # Build results
10 | [Dd]ebug/
11 | [Dd]ebugPublic/
12 | [Rr]elease/
13 | x64/
14 | build/
15 | bld/
16 | [Bb]in/
17 | [Oo]bj/
18 |
19 | # MSTest test Results
20 | [Tt]est[Rr]esult*/
21 | [Bb]uild[Ll]og.*
22 |
23 | #NUNIT
24 | *.VisualState.xml
25 | TestResult.xml
26 |
27 | # Build Results of an ATL Project
28 | [Dd]ebugPS/
29 | [Rr]eleasePS/
30 | dlldata.c
31 |
32 | *_i.c
33 | *_p.c
34 | *_i.h
35 | *.ilk
36 | *.meta
37 | *.obj
38 | *.pch
39 | *.pdb
40 | *.pgc
41 | *.pgd
42 | *.rsp
43 | *.sbr
44 | *.tlb
45 | *.tli
46 | *.tlh
47 | *.tmp
48 | *.tmp_proj
49 | *.log
50 | *.vspscc
51 | *.vssscc
52 | .builds
53 | *.pidb
54 | *.svclog
55 | *.scc
56 |
57 | # Chutzpah Test files
58 | _Chutzpah*
59 |
60 | # Visual C++ cache files
61 | ipch/
62 | *.aps
63 | *.ncb
64 | *.opensdf
65 | *.sdf
66 | *.cachefile
67 |
68 | # Visual Studio profiler
69 | *.psess
70 | *.vsp
71 | *.vspx
72 |
73 | # TFS 2012 Local Workspace
74 | $tf/
75 |
76 | # Guidance Automation Toolkit
77 | *.gpState
78 |
79 | # ReSharper is a .NET coding add-in
80 | _ReSharper*/
81 | *.[Rr]e[Ss]harper
82 | *.DotSettings.user
83 |
84 | # JustCode is a .NET coding addin-in
85 | .JustCode
86 |
87 | # TeamCity is a build add-in
88 | _TeamCity*
89 |
90 | # DotCover is a Code Coverage Tool
91 | *.dotCover
92 |
93 | # NCrunch
94 | *.ncrunch*
95 | _NCrunch_*
96 | .*crunch*.local.xml
97 |
98 | # MightyMoose
99 | *.mm.*
100 | AutoTest.Net/
101 |
102 | # Web workbench (sass)
103 | .sass-cache/
104 |
105 | # Installshield output folder
106 | [Ee]xpress/
107 |
108 | # DocProject is a documentation generator add-in
109 | DocProject/buildhelp/
110 | DocProject/Help/*.HxT
111 | DocProject/Help/*.HxC
112 | DocProject/Help/*.hhc
113 | DocProject/Help/*.hhk
114 | DocProject/Help/*.hhp
115 | DocProject/Help/Html2
116 | DocProject/Help/html
117 |
118 | # Click-Once directory
119 | publish/
120 |
121 | # Publish Web Output
122 | *.[Pp]ublish.xml
123 | *.azurePubxml
124 |
125 | # NuGet Packages Directory
126 | packages/
127 | ## TODO: If the tool you use requires repositories.config uncomment the next line
128 | #!packages/repositories.config
129 |
130 | # Enable "build/" folder in the NuGet Packages folder since NuGet packages use it for MSBuild targets
131 | # This line needs to be after the ignore of the build folder (and the packages folder if the line above has been uncommented)
132 | !packages/build/
133 |
134 | # Windows Azure Build Output
135 | csx/
136 | *.build.csdef
137 |
138 | # Windows Store app package directory
139 | AppPackages/
140 |
141 | # Others
142 | sql/
143 | *.Cache
144 | ClientBin/
145 | [Ss]tyle[Cc]op.*
146 | ~$*
147 | *~
148 | *.dbmdl
149 | *.dbproj.schemaview
150 | *.pfx
151 | *.publishsettings
152 | node_modules/
153 |
154 | # RIA/Silverlight projects
155 | Generated_Code/
156 |
157 | # Backup & report files from converting an old project file to a newer
158 | # Visual Studio version. Backup files are not needed, because we have git ;-)
159 | _UpgradeReport_Files/
160 | Backup*/
161 | UpgradeLog*.XML
162 | UpgradeLog*.htm
163 |
164 | # SQL Server files
165 | *.mdf
166 | *.ldf
167 |
168 | # Business Intelligence projects
169 | *.rdl.data
170 | *.bim.layout
171 | *.bim_*.settings
172 |
173 | # Microsoft Fakes
174 | FakesAssemblies/
175 |
176 | # =========================
177 | # Operating System Files
178 | # =========================
179 |
180 | # OSX
181 | # =========================
182 |
183 | .DS_Store
184 | .AppleDouble
185 | .LSOverride
186 |
187 | # Icon must ends with two \r.
188 | Icon
189 |
190 | # Thumbnails
191 | ._*
192 |
193 | # Files that might appear on external disk
194 | .Spotlight-V100
195 | .Trashes
196 |
197 | # Directories potentially created on remote AFP share
198 | .AppleDB
199 | .AppleDesktop
200 | Network Trash Folder
201 | Temporary Items
202 | .apdisk
203 |
204 |
205 |
206 | # Windows
207 | # =========================
208 |
209 | # Windows image file caches
210 | Thumbs.db
211 | ehthumbs.db
212 |
213 | # Folder config file
214 | Desktop.ini
215 |
216 | # Recycle Bin used on file shares
217 | $RECYCLE.BIN/
218 |
219 | # Windows Installer files
220 | *.cab
221 | *.msi
222 | *.msm
223 | *.msp
224 |
225 | # Windows shortcuts
226 | *.lnk
227 |
228 | #
229 | # Vim files
230 | #
231 | *~
232 | *.swp
233 | *.dll
234 | *.exe
235 | *.pdb
236 | .vs
237 |
--------------------------------------------------------------------------------
/KSP-AVC/CheckerProgressGui.cs:
--------------------------------------------------------------------------------
1 | //
2 | // Copyright (C) 2014 CYBUTEK
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 | //
17 |
18 | #region Using Directives
19 |
20 | using System;
21 | using System.Linq;
22 |
23 | using UnityEngine;
24 |
25 | #endregion
26 |
27 | namespace KSP_AVC
28 | {
29 | public class CheckerProgressGui : MonoBehaviour
30 | {
31 | #region Fields
32 |
33 | private bool hasCentred;
34 | private string message = String.Empty;
35 | private Rect position = new Rect(Screen.width, Screen.height, 0, 0);
36 |
37 | private GUIStyle titleStyle;
38 |
39 | #endregion
40 |
41 | #region Methods: protected
42 |
43 | protected void Awake()
44 | {
45 | try
46 | {
47 | DontDestroyOnLoad(this);
48 | }
49 | catch (Exception ex)
50 | {
51 | Logger.Exception(ex);
52 | }
53 | }
54 |
55 | protected void OnDestroy()
56 | {
57 | Logger.Log("CheckerProgressGui was destroyed.");
58 | }
59 |
60 | protected void OnGUI()
61 | {
62 | try
63 | {
64 | this.position = GUILayout.Window(this.GetInstanceID(), this.position, this.Window, "KSP Add-on Version Checker", HighLogic.Skin.window);
65 | this.CentreWindow();
66 | }
67 | catch (Exception ex)
68 | {
69 | Logger.Exception(ex);
70 | }
71 | }
72 |
73 | protected void Start()
74 | {
75 | try
76 | {
77 | this.InitialiseStyles();
78 | }
79 | catch (Exception ex)
80 | {
81 | Logger.Exception(ex);
82 | }
83 | }
84 |
85 | protected void Update()
86 | {
87 | try
88 | {
89 | this.message = AddonLibrary.Populated
90 | ? "Checked " + AddonLibrary.ProcessCount + " of " + AddonLibrary.TotalCount + " add-ons."
91 | : "Populating Library...";
92 | }
93 | catch (Exception ex)
94 | {
95 | Logger.Exception(ex);
96 | }
97 | }
98 |
99 | #endregion
100 |
101 | #region Methods: private
102 |
103 | private void CentreWindow()
104 | {
105 | if (this.hasCentred || !(this.position.width > 0) || !(this.position.height > 0))
106 | {
107 | return;
108 | }
109 | this.position.center = new Vector2(Screen.width * 0.5f, Screen.height * 0.5f);
110 | this.hasCentred = true;
111 | }
112 |
113 | private void InitialiseStyles()
114 | {
115 | this.titleStyle = new GUIStyle(HighLogic.Skin.label)
116 | {
117 | normal =
118 | {
119 | textColor = Color.white
120 | },
121 | fontSize = 13,
122 | fontStyle = FontStyle.Bold,
123 | alignment = TextAnchor.MiddleCenter,
124 | stretchWidth = true
125 | };
126 | }
127 |
128 | private void Window(int id)
129 | {
130 | try
131 | {
132 | GUILayout.BeginVertical(HighLogic.Skin.box);
133 | GUILayout.Label(this.message, this.titleStyle, GUILayout.Width(300.0f));
134 | GUILayout.EndVertical();
135 | }
136 | catch (Exception ex)
137 | {
138 | Logger.Exception(ex);
139 | }
140 | }
141 |
142 | #endregion
143 | }
144 | }
--------------------------------------------------------------------------------
/MiniAVC-V2/MiniAVC.csproj.173:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {F1351BAB-76F1-41DE-B01C-496163CB44D8}
8 | Library
9 | Properties
10 | MiniAVC
11 | MiniAVC
12 | v3.5
13 | 512
14 |
15 |
16 |
17 | true
18 | full
19 | false
20 | bin\Debug\
21 | DEBUG;TRACE
22 | prompt
23 | 4
24 |
25 |
26 | none
27 | true
28 | ..\Output\MiniAVC\
29 | TRACE
30 | prompt
31 | 4
32 |
33 |
34 |
35 |
36 |
37 |
38 | True
39 | True
40 | AssemblyVersion.tt
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 | R:\KSP_1.7.3_dev\KSP_x64_Data\Managed\Assembly-CSharp.dll
56 |
57 |
58 |
59 |
60 | R:\KSP_1.7.3_dev\KSP_x64_Data\Managed\UnityEngine.dll
61 |
62 |
63 |
64 |
65 | TextTemplatingFileGenerator
66 | AssemblyVersion.cs
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 | $(PostBuildEventDependsOn);
84 | PostBuildMacros;
85 |
86 |
87 |
88 |
89 |
90 |
91 | set textTemplatingPath="%25ProgramFiles(x86)%25\Microsoft Visual Studio\2017\Community\Common7\IDE\texttransform.exe"
92 |
93 | %25textTemplatingPath%25 "$(ProjectDir)AssemblyVersion.tt"
94 |
95 |
96 |
103 |
--------------------------------------------------------------------------------
/MiniAVC-V2/MiniAVC.csproj.orig:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {F1351BAB-76F1-41DE-B01C-496163CB44D8}
8 | Library
9 | Properties
10 | MiniAVC
11 | MiniAVC
12 | v3.5
13 | 512
14 |
15 |
16 |
17 | true
18 | full
19 | false
20 | bin\Debug\
21 | DEBUG;TRACE
22 | prompt
23 | 4
24 |
25 |
26 | none
27 | true
28 | ..\Output\MiniAVC\
29 | TRACE
30 | prompt
31 | 4
32 |
33 |
34 |
35 |
36 |
37 |
38 | True
39 | True
40 | AssemblyVersion.tt
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 | R:\KSP_1.7.3_dev\KSP_x64_Data\Managed\Assembly-CSharp.dll
56 |
57 |
58 |
59 |
60 | R:\KSP_1.7.3_dev\KSP_x64_Data\Managed\UnityEngine.dll
61 |
62 |
63 |
64 |
65 | TextTemplatingFileGenerator
66 | AssemblyVersion.cs
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 | $(PostBuildEventDependsOn);
84 | PostBuildMacros;
85 |
86 |
87 |
88 |
89 |
90 |
91 | set textTemplatingPath="%25ProgramFiles(x86)%25\Microsoft Visual Studio\2017\Community\Common7\IDE\texttransform.exe"
92 |
93 | %25textTemplatingPath%25 "$(ProjectDir)AssemblyVersion.tt"
94 |
95 |
96 |
103 |
--------------------------------------------------------------------------------
/KSP-AVC/ToolTipGui.cs:
--------------------------------------------------------------------------------
1 | //
2 | // Copyright (C) 2014 CYBUTEK
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 | //
17 |
18 | #region Using Directives
19 |
20 | using System;
21 |
22 | using UnityEngine;
23 |
24 | #endregion
25 |
26 | namespace KSP_AVC
27 | {
28 | public class ToolTipGui : MonoBehaviour
29 | {
30 | #region Fields
31 |
32 | private GUIContent content;
33 | private GUIStyle labelStyle;
34 | private Rect position;
35 |
36 | #endregion
37 |
38 | #region Properties
39 |
40 | public string Text
41 | {
42 | get { return (this.content ?? GUIContent.none).text; }
43 | set { this.content = new GUIContent(value); }
44 | }
45 |
46 | #endregion
47 |
48 | #region Methods: protected
49 |
50 | protected void Awake()
51 | {
52 | try
53 | {
54 | DontDestroyOnLoad(this);
55 | }
56 | catch (Exception ex)
57 | {
58 | Logger.Exception(ex);
59 | }
60 | Logger.Log("ToolTipGui was created.");
61 | }
62 |
63 | protected void OnDestroy()
64 | {
65 | Logger.Log("ToolTipGui was destroyed.");
66 | }
67 |
68 | protected void OnGUI()
69 | {
70 | try
71 | {
72 | if (this.content == null || String.IsNullOrEmpty(this.content.text))
73 | {
74 | return;
75 | }
76 |
77 | GUILayout.Window(this.GetInstanceID(), this.position, this.Window, String.Empty, GUIStyle.none);
78 | }
79 | catch (Exception ex)
80 | {
81 | Logger.Exception(ex);
82 | }
83 | }
84 |
85 | protected void Start()
86 | {
87 | try
88 | {
89 | this.InitialiseStyles();
90 | }
91 | catch (Exception ex)
92 | {
93 | Logger.Exception(ex);
94 | }
95 | }
96 |
97 | protected void Update()
98 | {
99 | this.position.size = this.labelStyle.CalcSize(this.content ?? GUIContent.none);
100 | this.position.x = Mathf.Clamp(Input.mousePosition.x + 20.0f, 0, Screen.width - this.position.width);
101 | this.position.y = Screen.height - Input.mousePosition.y + (this.position.x < Input.mousePosition.x + 20.0f ? 20.0f : 0);
102 | }
103 |
104 | #endregion
105 |
106 | #region Methods: private
107 |
108 | private static Texture2D GetBackgroundTexture()
109 | {
110 | var texture = new Texture2D(1, 1, TextureFormat.ARGB32, false);
111 | texture.SetPixel(1, 1, new Color(1.0f, 1.0f, 1.0f, 1.0f));
112 | texture.Apply();
113 | return texture;
114 | }
115 |
116 | private void InitialiseStyles()
117 | {
118 | this.labelStyle = new GUIStyle
119 | {
120 | padding = new RectOffset(4, 4, 2, 2),
121 | normal =
122 | {
123 | textColor = Color.black,
124 | background = GetBackgroundTexture()
125 | },
126 | fontSize = 11
127 | };
128 | }
129 |
130 | private void Window(int windowId)
131 | {
132 | try
133 | {
134 | GUI.BringWindowToFront(windowId);
135 | GUILayout.Label(this.content ?? GUIContent.none, this.labelStyle);
136 | }
137 | catch (Exception ex)
138 | {
139 | Logger.Exception(ex);
140 | }
141 | }
142 |
143 | #endregion
144 | }
145 | }
--------------------------------------------------------------------------------
/MiniAVC-V2/ToolTipGui.cs:
--------------------------------------------------------------------------------
1 | //
2 | // Copyright (C) 2014 CYBUTEK
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 | //
17 |
18 | #region Using Directives
19 |
20 | using System;
21 |
22 | using UnityEngine;
23 |
24 | #endregion
25 |
26 | namespace MiniAVC_V2
27 | {
28 | public class ToolTipGui : MonoBehaviour
29 | {
30 | #region Fields
31 |
32 | private GUIContent content;
33 | private GUIStyle labelStyle;
34 | private Rect position;
35 |
36 | #endregion
37 |
38 | #region Properties
39 |
40 | public string Text
41 | {
42 | get { return (this.content ?? GUIContent.none).text; }
43 | set { this.content = new GUIContent(value); }
44 | }
45 |
46 | #endregion
47 |
48 | #region Methods: protected
49 |
50 | protected void Awake()
51 | {
52 | try
53 | {
54 | DontDestroyOnLoad(this);
55 | }
56 | catch (Exception ex)
57 | {
58 | Logger.Exception(ex);
59 | }
60 | Logger.Log("ToolTipGui was created.");
61 | }
62 |
63 | protected void OnDestroy()
64 | {
65 | Logger.Log("ToolTipGui was destroyed.");
66 | }
67 |
68 | protected void OnGUI()
69 | {
70 | try
71 | {
72 | if (this.content == null || String.IsNullOrEmpty(this.content.text))
73 | {
74 | return;
75 | }
76 |
77 | GUILayout.Window(this.GetInstanceID(), this.position, this.Window, String.Empty, GUIStyle.none);
78 | }
79 | catch (Exception ex)
80 | {
81 | Logger.Exception(ex);
82 | }
83 | }
84 |
85 | protected void Start()
86 | {
87 | try
88 | {
89 | this.InitialiseStyles();
90 | }
91 | catch (Exception ex)
92 | {
93 | Logger.Exception(ex);
94 | }
95 | }
96 |
97 | protected void Update()
98 | {
99 | this.position.size = this.labelStyle.CalcSize(this.content);
100 | this.position.x = Mathf.Clamp(Input.mousePosition.x + 20.0f, 0, Screen.width - this.position.width);
101 | this.position.y = Screen.height - Input.mousePosition.y + (this.position.x < Input.mousePosition.x + 20.0f ? 20.0f : 0);
102 | }
103 |
104 | #endregion
105 |
106 | #region Methods: private
107 |
108 | private static Texture2D GetBackgroundTexture()
109 | {
110 | var background = new Texture2D(1, 1, TextureFormat.ARGB32, false);
111 | background.SetPixel(1, 1, new Color(1.0f, 1.0f, 1.0f, 1.0f));
112 | background.Apply();
113 | return background;
114 | }
115 |
116 | private void InitialiseStyles()
117 | {
118 | this.labelStyle = new GUIStyle
119 | {
120 | padding = new RectOffset(4, 4, 2, 2),
121 | normal =
122 | {
123 | textColor = Color.black,
124 | background = GetBackgroundTexture()
125 | },
126 | fontSize = 11
127 | };
128 | }
129 |
130 | private void Window(int windowId)
131 | {
132 | try
133 | {
134 | GUI.BringWindowToFront(windowId);
135 | GUILayout.Label(this.content ?? GUIContent.none, this.labelStyle);
136 | }
137 | catch (Exception ex)
138 | {
139 | Logger.Exception(ex);
140 | }
141 | }
142 |
143 | #endregion
144 | }
145 | }
--------------------------------------------------------------------------------
/MiniAVC-V2/AddonLibrary.cs:
--------------------------------------------------------------------------------
1 | //
2 | // Copyright (C) 2014 CYBUTEK
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 | //
17 |
18 | #region Using Directives
19 |
20 | using System;
21 | using System.Collections.Generic;
22 | using System.IO;
23 | using System.Linq;
24 | //using System.Threading;
25 |
26 | #endregion
27 |
28 | namespace MiniAVC_V2
29 | {
30 | public static class AddonLibrary
31 | {
32 | #region Fields
33 |
34 | private static List addons;
35 |
36 | #endregion
37 |
38 | #region Constructors
39 |
40 | static AddonLibrary()
41 | {
42 | ProcessAddonPopulation(null);
43 | //ThreadPool.QueueUserWorkItem(ProcessAddonPopulation);
44 | }
45 |
46 | #endregion
47 |
48 | #region Properties
49 |
50 | public static List Addons
51 | {
52 | get { return (addons != null) ? addons.Where(a => !a.HasError).ToList() : null; }
53 | }
54 |
55 | public static List AddonsProcessed
56 | {
57 | get { return (addons != null) ? addons.Where(a => !a.HasError && a.IsProcessingComplete).ToList() : null; }
58 | }
59 |
60 | public static bool Populated { get; private set; }
61 |
62 | public static List Settings { get; private set; }
63 |
64 | public static int TotalCount
65 | {
66 | get { return (addons != null) ? addons.Count : 0; }
67 | }
68 |
69 | #endregion
70 |
71 | #region Methods: public
72 |
73 | public static void Remove(Addon addon)
74 | {
75 | if (addons == null)
76 | {
77 | return;
78 | }
79 |
80 | addons.Remove(addon);
81 | }
82 |
83 | #endregion
84 |
85 | #region Methods: private
86 |
87 | private static void ProcessAddonPopulation(object state)
88 | {
89 | try
90 | {
91 | var threadAddons = new List();
92 | var threadSettings = new List();
93 | var versionFileSettings = new Dictionary();
94 | foreach (var rootPath in AssemblyLoader.loadedAssemblies.Where(a => a.name == "MiniAVC").Select(a => Path.GetDirectoryName(a.path)))
95 | {
96 | var settings = AddonSettings.Load(rootPath);
97 | threadSettings.Add(settings);
98 | foreach (string versionFile in Directory.GetFiles(rootPath, "*.version", SearchOption.AllDirectories))
99 | {
100 | // Check whether we've already seen this file
101 | AddonSettings prevSettings;
102 | if (versionFileSettings.TryGetValue(versionFile, out prevSettings))
103 | {
104 | // Use the settings closest to the DLL (== longest path)
105 | if (prevSettings.FileName.Length < settings.FileName.Length)
106 | {
107 | versionFileSettings[versionFile] = settings;
108 | }
109 | }
110 | else
111 | {
112 | versionFileSettings.Add(versionFile, settings);
113 | }
114 | }
115 | }
116 | threadAddons.AddRange(versionFileSettings.Select(kvp => new Addon(kvp.Key, kvp.Value)));
117 |
118 | addons = threadAddons;
119 | Settings = threadSettings;
120 | Populated = true;
121 | }
122 | catch (Exception ex)
123 | {
124 | Logger.Exception(ex);
125 | }
126 | }
127 |
128 | #endregion
129 | }
130 | }
131 |
--------------------------------------------------------------------------------
/KSP-AVC/CompatibilityOverrideEnableGui.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using UnityEngine;
6 |
7 | namespace KSP_AVC
8 | {
9 | class CompatibilityOverrideEnableGui : MonoBehaviour
10 | {
11 | #region Fields
12 |
13 | private GUIStyle boxStyle;
14 | private GUIStyle buttonStyle;
15 | private bool hasCentred;
16 | private GUIStyle labelStyle;
17 | private Rect position = new Rect(Screen.width, Screen.height, 0, 0);
18 | private GUIStyle topLevelTitleStyle;
19 |
20 | #endregion
21 |
22 | #region Methods: protected
23 |
24 | protected void Awake()
25 | {
26 | try
27 | {
28 | DontDestroyOnLoad(this);
29 | }
30 | catch (Exception ex)
31 | {
32 | Logger.Exception(ex);
33 | }
34 | this.name = "OverrideEnableGui";
35 | }
36 |
37 | protected void Start()
38 | {
39 | try
40 | {
41 | this.InitialiseStyles();
42 | }
43 | catch (Exception ex)
44 | {
45 | Logger.Exception(ex);
46 | }
47 | }
48 |
49 | protected void OnDestroy()
50 | {
51 | if (Configuration.CfgUpdated)
52 | {
53 | Configuration.SaveCfg();
54 | }
55 | }
56 |
57 | protected void OnGUI()
58 | {
59 | try
60 | {
61 | this.position = GUILayout.Window(this.GetInstanceID(), this.position, this.Window, "KSP Add-on Version Checker - Compatibility Override", HighLogic.Skin.window);
62 | this.CentreWindow();
63 | }
64 | catch (Exception ex)
65 | {
66 | Logger.Exception(ex);
67 | }
68 | }
69 |
70 | #endregion
71 |
72 | #region Methods : Private
73 |
74 | private void DrawQuestion()
75 | {
76 | GUILayout.BeginHorizontal(this.boxStyle, GUILayout.Width(400));
77 | GUILayout.Label("The Compatibility Override is currently disabled!\nDo you want to enable it?", this.labelStyle);
78 | GUILayout.EndHorizontal();
79 | }
80 |
81 | private void DrawButtons()
82 | {
83 | GUILayout.BeginHorizontal();
84 | if (GUILayout.Button("YES", this.buttonStyle))
85 | {
86 | Configuration.OverrideIsDisabledGlobal = false;
87 | this.gameObject.AddComponent();
88 | Destroy(this);
89 | }
90 | if (GUILayout.Button("NO", this.buttonStyle))
91 | {
92 | Destroy(this);
93 | }
94 | GUILayout.EndHorizontal();
95 | }
96 |
97 | private void Window(int id)
98 | {
99 | DrawQuestion();
100 | DrawButtons();
101 | GUI.DragWindow();
102 | }
103 |
104 | private void CentreWindow()
105 | {
106 | if (this.hasCentred || !(this.position.width > 0) || !(this.position.height > 0))
107 | {
108 | return;
109 | }
110 | this.position.center = new Vector2(Screen.width * 0.5f, Screen.height * 0.5f);
111 | this.hasCentred = true;
112 | }
113 |
114 | #endregion
115 |
116 | #region Styles
117 |
118 | private void InitialiseStyles()
119 | {
120 | this.boxStyle = new GUIStyle(HighLogic.Skin.box)
121 | {
122 | padding = new RectOffset(10, 10, 5, 5),
123 | };
124 |
125 | this.buttonStyle = new GUIStyle(HighLogic.Skin.button)
126 | {
127 | normal =
128 | {
129 | textColor = Color.white
130 | },
131 | fontStyle = FontStyle.Bold,
132 | };
133 |
134 | this.labelStyle = new GUIStyle(HighLogic.Skin.label)
135 | {
136 | alignment = TextAnchor.MiddleLeft
137 | };
138 |
139 | this.topLevelTitleStyle = new GUIStyle(HighLogic.Skin.label)
140 | {
141 | normal =
142 | {
143 | textColor = Color.white
144 | },
145 | alignment = TextAnchor.MiddleLeft,
146 | fontStyle = FontStyle.Bold,
147 | };
148 | }
149 |
150 | #endregion
151 | }
152 | }
153 |
--------------------------------------------------------------------------------
/KSP-AVC/FirstRunGui.cs:
--------------------------------------------------------------------------------
1 | //
2 | // Copyright (C) 2014 CYBUTEK
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 | //
17 |
18 | #region Using Directives
19 |
20 | using System;
21 | using System.Reflection;
22 |
23 | using UnityEngine;
24 |
25 | #endregion
26 |
27 | namespace KSP_AVC
28 | {
29 | public class FirstRunGui : MonoBehaviour
30 | {
31 | #region Fields
32 |
33 | private readonly VersionInfo version = Assembly.GetExecutingAssembly().GetName().Version;
34 | private GUIStyle buttonStyle;
35 | private bool hasCentred;
36 | private string message;
37 | private Rect position = new Rect(Screen.width, Screen.height, 0, 0);
38 | private string title;
39 | private GUIStyle titleStyle;
40 |
41 | #endregion
42 |
43 | #region Properties
44 |
45 | public bool HasBeenUpdated { get; set; }
46 |
47 | #endregion
48 |
49 | #region Methods: protected
50 |
51 | protected void Awake()
52 | {
53 | try
54 | {
55 | DontDestroyOnLoad(this);
56 | }
57 | catch (Exception ex)
58 | {
59 | Logger.Exception(ex);
60 | }
61 | }
62 |
63 | protected void OnDestroy()
64 | {
65 | Logger.Log("FirstRunGui was destroyed.");
66 | }
67 |
68 | protected void OnGUI()
69 | {
70 | try
71 | {
72 | this.position = GUILayout.Window(this.GetInstanceID(), this.position, this.Window, this.title, HighLogic.Skin.window);
73 | this.CentreWindow();
74 | }
75 | catch (Exception ex)
76 | {
77 | Logger.Exception(ex);
78 | }
79 | }
80 |
81 | protected void Start()
82 | {
83 | try
84 | {
85 | this.InitialiseStyles();
86 | this.title = "KSP-AVC Plugin - " + (this.HasBeenUpdated ? "Updated" : "Installed");
87 | this.message = (this.HasBeenUpdated ? "You have successfully updated KSP-AVC to v" : "You have successfully installed KSP-AVC v") + this.version;
88 | }
89 | catch (Exception ex)
90 | {
91 | Logger.Exception(ex);
92 | }
93 | }
94 |
95 | #endregion
96 |
97 | #region Methods: private
98 |
99 | private void CentreWindow()
100 | {
101 | if (this.hasCentred || !(this.position.width > 0) || !(this.position.height > 0))
102 | {
103 | return;
104 | }
105 | this.position.center = new Vector2(Screen.width * 0.5f, Screen.height * 0.5f);
106 | this.hasCentred = true;
107 | }
108 |
109 | private void InitialiseStyles()
110 | {
111 | this.titleStyle = new GUIStyle(HighLogic.Skin.label)
112 | {
113 | normal =
114 | {
115 | textColor = Color.white
116 | },
117 | fontSize = 13,
118 | fontStyle = FontStyle.Bold,
119 | alignment = TextAnchor.MiddleCenter,
120 | stretchWidth = true
121 | };
122 |
123 | this.buttonStyle = new GUIStyle(HighLogic.Skin.button)
124 | {
125 | normal =
126 | {
127 | textColor = Color.white
128 | }
129 | };
130 | }
131 |
132 | private void Window(int id)
133 | {
134 | try
135 | {
136 | GUILayout.BeginVertical(HighLogic.Skin.box);
137 | GUILayout.Label(this.message, this.titleStyle, GUILayout.Width(350.0f));
138 | GUILayout.EndVertical();
139 | if (GUILayout.Button("CLOSE", this.buttonStyle))
140 | {
141 | Destroy(this);
142 | }
143 | GUI.DragWindow();
144 | }
145 | catch (Exception ex)
146 | {
147 | Logger.Exception(ex);
148 | }
149 | }
150 |
151 | #endregion
152 | }
153 | }
--------------------------------------------------------------------------------
/KSP-AVC/InstallChecker.cs:
--------------------------------------------------------------------------------
1 | /**
2 | * Based on the InstallChecker from the Kethane mod for Kerbal Space Program.
3 | * https://github.com/Majiir/Kethane/blob/b93b1171ec42b4be6c44b257ad31c7efd7ea1702/Plugin/InstallChecker.cs
4 | *
5 | * Original is (C) Copyright Majiir.
6 | * CC0 Public Domain (http://creativecommons.org/publicdomain/zero/1.0/)
7 | * http://forum.kerbalspaceprogram.com/threads/65395-CompatibilityChecker-Discussion-Thread?p=899895&viewfull=1#post899895
8 | *
9 | * This file has been modified extensively and is released under the same license.
10 | */
11 | using System;
12 | using System.IO;
13 | using System.Linq;
14 | using System.Reflection;
15 | using UnityEngine;
16 |
17 | namespace KSP_AVC
18 | {
19 | [KSPAddon(KSPAddon.Startup.Instantly, true)]
20 | internal class Startup : MonoBehaviour
21 | {
22 | private void Start()
23 | {
24 | string v = "n/a";
25 | AssemblyTitleAttribute attributes = (AssemblyTitleAttribute)Attribute.GetCustomAttribute(Assembly.GetExecutingAssembly(), typeof(AssemblyTitleAttribute), false);
26 | string title = attributes?.Title;
27 | if (title == null)
28 | {
29 | title = "TitleNotAvailable";
30 | }
31 | v = Assembly.GetExecutingAssembly().FullName;
32 | if (v == null)
33 | {
34 | v = "VersionNotAvailable";
35 | }
36 | Logger.Log("[" + title + "] Version " + v);
37 | }
38 | }
39 |
40 | [KSPAddon(KSPAddon.Startup.MainMenu, true)]
41 | internal class InstallChecker : MonoBehaviour
42 | {
43 | internal const string MODNAME = "KSP Addon Version Checker";
44 | internal const string FOLDERNAME = "KSP-AVC";
45 | internal const string FOLDERNAME2 = "ZeroMiniAVC";
46 | internal const string EXPECTEDPATH = FOLDERNAME + "/Plugins";
47 | internal const string EXPECTEDPATH2 = FOLDERNAME2 + "/Plugins";
48 |
49 | protected void Start()
50 | {
51 | // Search for this mod's DLL existing in the wrong location. This will also detect duplicate copies because only one can be in the right place.
52 | var assemblies = AssemblyLoader.loadedAssemblies.Where(a => a.assembly.GetName().Name == Assembly.GetExecutingAssembly().GetName().Name).Where(a => a.url != EXPECTEDPATH && a.url != EXPECTEDPATH2);
53 | if (assemblies.Any())
54 | {
55 | var badPaths = assemblies.Select(a => a.path).Select(p => Uri.UnescapeDataString(new Uri(Path.GetFullPath(KSPUtil.ApplicationRootPath)).MakeRelativeUri(new Uri(p)).ToString().Replace('/', Path.DirectorySeparatorChar)));
56 | PopupDialog.SpawnPopupDialog
57 | (
58 | new Vector2(0.5f, 0.5f),
59 | new Vector2(0.5f, 0.5f),
60 | "test",
61 | "Incorrect " + MODNAME + " Installation",
62 | MODNAME + " has been installed incorrectly and will not function properly. All files should be located in KSP/GameData/" + FOLDERNAME + ". Do not move any files from inside that folder.\n\nIncorrect path(s):\n" + String.Join("\n", badPaths.ToArray()),
63 | "OK",
64 | false,
65 | HighLogic.UISkin
66 | );
67 | Logger.Log("Incorrect " + MODNAME + " Installation: " + MODNAME + " has been installed incorrectly and will not function properly. All files should be located in KSP/GameData/" + EXPECTEDPATH + ". Do not move any files from inside that folder.\n\nIncorrect path(s):\n" + String.Join("\n", badPaths.ToArray())
68 |
69 | );
70 |
71 | }
72 |
73 | //// Check for Module Manager
74 | //if (!AssemblyLoader.loadedAssemblies.Any(a => a.assembly.GetName().Name.StartsWith("ModuleManager") && a.url == ""))
75 | //{
76 | // PopupDialog.SpawnPopupDialog("Missing Module Manager",
77 | // modName + " requires the Module Manager mod in order to function properly.\n\nPlease download from http://forum.kerbalspaceprogram.com/threads/55219 and copy to the KSP/GameData/ directory.",
78 | // "OK", false, HighLogic.Skin);
79 | //}
80 |
81 | CleanupOldVersions();
82 | }
83 |
84 | /*
85 | * Tries to fix the install if it was installed over the top of a previous version
86 | */
87 | void CleanupOldVersions()
88 | {
89 | try
90 | {
91 | }
92 | catch (Exception ex)
93 | {
94 | Logger.Error("-ERROR- " + this.GetType().FullName + "[" + this.GetInstanceID().ToString("X") + "][" + Time.time.ToString("0.00") + "]: " +
95 | "Exception caught while cleaning up old files.\n" + ex.Message + "\n" + ex.StackTrace);
96 |
97 | }
98 | }
99 | }
100 | }
101 |
102 |
--------------------------------------------------------------------------------
/AVCToolkit/Program.cs:
--------------------------------------------------------------------------------
1 | //
2 | // Copyright (C) 2014 CYBUTEK
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 | //
17 |
18 | #region Using Directives
19 |
20 | using System;
21 | using System.Globalization;
22 | using System.IO;
23 |
24 | #endregion
25 |
26 | namespace AVCToolkit
27 | {
28 | internal class Program
29 | {
30 | #region Fields
31 |
32 | private static readonly AddonInfo addon = new AddonInfo();
33 | private static string output;
34 |
35 | #endregion
36 |
37 | #region Methods: private
38 |
39 | private static void Main(string[] args)
40 | {
41 | for (var i = 0; i < args.Length; i++)
42 | {
43 | switch (args[i].ToLower(CultureInfo.InvariantCulture))
44 | {
45 | case "-name":
46 | if (i++ < args.Length)
47 | {
48 | addon.Name = args[i];
49 | }
50 | break;
51 |
52 | case "-url":
53 | if (i++ < args.Length)
54 | {
55 | addon.Url = args[i];
56 | }
57 | break;
58 |
59 | case "-download":
60 | if (i++ < args.Length)
61 | {
62 | addon.Download = args[i];
63 | }
64 | break;
65 |
66 | case "-change_log":
67 | if (i++ < args.Length)
68 | {
69 | addon.ChangeLog = args[i];
70 | }
71 | break;
72 |
73 | case "-change_log_url":
74 | if (i++ < args.Length)
75 | {
76 | addon.ChangeLogUrl = args[i];
77 | }
78 | break;
79 |
80 | case "-github.username":
81 | if (i++ < args.Length)
82 | {
83 | addon.GitHub.Username = args[i];
84 | }
85 | break;
86 |
87 | case "-github.repository":
88 | if (i++ < args.Length)
89 | {
90 | addon.GitHub.Repository = args[i];
91 | }
92 | break;
93 |
94 | case "-github.allow_pre_release":
95 | if (i++ < args.Length)
96 | {
97 | addon.GitHub.AllowPreRelease = Boolean.Parse(args[i]);
98 | }
99 | break;
100 |
101 | case "-version":
102 | if (i++ < args.Length)
103 | {
104 | addon.Version = new VersionInfo(args[i]);
105 | }
106 | break;
107 |
108 | case "-ksp_version":
109 | if (i++ < args.Length)
110 | {
111 | addon.KspVersion = new VersionInfo(args[i]);
112 | }
113 | break;
114 |
115 | case "-ksp_version_min":
116 | if (i++ < args.Length)
117 | {
118 | addon.KspVersionMin = new VersionInfo(args[i]);
119 | }
120 | break;
121 |
122 | case "-ksp_version_max":
123 | if (i++ < args.Length)
124 | {
125 | addon.KspVersionMax = new VersionInfo(args[i]);
126 | }
127 | break;
128 |
129 | case "-output":
130 | if (i++ < args.Length)
131 | {
132 | output = args[i];
133 | }
134 | break;
135 | }
136 | }
137 |
138 | if (!String.IsNullOrEmpty(output))
139 | {
140 | using (var stream = new StreamWriter(output))
141 | {
142 | stream.Write(JsonSerialiser.Serialise(addon));
143 | }
144 | }
145 |
146 | Console.WriteLine(JsonSerialiser.Serialise(addon));
147 | }
148 |
149 | #endregion
150 | }
151 | }
--------------------------------------------------------------------------------
/KSP-AVC/KSP-AVC.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {F745CC0C-B7A0-4EF2-BF5A-1D3F0C19202C}
8 | Library
9 | Properties
10 | KSP_AVC
11 | KSP-AVC
12 | v4.5
13 | 512
14 |
15 |
16 |
17 | false
18 | none
19 | false
20 | ..\Output\KSP-AVC\
21 | DEBUG;TRACE
22 | prompt
23 | 4
24 | false
25 | false
26 |
27 |
28 | none
29 | true
30 | ..\Output\KSP-AVC\
31 | TRACE
32 | prompt
33 | 4
34 | false
35 | false
36 | false
37 |
38 |
39 |
40 |
41 |
42 |
43 | True
44 | True
45 | AssemblyVersion.tt
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 | False
71 |
72 |
73 | False
74 |
75 |
76 |
77 |
78 |
79 |
80 | TextTemplatingFileGenerator
81 | AssemblyVersion.cs
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 | $(PostBuildEventDependsOn);
99 | PostBuildMacros;
100 |
101 | rem del $(KSPDIR)\GameData\KSP-AVC\KSP-AVC.dll
102 |
103 |
104 |
105 |
106 | rem copy D:\Users\jbb\github\KSPAddonVersionChecker\Output\KSP-AVC\KSP-AVC.dll $(KSPDIR)\GameData\KSP-AVC
107 |
108 |
109 | start /D D:\Users\jbb\github\AVC_Mods\KSPAddonVersionChecker /WAIT deploy.bat $(TargetDir) $(TargetFileName)
110 |
111 | if $(ConfigurationName) == Release (
112 |
113 | start /D D:\Users\jbb\github\AVC_Mods\KSPAddonVersionChecker /WAIT buildRelease.bat $(TargetDir) $(TargetFileName)
114 |
115 | )
116 |
117 |
118 | "$(DevEnvDir)\texttransform.exe" "$(ProjectDir)AssemblyVersion.tt"
119 |
120 |
121 |
128 |
--------------------------------------------------------------------------------
/MiniAVC-V2/Starter.cs:
--------------------------------------------------------------------------------
1 | // Copyright (C) 2014 CYBUTEK
2 | //
3 | // This program is free software: you can redistribute it and/or modify it under the terms of the GNU
4 | // General Public License as published by the Free Software Foundation, either version 3 of the
5 | // License, or (at your option) any later version.
6 | //
7 | // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
8 | // even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
9 | // General Public License for more details.
10 | //
11 | // You should have received a copy of the GNU General Public License along with this program. If not,
12 | // see .
13 |
14 | #region Using Directives
15 |
16 | using System;
17 | using System.Collections.Generic;
18 | using System.Linq;
19 |
20 | using UnityEngine;
21 |
22 | #endregion Using Directives
23 |
24 | namespace MiniAVC_V2
25 | {
26 | [KSPAddon(KSPAddon.Startup.Instantly, false)]
27 | // [KSPAddon(KSPAddon.Startup.MainMenu, false)]
28 | public class Starter : MonoBehaviour
29 | {
30 | #region Fields
31 |
32 | private static bool alreadyRunning;
33 | private FirstRunGui shownFirstRunGui;
34 | private IssueGui shownIssueGui;
35 |
36 | #endregion Fields
37 |
38 | #region Methods: protected
39 |
40 | protected void Awake()
41 | {
42 | try
43 | {
44 | // Only allow one instance to run.
45 | if (alreadyRunning)
46 | {
47 | Destroy(this);
48 | return;
49 | }
50 | alreadyRunning = true;
51 |
52 | // Unload if KSP-AVC is detected.
53 | if (AssemblyLoader.loadedAssemblies.Any(a => a.name == "KSP-AVC"))
54 | {
55 | Logger.Log("KSP-AVC was detected... Unloading MiniAVC!");
56 | Destroy(this);
57 | return;
58 | }
59 |
60 |
61 | }
62 | catch (Exception ex)
63 | {
64 | Logger.Exception(ex);
65 | }
66 | }
67 |
68 | protected void Start()
69 | {
70 | if (!UpdateFrequency.ConfigLoaded)
71 | {
72 | UpdateFrequency.LoadConfig();
73 | if (UpdateFrequency.DisableCheck)
74 | {
75 | ScreenMessages.PostScreenMessage("Mini-AVC disabled", 10);
76 | Destroy(this);
77 | return;
78 | }
79 | if (UpdateFrequency.SkipRun)
80 | {
81 | ScreenMessages.PostScreenMessage("Mini-AVC version check skipped", 10);
82 | ScreenMessages.PostScreenMessage($"Mini-AVC runs next: {UpdateFrequency.NextRun}", 10);
83 | Destroy(this);
84 | }
85 | }
86 | }
87 |
88 | protected void OnDestroy()
89 | {
90 | if (UpdateFrequency.ConfigLoaded)
91 | {
92 | UpdateFrequency.SaveConfig();
93 | }
94 | }
95 |
96 | protected void Update()
97 | {
98 | try
99 | {
100 | // Stop updating if there is already a gui being shown or the addon library has not
101 | // been populated.
102 | if (!AddonLibrary.Populated || this.shownFirstRunGui != null || this.shownIssueGui != null)
103 | {
104 | return;
105 | }
106 |
107 | // Do not show first start if no add-ons were found, or just destroy if all add-ons
108 | // have been processed.
109 | if (AddonLibrary.TotalCount == 0)
110 | {
111 | Destroy(this);
112 | return;
113 | }
114 |
115 | // Create and show first run gui if required.
116 | if (this.CreateFirstRunGui())
117 | {
118 | return;
119 | }
120 |
121 | // Create and show issue gui if required.
122 | this.CreateIssueGui();
123 | }
124 | catch (Exception ex)
125 | {
126 | Logger.Exception(ex);
127 | }
128 | }
129 |
130 | #endregion Methods: protected
131 |
132 | #region Methods: private
133 |
134 | private bool CreateFirstRunGui()
135 | {
136 | foreach (var settings in AddonLibrary.Settings.Where(s => s.FirstRun))
137 | {
138 | this.shownFirstRunGui = this.gameObject.AddComponent();
139 | this.shownFirstRunGui.Settings = settings;
140 | this.shownFirstRunGui.Addons = AddonLibrary.Addons.Where(a => a.Settings == settings).ToList();
141 | return true;
142 | }
143 | return false;
144 | }
145 |
146 | private void CreateIssueGui()
147 | {
148 | foreach (var addon in AddonLibrary.AddonsProcessed)
149 | {
150 | if (!addon.HasError && (addon.IsUpdateAvailable || !addon.IsCompatible) && !addon.IsIgnored)
151 | {
152 | this.shownIssueGui = this.gameObject.AddComponent();
153 | this.shownIssueGui.Addon = addon;
154 | this.shownIssueGui.enabled = true;
155 | AddonLibrary.Remove(addon);
156 | break;
157 | }
158 | AddonLibrary.Remove(addon);
159 | }
160 | }
161 |
162 | #endregion Methods: private
163 | }
164 | }
--------------------------------------------------------------------------------
/KSP-AVC/KSP-AVC.csproj.173:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {F745CC0C-B7A0-4EF2-BF5A-1D3F0C19202C}
8 | Library
9 | Properties
10 | KSP_AVC
11 | KSP-AVC
12 | v3.5
13 | 512
14 |
15 |
16 |
17 | false
18 | none
19 | false
20 | ..\Output\KSP-AVC\
21 | DEBUG;TRACE
22 | prompt
23 | 4
24 | false
25 |
26 |
27 | none
28 | true
29 | ..\Output\KSP-AVC\
30 | TRACE
31 | prompt
32 | 4
33 | false
34 | false
35 |
36 |
37 |
38 |
39 |
40 |
41 | True
42 | True
43 | AssemblyVersion.tt
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 | R:\KSP_1.7.3_dev\KSP_x64_Data\Managed\Assembly-CSharp.dll
68 |
69 |
70 |
71 |
72 | R:\KSP_1.7.3_dev\KSP_x64_Data\Managed\UnityEngine.dll
73 |
74 |
75 | False
76 | R:\KSP_1.7.3_dev\KSP_x64_Data\Managed\UnityEngine.UI.dll
77 |
78 |
79 |
80 |
81 | TextTemplatingFileGenerator
82 | AssemblyVersion.cs
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 | $(PostBuildEventDependsOn);
100 | PostBuildMacros;
101 |
102 | rem del R:\KSP_1.7.3_dev\GameData\KSP-AVC\KSP-AVC.dll
103 |
104 |
105 |
106 |
107 | rem copy D:\Users\jbb\github\KSPAddonVersionChecker\Output\KSP-AVC\KSP-AVC.dll R:\KSP_1.7.3_dev\GameData\KSP-AVC
108 |
109 |
110 | start /D D:\Users\jbb\github\KSPAddonVersionChecker /WAIT deploy.bat $(TargetDir) $(TargetFileName)
111 |
112 | if $(ConfigurationName) == Release (
113 |
114 | start /D D:\Users\jbb\github\KSPAddonVersionChecker /WAIT buildRelease.bat $(TargetDir) $(TargetFileName)
115 |
116 | )
117 |
118 |
119 |
120 | set textTemplatingPath="%25ProgramFiles(x86)%25\Microsoft Visual Studio\2017\Community\Common7\IDE\texttransform.exe"
121 |
122 |
123 |
124 |
125 |
126 | %25textTemplatingPath%25 "$(ProjectDir)AssemblyVersion.tt"
127 |
128 |
129 |
136 |
--------------------------------------------------------------------------------
/KSP-AVC/KSP-AVC.csproj.orig:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {F745CC0C-B7A0-4EF2-BF5A-1D3F0C19202C}
8 | Library
9 | Properties
10 | KSP_AVC
11 | KSP-AVC
12 | v3.5
13 | 512
14 |
15 |
16 |
17 | false
18 | none
19 | false
20 | ..\Output\KSP-AVC\
21 | DEBUG;TRACE
22 | prompt
23 | 4
24 | false
25 |
26 |
27 | none
28 | true
29 | ..\Output\KSP-AVC\
30 | TRACE
31 | prompt
32 | 4
33 | false
34 | false
35 |
36 |
37 |
38 |
39 |
40 |
41 | True
42 | True
43 | AssemblyVersion.tt
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 | R:\KSP_1.7.3_dev\KSP_x64_Data\Managed\Assembly-CSharp.dll
68 |
69 |
70 |
71 |
72 | R:\KSP_1.7.3_dev\KSP_x64_Data\Managed\UnityEngine.dll
73 |
74 |
75 | False
76 | R:\KSP_1.7.3_dev\KSP_x64_Data\Managed\UnityEngine.UI.dll
77 |
78 |
79 |
80 |
81 | TextTemplatingFileGenerator
82 | AssemblyVersion.cs
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 | $(PostBuildEventDependsOn);
100 | PostBuildMacros;
101 |
102 | rem del R:\KSP_1.7.3_dev\GameData\KSP-AVC\KSP-AVC.dll
103 |
104 |
105 |
106 |
107 | rem copy D:\Users\jbb\github\KSPAddonVersionChecker\Output\KSP-AVC\KSP-AVC.dll R:\KSP_1.7.3_dev\GameData\KSP-AVC
108 |
109 |
110 | start /D D:\Users\jbb\github\KSPAddonVersionChecker /WAIT deploy.bat $(TargetDir) $(TargetFileName)
111 |
112 | if $(ConfigurationName) == Release (
113 |
114 | start /D D:\Users\jbb\github\KSPAddonVersionChecker /WAIT buildRelease.bat $(TargetDir) $(TargetFileName)
115 |
116 | )
117 |
118 |
119 |
120 | set textTemplatingPath="%25ProgramFiles(x86)%25\Microsoft Visual Studio\2017\Community\Common7\IDE\texttransform.exe"
121 |
122 |
123 |
124 |
125 |
126 | %25textTemplatingPath%25 "$(ProjectDir)AssemblyVersion.tt"
127 |
128 |
129 |
136 |
--------------------------------------------------------------------------------
/Documents/MiniAVC/README.md:
--------------------------------------------------------------------------------
1 | # MiniAVC Add-on Version Checker
2 |
3 | ## Developer
4 |
5 | Cybutek
6 |
7 |
8 | ## KSP-AVC Ready
9 |
10 | KSP Add-on Version Checker is a standardised system for versioning mods. You can get more information on the
11 | [forum thread](http://forum.kerbalspaceprogram.com/threads/79745)
12 |
13 |
14 | ## Description
15 |
16 | This plugin checks inside its current directory and all contained directories for version files. It's use is for mods to make use of the KSP-AVC system without requiring the player to have the full KSP-AVC Plugin installed. The MiniAVC.dll plugin is safe to be bundled with mods and will negotiate between all other instances of MiniAVC to run the latest version. If an installation of KSP-AVC Plugin is found, the MiniAVC system will be disabled to let KSP-AVC take over. MiniAVC can check for both updates and game version compatibility, the same way as KSP-AVC Plugin does. The biggest difference is that because MiniAVC is a bundleable plugin, it will ask the player on the first run whether to allow update checking. If the user does not wish your add-on to check for updates, the remote checking functionality will be disabled. This will not completely turn off MiniAVC as it can still run in local mode to notify the player of any game version compatibility issues.
17 |
18 |
19 | ## Installation
20 |
21 | - Bundle the MiniAVC.dll file into your packaged add-on directory along with your version file.
22 | - If your add-on contains multiple version files, place it at the lowest directory level which will cover all the version files, but do not place it in GameData.
23 |
24 |
25 | ## Community Add-on Rule 5.5
26 |
27 | The rule states that, "Add-ons that contact another network or computer system must tell users exactly what it's sending or receiving in a clear and obvious way in all locations it is offered for download." This means that if you bundle MiniAVC with your add-on, you must clearly notify players before downloading that it contains MiniAVC and how it works.
28 |
29 | ### BB Code
30 | ```
31 | This mod includes version checking using [URL=http://forum.kerbalspaceprogram.com/threads/79745]MiniAVC[/URL]. If you opt-in, it will use the internet to check whether there is a new version available. Data is only read from the internet and no personal information is sent. For a more comprehensive version checking experience, please download the [URL=http://forum.kerbalspaceprogram.com/threads/79745]KSP-AVC Plugin[/URL].
32 | ```
33 | ### HTML
34 | ```html
35 | This mod includes version checking using MiniAVC. If you opt-in, it will use the internet to check whether there is a new version available. Data is only read from the internet and no personal information is sent. For a more comprehensive version checking experience, please download the KSP-AVC Plugin.
36 | ```
37 |
38 | ## Version File Breakdown
39 |
40 | - **NAME** - Required
41 |
42 | The display name for the add-on.
43 |
44 | - **URL** - Optional
45 |
46 | Location of a remote version file for update checking.
47 |
48 | - **DOWNLOAD** - Optional
49 |
50 | Web address where the latest version can be downloaded.
51 | *This is only used from the remote version file.*
52 |
53 | - **CHANGE_LOG** - Optional
54 |
55 | The complete or incremental change log for the add-on.
56 | This is only used from the remote version file.
57 |
58 | - **CHANGE_LOG_URL** - Optional
59 |
60 | Populates the CHANGE_LOG field using the file at this url.
61 | *This is only used from the remote version file.*
62 |
63 | - **GITHUB** - Optional
64 |
65 | Allows KSP-AVC to do release checks with GitHub including setting a download location if one is not specified.
66 | If the latest release version is not equal to the version in the file, an update notification will not appear.
67 | *This is only used from the remote version file.*
68 |
69 | - **USERNAME** - Required
70 |
71 | Your GitHub username.
72 |
73 | - **REPOSITORY** - Required
74 |
75 | The name of the source repository.
76 |
77 | - **ALLOW_PRE_RELEASE** - Optional
78 |
79 | Include pre-releases in the latest release search.
80 |
81 | *The default value is false.*
82 |
83 | - **VERSION** - Required
84 |
85 | The version of the add-on.
86 | - **KSP_VERSION** - Optional, Required for MIN/MAX
87 |
88 | Version of KSP that the add-on was made to support.
89 | - **KSP_VERSION_MIN** - Optional
90 |
91 | Minimum version of KSP that the add-on supports.
92 |
93 | *Requires KSP_VERSION field to work.*
94 |
95 | - **KSP_VERSION_MAX** - Optional
96 |
97 | Maximum version of KSP that the add-on supports.
98 | *Requires KSP_VERSION field to work.*
99 |
100 | For simple management of your version files you can use the KSP-AVC Online website at: [ksp-avc.cybutek.net](http://ksp-avc.cybutek.net/)
101 |
102 | ## Version File Example
103 |
104 | ```json
105 | {
106 | "NAME":"KSP-AVC",
107 | "URL":"http://ksp-avc.cybutek.net/version.php?id=2",
108 | "DOWNLOAD":"http://kerbal.curseforge.com/ksp-mods/220462-ksp-avc-add-on-version-checker",
109 | "GITHUB":
110 | {
111 | "USERNAME":"YourGitHubUserName",
112 | "REPOSITORY":"YourGitHubRepository",
113 | "ALLOW_PRE_RELEASE":false,
114 | },
115 | "VERSION":
116 | {
117 | "MAJOR":1,
118 | "MINOR":1,
119 | "PATCH":0,
120 | "BUILD":0
121 | },
122 | "KSP_VERSION":
123 | {
124 | "MAJOR":0,
125 | "MINOR":24,
126 | "PATCH":2
127 | },
128 | "KSP_VERSION_MIN":
129 | {
130 | "MAJOR":0,
131 | "MINOR":24,
132 | "PATCH":0
133 | },
134 | "KSP_VERSION_MAX":
135 | {
136 | "MAJOR":0,
137 | "MINOR":24,
138 | "PATCH":2
139 | }
140 | }
141 | ```
142 |
143 | ## Changelog
144 |
145 | See [CHANGES.txt](CHANGES.txt)
146 |
147 | ## Software License
148 |
149 | Licensed under the [GNU General Public License v3](LICENSE.txt).
150 |
--------------------------------------------------------------------------------
/MiniAVC-V2/FirstRunGui.cs:
--------------------------------------------------------------------------------
1 | //
2 | // Copyright (C) 2014 CYBUTEK
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 | //
17 |
18 | #region Using Directives
19 |
20 | using System;
21 | using System.Collections.Generic;
22 |
23 | using UnityEngine;
24 |
25 | #endregion
26 |
27 | namespace MiniAVC_V2
28 | {
29 | public class FirstRunGui : MonoBehaviour
30 | {
31 | #region Fields
32 |
33 | private GUIStyle buttonStyle;
34 | private bool hasCentred;
35 | private GUIStyle labelStyle;
36 | private Rect position = new Rect(Screen.width, Screen.height, 0, 0);
37 | private GUIStyle titleStyle;
38 |
39 | #endregion
40 |
41 | #region Properties
42 |
43 | public List Addons { get; set; }
44 |
45 | public AddonSettings Settings { get; set; }
46 |
47 | #endregion
48 |
49 | #region Methods: protected
50 |
51 | protected void Awake()
52 | {
53 | try
54 | {
55 | DontDestroyOnLoad(this);
56 | }
57 | catch (Exception ex)
58 | {
59 | Logger.Exception(ex);
60 | }
61 | Logger.Log("FirstRunGui was created.");
62 | }
63 |
64 | protected void OnDestroy()
65 | {
66 | Logger.Log("FirstRunGui was destroyed.");
67 | }
68 |
69 | protected void OnGUI()
70 | {
71 | try
72 | {
73 | this.position = GUILayout.Window(this.GetInstanceID(), this.position, this.Window, "MiniAVC", HighLogic.Skin.window);
74 | this.CentreWindow();
75 | }
76 | catch (Exception ex)
77 | {
78 | Logger.Exception(ex);
79 | }
80 | }
81 |
82 | protected void Start()
83 | {
84 | try
85 | {
86 | this.InitialiseStyles();
87 | }
88 | catch (Exception ex)
89 | {
90 | Logger.Exception(ex);
91 | }
92 | }
93 |
94 | #endregion
95 |
96 | #region Methods: private
97 |
98 | private void CentreWindow()
99 | {
100 | if (this.hasCentred || !(this.position.width > 0) || !(this.position.height > 0))
101 | {
102 | return;
103 | }
104 | this.position.center = new Vector2(Screen.width * 0.5f, Screen.height * 0.5f);
105 | this.hasCentred = true;
106 | }
107 |
108 | private void DrawAddonList()
109 | {
110 | GUILayout.Label("Allow these add-ons to check for updates?", this.titleStyle, GUILayout.Width(300.0f));
111 | foreach (var addon in this.Addons)
112 | {
113 | GUILayout.Label(addon.Name, this.labelStyle);
114 | }
115 | }
116 |
117 | private void DrawButtonNo()
118 | {
119 | if (!GUILayout.Button("NO", this.buttonStyle))
120 | {
121 | return;
122 | }
123 |
124 | this.Settings.FirstRun = false;
125 | this.Settings.AllowCheck = false;
126 | this.Settings.Save();
127 | foreach (var addon in this.Addons)
128 | {
129 | Logger.Log("Remote checking has been disabled for: " + addon.Name);
130 | addon.RunProcessRemoteInfo();
131 | }
132 | Destroy(this);
133 | }
134 |
135 | private void DrawButtonYes()
136 | {
137 | if (!GUILayout.Button("YES", this.buttonStyle, GUILayout.Width(200.0f)))
138 | {
139 | return;
140 | }
141 |
142 | this.Settings.FirstRun = false;
143 | this.Settings.AllowCheck = true;
144 | this.Settings.Save();
145 | foreach (var addon in this.Addons)
146 | {
147 | Logger.Log("Remote checking has been enabled for: " + addon.Name);
148 | addon.RunProcessRemoteInfo();
149 | }
150 | Destroy(this);
151 | }
152 |
153 | private void InitialiseStyles()
154 | {
155 | this.titleStyle = new GUIStyle(HighLogic.Skin.label)
156 | {
157 | normal =
158 | {
159 | textColor = Color.white
160 | },
161 | fontSize = 13,
162 | fontStyle = FontStyle.Bold,
163 | alignment = TextAnchor.MiddleCenter,
164 | stretchWidth = true
165 | };
166 | this.labelStyle = new GUIStyle(HighLogic.Skin.label)
167 | {
168 | fontSize = 13,
169 | alignment = TextAnchor.MiddleCenter,
170 | stretchWidth = true
171 | };
172 |
173 | this.buttonStyle = new GUIStyle(HighLogic.Skin.button)
174 | {
175 | normal =
176 | {
177 | textColor = Color.white
178 | }
179 | };
180 | }
181 |
182 | private void Window(int id)
183 | {
184 | try
185 | {
186 | GUILayout.BeginVertical(HighLogic.Skin.box);
187 | this.DrawAddonList();
188 | GUILayout.EndVertical();
189 | GUILayout.BeginHorizontal();
190 | this.DrawButtonYes();
191 | this.DrawButtonNo();
192 | GUILayout.EndHorizontal();
193 | GUI.DragWindow();
194 | }
195 | catch (Exception ex)
196 | {
197 | Logger.Exception(ex);
198 | }
199 | }
200 |
201 | #endregion
202 | }
203 | }
--------------------------------------------------------------------------------