const { mainWindow, ipcRenderer, ipcMain, dialog } = require( 'electron' );
const r_fsys = require( 'fs' );
const version_str = '2.0.7';
var open_menu_name = '';
const flash_container = document.getElementById( 'flash_container' );
/*
* window_resize is used to resize
* the container element of flash content
* container to fit under the menu bar.
*/
function window_resize(){
flash_container.style.height = window.innerHeight - 35;
}
/*
* set_container_content function
* is used to set the flash container
* element's flash content
*/
function set_container_content( flash_url ){
if ( flash_url[flash_url.indexOf('.swf') + 4] === undefined ){
document.getElementById( 'flash_container' ).style.height = window.innerHeight - 35;
document.getElementById( 'flash_container' ).innerHTML = '';
}
else
{
alert( 'Error: That doesn\'t look like a swf link because it doesn\'t end in .swf' );
}
}
/*
* open_url is used to open file/url
*/
function open_url( runner_url ){
try {
if ( runner_url === undefined || runner_url === null || runner_url === '' )
throw new Error( 'Link must not be empty' );
if ( !runner_url.startsWith('http://') && !runner_url.startsWith('https://') && !runner_url.startsWith('file:///') )
throw new Error( 'Invalid link' );
if ( !runner_url.endsWith('.swf') )
throw new Error( 'Invalid swf file link or location' );
if ( runner_url.startsWith('file:///') ){
if ( !r_fsys.existsSync(runner_url.replace('file:///', '')) )
throw new Error( 'File doesn\'t exist' );
}
if ( runner_url[runner_url.indexOf('.swf') + 4] === undefined ){
set_container_content( runner_url );
if ( document.getElementById( 'file_opener' ).style.display === 'block' )
document.getElementById( 'file_opener' ).style.display = 'none';
if ( document.getElementById( 'file_opener_bg' ).style.display === 'block' );
document.getElementById( 'file_opener_bg' ).style.display = 'none';
if ( document.getElementById( 'game_selector' ).style.display === 'block' )
document.getElementById( 'game_selector' ).style.display = 'none';
if ( document.getElementById( 'games_list' ).style.display === 'block' )
document.getElementById( 'games_list' ).style.display = 'none';
}
else
{
alert( 'Error: that doesn\'t look like a swf link because it doesn\'t end in .swf' );
}
runner_url = undefined;
} catch( err_c ){
alert( 'Error:\n' + err_c );
}
}
/*
* open_modal opens the file/url opener dialog
*/
function open_modal(){
open_menu_name = 'url_opener';
document.getElementById( 'file_opener_bg' ).style.display = 'block';
document.getElementById( 'file_opener' ).style.display = 'block';
}
/*
* close_modal closes the file/url opener dialog
*/
function close_modal(){
open_menu_name = '';
document.getElementById( 'file_opener' ).style.display = 'none';
document.getElementById( 'file_opener_bg' ).style.display = 'none';
}
/*
* open_game_selector_menu opens the easy to use
* game selection menu
*/
function open_game_selector_menu(){
open_menu_name = 'game_selector';
document.getElementById( 'file_opener_bg' ).style.display = 'block';
document.getElementById( 'game_selector' ).style.display = 'block';
document.getElementById( 'games_list' ).style.display = 'block';
}
/*
* close_game_selector_menu closes the easy to use
* game selection menu
*/
function close_game_selector_menu(){
open_menu_name = '';
document.getElementById( 'file_opener_bg' ).style.display = 'none';
document.getElementById( 'game_selector' ).style.display = 'none';
document.getElementById( 'games_list' ).style.display = 'none';
}
/*
* create_games_list creates the easy to use
* list of games received from JSON file on server
*/
function create_games_list( parsed_json ){
var g_list = document.getElementById( 'games_list' );
g_list.innerHTML = '';
var game_index = null;
for ( game_index in parsed_json.games_menu )
if ( parsed_json.games_menu[game_index].game_name !== undefined && parsed_json.games_menu[game_index].game_name !== null && parsed_json.games_menu[game_index].game_name !== '' && typeof parsed_json.games_menu[game_index].game_name === 'string' && parsed_json.games_menu[game_index].game_swf !== undefined && parsed_json.games_menu[game_index].game_swf !== null && parsed_json.games_menu[game_index].game_swf !== '' && typeof parsed_json.games_menu[game_index].game_swf === 'string' )
g_list.innerHTML += '';
game_index = undefined;
g_list = undefined;
}
/*
* flashrunner_get_game_list gets the list of games
* from JSON file for the easy to use game selection menu
*/
function flashrunner_get_game_list(){
try {
if ( r_fsys.existsSync('./flashrunner_game_list.json') ){
var game_list_json = r_fsys.readFileSync( './flashrunner_game_list.json', {
encoding: 'utf8',
flag: 'r'
} );
var games_list_parsed = JSON.parse( game_list_json );
create_games_list( games_list_parsed );
games_list_parsed = undefined;
game_list_json = undefined;
}
else
{
document.getElementById( 'game_list' ).innerHTML = 'Error: could not find games list file';
}
} catch ( err_m ){
document.getElementById( 'game_list' ).innerHTML = 'Error loading games list';
}
}
/*
* flashrunner_about is the about dialog, simple
*/
function flashrunner_about(){
alert( 'FlashRunner by VoidNet\nVersion: ' + version_str + '\n\nFlash copyright:\n\u00A9 Adobe Systems Incorporated and its licensors. All rights reserved.' );
}
document.getElementById( 'menu_open' ).addEventListener( 'click', function(){
open_modal();
} );
document.getElementById( 'menu_about' ).addEventListener( 'click', function(){
flashrunner_about();
} );
document.getElementById( 'modal_run_btn' ).addEventListener( 'click', function(){
if ( document.getElementById('flash_file').value !== undefined && document.getElementById('flash_file').value !== null && document.getElementById('flash_file').value !== '' ){
if ( document.getElementById('flash_file').value.startsWith('http://') || document.getElementById('flash_file').value.startsWith('https://') )
open_url( document.getElementById('flash_file').value );
else
open_url( 'file:///' + document.getElementById('flash_file').value );
}
else
{
alert( 'Flash file URL or path can\'t be empty' );
}
} );
document.getElementById( 'menu_game_selector' ).addEventListener( 'click', function(){
open_game_selector_menu();
} );
document.getElementById( 'menu_steamgroup' ).addEventListener( 'click', function(){
ipcRenderer.send( 'asyncmsg', 'OPEN_URL https://steamcommunity.com/groups/VoidNet_' );
} );
window.addEventListener( 'resize', window_resize );
document.getElementById( 'menu_exit' ).addEventListener( 'click', function(){
ipcRenderer.send( 'asyncmsg', 'APP_SHUTDOWN' );
} );
document.getElementById( 'close_flash_opener' ).addEventListener( 'click', function(){
switch ( open_menu_name ){
case 'url_opener':
close_modal();
break;
case 'game_selector':
close_game_selector_menu();
break;
default:
break;
}
} );
document.addEventListener( 'contextmenu', function(ctx_event){
ctx_event.preventDefault();
} );
flashrunner_get_game_list();