Exemplo n.º 1
0
        public bool Save(bool sign, ReplayInfo flag)
        {
            if (File.Exists(FileName))
            {
                File.Delete(FileName);
            }
            ReplayStream = File.Create(FileName);

            if (sign && (flag & ReplayInfo.Signed) != ReplayInfo.Signed)
            {
                flag |= ReplayInfo.Signed;
            }


            Writer = new ReplayWriter(ReplayStream, flag);
            if (SaveReplay(sign))
            {
                //    Writer.Compress(ReplayStream, FileName);
                ReplayStream.Close();
                Writer.Dispose();
                //File.Delete(FileName);
                //File.Move(FileName + ".gz", FileName);
                if (Directory.Exists(CacheDirectory))
                {
                    DeleteDirectory(CacheDirectory);
                }
                return(true);
            }

            ReplayStream.Close();
            Writer.Dispose();
            File.Delete(FileName);
            return(false);
        }
Exemplo n.º 2
0
        public string GetReplayInfo(int gameId)
        {
            GameLog    gameLog    = gameLogCollection[gameId];
            ReplayInfo replayInfo = new ReplayInfo(gameId, gameLog.LogOfGameStates, gameLog.LatestAction);

            return(ReplayInfo.ConvertToString(replayInfo));
        }
Exemplo n.º 3
0
    void OnClickStopSim()
    {
        SimulationManager.Instance.Stop();
        var        sim        = SimulationManager.Instance.GetSimulation(Const.CLIENT_SIMULATION_ID);
        ReplayInfo replayInfo = new ReplayInfo();

        replayInfo.OwnerId = GameClientData.SelfPlayer.Id;
        string path = Application.dataPath + "/" + string.Format("replay_client_{0}.rep", GameClientData.SelfPlayer.Id);

        replayInfo.Frames = sim.GetBehaviour <LogicFrameBehaviour>().GetFrameIdxInfos();
        var bytes = ReplayInfo.Write(replayInfo);

        File.WriteAllBytes(path, bytes);

        var frameData = sim.GetBehaviour <ComponentsBackupBehaviour>().GetEntityWorldFrameData();
        var outstring = GameEntityWorldLog.Write(frameData, GameClientData.SelfPlayer.Id);

        File.WriteAllText(Application.dataPath + "/" + string.Format("log_client_{0}.txt", GameClientData.SelfPlayer.Id)
                          , outstring);


        Debug.Log("create replay " + path);

        SimulationManager.Instance.RemoveSimulation(sim);
    }
Exemplo n.º 4
0
    void OnClickPlayReplay()
    {
        Simulation sim   = new Simulation(Const.CLIENT_SIMULATION_ID);
        var        bytes = File.ReadAllBytes(Application.dataPath + "/replay_client_-695972864.rep");
        var        info  = ReplayInfo.Read(bytes);

        sim.AddBehaviour(new ReplayLogicFrameBehaviour());
        sim.AddBehaviour(new EntityBehaviour());
        sim.AddBehaviour(new ReplayInputBehaviour());
        EntityMoveSystem      moveSystem     = new EntityMoveSystem();
        FrameClockSystem      frameClock     = new FrameClockSystem();
        EntityCollisionSystem colliderSystem = new EntityCollisionSystem();
        RemoveEntitySystem    removeSystem   = new RemoveEntitySystem();

        sim.GetBehaviour <EntityBehaviour>().
        AddSystem(moveSystem).
        AddSystem(frameClock).
        AddSystem(colliderSystem).
        AddSystem(removeSystem);
        sim.GetBehaviour <ReplayLogicFrameBehaviour>().SetFrameIdxInfos(info.Frames);

        SimulationManager.Instance.AddSimulation(sim);
        SimulationManager.Instance.Start();
        IsReplayMode = true;
    }
Exemplo n.º 5
0
    public void SaveReplay(int index, string name, STGData data)
    {
        if (Global.IsInReplayMode)
        {
            return;
        }
        ReplayInfo info = new ReplayInfo
        {
            replayIndex    = index,
            name           = name,
            dateTick       = System.DateTime.Now.Ticks,
            lastFrame      = STGStageManager.GetInstance().GetFrameSinceStageStart(),
            stageName      = data.stageName,
            characterIndex = data.characterIndex,
        };
        ReplayData repData = new ReplayData();

        repData.info      = info;
        repData.keyList   = OperationController.GetInstance().GetOperationKeyList();
        repData.lastFrame = STGStageManager.GetInstance().GetFrameSinceStageStart();
        repData.seed      = data.seed;
        // 写入info文件
        WriteRepInfoFile(info);
        WriteRepDataFile(repData);
    }
