small racing game im working on
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
extends Control
const trackloader_scn = preload("res://scenes/track.tscn")
const thumbnail_path = "user://%s.thumb"
signal pressed
func init(t: TrackResource, g: GhostData) -> void:
%name.text = t.name
if g == null:
%time.text = "no time set"
else:
%time.text = GameTimer.format_precise(g.time)
var p: String = thumbnail_path % t.name
if FileAccess.file_exists(p) and Time.get_unix_time_from_system() - FileAccess.get_modified_time(p) < 40000: # ~5days
print("loading thumb")
var f := FileAccess.open(p, FileAccess.READ)
var img := Image.new()
var e := img.load_png_from_buffer(f.get_buffer(f.get_length()))
if e != OK:
print("error: ", e)
return
(%thumb as TextureRect).texture = ImageTexture.create_from_image(img)
else:
print("making thumb")
%port.add_child(IntroCam.new(t, null))
var trackloader: TrackLoader = trackloader_scn.instantiate()
trackloader.track = t
%port.add_child(trackloader)
await RenderingServer.frame_post_draw
trackloader.queue_free()
var img: Image = %port.get_texture().get_image()
img.save_png(p)
(%thumb as TextureRect).texture = ImageTexture.create_from_image(img)
|