154 lines
3.8 KiB
JavaScript
154 lines
3.8 KiB
JavaScript
// elements.mud_brick = {
|
|
// color: "#8a6249",
|
|
// colorPattern: textures.BRICK,
|
|
// colorKey: {
|
|
// "l": "#986c51",
|
|
// "r": "#8a6249",
|
|
// "d": "#7f5943",
|
|
// "w": "#634933"},
|
|
// behavior: behaviors.WALL,
|
|
// category: "solids",
|
|
// state: "solid",
|
|
// tempHigh: 1200,
|
|
// stateHigh: "molten_dirt",
|
|
// hardness: 0.33,
|
|
// breakInto: "dirt"
|
|
// }
|
|
|
|
var materials = ["brick","concrete","wood","glass","steel"];
|
|
|
|
elements.tower = {
|
|
color: [],
|
|
behavior: [
|
|
"XX|XX|XX",
|
|
"XX|CH:"+materials.join("_tower,")+"_tower|XX",
|
|
"XX|XX|XX",
|
|
],
|
|
category: "spawners",
|
|
maxSize: 1,
|
|
cooldown: defaultCooldown,
|
|
}
|
|
|
|
materials.forEach((elem) => {
|
|
if (Array.isArray(elements[elem].color)) {
|
|
elements.tower.color.push(elements[elem].color[0]);
|
|
}
|
|
else {
|
|
elements.tower.color.push(elements[elem].color);
|
|
}
|
|
elements[elem+"_tower"] = {
|
|
color: elements[elem].color,
|
|
behavior: [
|
|
`XX|M2|XX`,
|
|
`XX|C2:${elem}_room|XX`,
|
|
`XX|M1|XX`,
|
|
],
|
|
maxSize: 1,
|
|
cooldown: defaultCooldown,
|
|
category: "spawners"
|
|
}
|
|
elements[elem+"_room"] = {
|
|
color: elements[elem].color,
|
|
behavior: [
|
|
`XX|XX|CR:${elem}_room,${elem}_room,${elem}_room,${elem}_room,tower_antenna,wood_roof%80|XX|XX`,
|
|
`XX|XX|XX|XX|XX`,
|
|
`CR:${elem}|CR:${elem}|CR:${elem}|CR:${elem}|CR:${elem}`,
|
|
`CR:glass|XX|XX|CR:human%25|CR:glass`,
|
|
`CR:glass|CR:human%25|DL|CR:human%25|CR:glass`,
|
|
`CR:${elem}|XX|XX|XX|CR:${elem}`,
|
|
`CR:${elem}|CR:${elem}|CR:${elem}|CR:${elem}|CR:${elem}`,
|
|
`XX|XX|XX|XX|XX`,
|
|
`XX|XX|XX|XX|XX`
|
|
],
|
|
maxSize: 1,
|
|
cooldown: defaultCooldown,
|
|
category: "spawners",
|
|
hidden: true
|
|
}
|
|
})
|
|
elements.tower.color = elements.tower.color.sort();
|
|
|
|
elements.tower_antenna = {
|
|
color: "#bababa",
|
|
behavior: [
|
|
"CR:steel%30",
|
|
"CR:steel",
|
|
"CR:steel",
|
|
"CR:steel",
|
|
"CH:steel",
|
|
"CR:steel",
|
|
"XX",
|
|
"XX",
|
|
"XX",
|
|
"XX",
|
|
],
|
|
maxSize: 1,
|
|
cooldown: defaultCooldown,
|
|
category: "spawners",
|
|
hidden: true
|
|
}
|
|
elements.wood_roof = {
|
|
color: "#965829",
|
|
behavior: [
|
|
"XX|XX|XX|XX|XX|XX|XX",
|
|
"XX|XX|XX|CR:wood|XX|XX|XX",
|
|
"XX|XX|CR:wood|CH:wood|CR:wood|XX|XX",
|
|
"XX|CR:wood|XX|XX|XX|CR:wood|XX",
|
|
"CR:wood|XX|XX|XX|XX|XX|CR:wood",
|
|
],
|
|
maxSize: 1,
|
|
cooldown: defaultCooldown,
|
|
category: "spawners",
|
|
hidden: true
|
|
}
|
|
|
|
|
|
|
|
worldgentypes.city = {
|
|
layers: [
|
|
[0.95, "grass"],
|
|
[0.50, "dirt"],
|
|
[0.05, "rock"],
|
|
[0, "basalt"],
|
|
],
|
|
decor: [ // [element, chance, distance from top]
|
|
["tower", 0.08],
|
|
// ["bird", 0.025, 10],
|
|
],
|
|
baseHeight: 0.25
|
|
}
|
|
|
|
|
|
currentBuildingElement = "wood";
|
|
|
|
function buildSelectHandler(r) {
|
|
if (!r) { return; }
|
|
e = r.replace(/ /g, "_");
|
|
es = mostSimilarElement(e);
|
|
if (es) {
|
|
currentBuildingElement = es;
|
|
logMessage("Element \"" + e + "\" selected");
|
|
}
|
|
else {
|
|
currentBuildingElement = "wood";
|
|
logMessage("Element \"" + e + "\" not found");
|
|
selectElement(null);
|
|
}
|
|
}
|
|
|
|
elements.slab = {
|
|
color: "#888888",
|
|
onSelect: () => {
|
|
promptInput("Which element should the slab be?", buildSelectHandler, "Select Material")
|
|
},
|
|
onPlace: (pixel) => {
|
|
pixel.mat = currentBuildingElement;
|
|
},
|
|
renderer: (pixel,ctx) => {
|
|
let color = elements[pixel.mat].color;
|
|
if (Array.isArray(color)) color = color[0];
|
|
if (color) { ctx.fillStyle = color; }
|
|
ctx.fillRect(canvasCoord(pixel.x), canvasCoord(pixel.y+0.5), pixelSize, pixelSize/2);
|
|
},
|
|
category: "solids"
|
|
} |