Further pre-release adjustments
@ -1,96 +0,0 @@
|
||||
// Converts the atlas description to a JSON file
|
||||
|
||||
String.prototype.replaceAll = function (search, replacement) {
|
||||
var target = this;
|
||||
return target.split(search).join(replacement);
|
||||
};
|
||||
|
||||
const fs = require("fs");
|
||||
const path = require("path");
|
||||
|
||||
const folder = path.join(__dirname, "res_built", "atlas");
|
||||
const files = fs.readdirSync(folder);
|
||||
|
||||
const metadata = [];
|
||||
|
||||
files.forEach(filename => {
|
||||
if (filename.endsWith(".atlas")) {
|
||||
// Read content
|
||||
|
||||
const content = fs.readFileSync(path.join(folder, filename), "ascii");
|
||||
|
||||
const lines = content.replaceAll("\r", "").replaceAll("\t", "").split("\n");
|
||||
|
||||
const readLine = () => lines.splice(0, 1)[0];
|
||||
const readValue = () => readLine().replaceAll(" ", "").split(":")[1];
|
||||
const readVector = () =>
|
||||
readValue()
|
||||
.split(",")
|
||||
.map(d => parseInt(d, 10));
|
||||
|
||||
let maxAtlas = 100;
|
||||
|
||||
atlasLoop: while (maxAtlas-- > 0 && lines.length >= 7) {
|
||||
const result = {
|
||||
entries: [],
|
||||
};
|
||||
|
||||
// Extract header
|
||||
const header_fileStart = readLine();
|
||||
const header_fileName = readLine();
|
||||
const header_size = readVector();
|
||||
const header_format = readLine();
|
||||
const header_filter = readLine();
|
||||
const header_repeat = readLine();
|
||||
const baseAtlasName = header_fileName.replace(".png", "");
|
||||
|
||||
// Store size
|
||||
result.size = header_size;
|
||||
|
||||
lineLoop: while (lines.length >= 7) {
|
||||
const entryResult = {};
|
||||
|
||||
const nextLine = lines[0];
|
||||
if (nextLine.length === 0) {
|
||||
break;
|
||||
}
|
||||
|
||||
const entry_fileName = readLine() + ".png";
|
||||
|
||||
const entry_rotate = readValue();
|
||||
const entry_xy = readVector();
|
||||
const entry_size = readVector();
|
||||
const entry_orig = readVector();
|
||||
const entry_offset = readVector();
|
||||
const entry_index = readValue();
|
||||
|
||||
entryResult.filename = entry_fileName;
|
||||
entryResult.xy = entry_xy;
|
||||
entryResult.size = entry_size;
|
||||
// entryResult.offset = entry_offset;
|
||||
|
||||
entryResult.origSize = entry_orig;
|
||||
|
||||
let offset = [0, 0];
|
||||
|
||||
// GDX Atlas packer uses 1 - y coordinates. This sucks, and we have to convert it
|
||||
offset[0] = entry_offset[0];
|
||||
offset[1] = entry_orig[1] - entry_offset[1] - entry_size[1];
|
||||
|
||||
entryResult.offset = offset;
|
||||
|
||||
result.entries.push(entryResult);
|
||||
}
|
||||
|
||||
console.log("[Atlas]", "'" + baseAtlasName + "'", "has", result.entries.length, "entries");
|
||||
// fs.writeFileSync(path.join(folder, baseAtlasName + ".gen.json"), JSON.stringify(result));
|
||||
|
||||
metadata.push({
|
||||
filename: baseAtlasName + ".png",
|
||||
entries: result,
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
fs.writeFileSync(path.join(folder, "meta.gen.json"), JSON.stringify(metadata, null, 4));
|
BIN
res/ui/building_tutorials/painter-mirrored.png
Normal file
After Width: | Height: | Size: 44 KiB |
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 165 KiB |
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 45 KiB |
Before Width: | Height: | Size: 1.4 MiB After Width: | Height: | Size: 1.3 MiB |
Before Width: | Height: | Size: 286 KiB After Width: | Height: | Size: 278 KiB |
Before Width: | Height: | Size: 705 KiB After Width: | Height: | Size: 700 KiB |
@ -257,13 +257,47 @@
|
||||
<key type="filename">sprites/belt/built/right_7.png</key>
|
||||
<key type="filename">sprites/belt/built/right_8.png</key>
|
||||
<key type="filename">sprites/belt/built/right_9.png</key>
|
||||
<key type="filename">sprites/blueprints/analyzer.png</key>
|
||||
<key type="filename">sprites/blueprints/balancer-merger-inverse.png</key>
|
||||
<key type="filename">sprites/blueprints/balancer-merger.png</key>
|
||||
<key type="filename">sprites/blueprints/balancer-splitter-inverse.png</key>
|
||||
<key type="filename">sprites/blueprints/balancer-splitter.png</key>
|
||||
<key type="filename">sprites/blueprints/belt_left.png</key>
|
||||
<key type="filename">sprites/blueprints/belt_right.png</key>
|
||||
<key type="filename">sprites/blueprints/belt_top.png</key>
|
||||
<key type="filename">sprites/blueprints/comparator.png</key>
|
||||
<key type="filename">sprites/blueprints/constant_signal.png</key>
|
||||
<key type="filename">sprites/blueprints/display.png</key>
|
||||
<key type="filename">sprites/blueprints/lever.png</key>
|
||||
<key type="filename">sprites/blueprints/logic_gate-not.png</key>
|
||||
<key type="filename">sprites/blueprints/logic_gate-or.png</key>
|
||||
<key type="filename">sprites/blueprints/logic_gate-xor.png</key>
|
||||
<key type="filename">sprites/blueprints/logic_gate.png</key>
|
||||
<key type="filename">sprites/blueprints/miner-chainable.png</key>
|
||||
<key type="filename">sprites/blueprints/miner.png</key>
|
||||
<key type="filename">sprites/blueprints/reader.png</key>
|
||||
<key type="filename">sprites/blueprints/rotater-ccw.png</key>
|
||||
<key type="filename">sprites/blueprints/rotater-rotate180.png</key>
|
||||
<key type="filename">sprites/blueprints/rotater.png</key>
|
||||
<key type="filename">sprites/blueprints/transistor-mirrored.png</key>
|
||||
<key type="filename">sprites/blueprints/transistor.png</key>
|
||||
<key type="filename">sprites/blueprints/trash.png</key>
|
||||
<key type="filename">sprites/blueprints/underground_belt_entry-tier2.png</key>
|
||||
<key type="filename">sprites/blueprints/underground_belt_entry.png</key>
|
||||
<key type="filename">sprites/blueprints/underground_belt_exit-tier2.png</key>
|
||||
<key type="filename">sprites/blueprints/underground_belt_exit.png</key>
|
||||
<key type="filename">sprites/blueprints/virtual_processor-painter.png</key>
|
||||
<key type="filename">sprites/blueprints/virtual_processor-rotater.png</key>
|
||||
<key type="filename">sprites/blueprints/virtual_processor-stacker.png</key>
|
||||
<key type="filename">sprites/blueprints/virtual_processor-unstacker.png</key>
|
||||
<key type="filename">sprites/blueprints/virtual_processor.png</key>
|
||||
<key type="filename">sprites/blueprints/wire_tunnel.png</key>
|
||||
<key type="filename">sprites/buildings/analyzer.png</key>
|
||||
<key type="filename">sprites/buildings/balancer-merger-inverse.png</key>
|
||||
<key type="filename">sprites/buildings/balancer-merger.png</key>
|
||||
<key type="filename">sprites/buildings/balancer-splitter-inverse.png</key>
|
||||
<key type="filename">sprites/buildings/balancer-splitter.png</key>
|
||||
<key type="filename">sprites/buildings/comparator.png</key>
|
||||
<key type="filename">sprites/buildings/constant_signal.png</key>
|
||||
<key type="filename">sprites/buildings/display.png</key>
|
||||
<key type="filename">sprites/buildings/lever.png</key>
|
||||
@ -281,10 +315,8 @@
|
||||
<key type="filename">sprites/buildings/underground_belt_entry.png</key>
|
||||
<key type="filename">sprites/buildings/underground_belt_exit-tier2.png</key>
|
||||
<key type="filename">sprites/buildings/underground_belt_exit.png</key>
|
||||
<key type="filename">sprites/buildings/virtual_processor-analyzer.png</key>
|
||||
<key type="filename">sprites/buildings/virtual_processor-painter.png</key>
|
||||
<key type="filename">sprites/buildings/virtual_processor-rotater.png</key>
|
||||
<key type="filename">sprites/buildings/virtual_processor-shapecompare.png</key>
|
||||
<key type="filename">sprites/buildings/virtual_processor-stacker.png</key>
|
||||
<key type="filename">sprites/buildings/virtual_processor-unstacker.png</key>
|
||||
<key type="filename">sprites/buildings/virtual_processor.png</key>
|
||||
@ -303,10 +335,6 @@
|
||||
<key type="filename">sprites/wires/sets/second_forward.png</key>
|
||||
<key type="filename">sprites/wires/sets/second_split.png</key>
|
||||
<key type="filename">sprites/wires/sets/second_turn.png</key>
|
||||
<key type="filename">sprites/wires/sets/third_cross.png</key>
|
||||
<key type="filename">sprites/wires/sets/third_forward.png</key>
|
||||
<key type="filename">sprites/wires/sets/third_split.png</key>
|
||||
<key type="filename">sprites/wires/sets/third_turn.png</key>
|
||||
<struct type="IndividualSpriteSettings">
|
||||
<key>pivotPoint</key>
|
||||
<point_f>0.5,0.5</point_f>
|
||||
@ -321,6 +349,13 @@
|
||||
<key>scale9FromFile</key>
|
||||
<false/>
|
||||
</struct>
|
||||
<key type="filename">sprites/blueprints/balancer.png</key>
|
||||
<key type="filename">sprites/blueprints/cutter.png</key>
|
||||
<key type="filename">sprites/blueprints/filter.png</key>
|
||||
<key type="filename">sprites/blueprints/mixer.png</key>
|
||||
<key type="filename">sprites/blueprints/painter-mirrored.png</key>
|
||||
<key type="filename">sprites/blueprints/painter.png</key>
|
||||
<key type="filename">sprites/blueprints/stacker.png</key>
|
||||
<key type="filename">sprites/buildings/balancer.png</key>
|
||||
<key type="filename">sprites/buildings/filter.png</key>
|
||||
<key type="filename">sprites/buildings/painter-mirrored.png</key>
|
||||
@ -338,6 +373,42 @@
|
||||
<key>scale9FromFile</key>
|
||||
<false/>
|
||||
</struct>
|
||||
<key type="filename">sprites/blueprints/cutter-quad.png</key>
|
||||
<key type="filename">sprites/blueprints/painter-quad.png</key>
|
||||
<key type="filename">sprites/buildings/cutter-quad.png</key>
|
||||
<key type="filename">sprites/buildings/painter-quad.png</key>
|
||||
<struct type="IndividualSpriteSettings">
|
||||
<key>pivotPoint</key>
|
||||
<point_f>0.5,0.5</point_f>
|
||||
<key>spriteScale</key>
|
||||
<double>1</double>
|
||||
<key>scale9Enabled</key>
|
||||
<false/>
|
||||
<key>scale9Borders</key>
|
||||
<rect>192,48,384,96</rect>
|
||||
<key>scale9Paddings</key>
|
||||
<rect>192,48,384,96</rect>
|
||||
<key>scale9FromFile</key>
|
||||
<false/>
|
||||
</struct>
|
||||
<key type="filename">sprites/blueprints/painter-double.png</key>
|
||||
<key type="filename">sprites/blueprints/storage.png</key>
|
||||
<key type="filename">sprites/buildings/painter-double.png</key>
|
||||
<key type="filename">sprites/buildings/storage.png</key>
|
||||
<struct type="IndividualSpriteSettings">
|
||||
<key>pivotPoint</key>
|
||||
<point_f>0.5,0.5</point_f>
|
||||
<key>spriteScale</key>
|
||||
<double>1</double>
|
||||
<key>scale9Enabled</key>
|
||||
<false/>
|
||||
<key>scale9Borders</key>
|
||||
<rect>96,96,192,192</rect>
|
||||
<key>scale9Paddings</key>
|
||||
<rect>96,96,192,192</rect>
|
||||
<key>scale9FromFile</key>
|
||||
<false/>
|
||||
</struct>
|
||||
<key type="filename">sprites/buildings/belt_left.png</key>
|
||||
<key type="filename">sprites/buildings/belt_right.png</key>
|
||||
<key type="filename">sprites/buildings/belt_top.png</key>
|
||||
@ -355,22 +426,6 @@
|
||||
<key>scale9FromFile</key>
|
||||
<false/>
|
||||
</struct>
|
||||
<key type="filename">sprites/buildings/cutter-quad.png</key>
|
||||
<key type="filename">sprites/buildings/painter-quad.png</key>
|
||||
<struct type="IndividualSpriteSettings">
|
||||
<key>pivotPoint</key>
|
||||
<point_f>0.5,0.5</point_f>
|
||||
<key>spriteScale</key>
|
||||
<double>1</double>
|
||||
<key>scale9Enabled</key>
|
||||
<false/>
|
||||
<key>scale9Borders</key>
|
||||
<rect>192,48,384,96</rect>
|
||||
<key>scale9Paddings</key>
|
||||
<rect>192,48,384,96</rect>
|
||||
<key>scale9FromFile</key>
|
||||
<false/>
|
||||
</struct>
|
||||
<key type="filename">sprites/buildings/cutter.png</key>
|
||||
<key type="filename">sprites/buildings/mixer.png</key>
|
||||
<key type="filename">sprites/buildings/painter.png</key>
|
||||
@ -426,22 +481,6 @@
|
||||
<key>scale9FromFile</key>
|
||||
<false/>
|
||||
</struct>
|
||||
<key type="filename">sprites/buildings/painter-double.png</key>
|
||||
<key type="filename">sprites/buildings/storage.png</key>
|
||||
<struct type="IndividualSpriteSettings">
|
||||
<key>pivotPoint</key>
|
||||
<point_f>0.5,0.5</point_f>
|
||||
<key>spriteScale</key>
|
||||
<double>1</double>
|
||||
<key>scale9Enabled</key>
|
||||
<false/>
|
||||
<key>scale9Borders</key>
|
||||
<rect>96,96,192,192</rect>
|
||||
<key>scale9Paddings</key>
|
||||
<rect>96,96,192,192</rect>
|
||||
<key>scale9FromFile</key>
|
||||
<false/>
|
||||
</struct>
|
||||
<key type="filename">sprites/colors/blue.png</key>
|
||||
<key type="filename">sprites/colors/cyan.png</key>
|
||||
<key type="filename">sprites/colors/green.png</key>
|
||||
|
@ -15,8 +15,7 @@ const lowerLineSize = 32;
|
||||
|
||||
const variants = {
|
||||
first: "#61ef6f",
|
||||
second: "#f0bd65",
|
||||
third: "#5fb2f1",
|
||||
second: "#5fb2f1",
|
||||
conflict: "#f74c4c",
|
||||
};
|
||||
|
||||
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 705 B After Width: | Height: | Size: 706 B |
Before Width: | Height: | Size: 651 B After Width: | Height: | Size: 651 B |
Before Width: | Height: | Size: 525 B After Width: | Height: | Size: 527 B |
Before Width: | Height: | Size: 516 B After Width: | Height: | Size: 515 B |
Before Width: | Height: | Size: 706 B |
Before Width: | Height: | Size: 651 B |
Before Width: | Height: | Size: 527 B |
Before Width: | Height: | Size: 515 B |
@ -13,7 +13,7 @@ $buildingsAndVariants: belt, balancer, underground_belt, underground_belt-tier2,
|
||||
cutter, cutter-quad, rotater, rotater-ccw, stacker, mixer, painter-double, painter-quad, trash, storage,
|
||||
reader, rotater-rotate180, display, constant_signal, wire, wire_tunnel, logic_gate-or, logic_gate-not,
|
||||
logic_gate-xor, analyzer, virtual_processor-rotater, virtual_processor-unstacker,
|
||||
virtual_processor-stacker, virtual_processor-painter;
|
||||
virtual_processor-stacker, virtual_processor-painter, wire-second, painter, painter-mirrored;
|
||||
@each $building in $buildingsAndVariants {
|
||||
[data-icon="building_tutorials/#{$building}.png"] {
|
||||
/* @load-async */
|
||||
@ -21,13 +21,6 @@ $buildingsAndVariants: belt, balancer, underground_belt, underground_belt-tier2,
|
||||
}
|
||||
}
|
||||
|
||||
// Special cases for mirrored vairants
|
||||
[data-icon="building_tutorials/painter.png"],
|
||||
[data-icon="building_tutorials/painter-mirrored.png"] {
|
||||
/* @load-async */
|
||||
background-image: uiResource("res/ui/building_tutorials/painter.png") !important;
|
||||
}
|
||||
|
||||
[data-icon="building_tutorials/balancer-merger.png"],
|
||||
[data-icon="building_tutorials/balancer-merger-inverse.png"] {
|
||||
/* @load-async */
|
||||
@ -53,13 +46,6 @@ $buildingsAndVariants: belt, balancer, underground_belt, underground_belt-tier2,
|
||||
background-image: uiResource("res/ui/building_tutorials/lever.png") !important;
|
||||
}
|
||||
|
||||
// Wire types share tutorials
|
||||
[data-icon="building_tutorials/wire-second.png"],
|
||||
[data-icon="building_tutorials/wire-third.png"] {
|
||||
/* @load-async */
|
||||
background-image: uiResource("res/ui/building_tutorials/wire-second.png") !important;
|
||||
}
|
||||
|
||||
// Logic gate
|
||||
[data-icon="building_tutorials/logic_gate.png"] {
|
||||
/* @load-async */
|
||||
|
@ -1,3 +1,4 @@
|
||||
import { generateMatrixRotations } from "../../core/utils";
|
||||
import { enumDirection, Vector } from "../../core/vector";
|
||||
import { ItemAcceptorComponent } from "../components/item_acceptor";
|
||||
import { enumItemProcessorTypes, ItemProcessorComponent } from "../components/item_processor";
|
||||
@ -6,6 +7,8 @@ import { MetaBuilding } from "../meta_building";
|
||||
import { GameRoot } from "../root";
|
||||
import { enumHubGoalRewards } from "../tutorial_goals";
|
||||
|
||||
const overlayMatrix = generateMatrixRotations([1, 1, 0, 1, 1, 1, 0, 1, 1]);
|
||||
|
||||
export class MetaTrashBuilding extends MetaBuilding {
|
||||
constructor() {
|
||||
super("trash");
|
||||
@ -16,13 +19,17 @@ export class MetaTrashBuilding extends MetaBuilding {
|
||||
}
|
||||
|
||||
getSilhouetteColor() {
|
||||
return "#cd7d86";
|
||||
return "#ed1d5d";
|
||||
}
|
||||
|
||||
getDimensions() {
|
||||
return new Vector(1, 1);
|
||||
}
|
||||
|
||||
getSpecialOverlayRenderMatrix(rotation) {
|
||||
return overlayMatrix[rotation];
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {GameRoot} root
|
||||
*/
|
||||
|
@ -24,13 +24,11 @@ export const wireOverlayMatrices = {
|
||||
/** @enum {string} */
|
||||
export const wireVariants = {
|
||||
second: "second",
|
||||
third: "third",
|
||||
};
|
||||
|
||||
const enumWireVariantToVariant = {
|
||||
[defaultBuildingVariant]: enumWireVariant.first,
|
||||
[wireVariants.second]: enumWireVariant.second,
|
||||
[wireVariants.third]: enumWireVariant.third,
|
||||
};
|
||||
|
||||
export class MetaWireBuilding extends MetaBuilding {
|
||||
@ -47,7 +45,7 @@ export class MetaWireBuilding extends MetaBuilding {
|
||||
}
|
||||
|
||||
getAvailableVariants() {
|
||||
return [defaultBuildingVariant, wireVariants.second, wireVariants.third];
|
||||
return [defaultBuildingVariant, wireVariants.second];
|
||||
}
|
||||
|
||||
getDimensions() {
|
||||
|
@ -12,7 +12,6 @@ export const enumWireType = {
|
||||
export const enumWireVariant = {
|
||||
first: "first",
|
||||
second: "second",
|
||||
third: "third",
|
||||
};
|
||||
|
||||
export class WireComponent extends Component {
|
||||
|
@ -121,11 +121,6 @@ export function initMetaBuildingRegistry() {
|
||||
registerBuildingVariant(54, MetaWireBuilding, enumWireVariant.second, 2);
|
||||
registerBuildingVariant(55, MetaWireBuilding, enumWireVariant.second, 3);
|
||||
|
||||
registerBuildingVariant(56, MetaWireBuilding, enumWireVariant.third, 0);
|
||||
registerBuildingVariant(57, MetaWireBuilding, enumWireVariant.third, 1);
|
||||
registerBuildingVariant(58, MetaWireBuilding, enumWireVariant.third, 2);
|
||||
registerBuildingVariant(59, MetaWireBuilding, enumWireVariant.third, 3);
|
||||
|
||||
// Constant signal
|
||||
registerBuildingVariant(31, MetaConstantSignalBuilding);
|
||||
|
||||
|
@ -550,7 +550,7 @@ buildings:
|
||||
|
||||
quad:
|
||||
name: Painter (Quad)
|
||||
description: Allows you to color each quadrant of the shape with a different color.
|
||||
description: Allows you to color each quadrant of the shape individually. Only slots with a <strong>truthy signal</strong> on the wires layer will be painted!
|
||||
|
||||
trash:
|
||||
default:
|
||||
@ -567,11 +567,8 @@ buildings:
|
||||
name: &wire Wire
|
||||
description: &wire_desc Allows to connect logical components and can transfer items, colors or boolean signals.
|
||||
second:
|
||||
name: Wire (Type 2)
|
||||
description: &wire_desc_second Allows to connect logical components and can transfer items, colors or boolean signals. Different colored wires do not connect.
|
||||
third:
|
||||
name: Wire (Type 3)
|
||||
description: *wire_desc_second
|
||||
name: Wire
|
||||
description: Allows to connect logical components and can transfer items, colors or boolean signals. Different colored wires do not connect.
|
||||
|
||||
wire_tunnel:
|
||||
default:
|
||||
@ -723,13 +720,13 @@ storyRewards:
|
||||
|
||||
reward_painter_double:
|
||||
title: Double Painting
|
||||
desc: You have unlocked a variant of the <strong>painter</strong> - It works as the regular painter but processes <strong>two shapes at once</strong> consuming just one color instead of two!
|
||||
desc: You have unlocked a variant of the <strong>painter</strong> - It works similar to the regular painter but processes <strong>two shapes at once</strong>, consuming just one color instead of two!
|
||||
|
||||
reward_painter_quad:
|
||||
title: Quad Painting
|
||||
desc: >-
|
||||
You have unlocked a variant of the <strong>painter</strong> - It allows you to paint each part of the shape individually!<br><br>
|
||||
To use it, connect each slot which should be painted on the wires layer!
|
||||
Connect each slot you'd like to paint with a <strong>truthy signal</strong> (shape, item or boolean "1") on the wires layer!
|
||||
|
||||
reward_storage:
|
||||
title: Storage Buffer
|
||||
|