Small fixes to enable proper MMF library playback

This commit is contained in:
Luke Hubmayer-Werner 2020-05-03 15:41:16 +09:30
parent b9f43c24b8
commit 88dd909c0d
6 changed files with 18 additions and 20 deletions

View File

@ -97,7 +97,6 @@ __meta__ = {
}
[node name="ScreenFilter" type="Node2D" parent="."]
visible = false
script = ExtResource( 3 )
[node name="Receptors" type="MeshInstance2D" parent="."]

View File

@ -57,7 +57,7 @@ window/stretch/aspect="keep_height"
[gdnative]
singletons=[ "res://addons/videodecoder.gdnlib" ]
singletons=[ ]
singletons_disabled=[ ]
[rendering]

View File

@ -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:

View File

@ -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')

View File

@ -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)

View File

@ -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)