Merge branch 'main' of https://github.com/R74nCom/sandboxels
This commit is contained in:
commit
75e5309df9
79
mods/mars.js
79
mods/mars.js
|
|
@ -113,7 +113,7 @@ elements.mars_ironheart_ore = {
|
|||
elements.mars_ironheart = {
|
||||
color: ["#e8e8e8", "#bd1102"],
|
||||
behavior: [
|
||||
"XX|CR:radiation%3|XX",
|
||||
"XX|XX|XX",
|
||||
"XX|XX|XX",
|
||||
"XX|XX|XX",
|
||||
],
|
||||
|
|
@ -191,22 +191,6 @@ elements.depleted_ironheart = {
|
|||
"electric": { elem1: "smint", elem2: "null" },
|
||||
},
|
||||
}
|
||||
elements.feynmanium = {
|
||||
color: "#8C7656",
|
||||
behavior: [
|
||||
"XX|XX|XX|",
|
||||
"XX|XX|XX|",
|
||||
"M2|M1|M2|",
|
||||
],
|
||||
category: "mars",
|
||||
density: 1200,
|
||||
state: "solid",
|
||||
stateHigh: "molten_mars",
|
||||
tempHigh: 6000,
|
||||
reactions: {
|
||||
"electric": { elem1: "smint", elem2: "null" },
|
||||
},
|
||||
}
|
||||
elements.antigunk = {
|
||||
color: "#cecece",
|
||||
behavior: behaviors.DGAS,
|
||||
|
|
@ -391,8 +375,59 @@ elements.ironheart_core = {
|
|||
conduct: 1,
|
||||
extraInfo: "wha"
|
||||
}
|
||||
|
||||
// 2.10.20
|
||||
elements.mars_fossil = {
|
||||
color: ["#3d3d3d", "#707070", "#395034"],
|
||||
behavior: behaviors.WALL,
|
||||
category: "mars",
|
||||
state: "solid",
|
||||
tempHigh: 2500,
|
||||
hardness: 0.975,
|
||||
stateHigh: "molten_mars",
|
||||
tempLow: -170,
|
||||
stateLow: "mars_rock",
|
||||
extraInfo: "Fossils! From Mars! Simply just smash them to get some tiny creatures.",
|
||||
hardness: 0.4,
|
||||
breakInto: "mars_debris"
|
||||
}
|
||||
elements.ironheart_gas = {
|
||||
color: ["#500000ff", "#a7a7a7ff", "#a80000ff"],
|
||||
behavior: behaviors.GAS,
|
||||
category: "mars",
|
||||
state: "gas",
|
||||
tempLow: -100,
|
||||
stateLow: "liquid_ironheart_gas",
|
||||
extraInfo: "gasses"
|
||||
}
|
||||
elements.liquid_ironheart_gas = {
|
||||
color: ["#500000ff", "#a7a7a7ff", "#a80000ff"],
|
||||
behavior: behaviors.LIQUID,
|
||||
category: "mars",
|
||||
state: "liquid",
|
||||
temp: -150,
|
||||
extraInfo: "liquids"
|
||||
}
|
||||
elements.phing = {
|
||||
color: "#00c40aff",
|
||||
behavior: [
|
||||
"XX|XX|XX|",
|
||||
"XX|XX|XX",
|
||||
"XX|XX|XX",
|
||||
],
|
||||
category: "phings",
|
||||
state: "solid",
|
||||
tempHigh: "800",
|
||||
stateHigh: "dead_phing",
|
||||
breakInto: "dead_phing",
|
||||
extraInfo: "wha"
|
||||
}
|
||||
elements.dead_phing = {
|
||||
color: "#947e00ff",
|
||||
behavior: behaviors.POWDER,
|
||||
category: "phings",
|
||||
state: "solid",
|
||||
extraInfo: "DEAD! You KILLED THEM!"
|
||||
}
|
||||
// 2.11.20
|
||||
// most elements done :D
|
||||
// iron heart ore
|
||||
// iron heart
|
||||
|
|
@ -427,6 +462,12 @@ elements.ironheart_core = {
|
|||
// Red Gold is Solid
|
||||
// Feynmanium
|
||||
// make things have recaitons
|
||||
// its here!
|
||||
// remove feynmanium
|
||||
// ironheart is no longer radioactive
|
||||
// fossils!
|
||||
|
||||
|
||||
// Creditssss
|
||||
// Ghanisma - idea for 2.9.16
|
||||
|
||||
|
|
|
|||
103
mods/zoom.js
103
mods/zoom.js
|
|
@ -1,19 +1,17 @@
|
|||
// IIFE because paranoid
|
||||
(() => {
|
||||
const zoom_levels = [
|
||||
const zoom_levels = [
|
||||
0.5,
|
||||
1,
|
||||
2,
|
||||
3,
|
||||
6,
|
||||
12
|
||||
]
|
||||
window.zoom_data_div = null
|
||||
]
|
||||
window.zoom_data_div = null
|
||||
|
||||
window.zoom_level = 1
|
||||
window.zoom_panning = [0,0]
|
||||
window.zoom_level = 1
|
||||
window.zoom_panning = [0,0]
|
||||
|
||||
function handle_zoom(direction){
|
||||
function handle_zoom(direction){
|
||||
switch (direction){
|
||||
case "in":
|
||||
if (!(zoom_level+1 in zoom_levels)) { break; }
|
||||
|
|
@ -25,9 +23,9 @@
|
|||
break;
|
||||
}
|
||||
rescale()
|
||||
}
|
||||
}
|
||||
|
||||
function handle_pan(direction, speed){
|
||||
function handle_pan(direction, speed){
|
||||
switch (direction){
|
||||
case "right":
|
||||
zoom_panning[0] -= speed
|
||||
|
|
@ -43,9 +41,9 @@
|
|||
break;
|
||||
}
|
||||
rescale()
|
||||
}
|
||||
}
|
||||
|
||||
function gen_button(row, col, html, click, nopos, id){
|
||||
function gen_button(row, col, html, click, nopos, id){
|
||||
const elem = document.createElement("button")
|
||||
|
||||
|
||||
|
|
@ -70,16 +68,31 @@
|
|||
}
|
||||
|
||||
return elem
|
||||
}
|
||||
|
||||
function add_css(){
|
||||
const CSS = `
|
||||
#zm_data_div { margin-bottom: 10px; }
|
||||
#canvasDiv { overflow: hidden }
|
||||
|
||||
@media(pointer=coarse){
|
||||
#zm_floater_container#zm_floater_container {
|
||||
width: 40%;
|
||||
height: auto;
|
||||
}
|
||||
#zm_floater_container:has(#zm_collapse[data-collapsed="true"]){
|
||||
width: calc(40% / 3);
|
||||
}
|
||||
}
|
||||
|
||||
function add_css(){
|
||||
const FLOATER_CSS = `
|
||||
#zm_data_div {
|
||||
margin-bottom: 10px;
|
||||
@media(pointer:coarse) and (orientation:landscape){
|
||||
#zm_floater_container#zm_floater_container {
|
||||
width: auto;
|
||||
top: 5px;
|
||||
}
|
||||
#zm_floater_container:has(#zm_collapse[data-collapsed="true"]){
|
||||
width: calc(40% / 3);
|
||||
}
|
||||
|
||||
#canvasDiv {
|
||||
overflow: hidden
|
||||
}
|
||||
|
||||
#zm_floater_container {
|
||||
|
|
@ -88,12 +101,15 @@
|
|||
|
||||
right: 5px;
|
||||
bottom: 5px;
|
||||
height: 24%;
|
||||
height: 100px;
|
||||
aspect-ratio: 1;
|
||||
|
||||
max-width: 200px;
|
||||
max-height: 200px;
|
||||
|
||||
border: 2px solid white;
|
||||
background-color: black;
|
||||
font-size: 1.2em;
|
||||
font-size: 120%;
|
||||
|
||||
button { text-align: center; border: 0px solid white }
|
||||
|
||||
|
|
@ -103,16 +119,12 @@
|
|||
button:where([data-pos="br"]) { border-width: 2px 0px 0px 2px };
|
||||
}
|
||||
#zm_floater_container:has(#zm_collapse[data-collapsed="true"]) {
|
||||
height: calc(8% - 1px);
|
||||
|
||||
button:not(#zm_collapse) {
|
||||
display: none
|
||||
}
|
||||
}
|
||||
|
||||
.zm_corner {
|
||||
border: 2px solid white;
|
||||
}
|
||||
.zm_corner { border: 2px solid white; }
|
||||
|
||||
#zm_collapse {
|
||||
grid-row: 3;
|
||||
|
|
@ -126,12 +138,12 @@
|
|||
`
|
||||
|
||||
const style_div = document.createElement("style")
|
||||
style_div.innerHTML = FLOATER_CSS
|
||||
style_div.innerHTML = CSS
|
||||
|
||||
document.head.appendChild(style_div)
|
||||
}
|
||||
}
|
||||
|
||||
function add_zoom_floaters(){
|
||||
function add_zoom_floaters(){
|
||||
const container = document.createElement("div")
|
||||
container.id = "zm_floater_container"
|
||||
|
||||
|
|
@ -177,9 +189,9 @@
|
|||
|
||||
const canvas_div = document.getElementById("canvasDiv")
|
||||
canvas_div.appendChild(container)
|
||||
}
|
||||
}
|
||||
|
||||
function rescale(){
|
||||
function rescale(){
|
||||
log_info()
|
||||
|
||||
const scale = zoom_levels[zoom_level]
|
||||
|
|
@ -187,9 +199,9 @@
|
|||
const y = zoom_panning[1] * (pixelSize * scale)
|
||||
|
||||
gameCanvas.style.transform = `translate(${x}px,${y}px) scale(${scale})`
|
||||
}
|
||||
}
|
||||
|
||||
function log_info(){
|
||||
function log_info(){
|
||||
// Values are negated to make them more intuitive
|
||||
const x_pan = (-zoom_panning[0]).toString().padEnd(4)
|
||||
const y_pan = (-zoom_panning[1]).toString().padEnd(4)
|
||||
|
|
@ -199,9 +211,9 @@
|
|||
zoom_data_div.innerText = ""
|
||||
zoom_data_div.innerText += `Scale: ${zoom_levels[zoom_level]}x\n`
|
||||
zoom_data_div.innerText += `Pan : ${x_pan}, ${y_pan}`
|
||||
}
|
||||
}
|
||||
|
||||
function patch_keybinds(){
|
||||
function patch_keybinds(){
|
||||
// Be more granular at higher zoom levels
|
||||
const speed_a = () => zoom_level > 3 ? 5 : 10
|
||||
const speed_b = () => zoom_level > 3 ? 10 : 20
|
||||
|
|
@ -218,9 +230,9 @@
|
|||
keybinds["A"] = () => handle_pan("left", speed_b())
|
||||
keybinds["S"] = () => handle_pan("down", speed_b())
|
||||
keybinds["D"] = () => handle_pan("right", speed_b())
|
||||
}
|
||||
}
|
||||
|
||||
function patch_ui(){
|
||||
function patch_ui(){
|
||||
add_css()
|
||||
add_zoom_floaters()
|
||||
|
||||
|
|
@ -257,10 +269,10 @@
|
|||
</td>
|
||||
</tr>
|
||||
`)
|
||||
}
|
||||
}
|
||||
|
||||
// Redefine to give correct numbers when zoomed
|
||||
window.getMousePos = (canvas, evt) => {
|
||||
// Redefine to give correct numbers when zoomed
|
||||
window.getMousePos = (canvas, evt) => {
|
||||
if (evt.touches) {
|
||||
evt.preventDefault();
|
||||
evt = evt.touches[0];
|
||||
|
|
@ -275,15 +287,14 @@
|
|||
y = Math.floor((y / canvas.clientHeight) * (height+1));
|
||||
|
||||
return {x:x, y:y};
|
||||
}
|
||||
}
|
||||
|
||||
runAfterReset(() => {
|
||||
runAfterReset(() => {
|
||||
window.zoom_level = 1
|
||||
rescale()
|
||||
})
|
||||
})
|
||||
|
||||
runAfterLoad(() => {
|
||||
runAfterLoad(() => {
|
||||
patch_keybinds()
|
||||
patch_ui()
|
||||
})
|
||||
})()
|
||||
})
|
||||
|
|
|
|||
Loading…
Reference in New Issue