public static void Validate(ActionInfo actionInfo) { ValidateUnknownBits(actionInfo); ActionInfo oldAction = actionInfo; PlaceCardOnFieldInfo info = FromAction(actionInfo); info.ToAction(ref actionInfo); Debug.Assert(oldAction.Equals(actionInfo)); }
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)); }
// 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); }