import { Optional, RULE_DIRECTION } from '..'; import { CollisionLayer } from '../models/collisionLayer'; import { GameData } from '../models/game'; import { Dimension } from '../models/metadata'; import * as ast from './astTypes'; declare type ColorId = string; declare type SpriteId = string; declare type TileId = string; declare type CollisionId = string; declare type BracketId = string; declare type NeighborId = string; declare type TileWithModifierId = string; declare type CommandId = string; declare type RuleId = string; declare type SoundId = string; interface ISourceNode { _sourceOffset: number; } interface IGraphSprite extends ISourceNode { name: string; pixels: Array>>; collisionLayer: CollisionId; } declare enum TILE_TYPE { OR = "OR", AND = "AND", SIMPLE = "SIMPLE", SPRITE = "SPRITE" } declare type GraphTile = ISourceNode & ({ type: TILE_TYPE.OR; name: string; sprites: SpriteId[]; collisionLayers: CollisionId[]; } | { type: TILE_TYPE.AND; name: string; sprites: SpriteId[]; collisionLayers: CollisionId[]; } | { type: TILE_TYPE.SIMPLE; name: string; sprite: SpriteId; collisionLayers: CollisionId[]; } | { type: TILE_TYPE.SPRITE; name: string; sprite: SpriteId; collisionLayer: CollisionId; }); interface IGraphGameMetadata { author: Optional; homepage: Optional; youtube: Optional; zoomscreen: Optional; flickscreen: Optional; colorPalette: Optional; backgroundColor: Optional; textColor: Optional; realtimeInterval: Optional; keyRepeatInterval: Optional; againInterval: Optional; noAction: boolean; noUndo: boolean; runRulesOnLevelStart: Optional; noRepeatAction: boolean; throttleMovement: boolean; noRestart: boolean; requirePlayerMovement: boolean; verboseLogging: boolean; } export default class Serializer { static fromJson(source: IGraphJson, code: string): GameData; private readonly game; private readonly colorsMap; private readonly spritesMap; private readonly soundMap; private readonly collisionLayerMap; private readonly conditionsMap; private readonly neighborsMap; private readonly tileWithModifierMap; private readonly tileMap; private readonly ruleMap; private readonly commandMap; private readonly winConditions; private orderedRules; private levels; constructor(game: GameData); buildCollisionLayer(item: CollisionLayer): string; metadataToJson(): IGraphGameMetadata; toJson(): IGraphJson; private buildLevel; private recBuildRule; private buildCommand; private buildConditionBracket; private buildNeighbor; private buildTileWithModifier; private buildTile; private buildSprite; private buildColor; private buildSound; } export interface IGraphJson { version: number; title: string; metadata: IGraphGameMetadata; colors: { [key: string]: string; }; sounds: { [key: string]: ast.SoundItem; }; collisionLayers: { [key: string]: ISourceNode; }; commands: { [key: string]: ast.Command; }; sprites: { [key: string]: IGraphSprite; }; tiles: { [key: string]: GraphTile; }; winConditions: Array>; tilesWithModifiers: { [key: string]: ast.TileWithModifier; }; neighbors: { [key: string]: ast.Neighbor; }; brackets: { [key: string]: ast.Bracket; }; ruleDefinitions: { [key: string]: ast.Rule; }; rules: RuleId[]; levels: Array>; } export {};