mirror of
https://github.com/goonstation/goonstation-2020.git
synced 2026-07-22 20:42:20 +01:00
179 lines
5.8 KiB
HTML
179 lines
5.8 KiB
HTML
<!doctype html>
|
|
<html>
|
|
<head>
|
|
<title>Create Object</title>
|
|
<meta http-equiv="x-ua-compatible" content="IE=edge">
|
|
<link rel="stylesheet" type="text/css" href="{{resource("css/style.css")}}">
|
|
<style type="text/css">
|
|
* { box-sizing: border-box; }
|
|
#dir { border: none; border-collapse: collapse; }
|
|
#dir td { border: none; text-align: center; }
|
|
|
|
#dir input { display: none; }
|
|
#dir input + label { background: #eed; color: black; border: 1px solid #dda; width: 1.4em; text-align: center; vertical-align: middle; display: block; font-size: 130%; }
|
|
#dir input:checked + label { background: #fe7; border: 1px solid #a94; }
|
|
#createobj .leftfloater {
|
|
float: left;
|
|
margin: .25em .5em;
|
|
}
|
|
input[type=number] { width: 4em; text-align: right; }
|
|
input[type=radio] { vertical-align: middle; }
|
|
</style>
|
|
</head>
|
|
<body id="createobj">
|
|
<form name="spawner" action="byond://?src=/* ref src */" method="get">
|
|
<input type="hidden" name="src" value="/* ref src */">
|
|
<input type="hidden" name="action" value="object_list">
|
|
|
|
Filter object types:
|
|
<br>
|
|
<input type="text" name="filter" id="filter" value="" onkeyup="updateSearch()" onchange="updateSearch()" onkeydown="submitFirst(event)" placeholder="arm/left" style="display: block; width: 100%;">
|
|
|
|
<div id="selector_hs">
|
|
<select name="type" id="object_list" multiple size="20" style="width: 100%; display: block;">
|
|
</select>
|
|
</div>
|
|
|
|
<div class="leftfloater">
|
|
<table id="dir">
|
|
<tr>
|
|
<td>
|
|
<input type="radio" name="one_direction" id="dir-9" value="9"><label for="dir-9">↖</label>
|
|
</td>
|
|
<td>
|
|
<input type="radio" name="one_direction" id="dir-1" value="1"><label for="dir-1">↑</label>
|
|
</td>
|
|
<td>
|
|
<input type="radio" name="one_direction" id="dir-5" value="5"><label for="dir-5">↗</label>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<input type="radio" name="one_direction" id="dir-8" value="8"><label for="dir-8">←</label>
|
|
</td>
|
|
<td>
|
|
|
|
</td>
|
|
<td>
|
|
<input type="radio" name="one_direction" id="dir-4" value="4"><label for="dir-4">→</label>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<input type="radio" name="one_direction" id="dir-10" value="10"><label for="dir-10">↙</label>
|
|
</td>
|
|
<td>
|
|
<input type="radio" name="one_direction" id="dir-2" value="2" checked="checked"><label for="dir-2">↓</label>
|
|
</td>
|
|
<td>
|
|
<input type="radio" name="one_direction" id="dir-6" value="6"><label for="dir-6">↘</label>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
|
|
<div class="leftfloater" style="font-family: Consolas, monospace;">
|
|
X <input type="number" value="0" id="coords-x" onchange="updateCoords()">
|
|
<br>Y <input type="number" value="0" id="coords-y" onchange="updateCoords()">
|
|
<br>Z <input type="number" value="0" id="coords-z" onchange="updateCoords()">
|
|
</div>
|
|
|
|
<div class="leftfloater">
|
|
Coordinates are:<br>
|
|
<label><input type="radio" name="offset_type" value="absolute"> Absolute</label><br>
|
|
<label><input type="radio" name="offset_type" value="relative" checked="checked"> Relative</label>
|
|
</div>
|
|
|
|
<div style="float: right; margin: 0.5em 1em; text-align: right;">
|
|
Number to spawn: <input type="number" name="object_count" min="1" step="1" value="1"><br>
|
|
<input type="submit" value="Spawn">
|
|
</div>
|
|
<input type="hidden" id="offset" name="offset" value="0,0,0">
|
|
|
|
</form>
|
|
|
|
<script>
|
|
|
|
var old_search = "";
|
|
var object_list = document.spawner.object_list;
|
|
var object_list_container = document.getElementById('object_list');
|
|
var object_paths = null /* object types */;
|
|
|
|
var objects = object_paths == null ? new Array() : object_paths.split(";");
|
|
|
|
document.spawner.filter.focus();
|
|
populateList(objects);
|
|
|
|
function populateList(from_list)
|
|
{
|
|
var newOpts = '';
|
|
var i;
|
|
for (i in from_list)
|
|
{
|
|
newOpts += '<option value="' + from_list[i] + '">'
|
|
+ from_list[i] + '</option>';
|
|
}
|
|
//object_list_container.innerHTML = '<select name="type" id="object_list" multiple size="20">' +
|
|
//newOpts + '</select>';
|
|
object_list_container.innerHTML = newOpts;
|
|
}
|
|
|
|
function updateSearch()
|
|
{
|
|
if (old_search == document.spawner.filter.value)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
old_search = document.spawner.filter.value;
|
|
|
|
|
|
var filtered = new Array();
|
|
var i;
|
|
for (i in objects)
|
|
{
|
|
if(objects[i].search(old_search) < 0)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
filtered.push(objects[i]);
|
|
}
|
|
|
|
populateList(filtered);
|
|
|
|
if (object_list.options.length)
|
|
object_list.options[0].selected = 'true';
|
|
|
|
return true;
|
|
}
|
|
|
|
function submitFirst(event)
|
|
{
|
|
if (event.keyCode == 13 || event.which == 13)
|
|
{
|
|
if (updateSearch())
|
|
{
|
|
if (event.stopPropagation) event.stopPropagation();
|
|
else event.cancelBubble = true;
|
|
|
|
if (event.preventDefault) event.preventDefault();
|
|
else event.returnValue = false;
|
|
}
|
|
}
|
|
}
|
|
|
|
document.spawner.filter.addEventListener("input", updateSearch, false);
|
|
|
|
function updateCoords() {
|
|
var x = document.getElementById("coords-x").value;
|
|
var y = document.getElementById("coords-y").value;
|
|
var z = document.getElementById("coords-z").value;
|
|
document.getElementById("offset").value = x + "," + y + "," + z;
|
|
}
|
|
|
|
</script>
|
|
</body>
|
|
|
|
</html>
|