Exemplo n.º 6
0
 private void OnPressKeyZ()
 {
     if (_mode == eReplayViewMode.Save)
     {
         _viewState = eViewState.EditReplayName;
         _itemList[_selectIndex].EditReplayName(OnEditEndCallback);
     }
     else if (_mode == eReplayViewMode.Load)
     {
         ReplayInfo info = _infoList[_selectIndex];
         if (info.replayIndex != -1)
         {
             bool isSuccess = ReplayManager.GetInstance().LoadReplay(info.replayIndex);
             if (isSuccess)
             {
                 Logger.Log("Load replay" + info.replayIndex + " success!");
                 SoundManager.GetInstance().Play("se_selectok", Consts.DefaultUISEVolume, false, false);
             }
             else
             {
                 Logger.Log("Load replay" + info.replayIndex + " fail!");
             }
         }
     }
 }
Exemplo n.º 7
0
    private void InitReplayItemInfo()
    {
        // 初始化
        _infoList = new List <ReplayInfo>();
        ReplayInfo info;

        for (int i = 0; i < MaxInfoCount; i++)
        {
            info = new ReplayInfo
            {
                replayIndex = -1,
            };
            _infoList.Add(info);
        }
        // 读取replay的信息
        List <ReplayInfo> infos = ReplayManager.GetInstance().GetReplayInfoList();

        _infoCount = infos.Count;
        for (int i = 0; i < _infoCount; i++)
        {
            info = infos[i];
            _infoList[info.replayIndex] = info;
        }
        // 更新ReplayItem的显示
        for (int i = 0; i < MaxInfoCount; i++)
        {
            ReplayItem item = _itemList[i];
            item.SetInfo(_infoList[i]);
        }
    }
Exemplo n.º 8
0
        public void PlayAllReplayObservable(IReplayReader reader, ReplayInfo info)
        {
            foreach (var childEntity in _childEntities)
            {
                if (Debug.isDebugBuild)
                {
                    var name = reader.ReadString();
                    var ent  = childEntity.ToString().Split('(')[0].Split(' ')[0];
                    name = name.Split('(')[0].Split(' ')[0];
                    Assert.AreEqual(name, ent, $"Expected: {name}, Actual {childEntity}, called by {name} at stage {info.ReplayStateMode}");

                    var recordedPos = reader.ReadInt32() + info.PositionOffset;
                    var playedPos   = (int)reader.GetStream().Position;
                    Assert.AreEqual(recordedPos, playedPos,
                                    "REPLAY STREAM NOT IN SYNC!  at stage " + info.ReplayStateMode + "  | " + childEntity + " :: " + childEntity.GetType() + " : " +
                                    " :: Expected Stream Position: " + (recordedPos) + " :: Actual Position: " + playedPos);
                }


                childEntity.OnReplayPlay(reader, info);


                if (Debug.isDebugBuild)
                {
                    var recordedPos = reader.ReadInt32() + info.PositionOffset;
                    var playedPos   = (int)reader.GetStream().Position;
                    Assert.AreEqual(recordedPos, playedPos,
                                    "REPLAY STREAM NOT IN SYNC!  at stage " + info.ReplayStateMode + "  | " + childEntity + " :: " + childEntity.GetType() + " : " +
                                    " :: Expected Stream Position: " + (recordedPos) + " :: Actual Position: " + playedPos);
                }
            }
        }
 public void OnReplayPlayInit(ReplayInfo info)
 {
     _targetStartPosition = _targetPosition;
     _targetStartRotation = _targetRotation;
     _timer     = 0f;
     _timerDiff = info.Delta;
 }
Exemplo n.º 10
0
 public void PlayAllReplayObservableConstruction(IReplayReader reader, ReplayInfo info)
 {
     foreach (var childEntity in _childEntities)
     {
         childEntity.OnReplayPlayInit(info);
     }
 }
