public IngameScreen(IngameScene scene, float renderOffset, EngineScreen engineScreen, IngameScreenMessage[] messages) { _scene = scene; _renderOffset = renderOffset; _actionBrickRenders = new List <RendererActionBrick>(); _glyphRenderers = new List <RendererGlyph>(); _smokeParticles = new List <ParticleSmoke>(); _stoneParticles = new List <ParticleStone>(); _messages = new List <IngameScreenMessage>(messages); IsCompleted = false; var parser = new EngineParser(engineScreen.Tiles); _solution = parser.Parse(); if (_solution.Count > S.MaxActionsInLevel) { throw new Exception("Screen has more than 9 actions in its solution"); } for (var x = 0; x < engineScreen.Width; x++) { for (var y = 0; y < engineScreen.Height; y++) { if (engineScreen.Tiles[x, y].Type == EngineGlyphType.Nothing) { continue; } _glyphRenderers.Add(new RendererGlyph(engineScreen.Tiles[x, y].Type, x, y, engineScreen.Width, engineScreen.Height)); } } }
public static string SerializeScreen(EngineScreen screen) { var result = new StringBuilder(screen.Width * screen.Height * 4); result.Append(screen.Width); result.Append(screen.Height); result.Append("\n"); for (var y = 0; y < screen.Height; y++) { for (var x = 0; x < screen.Width; x++) { var tileString = screen.Tiles[x, y]; result.Append(EngineSerializerGlyphs.GlyphToStringMap[tileString.Type]); result.Append(" "); } result.Append("\n"); } return(result.ToString()); }
public ScreenData(EngineScreen egineScreen, params IngameScreenMessage[] messages) { EgineScreen = egineScreen ?? throw new ArgumentNullException(nameof(egineScreen)); Messages = messages; }