Add a list of available cores for each platform to the platform map (#130)
This commit is contained in:
@@ -156,7 +156,7 @@ namespace gaseous_server.Classes.Metadata
|
|||||||
IGDBSlug = platform.Slug,
|
IGDBSlug = platform.Slug,
|
||||||
AlternateNames = new List<string>{ platform.AlternativeName }
|
AlternateNames = new List<string>{ platform.AlternativeName }
|
||||||
};
|
};
|
||||||
Models.PlatformMapping.WritePlatformMap(item, false);
|
Models.PlatformMapping.WritePlatformMap(item, false, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -110,32 +110,32 @@ namespace gaseous_server.Controllers
|
|||||||
return Ok(new { count = files.Count, size });
|
return Ok(new { count = files.Count, size });
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost]
|
// [HttpPost]
|
||||||
[Route("{PlatformId}")]
|
// [Route("{PlatformId}")]
|
||||||
[ProducesResponseType(typeof(PlatformMapping.PlatformMapItem), StatusCodes.Status200OK)]
|
// [ProducesResponseType(typeof(PlatformMapping.PlatformMapItem), StatusCodes.Status200OK)]
|
||||||
[ProducesResponseType(StatusCodes.Status404NotFound)]
|
// [ProducesResponseType(StatusCodes.Status404NotFound)]
|
||||||
[ProducesResponseType(StatusCodes.Status409Conflict)]
|
// [ProducesResponseType(StatusCodes.Status409Conflict)]
|
||||||
public ActionResult NewPlatformMap(long PlatformId, PlatformMapping.PlatformMapItem Map)
|
// public ActionResult NewPlatformMap(long PlatformId, PlatformMapping.PlatformMapItem Map)
|
||||||
{
|
// {
|
||||||
try
|
// try
|
||||||
{
|
// {
|
||||||
PlatformMapping.PlatformMapItem platformMapItem = PlatformMapping.GetPlatformMap(PlatformId);
|
// PlatformMapping.PlatformMapItem platformMapItem = PlatformMapping.GetPlatformMap(PlatformId);
|
||||||
|
|
||||||
if (platformMapItem != null)
|
// if (platformMapItem != null)
|
||||||
{
|
// {
|
||||||
return Conflict();
|
// return Conflict();
|
||||||
}
|
// }
|
||||||
else
|
// else
|
||||||
{
|
// {
|
||||||
PlatformMapping.WritePlatformMap(Map, false);
|
// PlatformMapping.WritePlatformMap(Map, false, false);
|
||||||
return Ok(PlatformMapping.GetPlatformMap(PlatformId));
|
// return Ok(PlatformMapping.GetPlatformMap(PlatformId));
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
catch
|
// catch
|
||||||
{
|
// {
|
||||||
return NotFound();
|
// return NotFound();
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
[HttpPatch]
|
[HttpPatch]
|
||||||
[Route("{PlatformId}")]
|
[Route("{PlatformId}")]
|
||||||
@@ -149,7 +149,7 @@ namespace gaseous_server.Controllers
|
|||||||
|
|
||||||
if (platformMapItem != null)
|
if (platformMapItem != null)
|
||||||
{
|
{
|
||||||
PlatformMapping.WritePlatformMap(Map, true);
|
PlatformMapping.WritePlatformMap(Map, true, false);
|
||||||
return Ok(PlatformMapping.GetPlatformMap(PlatformId));
|
return Ok(PlatformMapping.GetPlatformMap(PlatformId));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@@ -25,7 +25,10 @@ namespace gaseous_server.Models
|
|||||||
{
|
{
|
||||||
string rawJson = reader.ReadToEnd();
|
string rawJson = reader.ReadToEnd();
|
||||||
List<PlatformMapItem> platforms = new List<PlatformMapItem>();
|
List<PlatformMapItem> platforms = new List<PlatformMapItem>();
|
||||||
platforms = Newtonsoft.Json.JsonConvert.DeserializeObject<List<PlatformMapItem>>(rawJson);
|
Newtonsoft.Json.JsonSerializerSettings jsonSerializerSettings = new JsonSerializerSettings{
|
||||||
|
MaxDepth = 64
|
||||||
|
};
|
||||||
|
platforms = Newtonsoft.Json.JsonConvert.DeserializeObject<List<PlatformMapItem>>(rawJson, jsonSerializerSettings);
|
||||||
|
|
||||||
foreach (PlatformMapItem mapItem in platforms)
|
foreach (PlatformMapItem mapItem in platforms)
|
||||||
{
|
{
|
||||||
@@ -41,7 +44,7 @@ namespace gaseous_server.Models
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
WritePlatformMap(mapItem, true);
|
WritePlatformMap(mapItem, true, true);
|
||||||
Logging.Log(Logging.LogType.Information, "Platform Map", "Overwriting " + mapItem.IGDBName + " with default values.");
|
Logging.Log(Logging.LogType.Information, "Platform Map", "Overwriting " + mapItem.IGDBName + " with default values.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -49,7 +52,7 @@ namespace gaseous_server.Models
|
|||||||
{
|
{
|
||||||
Logging.Log(Logging.LogType.Information, "Platform Map", "Importing " + mapItem.IGDBName + " from predefined data.");
|
Logging.Log(Logging.LogType.Information, "Platform Map", "Importing " + mapItem.IGDBName + " from predefined data.");
|
||||||
// doesn't exist - add it
|
// doesn't exist - add it
|
||||||
WritePlatformMap(mapItem, false);
|
WritePlatformMap(mapItem, false, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -73,13 +76,13 @@ namespace gaseous_server.Models
|
|||||||
|
|
||||||
// still here? we must have found the item we're looking for! overwrite it
|
// still here? we must have found the item we're looking for! overwrite it
|
||||||
Logging.Log(Logging.LogType.Information, "Platform Map", "Replacing " + mapItem.IGDBName + " from external JSON file.");
|
Logging.Log(Logging.LogType.Information, "Platform Map", "Replacing " + mapItem.IGDBName + " from external JSON file.");
|
||||||
WritePlatformMap(mapItem, true);
|
WritePlatformMap(mapItem, true, true);
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
// we caught a not found error, insert a new record
|
// we caught a not found error, insert a new record
|
||||||
Logging.Log(Logging.LogType.Information, "Platform Map", "Importing " + mapItem.IGDBName + " from external JSON file.");
|
Logging.Log(Logging.LogType.Information, "Platform Map", "Importing " + mapItem.IGDBName + " from external JSON file.");
|
||||||
WritePlatformMap(mapItem, false);
|
WritePlatformMap(mapItem, false, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -126,7 +129,7 @@ namespace gaseous_server.Models
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void WritePlatformMap(PlatformMapItem item, bool Update)
|
public static void WritePlatformMap(PlatformMapItem item, bool Update, bool AllowAvailableEmulatorOverwrite)
|
||||||
{
|
{
|
||||||
Database db = new gaseous_tools.Database(Database.databaseType.MySql, Config.DatabaseConfiguration.ConnectionString);
|
Database db = new gaseous_tools.Database(Database.databaseType.MySql, Config.DatabaseConfiguration.ConnectionString);
|
||||||
string sql = "";
|
string sql = "";
|
||||||
@@ -134,12 +137,19 @@ namespace gaseous_server.Models
|
|||||||
if (Update == false)
|
if (Update == false)
|
||||||
{
|
{
|
||||||
// insert
|
// insert
|
||||||
sql = "INSERT INTO PlatformMap (Id, RetroPieDirectoryName, WebEmulator_Type, WebEmulator_Core) VALUES (@Id, @RetroPieDirectoryName, @WebEmulator_Type, @WebEmulator_Core)";
|
sql = "INSERT INTO PlatformMap (Id, RetroPieDirectoryName, WebEmulator_Type, WebEmulator_Core, AvailableWebEmulators) VALUES (@Id, @RetroPieDirectoryName, @WebEmulator_Type, @WebEmulator_Core, @AvailableWebEmulators)";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// update
|
// update
|
||||||
sql = "UPDATE PlatformMap SET RetroPieDirectoryName=@RetroPieDirectoryName, WebEmulator_Type=@WebEmulator_Type, WebEmulator_Core=@WebEmulator_Core WHERE Id = @Id";
|
if (AllowAvailableEmulatorOverwrite == true)
|
||||||
|
{
|
||||||
|
sql = "UPDATE PlatformMap SET RetroPieDirectoryName=@RetroPieDirectoryName, WebEmulator_Type=@WebEmulator_Type, WebEmulator_Core=@WebEmulator_Core, AvailableWebEmulators=@AvailableWebEmulators WHERE Id = @Id";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sql = "UPDATE PlatformMap SET RetroPieDirectoryName=@RetroPieDirectoryName, WebEmulator_Type=@WebEmulator_Type, WebEmulator_Core=@WebEmulator_Core WHERE Id = @Id";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
dbDict.Add("Id", item.IGDBId);
|
dbDict.Add("Id", item.IGDBId);
|
||||||
dbDict.Add("RetroPieDirectoryName", item.RetroPieDirectoryName);
|
dbDict.Add("RetroPieDirectoryName", item.RetroPieDirectoryName);
|
||||||
@@ -147,11 +157,13 @@ namespace gaseous_server.Models
|
|||||||
{
|
{
|
||||||
dbDict.Add("WebEmulator_Type", item.WebEmulator.Type);
|
dbDict.Add("WebEmulator_Type", item.WebEmulator.Type);
|
||||||
dbDict.Add("WebEmulator_Core", item.WebEmulator.Core);
|
dbDict.Add("WebEmulator_Core", item.WebEmulator.Core);
|
||||||
|
dbDict.Add("AvailableWebEmulators", Newtonsoft.Json.JsonConvert.SerializeObject(item.WebEmulator.AvailableWebEmulators));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
dbDict.Add("WebEmulator_Type", "");
|
dbDict.Add("WebEmulator_Type", "");
|
||||||
dbDict.Add("WebEmulator_Core", "");
|
dbDict.Add("WebEmulator_Core", "");
|
||||||
|
dbDict.Add("AvailableWebEmulators", "");
|
||||||
}
|
}
|
||||||
db.ExecuteCMD(sql, dbDict);
|
db.ExecuteCMD(sql, dbDict);
|
||||||
|
|
||||||
@@ -304,7 +316,8 @@ namespace gaseous_server.Models
|
|||||||
mapItem.RetroPieDirectoryName = (string)Common.ReturnValueIfNull(row["RetroPieDirectoryName"], "");
|
mapItem.RetroPieDirectoryName = (string)Common.ReturnValueIfNull(row["RetroPieDirectoryName"], "");
|
||||||
mapItem.WebEmulator = new PlatformMapItem.WebEmulatorItem{
|
mapItem.WebEmulator = new PlatformMapItem.WebEmulatorItem{
|
||||||
Type = (string)Common.ReturnValueIfNull(row["WebEmulator_Type"], ""),
|
Type = (string)Common.ReturnValueIfNull(row["WebEmulator_Type"], ""),
|
||||||
Core = (string)Common.ReturnValueIfNull(row["WebEmulator_Core"], "")
|
Core = (string)Common.ReturnValueIfNull(row["WebEmulator_Core"], ""),
|
||||||
|
AvailableWebEmulators = Newtonsoft.Json.JsonConvert.DeserializeObject<List<PlatformMapItem.WebEmulatorItem.AvailableWebEmulatorItem>>((string)Common.ReturnValueIfNull(row["AvailableWebEmulators"], "[]"))
|
||||||
};
|
};
|
||||||
mapItem.Bios = bioss;
|
mapItem.Bios = bioss;
|
||||||
|
|
||||||
@@ -378,6 +391,21 @@ namespace gaseous_server.Models
|
|||||||
{
|
{
|
||||||
public string Type { get; set; }
|
public string Type { get; set; }
|
||||||
public string Core { get; set; }
|
public string Core { get; set; }
|
||||||
|
|
||||||
|
public List<AvailableWebEmulatorItem> AvailableWebEmulators { get; set; } = new List<AvailableWebEmulatorItem>();
|
||||||
|
|
||||||
|
public class AvailableWebEmulatorItem
|
||||||
|
{
|
||||||
|
public string EmulatorType { get; set; }
|
||||||
|
public List<AvailableWebEmulatorCoreItem> AvailableWebEmulatorCores { get; set; } = new List<AvailableWebEmulatorCoreItem>();
|
||||||
|
|
||||||
|
public class AvailableWebEmulatorCoreItem
|
||||||
|
{
|
||||||
|
public string Core { get; set; }
|
||||||
|
public string? AlternateCoreName { get; set; } = "";
|
||||||
|
public bool Default { get; set; } = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<EmulatorBiosItem> Bios { get; set; }
|
public List<EmulatorBiosItem> Bios { get; set; }
|
||||||
|
@@ -9,6 +9,7 @@ using Microsoft.AspNetCore.Mvc;
|
|||||||
using Microsoft.AspNetCore.Server.Kestrel.Core;
|
using Microsoft.AspNetCore.Server.Kestrel.Core;
|
||||||
using Microsoft.OpenApi.Models;
|
using Microsoft.OpenApi.Models;
|
||||||
|
|
||||||
|
Logging.WriteToDiskOnly = true;
|
||||||
Logging.Log(Logging.LogType.Information, "Startup", "Starting Gaseous Server " + Assembly.GetExecutingAssembly().GetName().Version);
|
Logging.Log(Logging.LogType.Information, "Startup", "Starting Gaseous Server " + Assembly.GetExecutingAssembly().GetName().Version);
|
||||||
|
|
||||||
// set up db
|
// set up db
|
||||||
@@ -188,5 +189,7 @@ ProcessQueue.QueueItems.Add(new ProcessQueue.QueueItem(
|
|||||||
})
|
})
|
||||||
);
|
);
|
||||||
|
|
||||||
|
Logging.WriteToDiskOnly = false;
|
||||||
|
|
||||||
// start the app
|
// start the app
|
||||||
app.Run();
|
app.Run();
|
||||||
|
File diff suppressed because one or more lines are too long
@@ -59,8 +59,7 @@
|
|||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<select id="mapping_edit_webemulatorengine" style="width: 100%;">
|
<select id="mapping_edit_webemulatorengine" style="width: 100%;">
|
||||||
<option value="">-</option>
|
|
||||||
<option value="EmulatorJS">EmulatorJS</option>
|
|
||||||
</select>
|
</select>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -68,8 +67,10 @@
|
|||||||
<td style="width: 25%;">
|
<td style="width: 25%;">
|
||||||
<h4>Core</h4>
|
<h4>Core</h4>
|
||||||
</td>
|
</td>
|
||||||
<td style="text-align: right;">
|
<td>
|
||||||
<input id="mapping_edit_webemulatorcore" type="text" style="width: 98%;"/>
|
<select id="mapping_edit_webemulatorcore" style="width: 100%;">
|
||||||
|
|
||||||
|
</select>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr name="mapping_edit_webemulator">
|
<tr name="mapping_edit_webemulator">
|
||||||
@@ -99,6 +100,10 @@
|
|||||||
modalContent[0].classList.add('collections_modal');
|
modalContent[0].classList.add('collections_modal');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var availableWebEmulators = [];
|
||||||
|
|
||||||
|
DisplayWebEmulatorContent(false);
|
||||||
|
|
||||||
ajaxCall(
|
ajaxCall(
|
||||||
'/api/v1/PlatformMaps/' + modalVariables,
|
'/api/v1/PlatformMaps/' + modalVariables,
|
||||||
'GET',
|
'GET',
|
||||||
@@ -133,18 +138,47 @@
|
|||||||
document.getElementById('mapping_edit_igdbslug').value = result.igdbSlug;
|
document.getElementById('mapping_edit_igdbslug').value = result.igdbSlug;
|
||||||
document.getElementById('mapping_edit_retropie').value = result.retroPieDirectoryName;
|
document.getElementById('mapping_edit_retropie').value = result.retroPieDirectoryName;
|
||||||
|
|
||||||
|
// set up web emulator drop downs
|
||||||
$('#mapping_edit_webemulatorengine').select2();
|
$('#mapping_edit_webemulatorengine').select2();
|
||||||
if (result.webEmulator.type.length > 0) {
|
$('#mapping_edit_webemulatorcore').select2();
|
||||||
document.getElementById('mapping_edit_enablewebemulator').checked = true;
|
|
||||||
$('#mapping_edit_webemulatorengine').val(result.webEmulator.type);
|
|
||||||
DisplayWebEmulatorHelp(result.webEmulator.type);
|
|
||||||
$('#mapping_edit_webemulatorengine').trigger('change');
|
|
||||||
document.getElementById('mapping_edit_webemulatorcore').value = result.webEmulator.core;
|
|
||||||
|
|
||||||
DisplayWebEmulatorContent(true);
|
// start populating drop downs
|
||||||
|
if (result.webEmulator) {
|
||||||
|
if (result.webEmulator.availableWebEmulators.length > 0) {
|
||||||
|
availableWebEmulators = result.webEmulator.availableWebEmulators;
|
||||||
|
|
||||||
|
var offOption = new Option("-", "", false, false);
|
||||||
|
$('#mapping_edit_webemulatorengine').append(offOption).trigger('change');
|
||||||
|
for (var e = 0; e < result.webEmulator.availableWebEmulators.length; e++) {
|
||||||
|
var newOption = new Option(result.webEmulator.availableWebEmulators[e].emulatorType, result.webEmulator.availableWebEmulators[e].emulatorType, false, false);
|
||||||
|
$('#mapping_edit_webemulatorengine').append(newOption).trigger('change');
|
||||||
|
}
|
||||||
|
$('#mapping_edit_webemulatorengine').val(result.webEmulator.type);
|
||||||
|
$('#mapping_edit_webemulatorengine').trigger('change');
|
||||||
|
|
||||||
|
// select cores
|
||||||
|
RenderWebEmulatorCores(result.webEmulator.core);
|
||||||
|
|
||||||
|
if (result.webEmulator.type.length > 0) {
|
||||||
|
document.getElementById('mapping_edit_enablewebemulator').checked = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
DisplayWebEmulatorHelp(result.webEmulator.type);
|
||||||
|
|
||||||
|
$('#mapping_edit_webemulatorengine').on('change', function(e) {
|
||||||
|
RenderWebEmulatorCores();
|
||||||
|
});
|
||||||
|
if (result.webEmulator.type.length > 0) {
|
||||||
|
DisplayWebEmulatorContent(true);
|
||||||
|
} else {
|
||||||
|
DisplayWebEmulatorContent(false);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// no emulators available
|
||||||
|
DisplayWebEmulatorContent(false);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
document.getElementById('mapping_edit_enablewebemulator').checked = false;
|
// no emulators available
|
||||||
|
|
||||||
DisplayWebEmulatorContent(false);
|
DisplayWebEmulatorContent(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -173,6 +207,55 @@
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
function RenderWebEmulatorCores(preSelectCore) {
|
||||||
|
var selectedEngine = document.getElementById('mapping_edit_webemulatorengine').value;
|
||||||
|
console.log("Engine: " + selectedEngine);
|
||||||
|
console.log("Preselect: " + preSelectCore);
|
||||||
|
console.log(JSON.stringify(availableWebEmulators));
|
||||||
|
$('#mapping_edit_webemulatorcore').empty().trigger("change");
|
||||||
|
|
||||||
|
// get cores for currently selected emulator
|
||||||
|
if (availableWebEmulators && (selectedEngine != undefined && selectedEngine != "")) {
|
||||||
|
if (availableWebEmulators.length > 0) {
|
||||||
|
var emuFound = false;
|
||||||
|
for (var e = 0; e < availableWebEmulators.length; e++) {
|
||||||
|
if (availableWebEmulators[e].emulatorType == selectedEngine) {
|
||||||
|
emuFound = true;
|
||||||
|
for (var c = 0; c < availableWebEmulators[e].availableWebEmulatorCores.length; c++) {
|
||||||
|
var coreName = availableWebEmulators[e].availableWebEmulatorCores[c].core;
|
||||||
|
if (availableWebEmulators[e].availableWebEmulatorCores[c].alternateCoreName) {
|
||||||
|
coreName += " (Maps to core: " + availableWebEmulators[e].availableWebEmulatorCores[c].alternateCoreName + ")";
|
||||||
|
}
|
||||||
|
if (availableWebEmulators[e].availableWebEmulatorCores[c].default == true) {
|
||||||
|
coreName += " (Default)";
|
||||||
|
}
|
||||||
|
console.log(coreName);
|
||||||
|
|
||||||
|
var newOption;
|
||||||
|
if (availableWebEmulators[e].availableWebEmulatorCores[c].core == preSelectCore) {
|
||||||
|
newOption = new Option(coreName, availableWebEmulators[e].availableWebEmulatorCores[c].core, true, true);
|
||||||
|
} else {
|
||||||
|
newOption = new Option(coreName, availableWebEmulators[e].availableWebEmulatorCores[c].core, false, false);
|
||||||
|
}
|
||||||
|
$('#mapping_edit_webemulatorcore').append(newOption).trigger('change');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (emuFound == false) {
|
||||||
|
var newOption = new Option("-", "", true, true);
|
||||||
|
$('#mapping_edit_webemulatorcore').append(newOption).trigger('change');
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
var newOption = new Option("-", "", true, true);
|
||||||
|
$('#mapping_edit_webemulatorcore').append(newOption).trigger('change');
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
var newOption = new Option("-", "", true, true);
|
||||||
|
$('#mapping_edit_webemulatorcore').append(newOption).trigger('change');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function AddTokensFromList(selectObj, tagList) {
|
function AddTokensFromList(selectObj, tagList) {
|
||||||
for (var i = 0; i < tagList.length; i++) {
|
for (var i = 0; i < tagList.length; i++) {
|
||||||
var data = {
|
var data = {
|
||||||
@@ -291,6 +374,7 @@
|
|||||||
});
|
});
|
||||||
|
|
||||||
function DisplayWebEmulatorContent(showContent) {
|
function DisplayWebEmulatorContent(showContent) {
|
||||||
|
console.log(showContent);
|
||||||
var webEmulatorRows = document.getElementsByName('mapping_edit_webemulator');
|
var webEmulatorRows = document.getElementsByName('mapping_edit_webemulator');
|
||||||
|
|
||||||
for (var i = 0; i < webEmulatorRows.length; i++) {
|
for (var i = 0; i < webEmulatorRows.length; i++) {
|
||||||
|
@@ -375,7 +375,11 @@
|
|||||||
|
|
||||||
var launchButton = '';
|
var launchButton = '';
|
||||||
if (result[i].emulator) {
|
if (result[i].emulator) {
|
||||||
launchButton = '<a href="/index.html?page=emulator&engine=' + result[i].emulator.type + '&core=' + result[i].emulator.core + '&platformid=' + result[i].platform.id + '&gameid=' + gameId + '&rompath=' + encodeURIComponent('/api/v1/Games/' + gameId + '/roms/' + result[i].id + '/' + encodeURIComponent(result[i].name)) + '" class="romstart">Launch</a>';
|
if (result[i].emulator.type) {
|
||||||
|
if (result[i].emulator.type.length > 0) {
|
||||||
|
launchButton = '<a href="/index.html?page=emulator&engine=' + result[i].emulator.type + '&core=' + result[i].emulator.core + '&platformid=' + result[i].platform.id + '&gameid=' + gameId + '&rompath=' + encodeURIComponent('/api/v1/Games/' + gameId + '/roms/' + result[i].id + '/' + encodeURIComponent(result[i].name)) + '" class="romstart">Launch</a>';
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var newRow = [
|
var newRow = [
|
||||||
|
2
gaseous-tools/Database/MySQL/gaseous-1003.sql
Normal file
2
gaseous-tools/Database/MySQL/gaseous-1003.sql
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
ALTER TABLE `PlatformMap`
|
||||||
|
ADD COLUMN `AvailableWebEmulators` JSON NULL;
|
@@ -8,6 +8,8 @@ namespace gaseous_tools
|
|||||||
{
|
{
|
||||||
public class Logging
|
public class Logging
|
||||||
{
|
{
|
||||||
|
public static bool WriteToDiskOnly { get; set; } = false;
|
||||||
|
|
||||||
static public void Log(LogType EventType, string ServerProcess, string Message, Exception? ExceptionValue = null, bool LogToDiskOnly = false)
|
static public void Log(LogType EventType, string ServerProcess, string Message, Exception? ExceptionValue = null, bool LogToDiskOnly = false)
|
||||||
{
|
{
|
||||||
LogItem logItem = new LogItem
|
LogItem logItem = new LogItem
|
||||||
@@ -61,6 +63,11 @@ namespace gaseous_tools
|
|||||||
Console.WriteLine(TraceOutput);
|
Console.WriteLine(TraceOutput);
|
||||||
Console.ResetColor();
|
Console.ResetColor();
|
||||||
|
|
||||||
|
if (WriteToDiskOnly == true)
|
||||||
|
{
|
||||||
|
LogToDiskOnly = true;
|
||||||
|
}
|
||||||
|
|
||||||
if (LogToDiskOnly == false)
|
if (LogToDiskOnly == false)
|
||||||
{
|
{
|
||||||
Database db = new gaseous_tools.Database(Database.databaseType.MySql, Config.DatabaseConfiguration.ConnectionString);
|
Database db = new gaseous_tools.Database(Database.databaseType.MySql, Config.DatabaseConfiguration.ConnectionString);
|
||||||
|
@@ -18,6 +18,7 @@
|
|||||||
<None Remove="Database\MySQL\gaseous-1000.sql" />
|
<None Remove="Database\MySQL\gaseous-1000.sql" />
|
||||||
<None Remove="Database\MySQL\gaseous-1001.sql" />
|
<None Remove="Database\MySQL\gaseous-1001.sql" />
|
||||||
<None Remove="Database\MySQL\gaseous-1002.sql" />
|
<None Remove="Database\MySQL\gaseous-1002.sql" />
|
||||||
|
<None Remove="Database\MySQL\gaseous-1003.sql" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Folder Include="Database\" />
|
<Folder Include="Database\" />
|
||||||
@@ -27,5 +28,6 @@
|
|||||||
<EmbeddedResource Include="Database\MySQL\gaseous-1000.sql" />
|
<EmbeddedResource Include="Database\MySQL\gaseous-1000.sql" />
|
||||||
<EmbeddedResource Include="Database\MySQL\gaseous-1001.sql" />
|
<EmbeddedResource Include="Database\MySQL\gaseous-1001.sql" />
|
||||||
<EmbeddedResource Include="Database\MySQL\gaseous-1002.sql" />
|
<EmbeddedResource Include="Database\MySQL\gaseous-1002.sql" />
|
||||||
|
<EmbeddedResource Include="Database\MySQL\gaseous-1003.sql" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
||||||
|
Reference in New Issue
Block a user