Exemplo n.º 11
0
    private void PrepareReplay()
    {
        _view.SetVisibility(false);
        foreach (var replay in _replays)
        {
            if (replay.Character != null)
            {
                Destroy(replay.Character.gameObject);
            }
        }
        _replays.Clear();

        foreach (var turn in _turns)
        {
            ReplayInfo replay = new ReplayInfo();
            replay.Character = Instantiate(_characters[turn.CharacterType], _level.SpawnPoint, Quaternion.identity);
            replay.Character.GetComponent <InputController>().enabled = false;
            _replays.Add(replay);
        }

        foreach (var component in _replayUpdatesComponents)
        {
            component.OnBeforeReplay();
        }
        foreach (var component in _toRemove)
        {
            _replayUpdatesComponents.Remove(component);
        }
        _toRemove.Clear();

        _time = 0;
        SetIsPlaying(true);
    }
Exemplo n.º 12
0
            public ReplayComponent(PPDDevice device, PPDFramework.Resource.ResourceManager resourceManager, ReplayInfo replay, SongInformation songInfo, WebSongInformation webSongInfo, Difficulty difficulty) : base(device)
            {
                this.resourceManager = resourceManager;
                Replay      = replay;
                SongInfo    = songInfo;
                WebSongInfo = webSongInfo;
                Difficulty  = difficulty;

                var color = songInfo == null ? PPDColors.Gray : PPDColors.White;

                AddChild(new TextureString(device, String.Format("{0}[{1}]", songInfo == null ? webSongInfo.Title : songInfo.DirectoryName, difficulty), 20, 400, color)
                {
                    AllowScroll = true
                });
                this.AddChild(new TextureString(device, replay.Nickname, 20, 300, color)
                {
                    AllowScroll = true,
                    Position    = new Vector2(700, 0),
                    Alignment   = Alignment.Right
                });
                AddChild(new TextureString(device, String.Format("{0}:{1} C{2} G{3} SF{4} SD{5} W{6} MC{7}", Utility.Language["Score2"], replay.Score,
                                                                 replay.CoolCount, replay.GoodCount, replay.SafeCount, replay.SadCount, replay.WorstCount, replay.MaxCombo), 16, 700, color)
                {
                    Position    = new Vector2(0, 26),
                    AllowScroll = true
                });
            }
Exemplo n.º 13
0
 public ReplayWriter(Stream stream, ReplayInfo flag)
     : base(stream)
 {
     _stream     = stream;
     Hasher      = new StreamSHA1();
     ReplayFlags = flag;
     Write((uint)flag);
 }
Exemplo n.º 14
0
        public ReplayReader(Stream stream)
            : base(stream)
        {
            RepStream = this.BaseStream;
            Hasher    = new StreamSHA1();

            ReplayFlags = (ReplayInfo)ReadUInt32();
        }
Exemplo n.º 15
0
    private void OnEditEndCallback(string repName)
    {
        ReplayInfo info = new ReplayInfo();

        info.name        = repName;
        info.replayIndex = _selectIndex;
        CommandManager.GetInstance().Register(CommandConsts.SaveReplaySuccess, this);
        CommandManager.GetInstance().RunCommand(CommandConsts.SaveReplay, info);
    }
Exemplo n.º 16
0
        public static void Main(string[] args)
        {
            var        replay_file = @"C:\programdata\faforever\cache\temp.scfareplay";
            var        start       = DateTime.Now;
            ReplayInfo info        = null;

            using (var stream = new FileStream(replay_file, FileMode.Open, FileAccess.Read, FileShare.ReadWrite, 8192))
            {
                var parser = new Replay.ReplayParser(stream);
                info = parser.Parse();
            }
        }
Exemplo n.º 17
0
 public UserControlReplay(ReplayInfo replayInfo)
 {
     InitializeComponent();
     this.replayInfo    = replayInfo;
     nextMove           = 0;
     seatsHaveBeenTaken = false;
     seats = new Seat[9] {
         new Seat(ImgSmallBigBlind1, TxtUsername1, TxtChips1, TxtBet1), new Seat(ImgSmallBigBlind2, TxtUsername2, TxtChips2, TxtBet2), new Seat(ImgSmallBigBlind3, TxtUsername3, TxtChips3, TxtBet3),
         new Seat(ImgSmallBigBlind4, TxtUsername4, TxtChips4, TxtBet4), new Seat(ImgSmallBigBlind5, TxtUsername5, TxtChips5, TxtBet5), new Seat(ImgSmallBigBlind6, TxtUsername6, TxtChips6, TxtBet6),
         new Seat(ImgSmallBigBlind7, TxtUsername7, TxtChips7, TxtBet7), new Seat(ImgSmallBigBlind8, TxtUsername8, TxtChips8, TxtBet8), new Seat(ImgSmallBigBlind9, TxtUsername9, TxtChips9, TxtBet9)
     };
 }
