Exemplo n.º 1
0
        private void FillLevel(TextWriter writer)
        {
            C3dReader reader = new C3dReader();

            reader.Open(_c3dFile);
            writer.Write("Level: " + reader.GetParameter <Int16>("INFO:GAME_LEVEL").ToString());
            reader.Close();
        }
Exemplo n.º 2
0
        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();
        }
Exemplo n.º 3
0
        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();
        }