├── 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 | } --------------------------------------------------------------------------------