mirror of
https://github.com/ppeccin/javatari.js.git
synced 2024-06-16 03:27:24 -04:00
NetPlay Dialog started
This commit is contained in:
parent
e1edf389ab
commit
643f7c7020
|
@ -65,14 +65,14 @@ module.exports = function (grunt) {
|
|||
"src/main/room/controls/GamepadConsoleControls.js",
|
||||
"src/main/room/controls/DOMTouchControls.js",
|
||||
"src/main/room/controls/DOMConsoleControls.js",
|
||||
"src/main/room/screen/ScreenGUI.es6.js",
|
||||
"src/main/room/screen/ScreenGUI.es5.js",
|
||||
"src/main/room/screen/Monitor.js",
|
||||
"src/main/room/screen/ConsolePanel.js",
|
||||
"src/main/room/screen/CanvasDisplay.js",
|
||||
"src/main/room/screen/dialogs/RecentROMsDialog.js",
|
||||
"src/main/room/screen/dialogs/SaveStateDialog.js",
|
||||
"src/main/room/screen/dialogs/QuickOptionsDialog.js",
|
||||
"src/main/room/screen/settings/SettingsGUI.es6.js",
|
||||
"src/main/room/screen/settings/SettingsGUI.es5.js",
|
||||
"src/main/room/screen/settings/Settings.js",
|
||||
"src/main/room/speaker/WebAudioSpeaker.js",
|
||||
"src/main/room/savestate/LocalStorageSaveStateMedia.js",
|
||||
|
|
|
@ -125,6 +125,9 @@ jt.DOMPeripheralControls = function(room) {
|
|||
case controls.SCREEN_CONSOLE_PANEL_TOGGLE:
|
||||
screen.toggleConsolePanel();
|
||||
break;
|
||||
case controls.SCREEN_OPEN_NETPLAY:
|
||||
screen.openQuickOptionsDialog();
|
||||
break;
|
||||
case controls.P1_CONTROLS_TOGGLE:
|
||||
consoleControls.toggleP1ControlsMode(); break;
|
||||
case controls.JOYSTICKS_TOGGLE_MODE:
|
||||
|
|
|
@ -30,6 +30,8 @@ jt.PeripheralControls = {
|
|||
|
||||
CARTRIDGE_LOAD_RECENT: 40,
|
||||
CARTRIDGE_LOAD_FILE: 41, CARTRIDGE_LOAD_URL: 42, CARTRIDGE_REMOVE: 43, CARTRIDGE_LOAD_DATA_FILE: 44, CARTRIDGE_SAVE_DATA_FILE: 45,
|
||||
AUTO_LOAD_FILE: 46, AUTO_LOAD_URL: 47
|
||||
AUTO_LOAD_FILE: 46, AUTO_LOAD_URL: 47,
|
||||
|
||||
SCREEN_OPEN_NETPLAY: 500
|
||||
|
||||
};
|
||||
|
|
|
@ -136,6 +136,12 @@ jt.CanvasDisplay = function(mainElement) {
|
|||
quickOtionsDialog.show();
|
||||
};
|
||||
|
||||
this.openNetPlayDialog = function() {
|
||||
closeAllOverlays();
|
||||
if (!netPlayDialog) netPlayDialog = new jt.NetPlayDialog(fsElementCenter, consoleControlsSocket, peripheralControls);
|
||||
netPlayDialog.show();
|
||||
};
|
||||
|
||||
this.openLoadFileDialog = function(altPower, secPort) {
|
||||
fileLoader.openFileChooserDialog(jt.FileLoader.OPEN_TYPE.AUTO, altPower, secPort, false);
|
||||
};
|
||||
|
@ -638,6 +644,8 @@ jt.CanvasDisplay = function(mainElement) {
|
|||
{ label: "Power", clickModif: 0, control: jt.PeripheralControls.MACHINE_POWER_TOGGLE },
|
||||
{ label: "Fry Console", control: jt.PeripheralControls.MACHINE_POWER_FRY },
|
||||
{ label: "", divider: true },
|
||||
{ label: "Net Play!", control: jt.PeripheralControls.SCREEN_OPEN_NETPLAY },
|
||||
{ label: "", divider: true },
|
||||
{ label: "Select Cartridge", control: jt.PeripheralControls.CARTRIDGE_LOAD_RECENT },
|
||||
{ label: "", divider: true },
|
||||
{ label: "Open File", clickModif: KEY_CTRL_MASK, control: jt.PeripheralControls.AUTO_LOAD_FILE, needsUIG: true },
|
||||
|
@ -1147,6 +1155,7 @@ jt.CanvasDisplay = function(mainElement) {
|
|||
hideBarMenu();
|
||||
if (saveStateDialog) saveStateDialog.hide();
|
||||
if (quickOtionsDialog) quickOtionsDialog.hide();
|
||||
if (netPlayDialog) netPlayDialog.hide();
|
||||
if (settingsDialog) settingsDialog.hide();
|
||||
if (recentROMsDialog) recentROMsDialog.hide();
|
||||
}
|
||||
|
@ -1333,6 +1342,7 @@ jt.CanvasDisplay = function(mainElement) {
|
|||
var saveStateDialog;
|
||||
var recentROMsDialog;
|
||||
var quickOtionsDialog;
|
||||
var netPlayDialog;
|
||||
|
||||
var fsElement, fsElementCenter;
|
||||
|
||||
|
@ -1396,7 +1406,7 @@ jt.CanvasDisplay = function(mainElement) {
|
|||
var FULLSCREEN_MODE = Javatari.SCREEN_FULLSCREEN_MODE;
|
||||
|
||||
var BAR_AUTO_HIDE = Javatari.SCREEN_CONTROL_BAR === 0;
|
||||
var BAR_MENU_MAX_ITEMS = 10;
|
||||
var BAR_MENU_MAX_ITEMS = 12;
|
||||
|
||||
var NARROW_WIDTH = 336;
|
||||
|
||||
|
|
116
src/main/room/screen/dialogs/NetPlayDialog.js
Normal file
116
src/main/room/screen/dialogs/NetPlayDialog.js
Normal file
|
@ -0,0 +1,116 @@
|
|||
// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.
|
||||
|
||||
jt.NetPlayDialog = function(mainElement, consoleControls, peripheralControls) {
|
||||
"use strict";
|
||||
|
||||
var self = this;
|
||||
|
||||
this.show = function () {
|
||||
if (!dialog) {
|
||||
create();
|
||||
return setTimeout(self.show, 0);
|
||||
}
|
||||
|
||||
refresh();
|
||||
visible = true;
|
||||
dialog.classList.add("jt-show");
|
||||
dialog.focus();
|
||||
|
||||
var availHeight = mainElement.clientHeight - jt.ScreenGUI.BAR_HEIGHT - 20; // bar - tolerance
|
||||
var height = dialog.clientHeight;
|
||||
var scale = height < availHeight ? 1 : availHeight / height;
|
||||
dialog.style.transform = "translateY(-" + ((jt.ScreenGUI.BAR_HEIGHT / 2) | 0) + "px) scale(" + scale.toFixed(4) + ")";
|
||||
};
|
||||
|
||||
this.hide = function() {
|
||||
if (!visible) return;
|
||||
Javatari.userPreferences.save();
|
||||
dialog.classList.remove("jt-show");
|
||||
visible = false;
|
||||
Javatari.room.screen.focus();
|
||||
};
|
||||
|
||||
function refresh() {
|
||||
for (var i = 0; i < items.length; ++i) {
|
||||
var item = items[i];
|
||||
var report = item.peripheral ? peripheralControls.getControlReport(item.control) : consoleControls.getControlReport(item.control);
|
||||
item.value = report.label;
|
||||
item.selected = report.active;
|
||||
controlsItems[i].innerHTML = item.value;
|
||||
controlsItems[i].classList.toggle("jt-selected", !!item.selected);
|
||||
}
|
||||
}
|
||||
|
||||
function create() {
|
||||
dialog = document.createElement("div");
|
||||
dialog.id = "jt-quick-options";
|
||||
dialog.tabIndex = -1;
|
||||
|
||||
var cc = jt.ConsoleControls;
|
||||
var pc = jt.PeripheralControls;
|
||||
|
||||
items = [
|
||||
{ label: "Paddles Mode", control: pc.PADDLES_TOGGLE_MODE, peripheral: true },
|
||||
{ label: "No Collisions", control: cc.NO_COLLISIONS },
|
||||
{ label: "💾 V-Synch", control: cc.VSYNCH },
|
||||
{ label: "💾 CRT Filter", control: pc.SCREEN_CRT_FILTER, peripheral: true },
|
||||
{ label: "💾 Audio Buffer", control: pc.SPEAKER_BUFFER_TOGGLE, peripheral: true },
|
||||
{ label: "💾 Big Directionals", control: pc.TOUCH_TOGGLE_DIR_BIG, peripheral: true },
|
||||
{ label: "💾 TurboFire Speed", control: pc.TURBO_FIRE_TOGGLE, peripheral: true },
|
||||
{ label: "💾 Haptic Feedback", control: pc.HAPTIC_FEEDBACK_TOGGLE_MODE, peripheral: true }
|
||||
];
|
||||
|
||||
// Define list
|
||||
var list = document.createElement('ul');
|
||||
list.classList.add("jt-quick-options-list");
|
||||
|
||||
for (var i = 0; i < items.length; ++i) {
|
||||
var li = document.createElement("li");
|
||||
var label = document.createElement("div");
|
||||
label.innerHTML = items[i].label;
|
||||
li.appendChild(label);
|
||||
var control = document.createElement("div");
|
||||
control.classList.add("jt-control");
|
||||
control.jtControlItem = items[i];
|
||||
li.appendChild(control);
|
||||
list.appendChild(li);
|
||||
controlsItems.push(control);
|
||||
}
|
||||
|
||||
dialog.appendChild(list);
|
||||
|
||||
setupEvents();
|
||||
|
||||
mainElement.appendChild(dialog);
|
||||
}
|
||||
|
||||
function setupEvents() {
|
||||
// Do not close with taps or clicks inside, select with tap or mousedown
|
||||
jt.Util.onTapOrMouseDownWithBlock(dialog, function(e) {
|
||||
if (e.target.jtControlItem) {
|
||||
jt.DOMConsoleControls.hapticFeedbackOnTouch(e);
|
||||
var item = e.target.jtControlItem;
|
||||
if (item.peripheral) peripheralControls.controlActivated(item.control, false, false);
|
||||
else consoleControls.controlStateChanged(item.control, true);
|
||||
refresh();
|
||||
} else
|
||||
dialog.focus();
|
||||
});
|
||||
|
||||
// Trap keys, respond to some
|
||||
dialog.addEventListener("keydown", function(e) {
|
||||
// Exit
|
||||
if (EXIT_KEYS.indexOf(e.keyCode) >= 0) self.hide();
|
||||
return jt.Util.blockEvent(e);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
var visible = false;
|
||||
var dialog, list;
|
||||
var items, controlsItems = [];
|
||||
|
||||
var k = jt.DOMKeys;
|
||||
var EXIT_KEYS = [ k.VK_ESCAPE.c, k.VK_ENTER.c, k.VK_SPACE.c ];
|
||||
|
||||
};
|
|
@ -105,6 +105,7 @@
|
|||
<script src="../src/main/room/screen/dialogs/RecentROMsDialog.js"></script>
|
||||
<script src="../src/main/room/screen/dialogs/SaveStateDialog.js"></script>
|
||||
<script src="../src/main/room/screen/dialogs/QuickOptionsDialog.js"></script>
|
||||
<script src="../src/main/room/screen/dialogs/NetPlayDialog.js"></script>
|
||||
<script src="../src/main/room/screen/settings/SettingsGUI.js"></script>
|
||||
<script src="../src/main/room/screen/settings/Settings.js"></script>
|
||||
<script src="../src/main/room/speaker/WebAudioSpeaker.js"></script>
|
||||
|
|
Loading…
Reference in a new issue