Add tutorial images for all building variants

This commit is contained in:
tobspr 2020-05-21 11:40:26 +02:00
parent c6228f8d32
commit 8dd3a7c748
22 changed files with 156 additions and 85 deletions

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 36 KiB

View File

@ -1,14 +1,20 @@
$buildings: belt, cutter, miner, mixer, painter, rotater, splitter, stacker, trash, underground_belt;
@each $building in $buildings {
[data-icon="building_tutorials/#{$building}.png"] {
background-image: uiResource("res/ui/building_tutorials/#{$building}.png") !important;
}
[data-icon="building_icons/#{$building}.png"] {
background-image: uiResource("res/ui/building_icons/#{$building}.png") !important;
}
}
$buildingsAndVariants: belt, splitter, splitter-compact, splitter-compact-inverse, underground_belt,
underground_belt-tier2, miner, miner-chainable, cutter, cutter-quad, rotater, rotater-ccw, stacker, mixer,
painter, painter-double, painter-quad, trash, trash-storage;
@each $building in $buildingsAndVariants {
[data-icon="building_tutorials/#{$building}.png"] {
background-image: uiResource("res/ui/building_tutorials/#{$building}.png") !important;
}
}
$icons: notification_saved, notification_success, notification_upgrade;
@each $icon in $icons {
[data-icon="icons/#{$icon}.png"] {

View File

@ -79,16 +79,18 @@
#ingame_HUD_PlacerVariants {
position: absolute;
@include S(left, 10px);
@include S(bottom, 80px);
display: grid;
grid-auto-flow: row;
justify-items: start;
@include S(right, 10px);
@include S(top, 200px);
display: flex;
@include S(grid-gap, 5px);
flex-direction: column;
align-items: flex-end;
.explanation {
text-transform: uppercase;
grid-row: 1 / 2;
@include SuperSmallText;
text-align: right;
.keybinding {
position: relative;
}
@ -98,53 +100,60 @@
}
}
.variant {
@include S(border-radius, $globalBorderRadius);
background: rgba(0, 10, 20, 0.1);
display: flex;
position: relative;
align-items: center;
@include S(padding, 5px);
@include S(grid-gap, 10px);
.variants {
display: grid;
@include S(grid-gap, 5px);
&.active {
background-color: rgba(74, 163, 223, 0.6);
}
$iconSize: 25px;
.iconWrap {
grid-column: 1 / 2;
grid-row: 1 / 2;
.variant {
grid-row: 2 / 3;
@include S(border-radius, $globalBorderRadius);
background: rgba(0, 10, 20, 0.2);
display: inline-flex;
vertical-align: top;
position: relative;
@include S(width, $iconSize);
@include S(height, $iconSize);
background: center center / contain no-repeat;
align-items: center;
@include S(padding, 3px);
@include S(grid-gap, 10px);
&[data-tile-w="2"] {
@include S(width, 2 * $iconSize);
&.active {
background-color: rgba(74, 163, 223, 0.6);
}
&[data-tile-w="3"] {
@include S(width, 3 * $iconSize);
}
&[data-tile-w="4"] {
@include S(width, 4 * $iconSize);
}
&[data-tile-h="2"] {
@include S(height, 2 * $iconSize);
}
&[data-tile-h="3"] {
@include S(height, 3 * $iconSize);
}
}
.label {
display: none;
grid-column: 2 / 3;
text-transform: uppercase;
grid-row: 1 / 2;
@include SuperSmallText;
color: #fff;
$iconSize: 25px;
.iconWrap {
grid-column: 1 / 2;
grid-row: 1 / 2;
position: relative;
@include S(width, $iconSize);
@include S(height, $iconSize);
background: center center / contain no-repeat;
&[data-tile-w="2"] {
@include S(width, 2 * $iconSize);
}
&[data-tile-h="2"] {
@include S(height, 2 * $iconSize);
}
&[data-tile-h="3"] {
@include S(height, 3 * $iconSize);
}
&[data-tile-w="3"] {
@include S(width, 3 * $iconSize);
}
&[data-tile-w="4"] {
@include S(width, 4 * $iconSize);
}
}
.label {
display: none;
grid-column: 2 / 3;
text-transform: uppercase;
grid-row: 1 / 2;
@include SuperSmallText;
color: #fff;
}
}
}
}

View File

@ -57,8 +57,8 @@ export const globalConfig = {
rotater: 1 / 1,
rotaterCCW: 1 / 1,
painter: 1 / 6,
painterDouble: 1 / 7,
painterQuad: 1 / 7,
painterDouble: 1 / 8,
painterQuad: 1 / 8,
mixer: 1 / 5,
stacker: 1 / 6,
},
@ -83,7 +83,7 @@ export const globalConfig = {
debug: {
/* dev:start */
// fastGameEnter: true,
fastGameEnter: true,
noArtificialDelays: true,
// disableSavegameWrite: true,
// showEntityBounds: true,
@ -93,8 +93,8 @@ export const globalConfig = {
// disableZoomLimits: true,
// showChunkBorders: true,
// rewardsInstant: true,
// allBuildingsUnlocked: true,
// upgradesNoCost: true,
allBuildingsUnlocked: true,
upgradesNoCost: true,
// disableUnlockDialog: true,
// disableLogicTicks: true,
// testClipping: true,

View File

@ -99,6 +99,13 @@ export class Camera extends BasicSerializableObject {
this.internalInitEvents();
this.clampZoomLevel();
this.bindKeys();
if (G_IS_DEV) {
window.addEventListener("keydown", ev => {
if (ev.key === "l") {
this.zoomLevel = 3;
}
});
}
}
// Serialization

View File

@ -258,11 +258,6 @@ export class HUDBuildingPlacer extends BaseHUDPart {
})
);
metaBuilding.updateVariants(this.fakeEntity, 0, this.currentVariant.get());
this.buildingInfoElements.tutorialImage.setAttribute(
"data-icon",
"building_tutorials/" + metaBuilding.getId() + ".png"
);
} else {
this.fakeEntity = null;
}
@ -281,8 +276,10 @@ export class HUDBuildingPlacer extends BaseHUDPart {
return;
}
this.buildingInfoElements.label.innerHTML = T.buildings[metaBuilding.id].name;
this.buildingInfoElements.descText.innerHTML = T.buildings[metaBuilding.id].description;
const variant = this.currentVariant.get();
this.buildingInfoElements.label.innerHTML = T.buildings[metaBuilding.id][variant].name;
this.buildingInfoElements.descText.innerHTML = T.buildings[metaBuilding.id][variant].description;
const binding = this.root.keyMapper.getBinding(KEYMAPPINGS.buildings[metaBuilding.getId()]);
this.buildingInfoElements.hotkey.innerHTML = T.ingame.buildingPlacement.hotkeyLabel.replace(
@ -290,6 +287,14 @@ export class HUDBuildingPlacer extends BaseHUDPart {
"<code class='keybinding'>" + binding.getKeyCodeString() + "</code>"
);
this.buildingInfoElements.tutorialImage.setAttribute(
"data-icon",
"building_tutorials/" +
metaBuilding.getId() +
(variant === defaultBuildingVariant ? "" : "-" + variant) +
".png"
);
removeAllChildren(this.buildingInfoElements.additionalInfo);
const additionalInfo = metaBuilding.getAdditionalStatistics(this.root, this.currentVariant.get());
for (let i = 0; i < additionalInfo.length; ++i) {
@ -332,10 +337,12 @@ export class HUDBuildingPlacer extends BaseHUDPart {
)
);
const container = makeDiv(this.variantsElement, null, ["variants"]);
for (let i = 0; i < availableVariants.length; ++i) {
const variant = availableVariants[i];
const element = makeDiv(this.variantsElement, null, ["variant"]);
const element = makeDiv(container, null, ["variant"]);
element.classList.toggle("active", variant === this.currentVariant.get());
makeDiv(element, null, ["label"], variant);

View File

@ -253,44 +253,86 @@ shopUpgrades:
# Buildings and their name / description
buildings:
belt:
name: &belt Conveyor Belt
description: Transports items, hold and drag to place multiple.
default:
name: &belt Conveyor Belt
description: Transports items, hold and drag to place multiple.
miner: # Internal name for the Extractor
name: &miner Extractor
description: Place over a shape or color to extract it.
default:
name: &miner Extractor
description: Place over a shape or color to extract it.
chainable:
name: Extractor (Chain)
description: Place over a shape or color to extract it. Can be chained.
underground_belt: # Internal name for the Tunnel
name: &underground_belt Tunnel
description: Allows to tunnel resources under buildings and belts.
default:
name: &underground_belt Tunnel
description: Allows to tunnel resources under buildings and belts.
tier2:
name: Tunnel Tier II
description: Allows to tunnel resources under buildings and belts.
splitter: # Internal name for the Balancer
name: &splitter Balancer
description: Multifunctional - Evenly distributes all inputs onto all outputs.
default:
name: &splitter Balancer
description: Multifunctional - Evenly distributes all inputs onto all outputs.
compact:
name: Merger (compact)
description: Merges two conveyor belts into one.
compact-inverse:
name: Merger (compact)
description: Merges two conveyor belts into one.
cutter:
name: &cutter Cutter
description: Cuts shapes from top to bottom and outputs both halfs. <strong>If you use only one part, be sure to destroy the other part or it will stall!</strong>
default:
name: &cutter Cutter
description: Cuts shapes from top to bottom and outputs both halfs. <strong>If you use only one part, be sure to destroy the other part or it will stall!</strong>
quad:
name: Cutter (Quad)
description: Cuts shapes into four parts. <strong>If you use only one part, be sure to destroy the other part or it will stall!</strong>
rotater:
name: &rotater Rotate
description: Rotates shapes clockwise by 90 degrees.
default:
name: &rotater Rotate
description: Rotates shapes clockwise by 90 degrees.
ccw:
name: Rotate (CCW)
description: Rotates shapes counter clockwise by 90 degrees.
stacker: # Internal name for the Combiner
name: &stacker Stacker
description: Stacks both items. If they can not be merged, the right item is placed above the left item.
stacker:
default:
name: &stacker Stacker
description: Stacks both items. If they can not be merged, the right item is placed above the left item.
mixer:
name: &mixer Color Mixer
description: Mixes two colors using additive blending.
default:
name: &mixer Color Mixer
description: Mixes two colors using additive blending.
painter:
name: &painter Painter
description: Colors the whole shape on the left input with the color from the right input.
default:
name: &painter Painter
description: Colors the whole shape on the left input with the color from the right input.
double:
name: Painter (Double)
description: Colors the both shapes on the left input with the color from the right input.
quad:
name: Painter (Quad)
description: Allows to color each quadrant of the shape with a different color.
trash: # Internal name for the destroyer
name: &trash Trash
description: Accepts inputs from all sides and destroys them. Forever.
trash:
default:
name: &trash Trash
description: Accepts inputs from all sides and destroys them. Forever.
storage:
name: Storage
description: Stores excess items, up to a given capacity. Can be used as an overflow gate.
storyRewards:
# Those are the rewards gained from completing the store