Fix multiple typos, closes #627

pull/670/head
tobspr 4 years ago
parent 1ebfafd8de
commit b5a2e77db4

@ -64,7 +64,7 @@ This project is based on ES5. Some ES2015 features are used but most of them are
5. Add a constructor. **The constructor must be called with optional parameters only!** `new MyFancyComponent({})` should always work. 5. Add a constructor. **The constructor must be called with optional parameters only!** `new MyFancyComponent({})` should always work.
6. Add any props you need in the constructor. 6. Add any props you need in the constructor.
7. Add the component in `src/js/game/component_registry.js` 7. Add the component in `src/js/game/component_registry.js`
8. Add the componetn in `src/js/game/entity_components.js` 8. Add the component in `src/js/game/entity_components.js`
9. Done! You can use your component now 9. Done! You can use your component now
#### Adding a new building #### Adding a new building
@ -96,6 +96,6 @@ This project is based on ES5. Some ES2015 features are used but most of them are
For most assets I use Adobe Photoshop, you can find them in `assets/`. For most assets I use Adobe Photoshop, you can find them in `assets/`.
You will need a <a href="https://www.codeandweb.com/texturepacker" target="_blank">Texture Packer</a> license in order to regenerate the atlas. If you don't have one but want to contribute assets, let me know and I might compile it for you. I'm currently switching to an open source solution but I can't give an estimate when thats done. You will need a <a href="https://www.codeandweb.com/texturepacker" target="_blank">Texture Packer</a> license in order to regenerate the atlas. If you don't have one but want to contribute assets, let me know and I might compile it for you. I'm currently switching to an open source solution but I can't give an estimate when that's done.
<img src="https://i.imgur.com/W25Fkl0.png" alt="shapez.io Screenshot"> <img src="https://i.imgur.com/W25Fkl0.png" alt="shapez.io Screenshot">

@ -283,6 +283,7 @@
<key type="filename">sprites/blueprints/virtual_processor-analyzer.png</key> <key type="filename">sprites/blueprints/virtual_processor-analyzer.png</key>
<key type="filename">sprites/blueprints/virtual_processor-rotater.png</key> <key type="filename">sprites/blueprints/virtual_processor-rotater.png</key>
<key type="filename">sprites/blueprints/virtual_processor-shapecompare.png</key> <key type="filename">sprites/blueprints/virtual_processor-shapecompare.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-unstacker.png</key>
<key type="filename">sprites/blueprints/virtual_processor.png</key> <key type="filename">sprites/blueprints/virtual_processor.png</key>
<key type="filename">sprites/blueprints/wire_tunnel-coating.png</key> <key type="filename">sprites/blueprints/wire_tunnel-coating.png</key>
@ -310,6 +311,7 @@
<key type="filename">sprites/buildings/virtual_processor-analyzer.png</key> <key type="filename">sprites/buildings/virtual_processor-analyzer.png</key>
<key type="filename">sprites/buildings/virtual_processor-rotater.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-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-unstacker.png</key>
<key type="filename">sprites/buildings/virtual_processor.png</key> <key type="filename">sprites/buildings/virtual_processor.png</key>
<key type="filename">sprites/buildings/wire_tunnel-coating.png</key> <key type="filename">sprites/buildings/wire_tunnel-coating.png</key>

