Add more FPS to belt animation

This commit is contained in:
tobspr 2020-06-25 12:18:48 +02:00
parent e7b04fa6cc
commit 77ddef0170
110 changed files with 3873 additions and 461 deletions

View file

@ -10,6 +10,7 @@ export const CHANGELOG = [
"Add 'copy key' button to shape viewer",
"Fix deconstruct sound being played when right clicking hub",
"Add setting (on by default) to store the last used rotation per building instead of globally storing it (by Magos)",
"Add more FPS to the belt animation",
"Added chinese (traditional) translation",
"Updated translations",
],

View file

@ -1,21 +1,20 @@
import { Math_radians, Math_min, Math_max, Math_sqrt } from "../../core/builtins";
import { Math_sqrt } from "../../core/builtins";
import { globalConfig } from "../../core/config";
import { DrawParameters } from "../../core/draw_parameters";
import { gMetaBuildingRegistry } from "../../core/global_registries";
import { Loader } from "../../core/loader";
import { createLogger } from "../../core/logging";
import { Rectangle } from "../../core/rectangle";
import { AtlasSprite } from "../../core/sprites";
import { enumDirection, enumDirectionToVector, enumInvertedDirections, Vector } from "../../core/vector";
import { MetaBeltBaseBuilding } from "../buildings/belt_base";
import { BeltComponent } from "../components/belt";
import { Entity } from "../entity";
import { GameSystemWithFilter } from "../game_system_with_filter";
import { enumDirection, enumDirectionToVector, Vector, enumInvertedDirections } from "../../core/vector";
import { MapChunkView } from "../map_chunk_view";
import { gMetaBuildingRegistry } from "../../core/global_registries";
import { MetaBeltBaseBuilding } from "../buildings/belt_base";
import { defaultBuildingVariant } from "../meta_building";
import { GameRoot } from "../root";
import { createLogger } from "../../core/logging";
import { Rectangle } from "../../core/rectangle";
const BELT_ANIM_COUNT = 6;
export const BELT_ANIM_COUNT = 28;
const SQRT_2 = Math_sqrt(2);
const logger = createLogger("belt");
@ -31,36 +30,26 @@ export class BeltSystem extends GameSystemWithFilter {
[enumDirection.left]: Loader.getSprite("sprites/belt/left_0.png"),
[enumDirection.right]: Loader.getSprite("sprites/belt/right_0.png"),
};
/**b
/**
* @type {Object.<enumDirection, Array<AtlasSprite>>}
*/
this.beltAnimations = {
[enumDirection.top]: [
Loader.getSprite("sprites/belt/forward_0.png"),
Loader.getSprite("sprites/belt/forward_1.png"),
Loader.getSprite("sprites/belt/forward_2.png"),
Loader.getSprite("sprites/belt/forward_3.png"),
Loader.getSprite("sprites/belt/forward_4.png"),
Loader.getSprite("sprites/belt/forward_5.png"),
],
[enumDirection.left]: [
Loader.getSprite("sprites/belt/left_0.png"),
Loader.getSprite("sprites/belt/left_1.png"),
Loader.getSprite("sprites/belt/left_2.png"),
Loader.getSprite("sprites/belt/left_3.png"),
Loader.getSprite("sprites/belt/left_4.png"),
Loader.getSprite("sprites/belt/left_5.png"),
],
[enumDirection.right]: [
Loader.getSprite("sprites/belt/right_0.png"),
Loader.getSprite("sprites/belt/right_1.png"),
Loader.getSprite("sprites/belt/right_2.png"),
Loader.getSprite("sprites/belt/right_3.png"),
Loader.getSprite("sprites/belt/right_4.png"),
Loader.getSprite("sprites/belt/right_5.png"),
],
[enumDirection.top]: [],
[enumDirection.left]: [],
[enumDirection.right]: [],
};
for (let i = 0; i < BELT_ANIM_COUNT; ++i) {
this.beltAnimations[enumDirection.top].push(
Loader.getSprite("sprites/belt/forward_" + i + ".png")
);
this.beltAnimations[enumDirection.left].push(Loader.getSprite("sprites/belt/left_" + i + ".png"));
this.beltAnimations[enumDirection.right].push(
Loader.getSprite("sprites/belt/right_" + i + ".png")
);
}
this.root.signals.entityAdded.add(this.updateSurroundingBeltPlacement, this);
this.root.signals.entityDestroyed.add(this.updateSurroundingBeltPlacement, this);
this.root.signals.postLoadHook.add(this.computeBeltCache, this);
@ -283,8 +272,10 @@ export class BeltSystem extends GameSystemWithFilter {
// Try to give this item to a new belt
/* PERFORMANCE OPTIMIZATION */
// Original:
// const freeSlot = ejectorComp.getFirstFreeSlot();
// Replaced
if (ejectorSlot.item) {
// So, we don't have a free slot - damned!

View file

@ -7,19 +7,17 @@ import { ItemAcceptorComponent } from "../components/item_acceptor";
import { Loader } from "../../core/loader";
import { drawRotatedSprite } from "../../core/draw_utils";
import { Math_radians } from "../../core/builtins";
import { BELT_ANIM_COUNT } from "./belt";
export class ItemAcceptorSystem extends GameSystemWithFilter {
constructor(root) {
super(root, [ItemAcceptorComponent]);
this.underlayBeltSprites = [
Loader.getSprite("sprites/belt/forward_0.png"),
Loader.getSprite("sprites/belt/forward_1.png"),
Loader.getSprite("sprites/belt/forward_2.png"),
Loader.getSprite("sprites/belt/forward_3.png"),
Loader.getSprite("sprites/belt/forward_4.png"),
Loader.getSprite("sprites/belt/forward_5.png"),
];
this.underlayBeltSprites = [];
for (let i = 0; i < BELT_ANIM_COUNT; ++i) {
this.underlayBeltSprites.push(Loader.getSprite("sprites/belt/forward_" + i + ".png"));
}
}
update() {