コード例 #1
0
ファイル: SBObject.cs プロジェクト: zeta1999/Wolven-kit
        public SBMusicPlaylistObject(FileRead fr = null, long curPos = 0, uint length = 0)
        {
            if (fr != null)
            {
                _sound_structure = new SoundStructure(fr);
                _segments        = fr.read_uint32();
                for (int i = 0; i < _segments; i++)
                {
                    _segment_ids.Add(fr.read_uint32());
                }
                _unk_double_1  = fr.read_double();
                _unk_field64_1 = fr.read_uint64();
                _tempo         = fr.read_float();
                _time_sig1     = fr.read_one_byte();
                _time_sig2     = fr.read_one_byte();
                _unk_field8_1  = fr.read_one_byte();
                _unk_field32_1 = fr.read_uint32();

                _transition_count = fr.read_uint32();
                for (int i = 0; i < _transition_count; i++)
                {
                    _transitions.Add(new MusicPlaylistObject_Transition(fr));
                }

                _playlist_elements_count = fr.read_uint32();

                uint element_count = (length - (uint)(fr.getPosition() - curPos)) / MusicPlaylistObject_PlaylistElement.SIZE;
                for (int i = 0; i < element_count; i++)
                {
                    _playlist_elements.Add(new MusicPlaylistObject_PlaylistElement(fr));
                }
            }
        }
コード例 #2
0
ファイル: SBObject.cs プロジェクト: zeta1999/Wolven-kit
        public SBSoundObject(FileRead fr = null, long curPos = 0, uint length = 0)
        {
            if (fr != null)
            {
                _unk_field32_1 = fr.read_uint32();
                _include_type  = fr.read_uint32();

                if (_include_type != SOUND_EMBEDED && _include_type != SOUND_STREAMED && _include_type != SOUND_PREFETCHED)
                {
                    Console.WriteLine("SBSoundObject : Invalid include type");
                    _isSet = false;
                    return;
                }

                _audio_id  = fr.read_uint32();
                _source_id = fr.read_uint32();

                if (_include_type == SOUND_EMBEDED)
                {
                    _offset = fr.read_uint32();
                    _size   = fr.read_uint32();
                }

                _sound_type = fr.read_one_byte();

                if (_sound_type != SOUND_TYPE_SFX && _sound_type != SOUND_TYPE_VOICE)
                {
                    Console.WriteLine("SBSoundObject : Invalid sound type");
                    _isSet = false;
                    return;
                }
                _sound_structure = fr._file.ReadBytes((int)(length - (uint)(fr.getPosition() - curPos)));
            }
        }
コード例 #3
0
ファイル: SBObject.cs プロジェクト: zeta1999/Wolven-kit
        public SBMusicTrackObject(FileRead fr = null, long curPos = 0, uint length = 0)
        {
            if (fr != null)
            {
                _unk_field32_1 = fr.read_uint32();
                _unk_field32_2 = fr.read_uint32();
                _unk_field32_3 = fr.read_uint32();
                _id1           = fr.read_uint32();

                if (_id1 > 0)
                {
                    _id2           = fr.read_uint32();
                    _unk_field32_4 = fr.read_uint32();
                    _unk_field32_5 = fr.read_uint32();
                    _unk_field8_1  = fr.read_one_byte();
                    _id3           = fr.read_uint32();
                    _unk_field64_1 = fr.read_uint64();
                    _unk_field64_2 = fr.read_uint64();
                    _unk_field64_3 = fr.read_uint64();
                    _time_length   = fr.read_double();
                }

                uint remaining = (length - (uint)(fr.getPosition() - curPos));
                if (remaining > 0)
                {
                    _unk_data = fr._file.ReadBytes((int)remaining);
                }
            }
        }
