Skip to content

Commit

Permalink
Fixing minor stuff for v0.5.2-alpha
Browse files Browse the repository at this point in the history
  • Loading branch information
abrahamYG committed Jun 18, 2019
1 parent 4dc702f commit e47ece5
Show file tree
Hide file tree
Showing 10 changed files with 80 additions and 74 deletions.
31 changes: 24 additions & 7 deletions main.js
Original file line number Diff line number Diff line change
Expand Up @@ -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');

Expand All @@ -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,
Expand All @@ -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"
Expand Down Expand Up @@ -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);
});
});
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -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": {
Expand Down
22 changes: 13 additions & 9 deletions src/classes/Campaign.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -103,11 +103,13 @@ export default class Campaign {
console.groupEnd();
return command;
}
static getCampaignRunParams = (campaign:ICampaign):Array<string> => {
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<string> => {
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();
Expand All @@ -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 => {
Expand Down Expand Up @@ -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);
Expand Down
11 changes: 6 additions & 5 deletions src/classes/Config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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<string>)=>void){
Expand All @@ -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;
}
Expand Down
26 changes: 21 additions & 5 deletions src/components/CampaignDetails.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
Expand Down Expand Up @@ -168,7 +168,7 @@ const CampaignDetails:FC<ICampaignDetailsProps> = (props) => {
source={description}
className={"campaign-description"}
skipHtml={true}
linkTarget={(uri)=>"_blank"}
linkTarget={()=>"_blank"}
/>
</section>
} />
Expand All @@ -192,15 +192,31 @@ const CampaignDetails:FC<ICampaignDetailsProps> = (props) => {
} />
<Route path={`/maps`} render={()=>
<dl>
{maps.map(({name,description,destination}) =>
{maps.map(({name,description,destination},index) =>
<React.Fragment key={destination}>
<div className="media border rounded border-light p-1 mb-2">
<div className="media-body">
<h4>{name}</h4>
<p><strong>Description:</strong>{description}</p>
{description &&
<>
<p><strong>Description:</strong></p>
<ReactMarkdown
source={description}
className={"campaign-description"}
skipHtml={true}
linkTarget={()=>"_blank"}
/>
</>
}
</div>
<div className="media-right align-self-center">
<button className="btn btn-info">Launch</button>
<button
onClick={() => onPlayCampaignClick(campaign,index)}
className={"btn btn-info "+(isCampaignInstalled?"":"disabled")}
disabled={!isCampaignInstalled}
>
Launch
</button>
</div>
</div>
</React.Fragment>
Expand Down
1 change: 1 addition & 0 deletions src/components/ManifestEditorMapItem.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@ const ManifestEditorMapItem:FC<IManifestEditorMapItemProps> = (props) => {
name="description"
aria-describedby="runParamsHelp"
placeholder="Enter a description for the map"
rows={4}
/>
</div>
<div className="form-group row">
Expand Down
1 change: 1 addition & 0 deletions src/constants/ipcmessages.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ declare interface IPCMessages {
DOWNLOAD_CAMPAIGN_STATUS:string;
DOWNLOAD_CAMPAIGN_FINISH:string;
PLAY_CAMPAIGN:string;
PLAY_MAP:string;

}

Expand Down
1 change: 1 addition & 0 deletions src/constants/ipcmessages.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,6 @@ module.exports = {
DOWNLOAD_CAMPAIGN_STATUS: "downloadCampaignProgress",
DOWNLOAD_CAMPAIGN_FINISH: "downloadCampaignProgress",
PLAY_CAMPAIGN: "playCampaign",
PLAY_MAP: "playMap",

}
34 changes: 7 additions & 27 deletions src/containers/CampaignPane.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -29,34 +29,14 @@ class CampaignPane extends React.Component<ICampaignPaneProps, ICampaignPaneStat

constructor(props:ICampaignPaneProps){
super(props);
this.state = {
"campaigns": [],
"authors": null,
"selectedCampaign": null,
"selectedCampaignAuthor": null
};

}
handleCampaignItemClick = (campaign:ICampaign) => {
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) =>{
Expand All @@ -80,12 +60,12 @@ class CampaignPane extends React.Component<ICampaignPaneProps, ICampaignPaneStat
ipcRenderer.on(msg.DOWNLOAD_CAMPAIGN_FINISH, (event:any, arg:any) => {
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(){
Expand Down
25 changes: 5 additions & 20 deletions src/pages/Home.tsx
Original file line number Diff line number Diff line change
@@ -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';
Expand Down Expand Up @@ -28,19 +28,14 @@ class Home extends Component<any, IHomeState> {
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)}}
));
Expand All @@ -64,24 +59,14 @@ class Home extends Component<any, IHomeState> {

}

handleDownloadCampaignClick = (campaign: ICampaign) => {
console.log("Downloading " + campaign.id);
};

render() {
const {
selectedPane,
campaigns,
selectedCampaign,
selectedCampaignAuthor
} = this.state
const onDownloadCampaignClick = this.handleDownloadCampaignClick;

return (
<Router>
<>
<NavBar />
<main className="container-fluid w-100 h-100">
<Route path="/" exact component={CampaignPane} />
<Route path="/" exact render={()=><Redirect to="/campaign"/>} />
<Route path="/campaign" component={CampaignPane} />
<Route path="/mapmakers" component={MapMakerPane} />
<Route path="/settings" component={SettingsPane} />
Expand Down

0 comments on commit e47ece5

Please sign in to comment.