private void FillLevel(TextWriter writer) { C3dReader reader = new C3dReader(); reader.Open(_c3dFile); writer.Write("Level: " + reader.GetParameter <Int16>("INFO:GAME_LEVEL").ToString()); reader.Close(); }
private void FillDate(TextWriter writer) { C3dReader reader = new C3dReader(); reader.Open(_c3dFile); string[] dateTime = reader.GetParameter <string[]>("INFO:TIME"); writer.Write("Date: " + int.Parse(dateTime[2]).ToString() + "/" + int.Parse(dateTime[1]).ToString() + "/" + int.Parse(dateTime[0]).ToString() + " " + int.Parse(dateTime[3]).ToString() + ":" + dateTime[4]); reader.Close(); }
private void GenerateLevelLayout(TextWriter writer) { double maxx = 0; double halt = 0; double running = 0; var culture = CultureInfo.InvariantCulture; C3dReader reader = new C3dReader(); reader.Open(_c3dFile); float previous = 0; Int16[] pos = new Int16[reader.FramesCount]; for (int i = 0; i < reader.FramesCount; i++) { Vector4[] frame = reader.ReadFrame(); if (frame[0].Z == 0) { halt++; } else { running++; } previous = frame[0].X; if (frame[0].X > maxx) { maxx = frame[0].X; } } int levelNum = -1; try { if ((levelNum = reader.GetParameter <Int16>("INFO:GAME_LEVEL")) < 1) { return; } } catch (ApplicationException e) { return; } finally { reader.Close(); } List <string> map = new List <string>(); var assembly = Assembly.GetCallingAssembly(); string templateName = assembly.GetManifestResourceNames() .Single(str => str.EndsWith("map" + levelNum + ".txt")); using (StreamReader mapReader = new StreamReader(assembly.GetManifestResourceStream(templateName))) { for (int i = 0; i < LEVEL_LINES && !mapReader.EndOfStream; i++) { map.Add(mapReader.ReadLine()); } } double tileSpace = PAGE_WIDTH * (running / (halt + running)); double tile = tileSpace / (maxx / TILE_PIXEL_WIDTH); StringBuilder playerPath = new StringBuilder(); reader = new C3dReader(); reader.Open(_c3dFile); double step = PAGE_WIDTH / reader.FramesCount; int lastTile = -1; double currentPosition = 0; double lastTilePosition = 0; int lastx = 0; for (int i = 0; i < reader.FramesCount; i++) { Vector4[] frame = reader.ReadFrame(); int x = (int)(frame[0].X / TILE_PIXEL_WIDTH); if (x > lastTile) { lastTile = x; if (currentPosition > (lastTilePosition + tile)) { double width = currentPosition - (lastTilePosition + tile); writer.WriteLine("<rect x=\"" + (20 + lastTilePosition + tile).ToString("F7", culture) + "\" y=\"" + (235 + (0 * tile)).ToString("F7", culture) + "\" width=\"" + width.ToString("F7", culture) + "\" height=\"" + (18 * tile).ToString("F7", culture) + "\" rx=\"" + (tile / 10).ToString("F7", culture) + "\" style=\"fill: rgb(222, 222, 222)\" />"); } for (int y = 0; y < map.Count; y++) { if (map[y].Length > x && (map[y][x] == 'l' || map[y][x] == 'm' || map[y][x] == 'r' || map[y][x] == '\\')) { writer.WriteLine("<rect x=\"" + (20 + currentPosition).ToString("F7", culture) + "\" y=\"" + (235 + (y * tile)).ToString("F7", culture) + "\" width=\"" + tile.ToString("F7", culture) + "\" height=\"" + tile.ToString("F7", culture) + "\" rx=\"" + (tile / 10).ToString("F7", culture) + "\" style=\"fill: rgb(102,102,102)\" />"); lastTilePosition = currentPosition; if (lastx < x) { lastx = x; } } } currentPosition += tile; } if (frame[0].Z == 0) { currentPosition += step; } } PAGE_WIDTH = currentPosition; reader.Close(); }