コード例 #4
0
ファイル: SBObject.cs プロジェクト: zeta1999/Wolven-kit
        public SBObject(FileRead fr = null)
        {
            if (fr != null)
            {
                _type   = fr.read_one_byte();
                _length = fr.read_uint32();
                long curPos = fr.getPosition();
                _id = fr.read_uint32();

                if (_type == TYPE_SOUND)
                {
                    _obj_so      = new SBSoundObject(fr, curPos, _length);
                    _current_obj = "SoundObject";
                }
                else if (_type == TYPE_MUSIC_SEGMENT)
                {
                    _obj_mso     = new SBMusicSegmentObject(fr, curPos, _length);
                    _current_obj = "MusicSegment";
                }
                else if (_type == TYPE_MUSIC_TRACK)
                {
                    _obj_mto     = new SBMusicTrackObject(fr, curPos, _length);
                    _current_obj = "MusicTrack";
                }
                else if (_type == TYPE_MUSIC_PLAYLIST)
                {
                    _obj_mpo     = new SBMusicPlaylistObject(fr, curPos, _length);
                    _current_obj = "MusicPlaylist";
                }
                else
                {
                    _obj_bytes   = fr._file.ReadBytes((int)(_length - 4));
                    _current_obj = "String";
                }

                if (fr.getPosition() - curPos != _length)
                {
                    Console.WriteLine("SBOjbect : Invalid Object");
                    _isSet = false;
                    return;
                }
            }
        }
コード例 #5
0
ファイル: SBObject.cs プロジェクト: zeta1999/Wolven-kit
        public SBHeader(FileRead fr = null)
        {
            if (fr != null)
            {
                _head = fr.read_header();
                if (_head != HEAD)
                {
                    Console.WriteLine("Invalid head, program is down");
                    Environment.Exit(0);
                }
                _length = fr.read_uint32();
                long curPos = fr.getPosition();

                _version = fr.read_uint32();

                if (_version != VERSION)
                {
                    Console.Write("Invalid version");
                    Environment.Exit(0);
                }

                _id            = fr.read_uint32();
                _unk_field32_1 = fr.read_uint32();
                _unk_field32_2 = fr.read_uint32();

                uint remaining = _length - (uint)(fr.getPosition() - curPos);

                if (remaining > 0)
                {
                    _unk_data = fr._file.ReadBytes((int)remaining);
                }
                else
                {
                    _unk_data = null;
                }
            }
        }
コード例 #6
0
ファイル: SBObject.cs プロジェクト: zeta1999/Wolven-kit
        public SBData(FileRead fr = null)
        {
            _data = new List <WEM>();
            if (fr != null)
            {
                _head = fr.read_header();

                if (_head != HEAD)
                {
                    _head = "";
                    fr.seekPosition(-4, 1);
                    _isSet = false;
                    return;
                }

                _length = fr.read_uint32();
                _offset = (uint)fr.getPosition();
            }
        }
コード例 #7
0
ファイル: SBObject.cs プロジェクト: zeta1999/Wolven-kit
        public SBMusicSegmentObject(FileRead fr = null, long curPos = 0, uint length = 0)
        {
            if (fr != null)
            {
                _sound_structure = new SoundStructure(fr);
                _children        = fr.read_uint32();
                for (int i = 0; i < _children; i++)
                {
                    _child_ids.Add(fr.read_uint32());
                }
                _unk_double_1     = fr.read_double();
                _unk_field64_1    = fr.read_uint64();
                _tempo            = fr.read_float();
                _time_sig1        = fr.read_one_byte();
                _time_sig2        = fr.read_one_byte();
                _unk_field32_1    = fr.read_uint32();
                _unk_field8_1     = fr.read_one_byte();
                _time_length      = fr.read_double();
                _unk_field32_2    = fr.read_uint32();
                _unk_field32_3    = fr.read_uint32();
                _unk_field64_2    = fr.read_uint64();
                _unk_field32_4    = fr.read_uint32();
                _unk_field32_5    = fr.read_uint32();
                _time_length_next = fr.read_double();
                _unk_field32_6    = fr.read_uint32();

                uint remaining = (length - (uint)(fr.getPosition() - curPos));
                if (remaining > 0)
                {
                    _unk_data = fr._file.ReadBytes((int)remaining);
                }
                else
                {
                    _unk_data = null;
                }
            }
        }
