From 88dd909c0da2b4029fcc9669006edc020b26c499 Mon Sep 17 00:00:00 2001 From: Luke Hubmayer-Werner Date: Sun, 3 May 2020 15:41:16 +0930 Subject: [PATCH] Small fixes to enable proper MMF library playback --- main.tscn | 1 - project.godot | 2 +- scripts/FileLoader.gd | 3 +++ scripts/Library.gd | 6 +++--- scripts/Menu.gd | 21 ++++++++------------- scripts/NoteHandler.gd | 5 +++-- 6 files changed, 18 insertions(+), 20 deletions(-) diff --git a/main.tscn b/main.tscn index ac30d1c..cdef563 100644 --- a/main.tscn +++ b/main.tscn @@ -97,7 +97,6 @@ __meta__ = { } [node name="ScreenFilter" type="Node2D" parent="."] -visible = false script = ExtResource( 3 ) [node name="Receptors" type="MeshInstance2D" parent="."] diff --git a/project.godot b/project.godot index 5522a41..c6d2620 100644 --- a/project.godot +++ b/project.godot @@ -57,7 +57,7 @@ window/stretch/aspect="keep_height" [gdnative] -singletons=[ "res://addons/videodecoder.gdnlib" ] +singletons=[ ] singletons_disabled=[ ] [rendering] diff --git a/scripts/FileLoader.gd b/scripts/FileLoader.gd index 24c2214..19d73b4 100644 --- a/scripts/FileLoader.gd +++ b/scripts/FileLoader.gd @@ -622,6 +622,9 @@ func load_video(filename): var filename1 = root + filename if file.file_exists(filename1): return load(filename1) +# var videostream = VideoStreamGDNative.new() +# videostream.set_file(filename1) +# return videostream return fallback_videostream func direct_load_image(filename) -> ImageTexture: diff --git a/scripts/Library.gd b/scripts/Library.gd index f3aa17e..73435e1 100644 --- a/scripts/Library.gd +++ b/scripts/Library.gd @@ -49,7 +49,7 @@ class Song: var audio_preview_times: Array var video_dimensions: Array var chart_difficulties: Dictionary - const default_difficulty_keys = ['Z', 'B', 'A', 'E', 'M', 'R'] + const default_difficulty_keys = ['Z', 'B', 'A', 'E', 'M', 'R', '宴'] func _init(values: Dictionary): title = MultilangStr.new(values.get('title', ''), values.get('title_transliteration', ''), values.get('title_english', '')) @@ -69,8 +69,8 @@ class Song: tile_filename = values.get('tile_filename', '%s.png'%values.get('index', 'tile')) audio_filelist = values.get('audio_filelist', ['%s.ogg'%values.get('index', 'audio')]) video_filelist = values.get('video_filelist', ['%s.webm'%values.get('index', 'video')]) - audio_offsets = values.get('audio_filelist', [240.0/BPM]) - video_offsets = values.get('video_filelist', [240.0/BPM]) + audio_offsets = values.get('audio_filelist', [0.0, 240.0/BPM]) + video_offsets = values.get('video_filelist', [0.0, 240.0/BPM]) video_dimensions = values.get('video_dimensions', [1.0, 1.0]) audio_preview_times = values.get('video_dimensions', [1.0, 1.0]) genre = values.get('genre', 'None') diff --git a/scripts/Menu.gd b/scripts/Menu.gd index a6e5ede..c4c97a2 100644 --- a/scripts/Menu.gd +++ b/scripts/Menu.gd @@ -6,8 +6,6 @@ var NoteHandlerPath := @'/root/main/NoteHandler' onready var NoteHandler := get_node(NoteHandlerPath) onready var ScoreText := $ScoreText -var song_defs = {} -var song_images = {} var genres = {} enum ChartDifficulty {EASY, BASIC, ADV, EXPERT, MASTER} @@ -40,8 +38,6 @@ var snd_interact := preload('res://assets/softclap.wav') func scan_library(): var results = FileLoader.scan_library() - song_defs = results.song_defs - song_images = results.song_images genres = results.genres func save_score() -> int: @@ -105,12 +101,11 @@ func draw_songtile(song_key, position, size, title_text:=false, difficulty=selec var diff_color := GameTheme.COLOR_DIFFICULTY[difficulty*2] var rect := Rect2(position.x, position.y, size, size) draw_rect(Rect2(position.x - outline_px, position.y - outline_px, size + outline_px*2, size + outline_px*2), diff_color) -# draw_texture_rect(song_images[song_key], rect, false) draw_texture_rect(Library.get_song_tile_texture(song_key), rect, false) # Draw track difficulty rating - draw_string_centered(DiffNumFont, Vector2(position.x+size-17, position.y+size-40), song_defs[song_key]['chart_difficulties'].get(Library.Song.default_difficulty_keys[difficulty], 0), diff_color) + draw_string_centered(DiffNumFont, Vector2(position.x+size-17, position.y+size-40), Library.all_songs[song_key]['chart_difficulties'].get(Library.Song.default_difficulty_keys[difficulty], '0'), diff_color) if title_text: - draw_string_centered(TitleFont, Vector2(position.x+size/2.0, position.y+size), song_defs[song_key]['title'], Color(0.95, 0.95, 1.0)) + draw_string_centered(TitleFont, Vector2(position.x+size/2.0, position.y+size), Library.all_songs[song_key].title.n, Color(0.95, 0.95, 1.0)) return rect func diffstr(difficulty: float): @@ -145,9 +140,9 @@ func _draw_song_select(center: Vector2) -> Array: var subsize = size * scales[0] var gx = center.x - (subsize + spacer_x) * selected_song_delta - var genre = genres.keys()[g] - draw_string_centered(GenreFont, Vector2(center.x, gy), genre) - var songslist = genres[genre] + var songslist = Library.genre_songs[g].keys() + var genre_str = genres.keys()[g] + ' (%d)'%len(songslist) + draw_string_centered(GenreFont, Vector2(center.x, gy), genre_str) var s = len(songslist) var key = songslist[selected_song_vis % s] var y = gy + spacer_y @@ -182,7 +177,7 @@ func _draw_chart_select(center: Vector2) -> Array: var r = draw_songtile(song_key, Vector2(x, center.y), size, false, diff, (9 if diff == selected_difficulty else 3)) touchrects.append({rect=r, chart_idx=diff}) x += size + spacer_x - draw_string_centered(TitleFont, Vector2(center.x, center.y+size+64), song_defs[song_key]['title'], Color(0.95, 0.95, 1.0)) + draw_string_centered(TitleFont, Vector2(center.x, center.y+size+64), Library.all_songs[song_key].title.n, Color(0.95, 0.95, 1.0)) touchrects.append({rect=Rect2(center.x-450.0, center.y+310.0, 900.0, 300.0), chart_idx=-1}) @@ -223,7 +218,7 @@ func _draw_score_screen(center: Vector2) -> Array: var judgement_text_height = 64 * judgement_text_scale draw_songtile(song_key, Vector2(x_songtile-size/2.0, y), size, false, selected_difficulty, 3) - draw_string_centered(TitleFont, Vector2(x_songtile, y+size), song_defs[song_key]['title'], Color(0.95, 0.95, 1.0)) + draw_string_centered(TitleFont, Vector2(x_songtile, y+size), Library.all_songs[song_key].title.n, Color(0.95, 0.95, 1.0)) var notestrs = ['Taps:', 'Holds Hit:', 'Released:', 'Stars:', 'Slides:'] var notetypes = [0, 1, -1, 2, -2] var note_spacing = [0.0, 1.25, 2.25, 3.5, 4.5] @@ -316,7 +311,7 @@ func _draw_gameplay(center: Vector2) -> Array: func _draw(): - var songs = len(song_defs) + var songs = len(Library.all_songs) var size = 216 var outline_px = 3 var center = Vector2(540.0, 540.0-160.0) # Vector2(0.0, -160.0) diff --git a/scripts/NoteHandler.gd b/scripts/NoteHandler.gd index 823ec30..2c79f0e 100644 --- a/scripts/NoteHandler.gd +++ b/scripts/NoteHandler.gd @@ -576,8 +576,9 @@ func load_track(song_key: String, difficulty_idx: int): bpm = data.BPM sync_offset_audio = data.audio_offsets[0] sync_offset_video = data.video_offsets[0] + var videostream = FileLoader.load_video('songs/' + data.filepath.rstrip('/') + '/' + data.video_filelist[0]) MusicPlayer.set_stream(FileLoader.load_ogg('songs/' + data.filepath.rstrip('/') + '/' + data.audio_filelist[0])) - VideoPlayer.set_stream(FileLoader.load_video('songs/' + data.filepath.rstrip('/') + '/' + data.video_filelist[0])) + VideoPlayer.set_stream(videostream) VideoPlayer.update_aspect_ratio(data.video_dimensions[0]/data.video_dimensions[1]) # all_notes = FileLoader.Test.stress_pattern() @@ -634,7 +635,7 @@ func _process(delta): if (not timers_set) and (t > -5.0): timers_set = true - for i in [-4.0, -3.0, -2.0, -1.0]: + for i in [-4.0, -3.0, -2.0, -1.0, 0.0, 1.0, 2.0, 3.0]: var delay := real_time(i) - time var timer = Timer.new() add_child(timer)