Example #1
0
        public static ModifyEvent Serdes(ModifyEvent genericEvent, ISerializer s)
        {
            var subType = s.EnumU8("SubType", genericEvent?.SubType ?? ModifyType.Unk2);

            switch (subType)
            {
            case ModifyType.SetTemporarySwitch:     return(SetTemporarySwitchEvent.Serdes((SetTemporarySwitchEvent)genericEvent, s));

            case ModifyType.DisableEventChain:      return(DisableEventChainEvent.Serdes((DisableEventChainEvent)genericEvent, s));

            case ModifyType.SetNpcActive:           return(SetNpcActiveEvent.Serdes((SetNpcActiveEvent)genericEvent, s));

            case ModifyType.AddPartyMember:         return(AddPartyMemberEvent.Serdes((AddPartyMemberEvent)genericEvent, s));

            case ModifyType.AddRemoveInventoryItem: return(AddRemoveInventoryItemEvent.Serdes((AddRemoveInventoryItemEvent)genericEvent, s));

            case ModifyType.SetMapLighting:         return(SetMapLightingEvent.Serdes((SetMapLightingEvent)genericEvent, s));

            case ModifyType.ChangePartyGold:        return(ChangePartyGoldEvent.Serdes((ChangePartyGoldEvent)genericEvent, s));

            case ModifyType.ChangePartyRations:     return(ChangePartyRationsEvent.Serdes((ChangePartyRationsEvent)genericEvent, s));

            case ModifyType.ChangeTime:             return(ChangeTimeEvent.Serdes((ChangeTimeEvent)genericEvent, s));

            case ModifyType.SetPartyLeader:         return(SetPartyLeaderEvent.Serdes((SetPartyLeaderEvent)genericEvent, s));

            case ModifyType.SetTicker:              return(SetTickerEvent.Serdes((SetTickerEvent)genericEvent, s));

            case ModifyType.Unk2:                   return(DummyModifyEvent.Serdes((DummyModifyEvent)genericEvent, s));

            default: throw new ArgumentOutOfRangeException();
            }
        }
Example #2
0
        public static EventNode Load(BinaryReader br, int id, MapEventType type)
        {
            var subType = (ModifyType)br.ReadByte();

            switch (subType)
            {
            case ModifyType.SetTemporarySwitch:     return(SetTemporarySwitchEvent.Load(br, id, type, subType));

            case ModifyType.DisableEventChain:      return(DisableEventChainEvent.Load(br, id, type, subType));

            case ModifyType.SetNpcActive:           return(SetNpcActiveEvent.Load(br, id, type, subType));

            case ModifyType.AddPartyMember:         return(AddPartyMemberEvent.Load(br, id, type, subType));

            case ModifyType.AddRemoveInventoryItem: return(AddRemoveInventoryItemEvent.Load(br, id, type, subType));

            case ModifyType.SetMapLighting:         return(SetMapLightingEvent.Load(br, id, type, subType));

            case ModifyType.ChangePartyGold:        return(ChangePartyGoldEvent.Load(br, id, type, subType));

            case ModifyType.ChangePartyRations:     return(ChangePartyRationsEvent.Load(br, id, type, subType));

            case ModifyType.ChangeTime:             return(ChangeTimeEvent.Load(br, id, type, subType));

            case ModifyType.SetPartyLeader:         return(SetPartyLeaderEvent.Load(br, id, type, subType));

            case ModifyType.SetTicker:              return(SetTickerEvent.Load(br, id, type, subType));

            case ModifyType.Unk2:                   return(DummyModifyEvent.Load(br, id, type, subType));

            default: throw new ArgumentOutOfRangeException();
            }
        }
Example #3
0
 public static SetTickerEvent Serdes(SetTickerEvent e, ISerializer s)
 {
     e ??= new SetTickerEvent();
     s.Begin();
     e.Operation = s.EnumU8(nameof(Operation), e.Operation);
     e.Amount    = s.UInt8(nameof(Amount), e.Amount);
     e.Unk4      = s.UInt8(nameof(Unk4), e.Unk4);
     e.Unk5      = s.UInt8(nameof(Unk5), e.Unk5);
     e.TickerId  = s.EnumU16(nameof(TickerId), e.TickerId);
     e.Unk8      = s.UInt16(nameof(Unk8), e.Unk8);
     ApiUtil.Assert(e.Unk4 == 0 || e.Unk4 == 1);
     ApiUtil.Assert(e.Unk5 == 0);
     ApiUtil.Assert(e.Unk8 == 0);
     s.End();
     return(e);
 }
