예제 #1
0
            public static void Validate(ActionInfo actionInfo)
            {
                ValidateUnknownBits(actionInfo);

                ActionInfo           oldAction = actionInfo;
                PlaceCardOnFieldInfo info      = FromAction(actionInfo);

                info.ToAction(ref actionInfo);
                Debug.Assert(oldAction.Equals(actionInfo));
            }
예제 #2
0
            public static void Validate(PlaceCardOnFieldInfo info)
            {
                ActionInfo actionInfo = new ActionInfo();

                info.ToAction(ref actionInfo);
                ValidateUnknownBits(actionInfo);

                PlaceCardOnFieldInfo newInfo = FromAction(actionInfo);

                Debug.Assert(newInfo.Equals(info));
            }
예제 #3
0
            // ActionData2:
            // xxxxxxxxxxxxxxx1 - controller (offset:0 bits:1 mask:0x1)
            // xxxxxxxxxx11111x - targetSlot (offset:1 bits:5 mask:0x1F)
            // xxxx111111xxxxxx - ? (offset:6 bits:6 mask:0x3F)
            // xxx1xxxxxxxxxxxx - owner (offset:7 bits:1 mask:0x1)
            // 111xxxxxxxxxxxxx - cardPosition (offset:13 bits:3 mask:0x7)

            // ActionData3:
            // xxxxxxxxxxxxxxx1 - ? (offset:0 bits:1 mask:0x1)
            // 111111111111111x - cardObjectId (offset:1 bits:15 mask:0x7FF)

            // Decoder / action handler can be found in sub_14049B350
            public static PlaceCardOnFieldInfo FromAction(ActionInfo actionInfo)
            {
                PlaceCardOnFieldInfo result = new PlaceCardOnFieldInfo();

                result.CardId = actionInfo.ActionData1;

                result.controller   = (ushort)(actionInfo.ActionData2 & 1);
                result.TargetSlot   = (ushort)((actionInfo.ActionData2 >> 1) & 0x1F);
                result.owner        = (ushort)(actionInfo.ActionData2 >> 12);
                result.cardPosition = (ushort)(actionInfo.ActionData2 >> 13);

                result.Unk2         = (ushort)(actionInfo.ActionData3 & 1);
                result.CardObjectId = (ushort)(actionInfo.ActionData3 >> 1);

                return(result);
            }