1
0
mirror of https://github.com/tobspr/shapez.io.git synced 2025-06-13 13:04:03 +00:00

Changed to consider floating point error in the process of subtracting time

This commit is contained in:
isaisstillalive 2020-07-15 23:20:15 +09:00
parent 27921e9d0e
commit 65ced2e44d
3 changed files with 7 additions and 5 deletions

View File

@ -8,6 +8,7 @@ import { ItemEjectorComponent } from "../components/item_ejector";
import { Entity } from "../entity";
import { GameSystemWithFilter } from "../game_system_with_filter";
import { enumLayer } from "../root";
import { quantizeFloat } from "../../core/utils";
const logger = createLogger("systems/ejector");
@ -225,7 +226,7 @@ export class ItemEjectorSystem extends GameSystemWithFilter {
);
// Check if we are still in the process of ejecting, can't proceed then
if (sourceSlot.progress < 1.0) {
if (quantizeFloat(sourceSlot.progress) < 1.0) {
continue;
}

View File

@ -6,6 +6,7 @@ import { Entity } from "../entity";
import { GameSystemWithFilter } from "../game_system_with_filter";
import { ColorItem } from "../items/color_item";
import { ShapeItem } from "../items/shape_item";
import { quantizeFloat } from "../../core/utils";
export class ItemProcessorSystem extends GameSystemWithFilter {
constructor(root) {
@ -31,7 +32,7 @@ export class ItemProcessorSystem extends GameSystemWithFilter {
// Check if we have any finished items we can eject
if (
processorComp.secondsUntilEject === 0 && // it was processed in time
quantizeFloat(processorComp.secondsUntilEject) == 0 && // it was processed in time
processorComp.itemsToEject.length > 0 // we have some items left to eject
) {
for (let itemIndex = 0; itemIndex < processorComp.itemsToEject.length; ++itemIndex) {

View File

@ -12,7 +12,7 @@ import {
import { enumUndergroundBeltMode, UndergroundBeltComponent } from "../components/underground_belt";
import { Entity } from "../entity";
import { GameSystemWithFilter } from "../game_system_with_filter";
import { fastArrayDelete } from "../../core/utils";
import { fastArrayDelete, quantizeFloat } from "../../core/utils";
import { enumLayer } from "../root";
const logger = createLogger("tunnels");
@ -362,7 +362,7 @@ export class UndergroundBeltSystem extends GameSystemWithFilter {
const nextItem = nextItemAndDuration[0];
// Check if the item is ready to be emitted
if (remainingTime === 0) {
if (quantizeFloat(remainingTime) == 0) {
// Check if the receiver can accept it
if (
receiver.entity.components.UndergroundBelt.tryAcceptTunneledItem(
@ -392,7 +392,7 @@ export class UndergroundBeltSystem extends GameSystemWithFilter {
const remainingTime = nextItemAndDuration[1];
const nextItem = nextItemAndDuration[0];
if (remainingTime <= 0) {
if (quantizeFloat(remainingTime) == 0) {
const ejectorComp = entity.components.ItemEjector;
const nextSlotIndex = ejectorComp.getFirstFreeSlot(entity.layer);