Example #4
0
        public static SetTickerEvent Serdes(SetTickerEvent e, AssetMapping mapping, ISerializer s)
        {
            if (s == null)
            {
                throw new ArgumentNullException(nameof(s));
            }

            e ??= new SetTickerEvent();
            e.Operation = s.EnumU8(nameof(Operation), e.Operation);
            e.Amount    = s.UInt8(nameof(Amount), e.Amount);
            e.Unk4      = s.UInt8(nameof(Unk4), e.Unk4);
            e.Unk5      = s.UInt8(nameof(Unk5), e.Unk5);
            e.TickerId  = TickerId.SerdesU16(nameof(TickerId), e.TickerId, mapping, s);
            e.Unk8      = s.UInt16(nameof(Unk8), e.Unk8);
            ApiUtil.Assert(e.Unk4 == 0 || e.Unk4 == 1);
            ApiUtil.Assert(e.Unk5 == 0);
            ApiUtil.Assert(e.Unk8 == 0);
            return(e);
        }
Example #5
0
        public static ModifyEvent Serdes(ModifyEvent genericEvent, ISerializer s)
        {
            var subType = s.EnumU8("SubType", genericEvent?.SubType ?? ModifyType.Unk2);

            return(subType switch
            {
                ModifyType.SetTemporarySwitch => SetTemporarySwitchEvent.Serdes((SetTemporarySwitchEvent)genericEvent, s),
                ModifyType.DisableEventChain => DisableEventChainEvent.Serdes((DisableEventChainEvent)genericEvent, s),
                ModifyType.SetNpcActive => SetNpcActiveEvent.Serdes((SetNpcActiveEvent)genericEvent, s),
                ModifyType.AddPartyMember => AddPartyMemberEvent.Serdes((AddPartyMemberEvent)genericEvent, s),
                ModifyType.AddRemoveInventoryItem => AddRemoveInventoryItemEvent.Serdes((AddRemoveInventoryItemEvent)genericEvent, s),
                ModifyType.SetMapLighting => SetMapLightingEvent.Serdes((SetMapLightingEvent)genericEvent, s),
                ModifyType.ChangePartyGold => ChangePartyGoldEvent.Serdes((ChangePartyGoldEvent)genericEvent, s),
                ModifyType.ChangePartyRations => ChangePartyRationsEvent.Serdes((ChangePartyRationsEvent)genericEvent, s),
                ModifyType.ChangeTime => ChangeTimeEvent.Serdes((ChangeTimeEvent)genericEvent, s),
                ModifyType.SetPartyLeader => SetPartyLeaderEvent.Serdes((SetPartyLeaderEvent)genericEvent, s),
                ModifyType.SetTicker => SetTickerEvent.Serdes((SetTickerEvent)genericEvent, s),
                ModifyType.Unk2 => DummyModifyEvent.Serdes((DummyModifyEvent)genericEvent, s),
                _ => throw new ArgumentOutOfRangeException()
            });
Example #6
0
        public static ModifyEvent BaseSerdes(ModifyEvent genericEvent, AssetMapping mapping, ISerializer s)
        {
            if (s == null)
            {
                throw new ArgumentNullException(nameof(s));
            }
            var subType = s.EnumU8("SubType", genericEvent?.SubType ?? ModifyType.Unk2);

            return(subType switch
            {
                ModifyType.SetTemporarySwitch => SetTemporarySwitchEvent.Serdes((SetTemporarySwitchEvent)genericEvent, mapping, s),
                ModifyType.DisableEventChain => DisableEventChainEvent.Serdes((DisableEventChainEvent)genericEvent, s),
                ModifyType.SetNpcActive => SetNpcActiveEvent.Serdes((SetNpcActiveEvent)genericEvent, s),
                ModifyType.AddPartyMember => AddPartyMemberEvent.Serdes((AddPartyMemberEvent)genericEvent, mapping, s),
                ModifyType.AddRemoveInventoryItem => AddRemoveInventoryItemEvent.Serdes((AddRemoveInventoryItemEvent)genericEvent, mapping, s),
                ModifyType.SetMapLighting => SetMapLightingEvent.Serdes((SetMapLightingEvent)genericEvent, s),
                ModifyType.ChangePartyGold => ChangePartyGoldEvent.Serdes((ChangePartyGoldEvent)genericEvent, s),
                ModifyType.ChangePartyRations => ChangePartyRationsEvent.Serdes((ChangePartyRationsEvent)genericEvent, s),
                ModifyType.ChangeTime => ChangeTimeEvent.Serdes((ChangeTimeEvent)genericEvent, s),
                ModifyType.SetPartyLeader => SetPartyLeaderEvent.Serdes((SetPartyLeaderEvent)genericEvent, mapping, s),
                ModifyType.SetTicker => SetTickerEvent.Serdes((SetTickerEvent)genericEvent, mapping, s),
                ModifyType.Unk2 => DummyModifyEvent.Serdes((DummyModifyEvent)genericEvent, s),
                _ => throw new InvalidEnumArgumentException(nameof(subType), (int)subType, typeof(ModifyType))
            });