← City3D assetfogon/cajero-automatico
Cajero automático
Drag to turn it// «Cajero automático» · gpt-6-sol (medium)
// A free-standing ATM: a tall grey and dark blue metal cabinet with a small hood on top, a screen glowing blue, a keypad, a card slot and a cash slot on the front (-y), and a green sign on top with a coin symbol.
// A chunky, free-standing city ATM. Front faces -y.
const navy = "#243b58";
const deepNavy = "#172b43";
const steel = "#aab9c2";
const lightSteel = "#cad4d8";
const shadowSteel = "#81949f";
const green = "#207a59";
const darkGreen = "#15583f";
// Solid cabinet and raised metal base.
box(14, 17, 2, 34, 32, 32, navy);
box(13, 16, 0, 35, 33, 2, deepNavy);
box(14, 17, 2, 34, 32, 3, shadowSteel);
box(15, 17, 4, 33, 17, 31, steel);
box(14, 18, 4, 14, 31, 31, shadowSteel);
box(34, 18, 4, 34, 31, 31, lightSteel);
box(15, 32, 4, 33, 32, 31, shadowSteel);
// Subtle variation on the broad painted front.
for (let x = 15; x <= 33; x++) {
for (let z = 4; z <= 31; z++) {
if (rand() < 0.055) set(x, 17, z, rand() < 0.5 ? "#b5c2c9" : "#9eafb8");
}
}
// Recessed navy operating panel, with a bright toy-like border.
box(16, 15, 5, 32, 16, 30, lightSteel);
box(17, 14, 6, 31, 14, 29, deepNavy);
box(17, 13, 29, 31, 13, 29, "#dfa947");
box(17, 13, 6, 17, 13, 28, shadowSteel);
box(31, 13, 6, 31, 13, 28, shadowSteel);
// Blue-lit display and its thick bezel.
box(18, 12, 21, 30, 13, 28, "#536b79");
box(19, 11, 22, 29, 11, 27, "#2379b7");
box(20, 10, 25, 28, 10, 26, "#5bc8ee");
box(20, 10, 23, 25, 10, 23, "#b9f4f4");
box(20, 10, 22, 26, 10, 22, "#399bc9");
set(28, 10, 22, "#b9f4f4");
// Three little screen-side buttons.
for (const z of [23, 25, 27]) {
set(30, 11, z, "#dce8e6");
}
// Keypad: raised keys on a dark plate.
box(18, 12, 12, 26, 13, 19, "#596d7a");
box(19, 11, 13, 25, 11, 18, deepNavy);
for (let row = 0; row < 3; row++) {
for (let col = 0; col < 3; col++) {
set(19 + col * 3, 10, 17 - row * 2,
row === 2 && col === 2 ? "#e3ba52" : "#e2e8e6");
}
}
set(22, 10, 11, "#e2e8e6");
// Card reader at the right, with a colored insertion cue.
box(27, 12, 16, 30, 12, 19, shadowSteel);
box(28, 11, 17, 30, 11, 17, "#071d2e");
box(28, 11, 19, 29, 11, 19, "#53d4ab");
set(27, 11, 17, "#eac14d");
// Wide cash dispenser below the controls.
box(18, 12, 6, 30, 13, 10, shadowSteel);
box(19, 11, 8, 29, 11, 9, "#102438");
box(20, 10, 7, 28, 10, 7, lightSteel);
box(19, 11, 10, 29, 11, 10, "#d6e0dc");
// Small side accents in the city's green-and-gold palette.
box(14, 15, 6, 15, 15, 28, darkGreen);
box(33, 15, 6, 34, 15, 28, darkGreen);
set(15, 14, 29, "#e6b44e");
set(33, 14, 29, "#e6b44e");
// Overhanging hood with a dark underside.
box(13, 13, 31, 35, 33, 33, deepNavy);
box(12, 11, 33, 36, 34, 34, shadowSteel);
box(12, 11, 34, 36, 34, 34, lightSteel);
box(12, 11, 32, 36, 11, 32, navy);
// Tall green sign, framed like enamel street furniture.
box(13, 13, 35, 35, 19, 42, darkGreen);
box(14, 12, 36, 34, 12, 41, green);
box(13, 12, 42, 35, 19, 43, "#329771");
box(13, 11, 35, 35, 11, 35, "#e3b64e");
// Chunky gold coin symbol on the sign.
for (let x = 16; x <= 21; x++) {
for (let z = 36; z <= 41; z++) {
const dx = x - 18.5, dz = z - 38.5;
const d = dx * dx + dz * dz;
if (d >= 4 && d <= 9) set(x, 11, z, "#f3ca62");
}
}
box(18, 11, 38, 19, 11, 39, "#ffe59a");
set(18, 10, 38, "#e2aa39");
// Crisp pixel lettering: ATM.
const letters = [
["010", "101", "111", "101", "101"],
["111", "010", "010", "010", "010"],
["101", "111", "111", "101", "101"]
];
for (let letter = 0; letter < 3; letter++) {
for (let row = 0; row < 5; row++) {
for (let col = 0; col < 3; col++) {
if (letters[letter][row][col] === "1") {
set(24 + letter * 4 + col, 11, 40 - row, "#e5f5dc");
}
}
}
}import { draw } from "./assets/voxel";
import { cajeroAutomatico } from "./assets/cajero-automatico";
// Every frame: standing on (x, y), the centre of its base.
draw(ctx, cajeroAutomatico, x, y, { size: 64, angle: 0, t: performance.now() / 1000 });
// size: its longest side, in px
// angle: turn on the floor, in radians
// t: seconds; if it moves, that animates it# In a terminal, in the game's folder
fogon assets add cajero-automatico
# With Fogón's tools (connector)
add_assets({ slug: "<your-game>", ids: ["cajero-automatico"] })
# It lands in client/assets/cajero-automatico.ts
# https://fogon.page/object/cajero-automatico