Esempio n. 1
0
    /// <summary>
    /// Load ghost information from a SAV file.
    /// </summary>
    /// <param name="trackName"></param>
    /// <param name="speed"></param>
    /// <returns></returns>
    public static GhostData LoadGhost(string trackName, E_SPEEDCLASS speed)
    {
        // create new ghost data and load file
        GhostData ghost = new GhostData();
        SAVDAT data = ReadSav(E_SAVELOCATIONS.GHOSTS, trackName + "_" + speed);

        // get ship from first line
        if (data.exists)
        {
            ghost.ship = (E_SHIPS)System.Convert.ToInt32(data.lines[0]);

            // read positions and rotations
            List<Vector3> positions = new List<Vector3>();
            List<Quaternion> rotations = new List<Quaternion>();
            int i = 0;
            int alt = 0;
            for (i = 1; i < data.lines.Length; ++i)
            {
                // get current line and remove whitespace
                string line = data.lines[i];
                line.Trim();

                // split it
                char[] split = { ' ' };
                string[] lineArray = line.Split(split, 50);

                // load positions/rotations
                if (alt == 0)
                    positions.Add(new Vector3(System.Convert.ToInt32(lineArray[0]), System.Convert.ToInt32(lineArray[1]), System.Convert.ToInt32(lineArray[2])));
                else if (alt == 1)
                    rotations.Add(new Quaternion(float.Parse(lineArray[0]), float.Parse(lineArray[1]), float.Parse(lineArray[2]), float.Parse(lineArray[3])));

                // increase alternate
                alt++;
                if (alt > 1)
                    alt = 0;
            }

            // convert to ghost data arrays
            ghost.positions = positions.ToArray();
            ghost.rotations = rotations.ToArray();
        }

        ghost.dataFound = data.exists;

        return ghost;
    }
Esempio n. 2
0
    /// <summary>
    /// Sava ghost information to a SAV file.
    /// </summary>
    /// <param name="trackName"></param>
    /// <param name="speed"></param>
    /// <param name="data"></param>
    public static void SaveGhost(string trackName, E_SPEEDCLASS speed,  GhostData data)
    {
        List<string> positions = new List<string>();
        List<string> rotations = new List<string>();
        List<string> lines = new List<string>();

        // populate data to write
        int i = 0;
        for (i = 0; i < data.positions.Length; ++i)
            positions.Add(string.Format("{0} {1} {2}", data.positions[i].x, data.positions[i].y, data.positions[i].z));

        for (i = 0; i < data.rotations.Length; ++i)
            rotations.Add(string.Format("{0} {1} {2} {4}", data.rotations[i].x, data.rotations[i].y, data.rotations[i].z, data.rotations[i].w));

        // pack into single string array
        lines.Add(((int)data.ship).ToString());
        for (i = 0; i < positions.Count; ++i)
            lines.Add(positions[i]);
        for (i = 0; i < rotations.Count;  ++i)
            lines.Add(rotations[i]);

        // create new save data and write
        SAVDAT sav = new SAVDAT();
        sav.lines = lines.ToArray();
        sav.saveLocation = E_SAVELOCATIONS.GHOSTS;

        WriteSav(sav, trackName + "_" + speed);
    }
Esempio n. 3
0
    /// <summary>
    /// Write a time record to a SAV file.
    /// </summary>
    /// <param name="trackName"></param>
    /// <param name="speed"></param>
    /// <param name="time"></param>
    public static void WriteTime(string trackName, E_SPEEDCLASS speed, float time)
    {
        SAVDAT data = new SAVDAT();
        data.saveLocation = E_SAVELOCATIONS.TIMES;
        data.lines = new string[1] { time.ToString() };

        WriteSav(data, trackName + "_" + speed);
    }
Esempio n. 4
0
    /// <summary>
    /// Read a time record from a SAV file.
    /// </summary>
    /// <param name="trackName"></param>
    /// <param name="speed"></param>
    /// <returns></returns>
    public static TimeData ReadTime(string trackName, E_SPEEDCLASS speed)
    {
        // read file
        SAVDAT data = ReadSav(E_SAVELOCATIONS.TIMES, trackName + "_" + speed);

        // return time
        TimeData td = new TimeData();
        if (data.exists)
            td.time = float.Parse(data.lines[0]);

        td.dataFound = data.exists;

        return td;
    }