Exemplo n.º 18
0
        public ReplayManager(string path)
        {
            var infoFile = System.IO.Path.Combine(path, "info.xml");

            _info = ReplayInfo.ReadFromFile(infoFile);
            _in   =
                new NetworkMessageReplay(_info.InBinName,
                                         new AppMessageTypeInfo("replay.in", 1));
            _out =
                new NetworkMessageReplay(_info.OutBinName,
                                         new AppMessageTypeInfo("replay.out", 1));
        }
Exemplo n.º 19
0
        public ReplayInfo ReadReplayInfo(string path)
        {
            Stream stream;

            using (var fs = File.OpenRead(path))
            {
                // decompress if needed
                if (path.ToLower().EndsWith("sdfz"))
                {
                    stream = new GZipStream(fs, CompressionMode.Decompress);
                }
                else
                {
                    stream = fs;
                }

                var br     = new BinaryReader(stream);
                var header = br.ReadStruct <DemoFileHeader>();

                var script = Encoding.UTF8.GetString(br.ReadBytes(header.scriptSize));
                var chunks = ScriptChunk.ChunkifyScript(script);

                var mapName  = Regex.Match(script, "mapname=([^;]+)", RegexOptions.IgnoreCase).Groups[1].Value;
                var gameName = Regex.Match(script, "gametype=([^;]+)", RegexOptions.IgnoreCase).Groups[1].Value;


                List <ReplayInfo.PlayerEntry> players = new List <ReplayInfo.PlayerEntry>();
                foreach (var playerChunk in chunks.Where(x => x.Type == "player" || x.Type == "ai"))
                {
                    players.Add(new ReplayInfo.PlayerEntry()
                    {
                        Name        = playerChunk["name"],
                        AllyTeam    = chunks.Where(x => x.Type == "team" && x.Id.ToString() == playerChunk["team"]).Select(x => x["allyteam"]).FirstOrDefault().ToInt(),
                        IsSpectator = playerChunk["spectator"] == "1",
                        IsBot       = playerChunk.Type == "ai"
                    });
                }

                var ret = new ReplayInfo()
                {
                    Engine               = header.versionString,
                    Game                 = gameName,
                    Map                  = mapName,
                    StartScript          = script,
                    Date                 = header.unixTime.UnixToDateTime(),
                    GameLengthRealtime   = header.wallclockTime,
                    GameLengthIngameTime = header.gameTime,
                    GameID               = header.gameID.ToHex(),
                    Players              = players
                };
                return(ret);
            }
        }
Exemplo n.º 20
0
 /// <summary>
 /// Begining of the Replay class
 /// </summary>
 /// <param name="DirectoryPath">Path to the replay directory</param>
 public Replay(string DirectoryPath)
 {
     Path    = DirectoryPath;
     Info    = DecryptReplayInfoFile();
     Summary = DecryptReplaySummaryFile();
     for (int i = 0; i < Summary.NumTeammates; i++)
     {
         if (Utils.Utils.CreateMD5(Summary.Teammates[i].PlayerID.ToString()) == Info.RecordUserId)
         {
             Summary.Teammates[i].IsRecordingUser = true;
             break;
         }
     }
 }
Exemplo n.º 21
0
    /// <summary>
    /// 保存并播放replay
    /// </summary>
    private void OnSaveReplay(ReplayInfo info)
    {
        Logger.Log("Save Replay");
        ReplayManager.GetInstance().SaveReplay(info.replayIndex, info.name, _stgData);
        CommandManager.GetInstance().RunCommand(CommandConsts.SaveReplaySuccess);
        // 以replay模式重新播放
        //Global.IsInReplayMode = true;

        //_curState = StateClear;
        //_nextStageName = _curStageName;
        //// 打开loadingView
        //List<object> commandList = new List<object>();
        //commandList.Add(CommandConsts.STGLoadStageLuaComplete);
        //object[] commandArr = commandList.ToArray();
        //UIManager.GetInstance().ShowView(WindowName.GameLoadingView, commandArr);
    }
