diff --git a/package.json b/package.json index d613084..ab862ea 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sc2-campaign-manager", - "version": "0.4.0-alpha", + "version": "0.5.0-alpha", "description": "A Campaign Manager for StarCraft II. ", "main": "main.js", "build": { diff --git a/public/sources.json b/public/sources.json index 22bce8e..164ffc7 100644 --- a/public/sources.json +++ b/public/sources.json @@ -1,8 +1,47 @@ [ - "https://raw.githubusercontent.com/abrahamYG/sc2-campaign-sources/master/tactic.json", - "https://raw.githubusercontent.com/abrahamYG/sc2-campaign-sources/master/tacrem.json", - "https://raw.githubusercontent.com/abrahamYG/sc2-campaign-sources/master/scmr.json", - "https://raw.githubusercontent.com/abrahamYG/sc2-campaign-sources/master/annihilation.json", - "https://raw.githubusercontent.com/abrahamYG/sc2-campaign-sources/master/wott.json", - "https://raw.githubusercontent.com/abrahamYG/sc2-campaign-sources/master/perfect-soldiers.json" + "https://raw.githubusercontent.com/abrahamYG/sc2-campaign-sources/master/abandoment-campaign.json", +"https://raw.githubusercontent.com/abrahamYG/sc2-campaign-sources/master/alaraks-conquest-campaign.json", +"https://raw.githubusercontent.com/abrahamYG/sc2-campaign-sources/master/antioch-chronicles-remastered.json", +"https://raw.githubusercontent.com/abrahamYG/sc2-campaign-sources/master/brood.json", +"https://raw.githubusercontent.com/abrahamYG/sc2-campaign-sources/master/campaign-ascension-of-duran-reimagined.json", +"https://raw.githubusercontent.com/abrahamYG/sc2-campaign-sources/master/campaign-broods-wrath.json", +"https://raw.githubusercontent.com/abrahamYG/sc2-campaign-sources/master/campaign-evolution-swarm.json", +"https://raw.githubusercontent.com/abrahamYG/sc2-campaign-sources/master/campaign-race-with-destiny.json", +"https://raw.githubusercontent.com/abrahamYG/sc2-campaign-sources/master/campaign-shadow-of-the-past.json", +"https://raw.githubusercontent.com/abrahamYG/sc2-campaign-sources/master/campaign-starcraft-2-shadow-of-liberty.json", +"https://raw.githubusercontent.com/abrahamYG/sc2-campaign-sources/master/campaign-umojans-job-working-tit.json", +"https://raw.githubusercontent.com/abrahamYG/sc2-campaign-sources/master/campaign-wrath-taldarim.json", +"https://raw.githubusercontent.com/abrahamYG/sc2-campaign-sources/master/custom-campaign-initiative.json", +"https://raw.githubusercontent.com/abrahamYG/sc2-campaign-sources/master/custom-dlc-unification-purifiers.json", +"https://raw.githubusercontent.com/abrahamYG/sc2-campaign-sources/master/enslavers-redux.json", +"https://raw.githubusercontent.com/abrahamYG/sc2-campaign-sources/master/hammer-dawn.json", +"https://raw.githubusercontent.com/abrahamYG/sc2-campaign-sources/master/ignos.json", +"https://raw.githubusercontent.com/abrahamYG/sc2-campaign-sources/master/lifeforce.json", +"https://raw.githubusercontent.com/abrahamYG/sc2-campaign-sources/master/marauders-orbital-drop.json", +"https://raw.githubusercontent.com/abrahamYG/sc2-campaign-sources/master/njordysevac.json", +"https://raw.githubusercontent.com/abrahamYG/sc2-campaign-sources/master/noir-ascension.json", +"https://raw.githubusercontent.com/abrahamYG/sc2-campaign-sources/master/noir-automata.json", +"https://raw.githubusercontent.com/abrahamYG/sc2-campaign-sources/master/noir-evolution.json", +"https://raw.githubusercontent.com/abrahamYG/sc2-campaign-sources/master/perfect-soldiers.json", +"https://raw.githubusercontent.com/abrahamYG/sc2-campaign-sources/master/proditor-campaign.json", +"https://raw.githubusercontent.com/abrahamYG/sc2-campaign-sources/master/shadow-brood-campaign.json", +"https://raw.githubusercontent.com/abrahamYG/sc2-campaign-sources/master/silent-scream-custom-campaign.json", +"https://raw.githubusercontent.com/abrahamYG/sc2-campaign-sources/master/sotx.json", +"https://raw.githubusercontent.com/abrahamYG/sc2-campaign-sources/master/starcraft-2-odyssey-campaign.json", +"https://raw.githubusercontent.com/abrahamYG/sc2-campaign-sources/master/starcraft-2-time-convergence.json", +"https://raw.githubusercontent.com/abrahamYG/sc2-campaign-sources/master/starcraft-ii-annihilation-campaign.json", +"https://raw.githubusercontent.com/abrahamYG/sc2-campaign-sources/master/starcraft-mass-recall.json", +"https://raw.githubusercontent.com/abrahamYG/sc2-campaign-sources/master/starcraft-origins.json", +"https://raw.githubusercontent.com/abrahamYG/sc2-campaign-sources/master/starcraft-pandora.json", +"https://raw.githubusercontent.com/abrahamYG/sc2-campaign-sources/master/starcraft-reawakening.json", +"https://raw.githubusercontent.com/abrahamYG/sc2-campaign-sources/master/starcraft-replicant.json", +"https://raw.githubusercontent.com/abrahamYG/sc2-campaign-sources/master/starcraft-subjection.json", +"https://raw.githubusercontent.com/abrahamYG/sc2-campaign-sources/master/starcraft-time-splitters.json", +"https://raw.githubusercontent.com/abrahamYG/sc2-campaign-sources/master/the-hammer-of-dawn-revamp.json", +"https://raw.githubusercontent.com/abrahamYG/sc2-campaign-sources/master/thoughts-in-chaos.json", +"https://raw.githubusercontent.com/abrahamYG/sc2-campaign-sources/master/time-convergence.json", +"https://raw.githubusercontent.com/abrahamYG/sc2-campaign-sources/master/vortex-void.json", +"https://raw.githubusercontent.com/abrahamYG/sc2-campaign-sources/master/wrath-arius.json" + ] + diff --git a/src/classes/Downloader.ts b/src/classes/Downloader.ts new file mode 100644 index 0000000..ac2186b --- /dev/null +++ b/src/classes/Downloader.ts @@ -0,0 +1,36 @@ +import { ICampaign, ISC2Component } from "./Campaign"; +import download = require("download"); + +interface ISource { + url?:string, + format?:string, + files?:Array, + progress?:number +} + +export default class Downloader { + static downloads:ISource[] = []; + static progress: number = 0; + static pushCampaign(campaign:ICampaign){ + let sources: {[key: string]: ISource} = {}; + const mods = [...campaign.mods, ...campaign.maps]; + mods.forEach(mod =>{ + const {source, sourceFormat} = mod; + sources = { + [source]: { + format: sourceFormat, + files:[] + }, + ...sources + } + this.downloads.push({ url: source, format:sourceFormat, progress:0}) + + if(sources[source].format === "zip") { + sources[source].files.push(mod); + } + else{ + sources[mod.source].files = [mod]; + } + }); + } +} \ No newline at end of file diff --git a/src/components/CampaignDetails.tsx b/src/components/CampaignDetails.tsx index 90e145a..c57f371 100644 --- a/src/components/CampaignDetails.tsx +++ b/src/components/CampaignDetails.tsx @@ -72,7 +72,11 @@ const CampaignDetails:FC = (props) => { const downloadProgress:number = (progress)?progress:0; return ( +
+ ( + + )}/>
{(isCampaignInstalled) && @@ -116,7 +120,7 @@ const CampaignDetails:FC = (props) => {
- + Description @@ -135,7 +139,7 @@ const CampaignDetails:FC = (props) => {
- +
{(videos) &&