Skip to content

Commit

Permalink
2.3.5
Browse files Browse the repository at this point in the history
- Added localization code for possible translations down the road

- Added a jump list option that launches CS:GO

- Now stops audio when game exits
  • Loading branch information
CorySanin authored Feb 26, 2019
1 parent 1390bc9 commit 9a7a99a
Show file tree
Hide file tree
Showing 14 changed files with 436 additions and 362 deletions.
10 changes: 2 additions & 8 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,24 +3,18 @@ node_js: "node"
matrix:
include:
- os: linux
env: snap=false
- os: linux
env: snap=true
- os: osx
notifications:
email: false
install:
- rm package-lock.json
- npm install
script:
- node insertVersion.js
- rm insertVersion.js
- node prebuild.js
- rm prebuild.js
- if [ $TRAVIS_OS_NAME == "linux" ]; then
if [ $snap == "true" ]; then
npm run distSnap;
else
npm run distDeb;
fi
else
npm run distMac;
npm run distWin;
Expand Down
5 changes: 3 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
# Music Kitten for CS:GO
[![Music Kitten for CS:GO](https://raw.githubusercontent.com/CorySanin/Kitten-for-CSGO/master/assets/readme-header.png "Music Kitten for CS:GO")](https://musickitten.net)

[![Travis CI Build Status](https://api.travis-ci.org/CorySanin/Kitten-for-CSGO.svg?branch=master)](https://travis-ci.org/CorySanin/Kitten-for-CSGO)
[![node.js dependencies](https://david-dm.org/CorySanin/Kitten-for-CSGO.svg)](https://david-dm.org/CorySanin/Kitten-for-CSGO)
[![node.js devDependencies](https://david-dm.org/CorySanin/Kitten-for-CSGO/dev-status.svg)](https://david-dm.org/CorySanin/Kitten-for-CSGO?type=dev)
Expand All @@ -10,7 +11,7 @@ tracks when CS:GO gives it certain cues. Essentially, this allows you to
create and use your own music kits.

## Getting Started
Grab the latest "stable" release
Download the latest stable release
[here](https://www.musickitten.net/download/).

To run Music Kitten from source, you'll need node. If you've never
Expand Down
56 changes: 48 additions & 8 deletions app.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
const server = require('./server.js')
const Player = require('./player.js').player
const i18n = require('./locales/index.js')
const saveConfig = require('./gamestateIntegration.js').saveConfig
const ipc = require('electron').ipcRenderer
const shell = require('electron').shell
Expand All @@ -8,6 +9,7 @@ const download = require('download')
const decompress = require('decompress')
const path = require('path')
const os = require('os')
const getElementById = document.getElementById
const doNothing = function(){
}

Expand All @@ -21,11 +23,13 @@ let settings = {
discordrichpresence: false
}
let htEntities = {}
let translatableText = {}
let state = {
muteVol: 0
}
let player = new Player()
let expanded = false
let _

function toggleExpanded(){
if(expanded){
Expand Down Expand Up @@ -156,7 +160,7 @@ function dropHandler(e) {
)
}
else{
ipc.send('dialog', 'A directory with that name already exists in your music kit folder', 'Error')
ipc.send('dialog', _('dialog.anotherdirexists'), 'Error')
}
}
}
Expand Down Expand Up @@ -281,8 +285,8 @@ function selectKit(){

function noKits(){
ipc.send('yes-no',
'No kits were found in that directory. Would you like to download the sample kit?',
'No kits found',
_('dialog.sample'),
_('dialog.nokitsfound'),
'no-kits-response'
)
}
Expand Down Expand Up @@ -361,9 +365,8 @@ function loadSettingsIntoDom(){

function tryLoadSettings(){
if(state.audioDir == null){
let msg = 'You must select a directory to store everything in. '
msg += 'This is also where Kitten looks for music kits.'
ipc.send('dialog', msg, 'Welcome!', 'welcome-message-done')
let msg = _('dialog.choosedir')
ipc.send('dialog', msg, _('dialog.welcome'), 'welcome-message-done')
}
else{
try{
Expand Down Expand Up @@ -422,6 +425,32 @@ function getHtEntities(){
//unzip-feature
htEntities.addKitsOverlay = document.getElementById('dragDropOverlay')

let toggles = document.getElementsByClassName('settingstoggle')
for(let i = 0; i < toggles.length; i++){
translatableText[toggles[i].value + 'toggle'] = document.getElementById(toggles[i].value + 'label')
}
translatableText.mute = [htEntities.muteBtn]
translatableText.volume = [document.getElementById('volumeLabel')]
translatableText.port = [document.getElementById('portLabel')]
translatableText.musickit = [document.getElementById('kitLabel')]
translatableText.previewkit = [htEntities.previewBtn]
translatableText.refreshkits = [htEntities.refreshKitsBtn]
translatableText.changedir = [htEntities.dirChange]
translatableText.settings = [htEntities.settingsBtn, document.getElementById('settingsTitle')]
translatableText.save = [htEntities.saveBtn]
translatableText.menu = [htEntities.preview.menu]
translatableText.freezetime = [htEntities.preview.freezetime]
translatableText.freezetime1 = [htEntities.preview.freezetime1]
translatableText.freezetime2 = [htEntities.preview.freezetime2]
translatableText.freezetime3 = [htEntities.preview.freezetime3]
translatableText.live = [htEntities.preview.live]
translatableText.planted = [htEntities.preview.planted]
translatableText.mvp = [htEntities.preview.mvp]
translatableText.win = [htEntities.preview.win]
translatableText.lose = [htEntities.preview.lose]
translatableText.stop = [htEntities.preview.stop]
translatableText.dropkithere = [document.getElementById('overlayText')]


setEventHandlers()
server.richpresence.setDiscordToggle(htEntities.discordrp)
Expand All @@ -431,6 +460,8 @@ function init(){
console.log('Music Kitten for CS:GO\nVersion [$VERSION$]\nBy Cory Sanin')
getHtEntities()

ipc.send('lang')

state.audioDir = localStorage.getItem('audioDir')
server.changeCallback(doCommand)

Expand All @@ -439,6 +470,15 @@ function init(){

window.onload = init

ipc.on('lang', function(event, lang){
_ = i18n.translate(lang)
for(let key in translatableText){
for(let i = 0; i < translatableText[key].length; i++){
translatableText[key][i].innerHTML = _('ui.' + key)
}
}
})

ipc.on('show-kitten-dir', function(){
if(isDirectory(state.audioDir)){
shell.openItem(state.audioDir)
Expand All @@ -453,8 +493,8 @@ ipc.on('selected-directory', function(event, path){
tryLoadSettings()
}
else if(state.audioDir == null){
let msg = 'A configuration directory must be chosen.'
ipc.send('dialog', msg, 'Hey!', 'welcome-message-done')
let msg = _('dialog.mustchoosedir')
ipc.send('dialog', msg, _('dialog.hey'), 'welcome-message-done')
}
})

Expand Down
Binary file added assets/readme-header.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 4 additions & 0 deletions gamestateIntegration.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ const Registry = require('winreg')
const fs = require('fs-extra')
const path = require('path')
const os = require('os')
const ipc = require('electron').ipcRenderer

const REG = 'SteamPath'
const WINSTEAMLIB = path.join('steamapps','libraryfolders.vdf')
Expand Down Expand Up @@ -30,6 +31,9 @@ function saveConfig(config){
})
getCSGOPath(function(pth){
fs.writeFile(path.join(pth, GSIFILENAME), cfg)
if(os.platform() === 'win32'){
ipc.send('csgoicon', path.resolve(pth, '..', '..', 'csgo.exe'))
}
})
}

Expand Down
53 changes: 27 additions & 26 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -17,47 +17,48 @@
<h1 id="h1" class="center top-margin">Music Kitten</h1>
<div class="relative">
<img id="coverPic" width="150px" height="150px" />
<button id="muteBtn">Mute</button>
<button id="muteBtn">mute</button>
</div>
<div class="grid">
<label for="volSlider">Volume: </label>
<label for="volSlider" id="volumeLabel">volume</label>
<input type="range" id="volSlider" min="0" max="1" step=".01" value=".5"/>
<label for="portNum">Port: </label><input id="portNum" type="number" value="8793"/>
<label for="kit">Music Kit: </label><select id="kit"></select>
<label for="portNum" id="portLabel">port</label><input id="portNum" type="number" value="8793"/>
<label for="kit" id="kitLabel">musickit</label><select id="kit"></select>
</div>
<div class="fill">
<button id="previewKit">Preview Kit</button>
<button id="refreshKitsBtn">Refresh Kits</button>
<button id="dirChange">Change Main Directory</button>
<button id="settingsBtn">Settings</button>
<button id="saveBtn">Save</button>
<button id="previewKit">previewkit</button>
<button id="refreshKitsBtn">refreshkits</button>
<button id="dirChange">changedir</button>
<button id="settingsBtn">settings</button>
<button id="saveBtn">save</button>
</div>
</div>
<div id="preview" class="none">
<div class="fill">
<button id="menuPreview" value="menu" title="mainmenu">Menu</button>
<button id="freezetimePreview" value="freezetime" title="startround (random)">Freezetime</button>
<button id="freezetime1Preview" value="1" title="startround_01">Freezetime 1</button>
<button id="freezetime2Preview" value="2" title="startround_02">Freezetime 2</button>
<button id="freezetime3Preview" value="3" title="startround_03">Freezetime 3</button>
<button id="livePreview" value="live" title="startaction">Live</button>
<button id="plantedPreview" value="planted" title="bombplanted -> bombtenseccount">Planted</button>
<button id="mvpPreview" value="mvp" title="roundmvpanthem_01">MVP</button>
<button id="winPreview" value="win" title="wonround">Win</button>
<button id="losePreview" value="lose" title="lostround">Lose</button>
<button id="stopPreview" value="😺">Stop</button>
<button id="menuPreview" value="menu" title="mainmenu">menu</button>
<button id="freezetimePreview" value="freezetime" title="startround (random)">freezetime</button>
<button id="freezetime1Preview" value="1" title="startround_01">freezetime1</button>
<button id="freezetime2Preview" value="2" title="startround_02">freezetime2</button>
<button id="freezetime3Preview" value="3" title="startround_03">freezetime3</button>
<button id="livePreview" value="live" title="startaction">live</button>
<button id="plantedPreview" value="planted" title="bombplanted -> bombtenseccount">planted</button>
<button id="mvpPreview" value="mvp" title="roundmvpanthem_01">mvp</button>
<button id="winPreview" value="win" title="wonround">win</button>
<button id="losePreview" value="lose" title="lostround">lose</button>
<button id="stopPreview" value="😺">stop</button>
</div>
</div>
<div id="extrasettings" class="none">
<label><input class="settingstoggle" type="checkbox" value="mainmenu"/> Main Menu Audio</label><br/>
<label><input class="settingstoggle" type="checkbox" value="startround"/> Start Round Audio</label><br/>
<label><input class="settingstoggle" type="checkbox" value="bombplanted"/> Bomb Planted Audio</label><br/>
<label><input class="settingstoggle" type="checkbox" value="mvp"/> Round Over Audio</label><br/>
<label><input class="settingstoggle" type="checkbox" value="discordrichpresence" id="discordrichpresence"/> Discord Rich Presence</label>
<h1 id="settingsTitle">settings</h1>
<label><input class="settingstoggle" type="checkbox" value="mainmenu"/> <span id="mainmenulabel">mainmenutoggle</span></span></label><br/>
<label><input class="settingstoggle" type="checkbox" value="startround"/> <span id="startroundlabel">startroundtoggle</span></label><br/>
<label><input class="settingstoggle" type="checkbox" value="bombplanted"/> <span id="bombplantedlabel">bombplantedtoggle</span></label><br/>
<label><input class="settingstoggle" type="checkbox" value="mvp"/> <span id="mvplabel">mvptoggle</span></label><br/>
<label><input class="settingstoggle" type="checkbox" value="discordrichpresence" id="discordrichpresence"/> <span id="discordrichpresencelabel">discordrichpresencetoggle</span></label>
</div>
<div id="dragDropOverlay" class="none">
<div id="overlayText" class="center">
Drop Music Kits here to add to Music Kitten
dropkithere
</div>
</div>
</body>
Expand Down
47 changes: 47 additions & 0 deletions locales/en-US/translation.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
{
"dialog":{
"yes": "Yes",
"no": "No!",
"ok": "OK",
"hey": "Hey!",
"welcome": "Welcome!",
"nokitsfound": "No kits found",
"choosedir": "You must select a directory to store everything in. This is also where Kitten looks for music kits.",
"sample": "No kits were found in that directory. Would you like to download the sample kit?",
"mustchoosedir": "A configuration directory must be chosen.",
"anotherdirexists": "A directory with that name already exists in your music kit folder"
},
"ui":{
"mute": "Mute",
"volume": "Volume:",
"port": "Port:",
"musickit": "Music Kit:",
"previewkit": "Preview Kit",
"refreshkits": "Refresh Kits",
"changedir": "Change Main Directory",
"settings": "Settings",
"save": "Save",
"menu": "Menu",
"freezetime": "Freezetime",
"freezetime1": "Freezetime 1",
"freezetime2": "Freezetime 2",
"freezetime3": "Freezetime 3",
"live": "Live",
"planted": "Planted",
"mvp": "MVP",
"win": "Win",
"lose": "Lose",
"stop": "Stop",
"dropkithere": "Drop Music Kits here to add to Music Kitten",
"mainmenutoggle": "Main Menu Audio",
"startroundtoggle": "Start Round Audio",
"bombplantedtoggle": "Bomb Planted Audio",
"mvptoggle": "Round Over Audio",
"discordrichpresencetoggle": "Discord Rich Presence"
},
"misc":{
"launchgame": "Launch CS:GO",
"openkittendir": "Open Kitten Folder",
"devtools": "Developer Tools"
}
}
35 changes: 35 additions & 0 deletions locales/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
const app = require('electron').app
const i18next = require('i18next')
const fs = require('fs-extra')
const path = require('path')
const langPath = __dirname
const fallbackLng = 'en-US'
const i18nextSyncFileSystemBackend = require('i18next-sync-fs-backend')

let langfiles = fs.readdirSync(langPath)
let lngs = langfiles.filter(function(filename){
return fs.lstatSync(path.join(__dirname, filename)).isDirectory()
})

exports.translate = function(locale){
if(!lngs.includes(locale)){
locale = locale.split('-')[0]
if(!lngs.includes(locale)){
locale = fallbackLng
}
}

i18next.use(i18nextSyncFileSystemBackend)
.init({
lng:locale,
fallbackLng,
lngs,
backend: {
loadPath: path.join(langPath,'{{lng}}','translation.json'),
},
initImmediate: false
})
return function(key){
return i18next.t(key)
}
}
Loading

0 comments on commit 9a7a99a

Please sign in to comment.