Exemplo n.º 22
0
        private async void DataGridRow_MouseDoubleClick(object sender, MouseButtonEventArgs e)
        {
            DataGridRow row      = sender as DataGridRow;
            int         index    = row.GetIndex();
            int         replayID = results[index].GameID;
            ReplyString accept;

            try
            {
                accept = await Client.GetReplayInfo(replayID);

                if (!accept.Sucsses)
                {
                    MessageBox.Show(accept.ErrorMessage, "Warning");
                }
                else
                {
                    String     replayInfoString = accept.StringContent;
                    ReplayInfo replayInfo       = new ReplayInfo(replayInfoString);

                    if (!UserControlTabs.firstInitiate)
                    {
                        (UserControlTabs.userControlTabs.tabControl.SelectedItem as TabItem).Header = "Replay";
                        TabItem newTabItem = new TabItem();
                        newTabItem.Header = "Menu";
                        Menu newMenu = new Menu();
                        newMenu.btnLogout.Visibility = Visibility.Hidden;
                        newTabItem.Content           = newMenu;
                        UserControlTabs.userControlTabs.tabControl.Items.Add(newTabItem);
                        UserControlReplay replay = new UserControlReplay(replayInfo);
                        this.Content = replay;
                    }
                    else
                    {
                        UserControlTabs.firstInitiate   = false;
                        UserControlTabs.userControlTabs = new UserControlTabs();
                        UserControlTabs.userControlTabs.firstTab.Content = new UserControlReplay(replayInfo);
                        UserControlTabs.userControlTabs.firstTab.Header  = "Replay";
                        this.Content = UserControlTabs.userControlTabs;
                    }
                }
            }
            catch (HttpRequestException exception)
            {
                MessageBox.Show(exception.Message, "Warning");
            }
        }
Exemplo n.º 23
0
    /// <summary>
    /// 将info写入RepInfo文件中
    /// </summary>
    /// <param name="info"></param>
    private void WriteRepInfoFile(ReplayInfo info)
    {
#if UseReplayInfoFile
        string          path = Application.streamingAssetsPath + "/Rep/data.ri";
        FileStream      fs   = new FileStream(path, FileMode.Open);
        BinaryFormatter bf   = new BinaryFormatter();
        ReplayInfos     tmp  = (ReplayInfos)bf.Deserialize(fs);
        fs.Close();
        bool isExist = false;
        for (int i = 0; i < tmp.infos.Count; i++)
        {
            if (tmp.infos[i].replayIndex == info.replayIndex)
            {
                isExist      = true;
                tmp.infos[i] = info;
                break;
            }
        }
        if (!isExist)
        {
            tmp.infos.Add(info);
        }
        fs = new FileStream(path, FileMode.Truncate);
        bf = new BinaryFormatter();
        bf.Serialize(fs, tmp);
        fs.Close();
        // 将更新后的info赋值
        _replayInfoList = tmp.infos;
#else
        bool isExist = false;
        for (int i = 0; i < _replayInfoList.Count; i++)
        {
            if (_replayInfoList[i].replayIndex == info.replayIndex)
            {
                isExist            = true;
                _replayInfoList[i] = info;
                break;
            }
        }
        if (!isExist)
        {
            _replayInfoList.Add(info);
        }
#endif
    }
Exemplo n.º 24
0
        public void RecordAllReplayObservable(IReplayWriter writer, ReplayInfo info)
        {
            foreach (var childEntity in _childEntities)
            {
                if (Debug.isDebugBuild)
                {
                    // sizeof(int) weil die position um 4 nachruckt
                    writer.Write(childEntity.ToString());
                    writer.Write((int)writer.GetStream().Position + sizeof(int));
                }

                childEntity.OnReplayRecord(writer, info);

                if (Debug.isDebugBuild)
                {
                    writer.Write((int)writer.GetStream().Position + sizeof(int));
                }
            }
        }
Exemplo n.º 25
0
        public ReplayBorderPanel(ReplayInfo flags)
        {
            if ((flags & ReplayInfo.PBE) == ReplayInfo.PBE)
            {
                P1 = new Pen(Color.FromArgb(0, 0, 255));
                P2 = new Pen(Color.FromArgb(20, 20, 255));
            }
            else if ((flags & ReplayInfo.Signed) == ReplayInfo.Signed)
            {
                P1 = new Pen(Color.FromArgb(0, 255, 0));
                P2 = new Pen(Color.FromArgb(20, 255, 20));
            }

            else
            {
                P1 = new Pen(Color.FromArgb(255, 0, 0));
                P2 = new Pen(Color.FromArgb(255, 20, 20));
            }
        }
