Files
2020-02-16 19:40:21 -08:00

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">&nwarr;</label>
</td>
<td>
<input type="radio" name="one_direction" id="dir-1" value="1"><label for="dir-1">&uarr;</label>
</td>
<td>
<input type="radio" name="one_direction" id="dir-5" value="5"><label for="dir-5">&nearr;</label>
</td>
</tr>
<tr>
<td>
<input type="radio" name="one_direction" id="dir-8" value="8"><label for="dir-8">&larr;</label>
</td>
<td>
&nbsp;
</td>
<td>
<input type="radio" name="one_direction" id="dir-4" value="4"><label for="dir-4">&rarr;</label>
</td>
</tr>
<tr>
<td>
<input type="radio" name="one_direction" id="dir-10" value="10"><label for="dir-10">&swarr;</label>
</td>
<td>
<input type="radio" name="one_direction" id="dir-2" value="2" checked="checked"><label for="dir-2">&darr;</label>
</td>
<td>
<input type="radio" name="one_direction" id="dir-6" value="6"><label for="dir-6">&searr;</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>