コード例 #8
0
        public SoundStructure(FileRead fr = null)
        {
            if (fr != null)
            {
                long pos = fr.getPosition();
                _effects_override = fr.read_bool();

                _effects_count = fr.read_one_byte();
                if (_effects_count > 0)
                {
                    _effects_bitmask = fr.read_one_byte();
                    for (int i = 0; i < _effects_count; i++)
                    {
                        _effects.Add(new SoundStructure_Effect(fr));
                    }
                }

                _output_bus_id = fr.read_uint32();
                _parent_id     = fr.read_uint32();
                _override_playback_priority = fr.read_bool();
                _offset_priority            = fr.read_bool();

                _additional_parameters_count = fr.read_one_byte();
                if (_additional_parameters_count > 0)
                {
                    for (int i = 0; i < _additional_parameters_count; i++)
                    {
                        _additional_parameters.Add(new SoundStructure_Additional(fr));
                    }
                    foreach (SoundStructure_Additional sa in _additional_parameters)
                    {
                        if (sa._type == 0x07)
                        {
                            sa._value_u = fr.read_uint32();
                        }
                        else
                        {
                            sa._value_f = fr.read_float();
                        }
                    }
                }

                _unk_field8_1 = fr.read_one_byte();

                _has_positioning = fr.read_bool();
                if (_has_positioning)
                {
                    _positioning_type = fr.read_one_byte();
                    if (_positioning_type == 0x2D)
                    {
                        _enable_panner = fr.read_bool();
                    }
                    else if (_positioning_type == 0x3D)
                    {
                        _position_source       = fr.read_uint32();
                        _attenuation_id        = fr.read_uint32();
                        _enable_spatialization = fr.read_bool();

                        if (_position_source == 0x02)
                        {
                            _play_type                   = fr.read_uint32();
                            _do_loop                     = fr.read_bool();
                            _transition_time             = fr.read_uint32();
                            _follow_listener_orientation = fr.read_bool();
                        }
                        else if (_position_source == 0x03)
                        {
                            _update_at_each_frame = fr.read_bool();
                        }
                    }
                    else if (_positioning_type == 0x01)
                    {
                        _unk_field16_1 = fr.read_uint16();
                    }
                    else
                    {
                        _unk_field32_1 = fr.read_uint32();
                        _unk_field32_2 = fr.read_uint32();
                    }
                }

                _override_game_auxiliary_sends = fr.read_bool();
                _use_game_auxiliary_sends      = fr.read_bool();
                _override_user_auxiliary_sends = fr.read_bool();
                _user_auxiliary_sends_exists   = fr.read_bool();

                if (_user_auxiliary_sends_exists)
                {
                    _auxiliary_bus_id0 = fr.read_uint32();
                    _auxiliary_bus_id1 = fr.read_uint32();
                    _auxiliary_bus_id2 = fr.read_uint32();
                    _auxiliary_bus_id3 = fr.read_uint32();
                }

                _unk_field8_2 = fr.read_bool();
                if (_unk_field8_2)
                {
                    _priority_equal        = fr.read_one_byte();
                    _limit_reached         = fr.read_one_byte();
                    _limit_sound_instances = fr.read_uint16();
                }

                _how_to_limit_sound_instances = fr.read_one_byte();
                _virtual_voice_behavior       = fr.read_one_byte();
                _override_playback_limit      = fr.read_bool();
                _override_virtual_voice       = fr.read_bool();

                _state_groups_count = fr.read_uint32();
                if (_state_groups_count > 0)
                {
                    for (int i = 0; i < _state_groups_count; i++)
                    {
                        _state_groups.Add(new SoundStructure_StateGroup(fr));
                    }
                }

                _rtpc_count = fr.read_uint16();
                if (_rtpc_count > 0)
                {
                    for (int i = 0; i < _rtpc_count; i++)
                    {
                        _rtpcs.Add(new SoundStructure_RTPC(fr));
                    }
                }

                _unk_field32_3 = fr.read_uint32();
                if (_unk_field32_3 > 0)
                {
                    _unk_data = fr.read_uchar(0x3F);
                }
                else
                {
                    _unk_data = "";
                }
            }
        }