public ReplayRecorder(IRegion region, string gameId, string encKey)
 {
     GameId = gameId;
     EncKey = encKey;
     writer = new ReplayWriter(region, gameId);
     Getter = new Getter(region, gameId);
 }
        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);
        }
Example #3
0
    // Use this for initialization
    void Start()
    {
        currentReplayStep = new ReplayReader.ReplayStep();

        alreadyGenerateStatistic = false;
        matchResults             = new List <uint>();

        grid       = gameObject.GetComponent <Grid>();
        scenarioId = grid.scenarioId;
        academy    = FindObjectOfType(typeof(BombermanAcademy)) as BombermanAcademy;

        playerManager = ServiceLocator.getManager(scenarioId).GetPlayerManager();
        bombManager   = ServiceLocator.getManager(scenarioId).GetBombManager();
        blocksManager = ServiceLocator.getManager(scenarioId).GetBlocksManager();

        playerManager.initInitialPositions(grid);

        ServiceLocator.getManager(scenarioId).GetLogManager().episodePrint(playerManager.getEpisodeCount());

        playerManager.setRandomizeIterationOfAgents(randomizeIterationOfAgents);

        //Vector3 monitorPosition = transform.position + new Vector3(-3, 4, 1); // scene sem imitação
        Vector3 monitorPosition = transform.position + new Vector3(-6.72f, 4, -4.51f);

        myMonitor = Instantiate(monitorPrefab, monitorPosition, Quaternion.identity, transform.parent);
        Monitor.Log("Last Result:", "draw", myMonitor.transform);
        Monitor.Log("Iteration:", "0 / " + maxIterationString, myMonitor.transform);
        Monitor.Log("Episode:", "1", myMonitor.transform);
        Monitor.Log("Scenario:", transform.parent.gameObject.name, myMonitor.transform);

        iterationWhereWasCreatedBombs = 0;
        numberOfBombsByCreation       = 1;

        // replay
        if (saveReplay)
        {
            replayWriter = new ReplayWriter(scenarioId);
        }

        if (followReplayFile)
        {
            replayReader = new ReplayReader(replayFileName);
            ReplayReader.ReplayStep rStep = replayReader.readStep(ReplayCommandLine.RCL_Episode);
            if (rStep.command == ReplayCommandLine.RCL_Episode)
            {
                currentReplayStep.epId = rStep.epId;
            }
            else
            {
                Debug.Log("Nao e pra entrar aqui. Leitura de episódio errada");
            }
        }

        //Debug.Log("Criando MapController");
        createAgents();
        initBlocks();

        wasInitialized = true;
        reseting       = false;
    }
        public override void WriteObjectsIdsAndNames()
        {
            var entities = new List <ReplayEntity>();

            var i = 0;

            foreach (var replayEntity in ReplayEntities.Where(replayEntity => !BaseFrame.FrameEntities.Contains(replayEntity)))
            {
                entities.Add(replayEntity);
                i++;
            }

            var j = 0;

            foreach (var replayEntity in BaseFrame.FrameEntities.Where(replayEntity => !ReplayEntities.Contains(replayEntity)))
            {
                entities.Add(replayEntity);
                j++;
            }

            ReplayWriter.Write((byte)(i + j));
            for (var z = 0; z < (i + j); z++)
            {
                ReplayWriter.Write(entities[z].Id);
                if (z < i) // instantiate those
                {
                    ReplayWriter.Write(entities[z].GameObjectName);
                }
                else if (z < (j + i))       // delete those
                {
                    ReplayWriter.Write(""); // u dont need the name for objects to delte cause they exist already
                }
            }
        }
Example #5
0
        public override void WriteObjectsIdsAndNames()
        {
            ReplayWriter.Write(ReplayEntities.Count);

            foreach (var replayEntity in ReplayEntities)
            {
                ReplayWriter.Write(replayEntity.Id);
                ReplayWriter.Write(replayEntity.GameObjectName);
                ReplayWriter.Write(replayEntity.transform.position);
                ReplayWriter.Write(replayEntity.transform.rotation);
            }

            FrameEntities = new List <ReplayEntity>(ReplayEntities);
        }
Example #6
0
        public void End()
        {
            Program.GameMess.OnMessage -= GameMess_OnMessage;

            SaveHistory();
            ReplayWriter?.Dispose();
            ReplayEngine?.Dispose();
            _logStream?.Dispose();

            Program.GameEngine = null;
            Player.Reset();
            Card.Reset();
            CardIdentity.Reset();
            Selection.Clear();
        }