@ -1,161 +1,154 @@
#ingame_HUD_ShapeViewer { #ingame_HUD_ShapeViewer {
$dims: 170px; $dims: 170px;
.content { .content {
display: flex; display: flex;
@include S(width, $dims); @include S(width, $dims);
width: 100%; width: 100%;
flex-direction: column; flex-direction: column;
overflow-x: hidden; overflow-x: hidden;
&[data-layers="3"], &[data-layers="3"],
&[data-layers="4"] { &[data-layers="4"] {
@include S(width, 2 * $dims); @include S(width, 2 * $dims);
.renderArea { .renderArea {
display: grid; display: grid;
grid-template-columns: 1fr 1fr; grid-template-columns: 1fr 1fr;
@include S(grid-row-gap, 15px); @include S(grid-row-gap, 15px);
} }
} }
.renderArea { .renderArea {
display: grid; display: grid;
width: 100%; width: 100%;
@include S(grid-row-gap, 10px); @include S(grid-row-gap, 10px);
align-items: center; align-items: center;
justify-items: center; justify-items: center;
} }
.infoArea { .infoArea {
align-self: flex-end; align-self: flex-end;
@include S(margin-top, 10px); @include S(margin-top, 10px);
display: flex; display: flex;
flex-direction: column; flex-direction: column;
overflow: hidden; overflow: hidden;
button { button {
@include S(margin, 0); @include S(margin, 0);
@include PlainText; @include PlainText;
} }
} }
.seperator { .layer {
display: flex; position: relative;
align-items: center; background: #eee;
justify-content: center;
width: 100%; @include DarkThemeOverride {
} background: rgba(0, 10, 20, 0.2);
}
.layer { @include S(width, 150px);
position: relative; @include S(height, 100px);
background: #eee; display: flex;
align-items: center;
@include DarkThemeOverride { justify-content: center;
background: rgba(0, 10, 20, 0.2);
} > canvas {
@include S(width, 150px); @include S(width, 50px);
@include S(height, 100px); @include S(height, 50px);
display: flex; }
align-items: center;
justify-content: center; .quad {
position: absolute;
> canvas { width: 50%;
@include S(width, 50px); height: 50%;
@include S(height, 50px); display: flex;
} justify-content: center;
align-items: center;
.quad { box-sizing: border-box;
position: absolute;
width: 50%; $arrowDims: 23px;
height: 50%; $spacing: 9px;
display: flex; @include S(padding, 6px);
justify-content: center;
align-items: center; .colorLabel {
box-sizing: border-box; text-transform: uppercase;
@include SuperSmallText;
$arrowDims: 23px; @include S(font-size, 9px);
$spacing: 9px; }
@include S(padding, 6px);
.emptyLabel {
.colorLabel { text-transform: uppercase;
text-transform: uppercase; @include SuperSmallText;
@include SuperSmallText; @include S(font-size, 9px);
@include S(font-size, 9px); }
}
&::after {
.emptyLabel { content: " ";
text-transform: uppercase; background: rgba(0, 10, 20, 0.5);
@include SuperSmallText; @include S(width, $arrowDims);
@include S(font-size, 9px); @include S(height, 1px);
} position: absolute;
transform: rotate(45deg);
&::after { transform-origin: 50% 50%;
content: " "; }
background: rgba(0, 10, 20, 0.5); @include DarkThemeOverride {
@include S(width, $arrowDims); &::after {
@include S(height, 1px); background: rgba(255, 255, 255, 0.5);
position: absolute; }
transform: rotate(45deg); }
transform-origin: 50% 50%;
} &.quad-0 {
@include DarkThemeOverride { right: 0;
&::after { top: 0;
background: rgba(255, 255, 255, 0.5); align-items: flex-start;
} justify-content: flex-end;
}
&::after {
&.quad-0 { @include S(left, $spacing);
right: 0; @include S(bottom, $arrowDims / 2 + $spacing);
top: 0; transform: rotate(-45deg);
align-items: flex-start; }
justify-content: flex-end; }
&.quad-1 {
&::after { bottom: 0;
@include S(left, $spacing); right: 0;
@include S(bottom, $arrowDims / 2 + $spacing);
transform: rotate(-45deg); align-items: flex-end;
} justify-content: flex-end;
}
&.quad-1 { &::after {
bottom: 0; @include S(left, $spacing);
right: 0; @include S(top, $arrowDims / 2 + $spacing);
transform: rotate(45deg);
align-items: flex-end; }
justify-content: flex-end; }
&.quad-2 {
&::after { bottom: 0;
@include S(left, $spacing); left: 0;
@include S(top, $arrowDims / 2 + $spacing);
transform: rotate(45deg); align-items: flex-end;
} justify-content: flex-start;
}
&.quad-2 { &::after {
bottom: 0; @include S(right, $spacing);
left: 0; @include S(top, $arrowDims / 2 + $spacing);
transform: rotate(135deg);
align-items: flex-end; }
justify-content: flex-start; }
&.quad-3 {
&::after { top: 0;
@include S(right, $spacing); left: 0;
@include S(top, $arrowDims / 2 + $spacing);
transform: rotate(135deg); align-items: flex-start;
} justify-content: flex-start;
}
&.quad-3 { &::after {
top: 0; @include S(right, $spacing);
left: 0; @include S(bottom, $arrowDims / 2 + $spacing);
transform: rotate(225deg);
align-items: flex-start; }
justify-content: flex-start; }
}
&::after { }
@include S(right, $spacing); }
@include S(bottom, $arrowDims / 2 + $spacing); }
transform: rotate(225deg);
}
}
}
}
}
}