Exemplo n.º 26
0
            public ObservableReplay(ReplayInfo replayInfo, PlayerInfo playerInfo)
            {
                Date         = replayInfo.dateTime;
                PlayerName   = playerInfo.PlayerName;
                PlayerUserId = playerInfo.PlayerUserId.ToString();
                if (FindPersonanameFromSteamID64.ContainsKey(playerInfo.Profile))
                {
                    Profile = "[" + FindPersonanameFromSteamID64[playerInfo.Profile] + "] " + playerInfo.Profile.ToString();
                }
                else
                {
                    string tempPersonaName = "";
                    try
                    {
                        string       rt;
                        WebRequest   request    = WebRequest.Create(api + "?key=" + key + "&steamids=" + playerInfo.Profile);
                        WebResponse  response   = request.GetResponse();
                        Stream       dataStream = response.GetResponseStream();
                        StreamReader reader     = new StreamReader(dataStream);
                        rt = reader.ReadToEnd();
                        reader.Close();
                        response.Close();
                        JObject PlayerSummariesJson = JObject.Parse(rt);
                        tempPersonaName = (string)PlayerSummariesJson["response"]["players"][0]["personaname"];
                        FindPersonanameFromSteamID64[playerInfo.Profile] = tempPersonaName;
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex);
                    }
                    Profile = "[" + tempPersonaName + "] " + playerInfo.Profile.ToString();
                }

                PlayerDeckName = playerInfo.PlayerDeckName;
                List <string> playerArray = replayInfo.playerInfos.ConvertAll(x => x.PlayerName);

                Players           = string.Join(", ", playerArray.ToArray());
                Map               = replayInfo.GameInfo.Map;
                PlayerDeckContent = playerInfo.PlayerDeckContent;
            }
Exemplo n.º 27
0
        public void SetInfo(ReplayInfo info)
        {
            if (info.replayIndex != -1)
            {
                _repNameText.text = info.name;
                DateTime date = new DateTime(info.dateTick);
                _dateText.text = date.ToString("yyyy/MM/dd");
                _charText.text = PlayerInterface.GetInstance().GetCharacterNameByIndex(info.characterIndex);

                date = new DateTime();
                int sec = Mathf.RoundToInt(info.lastFrame / 60);
                date = date.AddSeconds(sec);
                _durationText.text = date.ToString("mm:ss");
            }
            else
            {
                _repNameText.text  = "---------------";
                _dateText.text     = "----/--/--";
                _charText.text     = "------";
                _durationText.text = "--:--";
            }
        }
Exemplo n.º 28
0
        public RecordManager(string path)
        {
            _infoFile           = System.IO.Path.Combine(path, "info.xml");
            _path               = path;
            _info               = new ReplayInfo();
            _info.LocalVersion  = Version.Instance.LocalVersion;
            _info.LocalAsset    = Version.Instance.LocalAsset;
            _info.RemoteAsset   = Version.Instance.RemoteAsset;
            _info.RemoteVersion = Version.Instance.RemoteVersion;
            _info.DateTime      = String.Format("{0:yyyy_M_d_HH_mm_ss}_{1}", DateTime.Now, new Random().Next(1, 1000));
            _info.InBinName     = System.IO.Path.Combine(path, "in.bin");
            _info.OutBinName    = System.IO.Path.Combine(path, "out.bin");
            System.IO.Directory.CreateDirectory(path);

            UpdateInfoToFile();
            _in =
                new NetworkMessageRecoder(_info.InBinName,
                                          new AppMessageTypeInfo("recoder", 1));
            _out =
                new NetworkMessageRecoder(_info.OutBinName,
                                          new AppMessageTypeInfo("recoder", 1));
        }
Exemplo n.º 29
0
 public void Add(ReplayInfo info)
 {
     replayInfoCollection.Add(info);
 }
Exemplo n.º 30
0
 public void UpdateInfoToFile()
 {
     ReplayInfo.WriteToFile(_infoFile, _info);
 }