From e47ece56956f10a591dfd4da44e5e8f46b3c61cd Mon Sep 17 00:00:00 2001 From: Abraham Yunes Date: Tue, 18 Jun 2019 18:04:19 -0500 Subject: [PATCH] Fixing minor stuff for v0.5.2-alpha --- main.js | 31 ++++++++++++++++----- package.json | 2 +- src/classes/Campaign.ts | 22 ++++++++------- src/classes/Config.ts | 11 ++++---- src/components/CampaignDetails.tsx | 26 ++++++++++++++---- src/components/ManifestEditorMapItem.tsx | 1 + src/constants/ipcmessages.d.ts | 1 + src/constants/ipcmessages.js | 1 + src/containers/CampaignPane.tsx | 34 +++++------------------- src/pages/Home.tsx | 25 ++++------------- 10 files changed, 80 insertions(+), 74 deletions(-) diff --git a/main.js b/main.js index 24a324c..3058878 100644 --- a/main.js +++ b/main.js @@ -7,7 +7,6 @@ const fs = require('fs-extra'); const download = require('download'); //const os = require('os'); const yauzl = require('yauzl'); -const { default: installExtension, REACT_DEVELOPER_TOOLS,REDUX_DEVTOOLS } = require('electron-devtools-installer'); //const download = require('./electron/Download'); //const {download} = require('electron-dl'); @@ -26,6 +25,19 @@ let mainWindow; electron: require(`${__dirname}/node_modules/electron`) }); */ + +const loadDevTools = () =>{ + if(process.env.NODE_ENV === 'dev'){ + const { default: installExtension, REACT_DEVELOPER_TOOLS,REDUX_DEVTOOLS } = require('electron-devtools-installer'); + installExtension(REACT_DEVELOPER_TOOLS) + .then((name) => console.log(`Added Extension: ${name}`)) + .catch((err) => console.log('An error occurred: ', err)); + installExtension(REDUX_DEVTOOLS) + .then((name) => console.log(`Added Extension: ${name}`)) + .catch((err) => console.log('An error occurred: ', err)); + } +} + function createWindow () { mainWindow = new BrowserWindow({ width: 900, @@ -36,13 +48,8 @@ function createWindow () { nodeIntegration: true } }); + loadDevTools(); - installExtension(REACT_DEVELOPER_TOOLS) - .then((name) => console.log(`Added Extension: ${name}`)) - .catch((err) => console.log('An error occurred: ', err)); - installExtension(REDUX_DEVTOOLS) - .then((name) => console.log(`Added Extension: ${name}`)) - .catch((err) => console.log('An error occurred: ', err)); mainWindow.loadFile('index.html'); /*mainWindow.webContents.openDevTools({ mode:"detach" @@ -221,4 +228,14 @@ ipcMain.on(msg.PLAY_CAMPAIGN, async (event, campaign) => { console.log(error) console.log(stdout); }); +}); + + +ipcMain.on(msg.PLAY_MAP, async (event, map) => { + const {command, params} = campaign; + console.log(command, params) + execFile(campaign.command,params,function(error, stdout, stderr) { + console.log(error) + console.log(stdout); + }); }); \ No newline at end of file diff --git a/package.json b/package.json index 5bff686..2040fed 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sc2-campaign-manager", - "version": "0.5.1-alpha", + "version": "0.5.2-alpha", "description": "A Campaign Manager for StarCraft II. ", "main": "main.js", "build": { diff --git a/src/classes/Campaign.ts b/src/classes/Campaign.ts index 0554b3c..548d96e 100644 --- a/src/classes/Campaign.ts +++ b/src/classes/Campaign.ts @@ -94,7 +94,7 @@ export default class Campaign { const campaign:ICampaign = await response.json(); return campaign; } - static getCampaignRunCommand = (campaign:ICampaign):string => { + static getRunCommand = (campaign:ICampaign):string => { console.group("getCampaignRunCommand"); const entryPoint = (campaign.entryPoint)?campaign.entryPoint:campaign.maps[0].destination; const entryPointPath = path.join(Campaign.getCampaignsInstallDir(),entryPoint) @@ -103,11 +103,13 @@ export default class Campaign { console.groupEnd(); return command; } - static getCampaignRunParams = (campaign:ICampaign):Array => { - console.group("getCampaignRunParams"); - const entryPoint = (campaign.entryPoint)?campaign.entryPoint:campaign.maps[0].destination; - const entryPointPath = path.join(Campaign.getCampaignsInstallDir(),entryPoint) - const params = Config.getRunParams().map(e=>e.replace("{map}",entryPointPath)) + static getRunParams = (campaign:ICampaign,mapIndex:number):Array => { + console.group("getCampaignRunParams") + console.log(mapIndex); + const {entryPoint, maps} = campaign + const entry = (mapIndex>=0)?maps[mapIndex].destination:(entryPoint)?entryPoint:maps[0].destination + const entryPath = path.join(Campaign.getCampaignsInstallDir(),entry) + const params = Config.getRunParams().map(e=>e.replace("{map}",entryPath)) console.log("params", params) console.groupEnd(); @@ -122,6 +124,7 @@ export default class Campaign { const campaigns = await Promise.all(Config.getLocalSources().map((source:string) => { return Campaign.getCampaignLocal(source) })); + console.log("getCampaignsLocal",campaigns) return campaigns; } static getCampaignsInstallDir = ():string => { @@ -149,13 +152,14 @@ export default class Campaign { ipcRenderer.send(msg.DOWNLOAD_CAMPAIGN, {...campaign, installDir:Campaign.getCampaignsInstallDir()}); } - static playCampaign = (campaign:ICampaign) => { + static playCampaign = (campaign:ICampaign,mapIndex:number=-1) => { + console.group("playCampaign") const data = { ...campaign, installDir:Campaign.getCampaignsInstallDir(), - command: Campaign.getCampaignRunCommand(campaign), - params:Campaign.getCampaignRunParams(campaign) + command: Campaign.getRunCommand(campaign), + params:Campaign.getRunParams(campaign,mapIndex) }; console.log("data", data); ipcRenderer.send(msg.PLAY_CAMPAIGN, data); diff --git a/src/classes/Config.ts b/src/classes/Config.ts index e7d0b4f..37bbf49 100644 --- a/src/classes/Config.ts +++ b/src/classes/Config.ts @@ -18,7 +18,8 @@ export interface IConfig { export default class Config { static getConfigFilePath():string{ - return path.join(app.getPath("userData"), "config.json") + const filename = `config-${app.getVersion()}.json` + return path.join(app.getPath("userData"), filename) } static showInstallDirOpenDialog(path:string, callback:(filePaths:Array)=>void){ @@ -40,13 +41,13 @@ export default class Config { } static loadFromDisk():any{ let configs = {}; - console.group("loadFromDisk") - if(this.configFileExists()){ + const configFileExists =this.configFileExists(); + console.log("configFileExists",configFileExists); + if(configFileExists){ const configFile = this.getConfigFilePath(); - console.log("configFile",configFile) const data:Buffer = fs.readFileSync(configFile); configs = JSON.parse(data.toString()); - console.groupEnd(); + } return configs; } diff --git a/src/components/CampaignDetails.tsx b/src/components/CampaignDetails.tsx index 55f6c19..02cba08 100644 --- a/src/components/CampaignDetails.tsx +++ b/src/components/CampaignDetails.tsx @@ -36,7 +36,7 @@ interface ICampaignDetailsProps { "campaign"?:ICampaign, "path"?:string, "selectedCampaignAuthor"?:IAuthor, - "onPlayCampaignClick":(campaign:ICampaign)=>void, + "onPlayCampaignClick":(campaign:ICampaign,mapIndex?:number)=>void, "onUpdateCampaignClick"?:(campaign:ICampaign)=>void, "onDownloadCampaignClick":(campaign:ICampaign)=>void } @@ -168,7 +168,7 @@ const CampaignDetails:FC = (props) => { source={description} className={"campaign-description"} skipHtml={true} - linkTarget={(uri)=>"_blank"} + linkTarget={()=>"_blank"} /> } /> @@ -192,15 +192,31 @@ const CampaignDetails:FC = (props) => { } />
- {maps.map(({name,description,destination}) => + {maps.map(({name,description,destination},index) =>

{name}

-

Description:{description}

+ {description && + <> +

Description:

+ "_blank"} + /> + + }
- +
diff --git a/src/components/ManifestEditorMapItem.tsx b/src/components/ManifestEditorMapItem.tsx index cf6de98..33da140 100644 --- a/src/components/ManifestEditorMapItem.tsx +++ b/src/components/ManifestEditorMapItem.tsx @@ -70,6 +70,7 @@ const ManifestEditorMapItem:FC = (props) => { name="description" aria-describedby="runParamsHelp" placeholder="Enter a description for the map" + rows={4} />
diff --git a/src/constants/ipcmessages.d.ts b/src/constants/ipcmessages.d.ts index 199fc3a..225e8e5 100644 --- a/src/constants/ipcmessages.d.ts +++ b/src/constants/ipcmessages.d.ts @@ -5,6 +5,7 @@ declare interface IPCMessages { DOWNLOAD_CAMPAIGN_STATUS:string; DOWNLOAD_CAMPAIGN_FINISH:string; PLAY_CAMPAIGN:string; + PLAY_MAP:string; } diff --git a/src/constants/ipcmessages.js b/src/constants/ipcmessages.js index 5213aaf..fa77409 100644 --- a/src/constants/ipcmessages.js +++ b/src/constants/ipcmessages.js @@ -5,5 +5,6 @@ module.exports = { DOWNLOAD_CAMPAIGN_STATUS: "downloadCampaignProgress", DOWNLOAD_CAMPAIGN_FINISH: "downloadCampaignProgress", PLAY_CAMPAIGN: "playCampaign", + PLAY_MAP: "playMap", } \ No newline at end of file diff --git a/src/containers/CampaignPane.tsx b/src/containers/CampaignPane.tsx index 4658eb3..76539d2 100644 --- a/src/containers/CampaignPane.tsx +++ b/src/containers/CampaignPane.tsx @@ -29,34 +29,14 @@ class CampaignPane extends React.Component { localStorage.setItem('selectedCampaign',campaign.id) //this.setState({selectedCampaign: campaign}); }; - handleDownloadClick = (campaign:ICampaign) => { - console.group("handleDownloadClick") - console.log(campaign) - const {id} = campaign; - console.log(`isCampaignInstalled ${id}`,Campaign.isCampaignInstalled(campaign)); - Campaign.downloadCampaign(campaign); - console.groupEnd(); - } - handlePlayClick = (campaign:ICampaign) => { - console.group("handlePlayClick") - console.log(campaign) - const {id} = campaign; - Campaign.playCampaign(campaign); - console.groupEnd(); - } + handleDownloadClick = Campaign.downloadCampaign; + handlePlayClick = Campaign.playCampaign; componentDidMount(){ const campaigns = this.props.campaigns.map((campaign, index) =>{ @@ -80,12 +60,12 @@ class CampaignPane extends React.Component { const campaigns = [...this.props.campaigns]; const index = campaigns.findIndex(c => c.id === arg.campaignId) - const campaign = campaigns[index]; - campaign.installed = Campaign.isCampaignInstalled(campaign); + const campaign = { + ...campaigns[index], + installed:Campaign.isCampaignInstalled(campaigns[index]) + }; console.log("DOWNLOAD_CAMPAIGN_FINISH", campaign) - campaigns[index] = campaign; - this.props.setCampaigns(campaigns) - this.setState({campaigns}) + this.props.setCampaign(campaign,index) }); } render(){ diff --git a/src/pages/Home.tsx b/src/pages/Home.tsx index d59fb34..77dd75b 100644 --- a/src/pages/Home.tsx +++ b/src/pages/Home.tsx @@ -1,5 +1,5 @@ import React, { Component } from 'react'; -import { HashRouter as Router, Route, Link } from "react-router-dom"; +import { HashRouter as Router, Route, Link, Redirect } from "react-router-dom"; import Campaign, { ICampaign } from '../classes/Campaign' import NavBar from '../components/NavBar'; @@ -28,19 +28,14 @@ class Home extends Component { super(props); const selectedPaneLocal = (localStorage.getItem('selectedPane') !== null) ? localStorage.getItem('selectedPane') : "campaigns"; const selectedCampaignLocal = (localStorage.getItem('selectedCampaign') !== null) ? localStorage.getItem('selectedCampaign') : null; - this.state = { - "campaigns": [], - "authors": null, - "selectedCampaign": null, - "selectedCampaignAuthor": null, - "selectedPane": selectedPaneLocal - }; + console.log("Home props") Campaign.getCampaignsRemote().then((campaigns) =>{ props.setCampaignsRemote(campaigns.map( campaign => {return {...campaign, installed:Campaign.isCampaignInstalled(campaign)}} )); }) Campaign.getCampaignsLocal().then((campaigns) =>{ + console.log(campaigns) props.setCampaignsLocal(campaigns.map( campaign => {return {...campaign, installed:Campaign.isCampaignInstalled(campaign)}} )); @@ -64,24 +59,14 @@ class Home extends Component { } - handleDownloadCampaignClick = (campaign: ICampaign) => { - console.log("Downloading " + campaign.id); - }; - render() { - const { - selectedPane, - campaigns, - selectedCampaign, - selectedCampaignAuthor - } = this.state - const onDownloadCampaignClick = this.handleDownloadCampaignClick; + return ( <>
- + } />