@ -109,7 +109,7 @@ export const CHANGELOG = [
date: "17.06.2020", date: "17.06.2020",
entries: [ entries: [
"You can now place straight belts (and tunnels) by holding SHIFT! (For you, @giantwaffle ❤️)", "You can now place straight belts (and tunnels) by holding SHIFT! (For you, @giantwaffle ❤️)",
"Added continue button to main menu and add seperate 'New game' button (by jaysc)", "Added continue button to main menu and add separate 'New game' button (by jaysc)",
"Added setting to disable smart tunnel placement introduced with the last update", "Added setting to disable smart tunnel placement introduced with the last update",
"Added setting to disable vignette", "Added setting to disable vignette",
"Update translations", "Update translations",

@ -30,10 +30,10 @@ export class Dialog {
* @param {string} param0.title Title of the dialog * @param {string} param0.title Title of the dialog
* @param {string} param0.contentHTML Inner dialog html * @param {string} param0.contentHTML Inner dialog html
* @param {Array<string>} param0.buttons * @param {Array<string>} param0.buttons
* Button list, each button contains of up to 3 parts seperated by ':'. * Button list, each button contains of up to 3 parts separated by ':'.
* Part 0: The id, one of the one defined in dialog_buttons.yaml * Part 0: The id, one of the one defined in dialog_buttons.yaml
* Part 1: The style, either good, bad or misc * Part 1: The style, either good, bad or misc
* Part 2 (optional): Additional parameters seperated by '/', available are: * Part 2 (optional): Additional parameters separated by '/', available are:
* timeout: This button is only available after some waiting time * timeout: This button is only available after some waiting time
* kb_enter: This button is triggered by the enter key * kb_enter: This button is triggered by the enter key
* kb_escape This button is triggered by the escape key * kb_escape This button is triggered by the escape key

@ -224,7 +224,7 @@ export class ReadWriteProxy {
return rawData; return rawData;
}) })
// Parse JSON, this could throw but thats fine // Parse JSON, this could throw but that's fine
.then(res => { .then(res => {
try { try {
return JSON.parse(res); return JSON.parse(res);

@ -206,7 +206,7 @@ export class AtlasSprite extends BaseSprite {
srcX, srcX,
srcY, srcY,
// atlas src siize // atlas src size
srcW, srcW,
srcH, srcH,

@ -1091,7 +1091,7 @@ export class BeltPath extends BasicSerializableObject {
computePositionFromProgress(progress) { computePositionFromProgress(progress) {
let currentLength = 0; let currentLength = 0;
// floating point issuses .. // floating point issues ..
assert(progress <= this.totalLength + 0.02, "Progress too big: " + progress); assert(progress <= this.totalLength + 0.02, "Progress too big: " + progress);
for (let i = 0; i < this.entityPath.length; ++i) { for (let i = 0; i < this.entityPath.length; ++i) {
@ -1206,7 +1206,7 @@ export class BeltPath extends BasicSerializableObject {
// Check if the current items are on the belt // Check if the current items are on the belt
while (trackPos + beltLength >= currentItemPos - 1e-5) { while (trackPos + beltLength >= currentItemPos - 1e-5) {
// Its on the belt, render it now // It's on the belt, render it now
const staticComp = entity.components.StaticMapEntity; const staticComp = entity.components.StaticMapEntity;
assert( assert(
currentItemPos - trackPos >= 0, currentItemPos - trackPos >= 0,

File diff suppressed because it is too large Load Diff

@ -23,7 +23,7 @@ export class EntityManager extends BasicSerializableObject {
/** @type {Array<Entity>} */ /** @type {Array<Entity>} */
this.entities = []; this.entities = [];
// We store a seperate list with entities to destroy, since we don't destroy // We store a separate list with entities to destroy, since we don't destroy
// them instantly // them instantly
/** @type {Array<Entity>} */ /** @type {Array<Entity>} */
this.destroyList = []; this.destroyList = [];

@ -330,7 +330,7 @@ export class HUDBuildingPlacerLogic extends BaseHUDPart {
if (tileBelow && this.root.app.settings.getAllSettings().pickMinerOnPatch) { if (tileBelow && this.root.app.settings.getAllSettings().pickMinerOnPatch) {
this.currentMetaBuilding.set(gMetaBuildingRegistry.findByClass(MetaMinerBuilding)); this.currentMetaBuilding.set(gMetaBuildingRegistry.findByClass(MetaMinerBuilding));
// Select chained miner if available, since thats always desired once unlocked // Select chained miner if available, since that's always desired once unlocked
if (this.root.hubGoals.isRewardUnlocked(enumHubGoalRewards.reward_miner_chainable)) { if (this.root.hubGoals.isRewardUnlocked(enumHubGoalRewards.reward_miner_chainable)) {
this.currentVariant.set(enumMinerVariants.chainable); this.currentVariant.set(enumMinerVariants.chainable);
} }

@ -360,7 +360,7 @@ export class BeltSystem extends GameSystemWithFilter {
const followUpTile = staticComp.origin.add(followUpVector); const followUpTile = staticComp.origin.add(followUpVector);
const followUpEntity = this.root.map.getLayerContentXY(followUpTile.x, followUpTile.y, entity.layer); const followUpEntity = this.root.map.getLayerContentXY(followUpTile.x, followUpTile.y, entity.layer);
// Check if theres a belt at the tile we point to // Check if there's a belt at the tile we point to
if (followUpEntity) { if (followUpEntity) {
const followUpBeltComp = followUpEntity.components.Belt; const followUpBeltComp = followUpEntity.components.Belt;
if (followUpBeltComp) { if (followUpBeltComp) {
@ -390,7 +390,7 @@ export class BeltSystem extends GameSystemWithFilter {
const supplyTile = staticComp.origin.add(supplyVector); const supplyTile = staticComp.origin.add(supplyVector);
const supplyEntity = this.root.map.getLayerContentXY(supplyTile.x, supplyTile.y, entity.layer); const supplyEntity = this.root.map.getLayerContentXY(supplyTile.x, supplyTile.y, entity.layer);
// Check if theres a belt at the tile we point to // Check if there's a belt at the tile we point to
if (supplyEntity) { if (supplyEntity) {
const supplyBeltComp = supplyEntity.components.Belt; const supplyBeltComp = supplyEntity.components.Belt;
if (supplyBeltComp) { if (supplyBeltComp) {

@ -170,7 +170,7 @@ export class MinerSystem extends GameSystemWithFilter {
} }
// Draw the item background - this is to hide the ejected item animation from // Draw the item background - this is to hide the ejected item animation from
// the item ejecto // the item ejector
const padding = 3; const padding = 3;
const destX = staticComp.origin.x * globalConfig.tileSize + padding; const destX = staticComp.origin.x * globalConfig.tileSize + padding;

@ -71,7 +71,7 @@ export class UndergroundBeltSystem extends GameSystemWithFilter {
const range = globalConfig.undergroundBeltMaxTilesByTier[tier]; const range = globalConfig.undergroundBeltMaxTilesByTier[tier];
// FIND ENTRANCE // FIND ENTRANCE
// Search for the entrance which is furthes apart (this is why we can't reuse logic here) // Search for the entrance which is farthest apart (this is why we can't reuse logic here)
let matchingEntrance = null; let matchingEntrance = null;
for (let i = 0; i < range; ++i) { for (let i = 0; i < range; ++i) {
currentPos.addInplace(offset); currentPos.addInplace(offset);

@ -162,7 +162,7 @@ export class WireSystem extends GameSystemWithFilter {
const tunnelEntities = this.root.entityMgr.getAllWithComponent(WireTunnelComponent); const tunnelEntities = this.root.entityMgr.getAllWithComponent(WireTunnelComponent);
const pinEntities = this.root.entityMgr.getAllWithComponent(WiredPinsComponent); const pinEntities = this.root.entityMgr.getAllWithComponent(WiredPinsComponent);
// Clear all network references, but not on the first update since thats the deserializing one // Clear all network references, but not on the first update since that's the deserializing one
if (!this.isFirstRecompute) { if (!this.isFirstRecompute) {
for (let i = 0; i < wireEntities.length; ++i) { for (let i = 0; i < wireEntities.length; ++i) {
wireEntities[i].components.Wire.linkedNetwork = null; wireEntities[i].components.Wire.linkedNetwork = null;
@ -432,7 +432,7 @@ export class WireSystem extends GameSystemWithFilter {
continue; continue;
} }
// Check if its a tunnel, if so, go to the forwarded item // Check if it's a tunnel, if so, go to the forwarded item
const tunnelComp = entity.components.WireTunnel; const tunnelComp = entity.components.WireTunnel;
if (tunnelComp) { if (tunnelComp) {
if (visitedTunnels.has(entity.uid)) { if (visitedTunnels.has(entity.uid)) {

@ -1,80 +1,82 @@
# Translations # Translations
The base language is English and can be found [here](base-en.yaml). The base language is English and can be found [here](base-en.yaml).
## Languages ## Languages
- [German](base-de.yaml) - [German](base-de.yaml)
- [French](base-fr.yaml) - [French](base-fr.yaml)
- [Korean](base-kor.yaml) - [Korean](base-kor.yaml)
- [Dutch](base-nl.yaml) - [Dutch](base-nl.yaml)
- [Polish](base-pl.yaml) - [Polish](base-pl.yaml)
- [Portuguese (Brazil)](base-pt-BR.yaml) - [Portuguese (Brazil)](base-pt-BR.yaml)
- [Portuguese (Portugal)](base-pt-PT.yaml) - [Portuguese (Portugal)](base-pt-PT.yaml)
- [Russian](base-ru.yaml) - [Russian](base-ru.yaml)
- [Greek](base-el.yaml) - [Greek](base-el.yaml)
- [Italian](base-it.yaml) - [Italian](base-it.yaml)
- [Romanian](base-ro.yaml) - [Romanian](base-ro.yaml)
- [Swedish](base-sv.yaml) - [Swedish](base-sv.yaml)
- [Chinese (Simplified)](base-zh-CN.yaml) - [Chinese (Simplified)](base-zh-CN.yaml)
- [Chinese (Traditional)](base-zh-TW.yaml) - [Chinese (Traditional)](base-zh-TW.yaml)
- [Spanish](base-es.yaml) - [Spanish](base-es.yaml)
- [Hungarian](base-hu.yaml) - [Hungarian](base-hu.yaml)
- [Turkish](base-tr.yaml) - [Turkish](base-tr.yaml)
- [Japanese](base-ja.yaml) - [Japanese](base-ja.yaml)
- [Lithuanian](base-lt.yaml) - [Lithuanian](base-lt.yaml)
- [Arabic](base-ar.yaml) - [Arabic](base-ar.yaml)
- [Norwegian](base-no.yaml) - [Norwegian](base-no.yaml)
- [Kroatian](base-hr.yaml) - [Kroatian](base-hr.yaml)
- [Danish](base-da.yaml) - [Danish](base-da.yaml)
- [Finnish](base-fi.yaml) - [Finnish](base-fi.yaml)
- [Catalan](base-cat.yaml) - [Catalan](base-cat.yaml)
- [Slovenian](base-sl.yaml) - [Slovenian](base-sl.yaml)
- [Ukrainian](base-uk.yaml) - [Ukrainian](base-uk.yaml)
- [Indonesian](base-ind.yaml) - [Indonesian](base-ind.yaml)
- [Serbian](base-sr.yaml) - [Serbian](base-sr.yaml)
(If you want to translate into a new language, see below!) (If you want to translate into a new language, see below!)
## Editing existing translations ## Editing existing translations
If you want to edit an existing translation (Fixing typos, Updating it to a newer version, etc), you can just use the github file editor to edit the file. If you want to edit an existing translation (Fixing typos, updating it to a newer version, etc), you can just use the github file editor to edit the file.
- Click the language you want to edit from the list above - Click the language you want to edit from the list above
- Click the small "edit" symbol on the top right - Click the small "edit" symbol on the top right
<img src="https://i.imgur.com/gZnUQoe.png" alt="edit symbol" width="200"> <img src="https://i.imgur.com/gZnUQoe.png" alt="edit symbol" width="200">
- Do the changes you wish to do (Be sure **not** to translate placeholders! For example, `<amount> minutes` should get `<amount> Minuten` and **not** `<anzahl> Minuten`!) - Do the changes you wish to do (Be sure **not** to translate placeholders! For example, `<amount> minutes` should get `<amount> Minuten` and **not** `<anzahl> Minuten`!)
- Click "Propose Changes" - Click "Propose Changes"
<img src="https://i.imgur.com/KT9ZFp6.png" alt="propose changes" width="200"> <img src="https://i.imgur.com/KT9ZFp6.png" alt="propose changes" width="200">
- Click "Create pull request" - Click "Create pull request"
<img src="https://i.imgur.com/oVljvRE.png" alt="create pull request" width="200"> <img src="https://i.imgur.com/oVljvRE.png" alt="create pull request" width="200">
- I will review your changes and make comments, and eventually merge them so they will be in the next release! Be sure to regulary check the created pull request for comments. - I will review your changes and make comments, and eventually merge them so they will be in the next release! Be sure to regulary check the created pull request for comments.
## Adding a new language ## Adding a new language
Please DM me on Discord (tobspr#5407), so I can add the language template for you. Please DM me on Discord (tobspr#5407), so I can add the language template for you.
Please use the following template: **Important: I am currently not accepting new languages until the wires update is out!**
``` Please use the following template:
Hey, could you add a new translation?
```
Language: <Language, e.g. 'German'> Hey, could you add a new translation?
Short code: <Short code, e.g. 'de', see below>
Local Name: <Name of your Language, e.g. 'Deutsch'> Language: <Language, e.g. 'German'>
``` Short code: <Short code, e.g. 'de', see below>
Local Name: <Name of your Language, e.g. 'Deutsch'>
You can find the short code [here](https://www.science.co.il/language/Codes.php) (In column `Code 2`). ```
PS: I'm super busy, but I'll give my best to do it quickly! You can find the short code [here](https://www.science.co.il/language/Codes.php) (In column `Code 2`).
## Updating a language to the latest version PS: I'm super busy, but I'll give my best to do it quickly!
Run `yarn syncTranslations` in the root directory to synchronize all translations to the latest version! This will remove obsolete keys and add newly added keys. (Run `yarn` before to install packes). ## Updating a language to the latest version
Run `yarn syncTranslations` in the root directory to synchronize all translations to the latest version! This will remove obsolete keys and add newly added keys. (Run `yarn` before to install packages).

Loading…
Cancel
Save