E.W.O. Next / All files / src/engine/Maps CoordsTools.ts

80.95% Statements 17/21
100% Branches 12/12
60% Functions 3/5
80% Lines 16/20

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64        4x       4x 4x   7x   5x             4x   4x   4x 3x     4x 3x     4x 3x     4x     4x                       4x                        
/**
 * @module Engine.Maps
 * Coords Tools
 */
import { CharactersTools } from '@engine/Characters/CharacterTools';
import { ICharactersState } from '@engine/Characters/reducers';
import { Coord, CoordCharacterFrontend, CoordDatabase } from '@models';
 
export class CoordsTools {
  public static hydrater = (source: CoordDatabase, additionnalData: ICharactersState): Coord => {
 
    const character = additionnalData.find(c => c.mat === source.mat);
 
    return {
      x: source.x !== undefined ? source.x : null,
      y: source.y !== undefined ? source.y : null,
      character: character !== undefined ? character : null,
    };
  }
 
  public static serializer = (source: Coord): CoordDatabase => {
 
    const coordJson: Partial<CoordDatabase> = {};
 
    if (source.x !== null) {
      coordJson.x = source.x;
    }
 
    if (source.y !== null) {
      coordJson.y = source.y;
    }
 
    if (source.character !== null) {
      coordJson.mat = source.character.mat;
    }
 
    return coordJson as CoordDatabase;
  }
 
  public static toFrontend = (source: Coord): CoordCharacterFrontend => {
 
    const character = CharactersTools.toFrontEnd(source.character);
 
    return {
      x: source.x,
      y: source.y,
      character,
      type: 'cha',
    };
  }
 
  public static toFrontendLimited = (source: Coord): CoordCharacterFrontend => {
 
    const character = CharactersTools.toFrontEndLimited(source.character);
 
    return {
      x: source.x,
      y: source.y,
      character,
      type: 'cha',
    };
  }
}