Example #7
0
 protected void WriteFrameTime(float time)
 {
     ReplayWriter.Write(time);
     //Debug.Log("Frametime Write " + FrameTime);
 }
Example #8
0
 protected void WriteDeltaFrameCount(float deltaFrames)
 {
     ReplayWriter.Write((byte)deltaFrames);
 }
Example #9
0
        public GameEngine(Game def, string nickname, bool specator, string password = "", bool isLocal = false)
        {
            History = new JodsEngineHistory(def.Id);
            if (Program.IsHost)
            {
                History.Name = Program.CurrentOnlineGameName;
            }

            ReplayWriter = new ReplayWriter();

            LoadedCards          = new ObservableDeck();
            LoadedCards.Sections = new ObservableCollection <ObservableSection>();

            DeckStats = new DeckStatsViewModel();

            Spectator = specator;
            Program.GameMess.Clear();
            if (def.ScriptVersion.Equals(new Version(0, 0, 0, 0)))
            {
                Program.GameMess.Warning("This game doesn't have a Script Version specified. Please contact the game developer.\n\n\nYou can get in contact of the game developer here {0}", def.GameUrl);
                def.ScriptVersion = new Version(3, 1, 0, 0);
            }
            if (Versioned.ValidVersion(def.ScriptVersion) == false)
            {
                Program.GameMess.Warning(
                    "Can't find API v{0}. Loading the latest version.\n\nIf you have problems, get in contact of the developer of the game to get an update.\nYou can get in contact of them here {1}",
                    def.ScriptVersion, def.GameUrl);
                def.ScriptVersion = Versioned.LowestVersion;
            }
            else
            {
                var vmeta = Versioned.GetVersion(def.ScriptVersion);
                if (vmeta.DeleteDate <= DateTime.Now)
                {
                    Program.GameMess.Warning("This game requires an API version {0} which is no longer supported by OCTGN.\nYou can still play, however some aspects of the game may no longer function as expected, and it may be removed at any time.\nYou may want to contact the developer of this game and ask for an update.\n\nYou can find more information about this game at {1}."
                                             , def.ScriptVersion, def.GameUrl);
                }
            }
            //Program.ChatLog.ClearEvents();
            IsLocal       = isLocal;
            this.Password = password;
            Definition    = def;
            _table        = new Table(def.Table);
            if (def.Phases != null)
            {
                byte PhaseId = 1;
                _allPhases = def.Phases.Select(x => new Phase(PhaseId++, x)).ToList();
            }
            GlobalVariables = new Dictionary <string, string>();
            foreach (var varDef in def.GlobalVariables)
            {
                GlobalVariables.Add(varDef.Key, varDef.Value.Value);
            }
            ScriptApi     = Versioned.Get <ScriptApi>(Definition.ScriptVersion);
            this.Nickname = nickname;
            while (String.IsNullOrWhiteSpace(this.Nickname))
            {
                this.Nickname = Prefs.Nickname;
                if (string.IsNullOrWhiteSpace(this.Nickname))
                {
                    this.Nickname = Randomness.GrabRandomNounWord() + new Random().Next(30);
                }
                var retNick = this.Nickname;
                Application.Current.Dispatcher.Invoke(() =>
                {
                    var i   = new InputDlg("Choose a nickname", "Choose a nickname", Nickname);
                    retNick = i.GetString();
                });
                this.Nickname = retNick;
            }
            // Init fields
            CurrentUniqueId = 1;
            TurnNumber      = 0;
            if (Definition.GameBoards.ContainsKey(""))
            {
                GameBoard = Definition.GameBoards[""];
            }
            ActivePlayer = null;

            foreach (var size in Definition.CardSizes)
            {
                var front = ImageUtils.CreateFrozenBitmap(new Uri(size.Value.Front));
                var back  = ImageUtils.CreateFrozenBitmap(new Uri(size.Value.Back));
                _cardFrontsBacksCache.Add(size.Value.Name, new Tuple <BitmapImage, BitmapImage>(front, back));
            }
            Application.Current.Dispatcher.Invoke(new Action(() =>
            {
                // clear any existing players
                Play.Player.All.Clear();
                Player.Spectators.Clear();
                // Create the global player, if any
                if (Definition.GlobalPlayer != null)
                {
                    Play.Player.GlobalPlayer = new Play.Player(Definition, IsReplay);
                }
                // Create the local player
                Play.Player.LocalPlayer = new Player(Definition, this.Nickname, Program.UserId, 255, Crypto.ModExp(Prefs.PrivateKey), specator, true, IsReplay);
            }));
        }
Example #10
0
 public void Write(string path)
 {
     ReplayWriter.Write(this, path);
 }