Exemple #1
0
        private bool CanHandleCommand(ILocalGame game, ReplayCommandCode code)
        {
            // Из-за пинга события могут приходить раньше времени,
            // в этом случае мы не должны запускать событие в неподходящий момент.

            // бросать нож можно только когда он на земле
            if (code == ReplayCommandCode.Throw && game.knifeState != KnifeState.Freeze)
            {
                return(false);
            }

            // бросать нож можно только когда он на земле
            if (code == ReplayCommandCode.ThrowDebug && game.knifeState != KnifeState.Freeze)
            {
                return(false);
            }

            // нельзя перезапускать игру во время полёта ножа
            if (code == ReplayCommandCode.Restart && (game.knifeState == KnifeState.Falling || game.knifeState == KnifeState.Flying))
            {
                return(false);
            }

            // изменчть скорость модно только когда нож воткнут в землю
            if (code == ReplayCommandCode.ChangeMode && game.knifeState != KnifeState.Freeze)
            {
                return(false);
            }

            return(true);
        }
        public bool ReadNext(out float time, out ReplayCommandCode code)
        {
            if (m_position + 4 + 1 > m_data.Length)
            {
                time = 0f;
                code = ReplayCommandCode.None;
                return(false);
            }

            ReadSingle(m_data, ref m_position, out time);
            code = (ReplayCommandCode)m_data[m_position++];
            return(true);
        }