public static ClientResolutionAction ClientResolutionAction_DeSerializeFromStream(Component context, ref IBitStream stream)
        {
            ClientResolutionAction resolutionAction = new ClientResolutionAction();
            sbyte num = -1;

            stream.Serialize(ref num);
            ResolutionActionType resolutionActionType = (ResolutionActionType)num;

            resolutionAction.m_type = (ResolutionActionType)num;
            switch (resolutionActionType)
            {
            case ResolutionActionType.AbilityCast:
                resolutionAction.m_abilityResults =
                    AbilityResultsUtils.DeSerializeClientAbilityResultsFromStream(context, ref stream);
                break;

            case ResolutionActionType.EffectAnimation:
            case ResolutionActionType.EffectPulse:
                resolutionAction.m_effectResults =
                    AbilityResultsUtils.DeSerializeClientEffectResultsFromStream(context, ref stream);
                break;

            case ResolutionActionType.EffectOnMove:
            case ResolutionActionType.BarrierOnMove:
            case ResolutionActionType.PowerupOnMove:
            case ResolutionActionType.GameModeOnMove:
                resolutionAction.m_moveResults =
                    AbilityResultsUtils.DeSerializeClientMovementResultsFromStream(context, ref stream);
                break;
            }

            return(resolutionAction);
        }
        public int CompareTo(object obj)
        {
            if (obj == null)
            {
                return(1);
            }
            ClientResolutionAction resolutionAction = obj as ClientResolutionAction;

            if (resolutionAction == null)
            {
                throw new ArgumentException("Object is not a ClientResolutionAction");
            }
            if (ReactsToMovement() != resolutionAction.ReactsToMovement())
            {
                return(ReactsToMovement().CompareTo(resolutionAction.ReactsToMovement()));
            }
            if (!ReactsToMovement() && !resolutionAction.ReactsToMovement())
            {
                return(0);
            }
            float moveCost1 = m_moveResults.m_triggeringPath.moveCost;
            float moveCost2 = resolutionAction.m_moveResults.m_triggeringPath.moveCost;

            if (moveCost1 != (double)moveCost2)
            {
                return(moveCost1.CompareTo(moveCost2));
            }
            bool flag1 = m_moveResults.HasBarrierHitResults();
            bool flag2 = resolutionAction.m_moveResults.HasBarrierHitResults();

            if (flag1 && !flag2)
            {
                return(-1);
            }
            if (!flag1 && flag2)
            {
                return(1);
            }
            bool flag3 = m_moveResults.HasGameModeHitResults();
            bool flag4 = resolutionAction.m_moveResults.HasGameModeHitResults();

            if (flag3 && !flag4)
            {
                return(-1);
            }
            return(!flag3 && flag4 ? 1 : 0);
        }