1
0
Fork 0

First godot prototype

This commit is contained in:
Michaël Lemaire 2020-02-03 22:59:43 +01:00
commit cba1d36005
136 changed files with 5232 additions and 0 deletions

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
.import/
exports/

38
arenas/anchor.gd Normal file
View File

@ -0,0 +1,38 @@
extends Sprite
class_name Anchor
export var selectable = false
export var selected = false
export(String, "normal", "attack_start", "defend_start") var anchor_type = "normal"
var content
func _process(delta):
if selected:
modulate = Color(1, 0.4, 0.4)
elif selectable:
modulate = Color(1, 0.8, 0.2)
else:
modulate = Color(1, 1, 1)
func _ready():
add_to_group("anchors")
func is_connected_to(other: Anchor) -> bool:
for route in get_tree().get_nodes_in_group("routes"):
if route is Route and route.is_connecting(self, other):
return true
return false
func set_content(val):
if val is Node:
var old_parent = val.get_parent()
if old_parent:
if old_parent.has_method("set_content"):
old_parent.set_content(null)
old_parent.remove_child(val)
self.add_child(val)
content = val
func is_empty() -> bool:
return not content

BIN
arenas/anchor.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

34
arenas/anchor.png.import Normal file
View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/anchor.png-7e2397122cc30d939130d75ca5246363.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://arenas/anchor.png"
dest_files=[ "res://.import/anchor.png-7e2397122cc30d939130d75ca5246363.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

67
arenas/anchor.svg Normal file
View File

@ -0,0 +1,67 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="128"
height="128"
viewBox="0 0 128 128.00001"
version="1.1"
id="svg8"
inkscape:version="0.92.4 5da689c313, 2019-01-14"
sodipodi:docname="anchor.svg"
inkscape:export-filename="/home/michael/workspace/spacetac/screens/battle/anchor.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96">
<defs
id="defs2" />
<sodipodi:namedview
id="base"
pagecolor="#000000"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:zoom="3.3891407"
inkscape:cx="39.36333"
inkscape:cy="33.09798"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
inkscape:window-width="1920"
inkscape:window-height="1029"
inkscape:window-x="0"
inkscape:window-y="22"
inkscape:window-maximized="0" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Calque 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-994.51965)">
<circle
style="opacity:0.322;fill:#5b7786;fill-opacity:0.5;stroke:#b5b381;stroke-width:4;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:39.15209961;stroke-opacity:1"
id="path834"
cx="64"
cy="1058.5197"
r="50.507626" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

34
arenas/anchor.svg.import Normal file
View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/anchor.svg-8be5a4424459bcf87ceca457e666f7f6.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://arenas/anchor.svg"
dest_files=[ "res://.import/anchor.svg-8be5a4424459bcf87ceca457e666f7f6.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

9
arenas/anchor.tscn Normal file
View File

@ -0,0 +1,9 @@
[gd_scene load_steps=3 format=2]
[ext_resource path="res://arenas/anchor.png" type="Texture" id=1]
[ext_resource path="res://arenas/anchor.gd" type="Script" id=2]
[node name="anchor" type="Sprite"]
position = Vector2( 367.813, 896.351 )
texture = ExtResource( 1 )
script = ExtResource( 2 )

349
arenas/normal1.tscn Normal file
View File

@ -0,0 +1,349 @@
[gd_scene load_steps=3 format=2]
[ext_resource path="res://arenas/anchor.tscn" type="PackedScene" id=1]
[ext_resource path="res://arenas/route.tscn" type="PackedScene" id=2]
[node name="arena_normal1" type="Node2D"]
[node name="routes" type="Node2D" parent="."]
[node name="route" parent="routes" instance=ExtResource( 2 )]
points = PoolVector2Array( 540, 1500, 780, 1380 )
start = NodePath("../../anchors/anchor")
end = NodePath("../../anchors/anchor4")
[node name="route7" parent="routes" instance=ExtResource( 2 )]
points = PoolVector2Array( 540, 1260, 780, 1380 )
start = NodePath("../../anchors/anchor3")
end = NodePath("../../anchors/anchor4")
[node name="route8" parent="routes" instance=ExtResource( 2 )]
points = PoolVector2Array( 900, 1200, 780, 1380 )
start = NodePath("../../anchors/anchor6")
end = NodePath("../../anchors/anchor4")
[node name="route9" parent="routes" instance=ExtResource( 2 )]
points = PoolVector2Array( 900, 1200, 540, 1260 )
start = NodePath("../../anchors/anchor6")
end = NodePath("../../anchors/anchor3")
[node name="route10" parent="routes" instance=ExtResource( 2 )]
points = PoolVector2Array( 900, 1200, 720, 1080 )
start = NodePath("../../anchors/anchor6")
end = NodePath("../../anchors/anchor9")
[node name="route16" parent="routes" instance=ExtResource( 2 )]
points = PoolVector2Array( 900, 1200, 960, 960 )
start = NodePath("../../anchors/anchor6")
end = NodePath("../../anchors/anchor11")
[node name="route17" parent="routes" instance=ExtResource( 2 )]
points = PoolVector2Array( 720, 1080, 960, 960 )
start = NodePath("../../anchors/anchor9")
end = NodePath("../../anchors/anchor11")
[node name="route22" parent="routes" instance=ExtResource( 2 )]
points = PoolVector2Array( 780, 840, 960, 960 )
start = NodePath("../../anchors/anchor24")
end = NodePath("../../anchors/anchor11")
[node name="route26" parent="routes" instance=ExtResource( 2 )]
points = PoolVector2Array( 960, 720, 960, 960 )
start = NodePath("../../anchors/anchor17")
end = NodePath("../../anchors/anchor11")
[node name="route31" parent="routes" instance=ExtResource( 2 )]
points = PoolVector2Array( 960, 720, 900, 480 )
start = NodePath("../../anchors/anchor17")
end = NodePath("../../anchors/anchor14")
[node name="route32" parent="routes" instance=ExtResource( 2 )]
points = PoolVector2Array( 780, 300, 900, 480 )
start = NodePath("../../anchors/anchor12")
end = NodePath("../../anchors/anchor14")
[node name="route53" parent="routes" instance=ExtResource( 2 )]
points = PoolVector2Array( 540, 420, 900, 480 )
start = NodePath("../../anchors/anchor20")
end = NodePath("../../anchors/anchor14")
[node name="route33" parent="routes" instance=ExtResource( 2 )]
points = PoolVector2Array( 780, 300, 544, 184 )
start = NodePath("../../anchors/anchor12")
end = NodePath("../../anchors/anchor16")
[node name="route49" parent="routes" instance=ExtResource( 2 )]
points = PoolVector2Array( 780, 300, 540, 420 )
start = NodePath("../../anchors/anchor12")
end = NodePath("../../anchors/anchor20")
[node name="route43" parent="routes" instance=ExtResource( 2 )]
points = PoolVector2Array( 540, 420, 544, 184 )
start = NodePath("../../anchors/anchor20")
end = NodePath("../../anchors/anchor16")
[node name="route48" parent="routes" instance=ExtResource( 2 )]
points = PoolVector2Array( 540, 420, 720, 600 )
start = NodePath("../../anchors/anchor20")
end = NodePath("../../anchors/anchor19")
[node name="route47" parent="routes" instance=ExtResource( 2 )]
points = PoolVector2Array( 540, 420, 360, 600 )
start = NodePath("../../anchors/anchor20")
end = NodePath("../../anchors/anchor21")
[node name="route28" parent="routes" instance=ExtResource( 2 )]
points = PoolVector2Array( 960, 720, 780, 840 )
start = NodePath("../../anchors/anchor17")
end = NodePath("../../anchors/anchor24")
[node name="route41" parent="routes" instance=ExtResource( 2 )]
points = PoolVector2Array( 960, 720, 720, 600 )
start = NodePath("../../anchors/anchor17")
end = NodePath("../../anchors/anchor19")
[node name="route42" parent="routes" instance=ExtResource( 2 )]
points = PoolVector2Array( 900, 480, 720, 600 )
start = NodePath("../../anchors/anchor14")
end = NodePath("../../anchors/anchor19")
[node name="route24" parent="routes" instance=ExtResource( 2 )]
points = PoolVector2Array( 780, 840, 540, 960 )
start = NodePath("../../anchors/anchor24")
end = NodePath("../../anchors/anchor7")
[node name="route30" parent="routes" instance=ExtResource( 2 )]
points = PoolVector2Array( 780, 840, 540, 720 )
start = NodePath("../../anchors/anchor24")
end = NodePath("../../anchors/anchor22")
[node name="route37" parent="routes" instance=ExtResource( 2 )]
points = PoolVector2Array( 540, 960, 540, 720 )
start = NodePath("../../anchors/anchor7")
end = NodePath("../../anchors/anchor22")
[node name="route11" parent="routes" instance=ExtResource( 2 )]
points = PoolVector2Array( 540, 1260, 720, 1080 )
start = NodePath("../../anchors/anchor3")
end = NodePath("../../anchors/anchor9")
[node name="route2" parent="routes" instance=ExtResource( 2 )]
points = PoolVector2Array( 540, 1500, 300, 1380 )
start = NodePath("../../anchors/anchor")
end = NodePath("../../anchors/anchor2")
[node name="route3" parent="routes" instance=ExtResource( 2 )]
points = PoolVector2Array( 540, 1500, 540, 1260 )
start = NodePath("../../anchors/anchor")
end = NodePath("../../anchors/anchor3")
[node name="route4" parent="routes" instance=ExtResource( 2 )]
points = PoolVector2Array( 300, 1380, 180, 1200 )
start = NodePath("../../anchors/anchor2")
end = NodePath("../../anchors/anchor5")
[node name="route5" parent="routes" instance=ExtResource( 2 )]
points = PoolVector2Array( 540, 1260, 180, 1200 )
start = NodePath("../../anchors/anchor3")
end = NodePath("../../anchors/anchor5")
[node name="route12" parent="routes" instance=ExtResource( 2 )]
points = PoolVector2Array( 360, 1080, 180, 1200 )
start = NodePath("../../anchors/anchor8")
end = NodePath("../../anchors/anchor5")
[node name="route15" parent="routes" instance=ExtResource( 2 )]
points = PoolVector2Array( 120, 960, 180, 1200 )
start = NodePath("../../anchors/anchor10")
end = NodePath("../../anchors/anchor5")
[node name="route18" parent="routes" instance=ExtResource( 2 )]
points = PoolVector2Array( 120, 960, 360, 1080 )
start = NodePath("../../anchors/anchor10")
end = NodePath("../../anchors/anchor8")
[node name="route21" parent="routes" instance=ExtResource( 2 )]
points = PoolVector2Array( 120, 960, 300, 840 )
start = NodePath("../../anchors/anchor10")
end = NodePath("../../anchors/anchor23")
[node name="route25" parent="routes" instance=ExtResource( 2 )]
points = PoolVector2Array( 120, 960, 120, 720 )
start = NodePath("../../anchors/anchor10")
end = NodePath("../../anchors/anchor18")
[node name="route34" parent="routes" instance=ExtResource( 2 )]
points = PoolVector2Array( 180, 480, 120, 720 )
start = NodePath("../../anchors/anchor15")
end = NodePath("../../anchors/anchor18")
[node name="route38" parent="routes" instance=ExtResource( 2 )]
points = PoolVector2Array( 360, 600, 120, 720, 120, 720 )
start = NodePath("../../anchors/anchor21")
end = NodePath("../../anchors/anchor18")
[node name="route39" parent="routes" instance=ExtResource( 2 )]
points = PoolVector2Array( 360, 600, 120, 720 )
start = NodePath("../../anchors/anchor21")
end = NodePath("../../anchors/anchor18")
[node name="route40" parent="routes" instance=ExtResource( 2 )]
points = PoolVector2Array( 360, 600, 180, 480 )
start = NodePath("../../anchors/anchor21")
end = NodePath("../../anchors/anchor15")
[node name="route44" parent="routes" instance=ExtResource( 2 )]
points = PoolVector2Array( 360, 600, 720, 600 )
start = NodePath("../../anchors/anchor21")
end = NodePath("../../anchors/anchor19")
[node name="route46" parent="routes" instance=ExtResource( 2 )]
points = PoolVector2Array( 540, 720, 720, 600 )
start = NodePath("../../anchors/anchor22")
end = NodePath("../../anchors/anchor19")
[node name="route45" parent="routes" instance=ExtResource( 2 )]
points = PoolVector2Array( 360, 600, 540, 720 )
start = NodePath("../../anchors/anchor21")
end = NodePath("../../anchors/anchor22")
[node name="route35" parent="routes" instance=ExtResource( 2 )]
points = PoolVector2Array( 180, 480, 300, 300 )
start = NodePath("../../anchors/anchor15")
end = NodePath("../../anchors/anchor13")
[node name="route36" parent="routes" instance=ExtResource( 2 )]
points = PoolVector2Array( 544, 184, 300, 300 )
start = NodePath("../../anchors/anchor16")
end = NodePath("../../anchors/anchor13")
[node name="route50" parent="routes" instance=ExtResource( 2 )]
points = PoolVector2Array( 544, 184, 300, 300 )
start = NodePath("../../anchors/anchor16")
end = NodePath("../../anchors/anchor13")
[node name="route51" parent="routes" instance=ExtResource( 2 )]
points = PoolVector2Array( 540, 420, 300, 300 )
start = NodePath("../../anchors/anchor20")
end = NodePath("../../anchors/anchor13")
[node name="route52" parent="routes" instance=ExtResource( 2 )]
points = PoolVector2Array( 540, 420, 180, 480 )
start = NodePath("../../anchors/anchor20")
end = NodePath("../../anchors/anchor15")
[node name="route27" parent="routes" instance=ExtResource( 2 )]
points = PoolVector2Array( 300, 840, 120, 720 )
start = NodePath("../../anchors/anchor23")
end = NodePath("../../anchors/anchor18")
[node name="route23" parent="routes" instance=ExtResource( 2 )]
points = PoolVector2Array( 540, 960, 300, 840 )
start = NodePath("../../anchors/anchor7")
end = NodePath("../../anchors/anchor23")
[node name="route29" parent="routes" instance=ExtResource( 2 )]
points = PoolVector2Array( 540, 720, 300, 840 )
start = NodePath("../../anchors/anchor22")
end = NodePath("../../anchors/anchor23")
[node name="route13" parent="routes" instance=ExtResource( 2 )]
points = PoolVector2Array( 360, 1080, 540, 1260 )
start = NodePath("../../anchors/anchor8")
end = NodePath("../../anchors/anchor3")
[node name="route14" parent="routes" instance=ExtResource( 2 )]
points = PoolVector2Array( 360, 1080, 720, 1080 )
start = NodePath("../../anchors/anchor8")
end = NodePath("../../anchors/anchor9")
[node name="route20" parent="routes" instance=ExtResource( 2 )]
points = PoolVector2Array( 360, 1080, 540, 960 )
start = NodePath("../../anchors/anchor8")
end = NodePath("../../anchors/anchor7")
[node name="route19" parent="routes" instance=ExtResource( 2 )]
points = PoolVector2Array( 540, 960, 720, 1080 )
start = NodePath("../../anchors/anchor7")
end = NodePath("../../anchors/anchor9")
[node name="route6" parent="routes" instance=ExtResource( 2 )]
points = PoolVector2Array( 540, 1260, 300, 1380 )
start = NodePath("../../anchors/anchor3")
end = NodePath("../../anchors/anchor2")
[node name="anchors" type="Node2D" parent="."]
[node name="anchor" parent="anchors" instance=ExtResource( 1 )]
position = Vector2( 540, 1500 )
[node name="anchor2" parent="anchors" instance=ExtResource( 1 )]
position = Vector2( 300, 1380 )
[node name="anchor3" parent="anchors" instance=ExtResource( 1 )]
position = Vector2( 540, 1260 )
anchor_type = "attack_start"
[node name="anchor4" parent="anchors" instance=ExtResource( 1 )]
position = Vector2( 780, 1380 )
[node name="anchor5" parent="anchors" instance=ExtResource( 1 )]
position = Vector2( 180, 1200 )
[node name="anchor6" parent="anchors" instance=ExtResource( 1 )]
position = Vector2( 900, 1200 )
[node name="anchor7" parent="anchors" instance=ExtResource( 1 )]
position = Vector2( 540, 960 )
[node name="anchor8" parent="anchors" instance=ExtResource( 1 )]
position = Vector2( 360, 1080 )
[node name="anchor9" parent="anchors" instance=ExtResource( 1 )]
position = Vector2( 720, 1080 )
[node name="anchor10" parent="anchors" instance=ExtResource( 1 )]
position = Vector2( 120, 960 )
[node name="anchor11" parent="anchors" instance=ExtResource( 1 )]
position = Vector2( 960, 960 )
[node name="anchor12" parent="anchors" instance=ExtResource( 1 )]
position = Vector2( 780, 300 )
[node name="anchor13" parent="anchors" instance=ExtResource( 1 )]
position = Vector2( 300, 300 )
[node name="anchor14" parent="anchors" instance=ExtResource( 1 )]
position = Vector2( 900, 480 )
[node name="anchor15" parent="anchors" instance=ExtResource( 1 )]
position = Vector2( 180, 480 )
[node name="anchor16" parent="anchors" instance=ExtResource( 1 )]
position = Vector2( 544, 184 )
[node name="anchor17" parent="anchors" instance=ExtResource( 1 )]
position = Vector2( 960, 720 )
[node name="anchor18" parent="anchors" instance=ExtResource( 1 )]
position = Vector2( 120, 720 )
[node name="anchor19" parent="anchors" instance=ExtResource( 1 )]
position = Vector2( 720, 600 )
[node name="anchor20" parent="anchors" instance=ExtResource( 1 )]
position = Vector2( 540, 420 )
anchor_type = "defend_start"
[node name="anchor21" parent="anchors" instance=ExtResource( 1 )]
position = Vector2( 360, 600 )
[node name="anchor22" parent="anchors" instance=ExtResource( 1 )]
position = Vector2( 540, 720 )
[node name="anchor23" parent="anchors" instance=ExtResource( 1 )]
position = Vector2( 300, 840 )
[node name="anchor24" parent="anchors" instance=ExtResource( 1 )]
position = Vector2( 780, 840 )

34
arenas/route.gd Normal file
View File

@ -0,0 +1,34 @@
tool
extends Line2D
class_name Route
export (NodePath) var start setget set_start
export (NodePath) var end setget set_end
func _ready():
set_start(start)
set_end(end)
add_to_group("routes")
func set_start(val):
start = val
if start:
var node = get_node_or_null(start)
if node:
set_point_position(0, node.position)
func set_end(val):
end = val
if end:
var node = get_node_or_null(end)
if node:
set_point_position(1, node.position)
func is_connecting(anchor1, anchor2) -> bool:
if start and end:
var start_node = get_node_or_null(start)
var end_node = get_node_or_null(end)
return start_node and end_node and ((start_node == anchor1 and end_node == anchor2) or (start_node == anchor2 and end_node == anchor1))
else:
return false

11
arenas/route.tscn Normal file
View File

@ -0,0 +1,11 @@
[gd_scene load_steps=2 format=2]
[ext_resource path="res://arenas/route.gd" type="Script" id=1]
[node name="route" type="Line2D"]
points = PoolVector2Array( 0, 0, 240, 0 )
default_color = Color( 0.227451, 0.392157, 0.47451, 1 )
begin_cap_mode = 2
end_cap_mode = 2
antialiased = true
script = ExtResource( 1 )

81
cards/base_card.gd Normal file
View File

@ -0,0 +1,81 @@
tool
extends Panel
const AnimHelper = preload("res://helpers/anims.gd")
const BattleHelper = preload("res://helpers/battle.gd")
export var title = "Card" setget set_title
export(Texture) var portrait setget set_portrait
export(PackedScene) var spawned_unit setget set_spawned_unit
var dragged = false
var base_position
var selected_anchor
func _ready():
set_portrait(portrait)
set_title(title)
set_spawned_unit(spawned_unit)
base_position = rect_position
func set_title(val):
title = val
if has_node("title"):
$title.text = title
func set_portrait(val):
portrait = val
if has_node("portrait"):
$portrait.texture = portrait
func set_spawned_unit(val):
spawned_unit = val
if has_node("points"):
if spawned_unit:
var unit = spawned_unit.instance()
$points.move = unit.base_move_points
$points.hull = unit.base_hull_points
$points.shield = unit.base_shield_points
$points.damage = unit.base_damage_points
$points.visible = true
else:
$points.visible = false
func can_be_used_on_anchor(anchor):
if anchor is Anchor:
if spawned_unit and not anchor.is_empty():
return false
return true
else:
return false
func update_anchors():
var position = rect_global_position + rect_size / 2 if dragged else null
selected_anchor = BattleHelper.update_anchors(get_tree(), position, funcref(self, "can_be_used_on_anchor"))
func play(anchor):
if spawned_unit:
anchor.set_content(spawned_unit.instance())
queue_free()
func return_to_base():
AnimHelper.linear_goto(self, base_position, 0.3)
func _gui_input(event):
if event is InputEventMouseButton and event.button_index == 1:
if event.pressed:
dragged = true
modulate = Color(1, 1, 1, 0.5)
elif dragged:
dragged = false
modulate = Color(1, 1, 1, 1)
if selected_anchor:
play(selected_anchor)
else:
return_to_base()
if event is InputEventMouseMotion:
if event.button_mask == BUTTON_LEFT:
set_position(rect_position + event.relative)
update_anchors()

BIN
cards/base_card.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 895 B

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/base_card.png-cd04ba4d2a73d84b4f772c5746fcd8d7.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://cards/base_card.png"
dest_files=[ "res://.import/base_card.png-cd04ba4d2a73d84b4f772c5746fcd8d7.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

108
cards/base_card.svg Normal file
View File

@ -0,0 +1,108 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="180"
height="240"
viewBox="0 0 180 240"
version="1.1"
id="svg8"
inkscape:version="0.92.4 (f8dce91, 2019-08-02)"
sodipodi:docname="base_card.svg"
inkscape:export-filename="/home/michael/workspace/spacetac/cards/base_card.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96">
<defs
id="defs2" />
<sodipodi:namedview
id="base"
pagecolor="#000000"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:zoom="3.436111"
inkscape:cx="93.468967"
inkscape:cy="125.13726"
inkscape:document-units="px"
inkscape:current-layer="g4549"
showgrid="true"
units="px"
inkscape:window-width="1920"
inkscape:window-height="1056"
inkscape:window-x="0"
inkscape:window-y="22"
inkscape:window-maximized="0"
inkscape:snap-page="true"
inkscape:snap-nodes="false"
inkscape:object-nodes="true"
inkscape:object-paths="false"
inkscape:snap-global="true"
inkscape:showpageshadow="false"
inkscape:snap-bbox="true"
inkscape:bbox-nodes="false"
inkscape:snap-to-guides="true"
scale-x="1"
inkscape:snap-bbox-midpoints="true">
<inkscape:grid
type="xygrid"
id="grid4596"
snapvisiblegridlinesonly="true"
dotted="false"
color="#938d33"
opacity="0.19215686"
empcolor="#c7a412"
empopacity="0.25098039" />
</sodipodi:namedview>
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Calque 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-882.51965)">
<g
id="g4549"
transform="matrix(1,0,0,-1,0,2005.039)">
<path
inkscape:connector-curvature="0"
id="rect836"
d="m 2,1120.5194 176,1e-4 V 884.51935 l -176,1.8e-4 z"
style="opacity:1;fill:#1f2f4f;fill-opacity:1;stroke:#a5b7da;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
sodipodi:nodetypes="ccccc" />
<rect
y="901.51935"
x="9"
height="162"
width="162"
id="rect4545"
style="opacity:1;fill:#6f83ac;fill-opacity:1;stroke:none;stroke-width:2.06981111;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<rect
y="1077.5194"
x="30"
height="34.999939"
width="120"
id="rect4545-3"
style="opacity:1;fill:#6f83ac;fill-opacity:1;stroke:none;stroke-width:0.80766743;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/base_card.svg-e065e5cedab311295214645ae915fc10.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://cards/base_card.svg"
dest_files=[ "res://.import/base_card.svg-e065e5cedab311295214645ae915fc10.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

60
cards/base_card.tscn Normal file
View File

@ -0,0 +1,60 @@
[gd_scene load_steps=8 format=2]
[ext_resource path="res://cards/base_card.png" type="Texture" id=1]
[ext_resource path="res://cards/base_card.gd" type="Script" id=2]
[ext_resource path="res://theme/ui.tres" type="Theme" id=3]
[ext_resource path="res://theme/fonts/daggersquare.regular.otf" type="DynamicFontData" id=4]
[ext_resource path="res://cards/base_card_portrait.png" type="Texture" id=5]
[ext_resource path="res://units/points.tscn" type="PackedScene" id=6]
[sub_resource type="DynamicFont" id=1]
size = 22
font_data = ExtResource( 4 )
[node name="card" type="Panel"]
self_modulate = Color( 1, 1, 1, 0 )
margin_left = -90.0
margin_top = -120.0
margin_right = 90.0
margin_bottom = 120.0
mouse_default_cursor_shape = 6
theme = ExtResource( 3 )
script = ExtResource( 2 )
__meta__ = {
"_edit_use_anchors_": false
}
portrait = ExtResource( 5 )
[node name="background" type="Sprite" parent="."]
position = Vector2( 90, 120 )
texture = ExtResource( 1 )
[node name="title" type="Label" parent="."]
margin_left = 30.0
margin_top = 10.0
margin_right = 150.0
margin_bottom = 45.0
theme = ExtResource( 3 )
custom_fonts/font = SubResource( 1 )
custom_colors/font_color = Color( 0, 0, 0, 1 )
text = "Card"
align = 1
valign = 1
__meta__ = {
"_edit_use_anchors_": false
}
[node name="portrait" type="Sprite" parent="."]
position = Vector2( 90, 140 )
scale = Vector2( 0.6, 0.6 )
texture = ExtResource( 5 )
[node name="points" parent="." instance=ExtResource( 6 )]
visible = false
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
margin_top = 78.0
margin_bottom = 123.0
rect_scale = Vector2( 0.5, 0.5 )

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/base_card_portrait.png-266eea43badfb75b1d95a5faaed31962.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://cards/base_card_portrait.png"
dest_files=[ "res://.import/base_card_portrait.png-266eea43badfb75b1d95a5faaed31962.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

BIN
cards/spawn_avenger.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/spawn_avenger.png-0e9b42e111ad47348fa2bb54082d25af.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://cards/spawn_avenger.png"
dest_files=[ "res://.import/spawn_avenger.png-0e9b42e111ad47348fa2bb54082d25af.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

22
cards/spawn_avenger.tscn Normal file
View File

@ -0,0 +1,22 @@
[gd_scene load_steps=4 format=2]
[ext_resource path="res://units/avenger.tscn" type="PackedScene" id=1]
[ext_resource path="res://cards/spawn_avenger.png" type="Texture" id=2]
[ext_resource path="res://cards/base_card.tscn" type="PackedScene" id=3]
[node name="spawn_avenger" instance=ExtResource( 3 )]
title = "Avenger"
portrait = ExtResource( 2 )
spawned_unit = ExtResource( 1 )
[node name="title" parent="." index="1"]
text = "Avenger"
[node name="portrait" parent="." index="2"]
texture = ExtResource( 2 )
[node name="points" parent="." index="3"]
visible = true
move = 1
hull = 2
damage = 3

BIN
cards/spawn_breeze.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/spawn_breeze.png-a26105160ca2c20c3fe2cbf5112a5e38.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://cards/spawn_breeze.png"
dest_files=[ "res://.import/spawn_breeze.png-a26105160ca2c20c3fe2cbf5112a5e38.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

23
cards/spawn_breeze.tscn Normal file
View File

@ -0,0 +1,23 @@
[gd_scene load_steps=4 format=2]
[ext_resource path="res://cards/spawn_breeze.png" type="Texture" id=1]
[ext_resource path="res://cards/base_card.tscn" type="PackedScene" id=2]
[ext_resource path="res://units/breeze.tscn" type="PackedScene" id=3]
[node name="spawn_breeze" instance=ExtResource( 2 )]
title = "Breeze"
portrait = ExtResource( 1 )
spawned_unit = ExtResource( 3 )
[node name="title" parent="." index="1"]
text = "Breeze"
[node name="portrait" parent="." index="2"]
texture = ExtResource( 1 )
[node name="points" parent="." index="3"]
visible = true
move = 2
hull = 1
shield = 2
damage = 2

BIN
cards/spawn_commodore.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/spawn_commodore.png-66add408bdd33b45607203ba7d601c08.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://cards/spawn_commodore.png"
dest_files=[ "res://.import/spawn_commodore.png-66add408bdd33b45607203ba7d601c08.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

View File

@ -0,0 +1,22 @@
[gd_scene load_steps=4 format=2]
[ext_resource path="res://cards/spawn_commodore.png" type="Texture" id=1]
[ext_resource path="res://units/commodore.tscn" type="PackedScene" id=2]
[ext_resource path="res://cards/base_card.tscn" type="PackedScene" id=3]
[node name="spawn_commorode" instance=ExtResource( 3 )]
title = "Commodore"
portrait = ExtResource( 1 )
spawned_unit = ExtResource( 2 )
[node name="title" parent="." index="1"]
text = "Commodore"
[node name="portrait" parent="." index="2"]
texture = ExtResource( 1 )
[node name="points" parent="." index="3"]
visible = true
move = 2
hull = 2
damage = 3

BIN
cards/spawn_creeper.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/spawn_creeper.png-519e7a442f8730fa5b853c6fa7b94b52.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://cards/spawn_creeper.png"
dest_files=[ "res://.import/spawn_creeper.png-519e7a442f8730fa5b853c6fa7b94b52.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

22
cards/spawn_creeper.tscn Normal file
View File

@ -0,0 +1,22 @@
[gd_scene load_steps=4 format=2]
[ext_resource path="res://cards/base_card.tscn" type="PackedScene" id=1]
[ext_resource path="res://units/creeper.tscn" type="PackedScene" id=2]
[ext_resource path="res://cards/spawn_creeper.png" type="Texture" id=3]
[node name="spawn_creeper" instance=ExtResource( 1 )]
title = "Creeper"
portrait = ExtResource( 3 )
spawned_unit = ExtResource( 2 )
[node name="title" parent="." index="1"]
text = "Creeper"
[node name="portrait" parent="." index="2"]
texture = ExtResource( 3 )
[node name="points" parent="." index="3"]
visible = true
move = 3
hull = 3
damage = 2

BIN
cards/spawn_falcon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/spawn_falcon.png-0848e156a2fe111dbd3ccc9fed8dc60b.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://cards/spawn_falcon.png"
dest_files=[ "res://.import/spawn_falcon.png-0848e156a2fe111dbd3ccc9fed8dc60b.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

23
cards/spawn_falcon.tscn Normal file
View File

@ -0,0 +1,23 @@
[gd_scene load_steps=4 format=2]
[ext_resource path="res://cards/base_card.tscn" type="PackedScene" id=1]
[ext_resource path="res://cards/spawn_falcon.png" type="Texture" id=2]
[ext_resource path="res://units/falcon.tscn" type="PackedScene" id=3]
[node name="spawn_falcon" instance=ExtResource( 1 )]
title = "Falcon"
portrait = ExtResource( 2 )
spawned_unit = ExtResource( 3 )
[node name="title" parent="." index="1"]
text = "Falcon"
[node name="portrait" parent="." index="2"]
texture = ExtResource( 2 )
[node name="points" parent="." index="3"]
visible = true
move = 2
hull = 2
shield = 1
damage = 2

BIN
cards/spawn_flea.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/spawn_flea.png-be5a9d99544b57d747f6693041905b91.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://cards/spawn_flea.png"
dest_files=[ "res://.import/spawn_flea.png-be5a9d99544b57d747f6693041905b91.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

23
cards/spawn_flea.tscn Normal file
View File

@ -0,0 +1,23 @@
[gd_scene load_steps=4 format=2]
[ext_resource path="res://cards/spawn_flea.png" type="Texture" id=1]
[ext_resource path="res://cards/base_card.tscn" type="PackedScene" id=2]
[ext_resource path="res://units/flea.tscn" type="PackedScene" id=3]
[node name="spawn_flea" instance=ExtResource( 2 )]
title = "Flea"
portrait = ExtResource( 1 )
spawned_unit = ExtResource( 3 )
[node name="title" parent="." index="1"]
text = "Flea"
[node name="portrait" parent="." index="2"]
texture = ExtResource( 1 )
[node name="points" parent="." index="3"]
visible = true
move = 4
hull = 1
shield = 1
damage = 1

BIN
cards/spawn_jumper.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/spawn_jumper.png-1f71a23fcc95a1c9b7932dc015425dc1.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://cards/spawn_jumper.png"
dest_files=[ "res://.import/spawn_jumper.png-1f71a23fcc95a1c9b7932dc015425dc1.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

23
cards/spawn_jumper.tscn Normal file
View File

@ -0,0 +1,23 @@
[gd_scene load_steps=4 format=2]
[ext_resource path="res://units/jumper.tscn" type="PackedScene" id=1]
[ext_resource path="res://cards/base_card.tscn" type="PackedScene" id=2]
[ext_resource path="res://cards/spawn_jumper.png" type="Texture" id=3]
[node name="spawn_jumper" instance=ExtResource( 2 )]
title = "Jumper"
portrait = ExtResource( 3 )
spawned_unit = ExtResource( 1 )
[node name="title" parent="." index="1"]
text = "Jumper"
[node name="portrait" parent="." index="2"]
texture = ExtResource( 3 )
[node name="points" parent="." index="3"]
visible = true
move = 3
hull = 1
shield = 2
damage = 2

BIN
cards/spawn_trapper.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/spawn_trapper.png-b66f0ec37cb8dddf6d2a59ce3a093aef.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://cards/spawn_trapper.png"
dest_files=[ "res://.import/spawn_trapper.png-b66f0ec37cb8dddf6d2a59ce3a093aef.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

23
cards/spawn_trapper.tscn Normal file
View File

@ -0,0 +1,23 @@
[gd_scene load_steps=4 format=2]
[ext_resource path="res://cards/spawn_trapper.png" type="Texture" id=1]
[ext_resource path="res://units/trapper.tscn" type="PackedScene" id=2]
[ext_resource path="res://cards/base_card.tscn" type="PackedScene" id=3]
[node name="spawn_trapper" instance=ExtResource( 3 )]
title = "Trapper"
portrait = ExtResource( 1 )
spawned_unit = ExtResource( 2 )
[node name="title" parent="." index="1"]
text = "Trapper"
[node name="portrait" parent="." index="2"]
texture = ExtResource( 1 )
[node name="points" parent="." index="3"]
visible = true
move = 2
hull = 2
shield = 1
damage = 2

BIN
cards/spawn_xander.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/spawn_xander.png-e850114739e91765be24759f7e950cde.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://cards/spawn_xander.png"
dest_files=[ "res://.import/spawn_xander.png-e850114739e91765be24759f7e950cde.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

23
cards/spawn_xander.tscn Normal file
View File

@ -0,0 +1,23 @@
[gd_scene load_steps=4 format=2]
[ext_resource path="res://units/xander.tscn" type="PackedScene" id=1]
[ext_resource path="res://cards/spawn_xander.png" type="Texture" id=2]
[ext_resource path="res://cards/base_card.tscn" type="PackedScene" id=3]
[node name="spawn_xander" instance=ExtResource( 3 )]
title = "Xander"
portrait = ExtResource( 2 )
spawned_unit = ExtResource( 1 )
[node name="title" parent="." index="1"]
text = "Xander"
[node name="portrait" parent="." index="2"]
texture = ExtResource( 2 )
[node name="points" parent="." index="3"]
visible = true
move = 2
hull = 2
shield = 1
damage = 2

7
env.tres Normal file
View File

@ -0,0 +1,7 @@
[gd_resource type="Environment" load_steps=2 format=2]
[sub_resource type="ProceduralSky" id=1]
[resource]
background_sky = SubResource( 1 )
background_energy = 0.0

248
export_presets.cfg Normal file
View File

@ -0,0 +1,248 @@
[preset.0]
name="HTML5"
platform="HTML5"
runnable=true
custom_features=""
export_filter="all_resources"
include_filter=""
exclude_filter=""
export_path="exports/web/index.html"
patch_list=PoolStringArray( )
script_export_mode=1
script_encryption_key=""
[preset.0.options]
vram_texture_compression/for_desktop=true
vram_texture_compression/for_mobile=true
html/custom_html_shell=""
html/head_include=""
custom_template/release=""
custom_template/debug=""
[preset.1]
name="Linux/X11"
platform="Linux/X11"
runnable=true
custom_features=""
export_filter="all_resources"
include_filter=""
exclude_filter=""
export_path="exports/linux/spacetac.x86_64"
patch_list=PoolStringArray( )
script_export_mode=1
script_encryption_key=""
[preset.1.options]
texture_format/bptc=false
texture_format/s3tc=true
texture_format/etc=false
texture_format/etc2=false
texture_format/no_bptc_fallbacks=true
binary_format/64_bits=true
binary_format/embed_pck=false
custom_template/release=""
custom_template/debug=""
[preset.2]
name="Android"
platform="Android"
runnable=true
custom_features=""
export_filter="all_resources"
include_filter=""
exclude_filter=""
export_path="exports/android/spacetac.apk"
patch_list=PoolStringArray( )
script_export_mode=1
script_encryption_key=""
[preset.2.options]
graphics/32_bits_framebuffer=true
xr_features/xr_mode=0
xr_features/degrees_of_freedom=0
xr_features/hand_tracking=0
one_click_deploy/clear_previous_install=false
custom_template/debug=""
custom_template/release=""
custom_template/use_custom_build=false
command_line/extra_args=""
version/code=1
version/name="1.0"
package/unique_name="org.godotengine.$genname"
package/name=""
package/signed=true
screen/immersive_mode=true
screen/orientation=1
screen/support_small=true
screen/support_normal=true
screen/support_large=true
screen/support_xlarge=true
screen/opengl_debug=false
launcher_icons/main_192x192="res://icon192.png"
launcher_icons/adaptive_foreground_432x432=""
launcher_icons/adaptive_background_432x432=""
keystore/debug=""
keystore/debug_user=""
keystore/debug_password=""
keystore/release=""
keystore/release_user=""
keystore/release_password=""
apk_expansion/enable=false
apk_expansion/SALT=""
apk_expansion/public_key=""
architectures/armeabi-v7a=true
architectures/arm64-v8a=true
architectures/x86=false
architectures/x86_64=false
permissions/custom_permissions=PoolStringArray( )
permissions/access_checkin_properties=false
permissions/access_coarse_location=false
permissions/access_fine_location=false
permissions/access_location_extra_commands=false
permissions/access_mock_location=false
permissions/access_network_state=false
permissions/access_surface_flinger=false
permissions/access_wifi_state=false
permissions/account_manager=false
permissions/add_voicemail=false
permissions/authenticate_accounts=false
permissions/battery_stats=false
permissions/bind_accessibility_service=false
permissions/bind_appwidget=false
permissions/bind_device_admin=false
permissions/bind_input_method=false
permissions/bind_nfc_service=false
permissions/bind_notification_listener_service=false
permissions/bind_print_service=false
permissions/bind_remoteviews=false
permissions/bind_text_service=false
permissions/bind_vpn_service=false
permissions/bind_wallpaper=false
permissions/bluetooth=false
permissions/bluetooth_admin=false
permissions/bluetooth_privileged=false
permissions/brick=false
permissions/broadcast_package_removed=false
permissions/broadcast_sms=false
permissions/broadcast_sticky=false
permissions/broadcast_wap_push=false
permissions/call_phone=false
permissions/call_privileged=false
permissions/camera=false
permissions/capture_audio_output=false
permissions/capture_secure_video_output=false
permissions/capture_video_output=false
permissions/change_component_enabled_state=false
permissions/change_configuration=false
permissions/change_network_state=false
permissions/change_wifi_multicast_state=false
permissions/change_wifi_state=false
permissions/clear_app_cache=false
permissions/clear_app_user_data=false
permissions/control_location_updates=false
permissions/delete_cache_files=false
permissions/delete_packages=false
permissions/device_power=false
permissions/diagnostic=false
permissions/disable_keyguard=false
permissions/dump=false
permissions/expand_status_bar=false
permissions/factory_test=false
permissions/flashlight=false
permissions/force_back=false
permissions/get_accounts=false
permissions/get_package_size=false
permissions/get_tasks=false
permissions/get_top_activity_info=false
permissions/global_search=false
permissions/hardware_test=false
permissions/inject_events=false
permissions/install_location_provider=false
permissions/install_packages=false
permissions/install_shortcut=false
permissions/internal_system_window=false
permissions/internet=false
permissions/kill_background_processes=false
permissions/location_hardware=false
permissions/manage_accounts=false
permissions/manage_app_tokens=false
permissions/manage_documents=false
permissions/master_clear=false
permissions/media_content_control=false
permissions/modify_audio_settings=false
permissions/modify_phone_state=false
permissions/mount_format_filesystems=false
permissions/mount_unmount_filesystems=false
permissions/nfc=false
permissions/persistent_activity=false
permissions/process_outgoing_calls=false
permissions/read_calendar=false
permissions/read_call_log=false
permissions/read_contacts=false
permissions/read_external_storage=false
permissions/read_frame_buffer=false
permissions/read_history_bookmarks=false
permissions/read_input_state=false
permissions/read_logs=false
permissions/read_phone_state=false
permissions/read_profile=false
permissions/read_sms=false
permissions/read_social_stream=false
permissions/read_sync_settings=false
permissions/read_sync_stats=false
permissions/read_user_dictionary=false
permissions/reboot=false
permissions/receive_boot_completed=false
permissions/receive_mms=false
permissions/receive_sms=false
permissions/receive_wap_push=false
permissions/record_audio=false
permissions/reorder_tasks=false
permissions/restart_packages=false
permissions/send_respond_via_message=false
permissions/send_sms=false
permissions/set_activity_watcher=false
permissions/set_alarm=false
permissions/set_always_finish=false
permissions/set_animation_scale=false
permissions/set_debug_app=false
permissions/set_orientation=false
permissions/set_pointer_speed=false
permissions/set_preferred_applications=false
permissions/set_process_limit=false
permissions/set_time=false
permissions/set_time_zone=false
permissions/set_wallpaper=false
permissions/set_wallpaper_hints=false
permissions/signal_persistent_processes=false
permissions/status_bar=false
permissions/subscribed_feeds_read=false
permissions/subscribed_feeds_write=false
permissions/system_alert_window=false
permissions/transmit_ir=false
permissions/uninstall_shortcut=false
permissions/update_device_stats=false
permissions/use_credentials=false
permissions/use_sip=false
permissions/vibrate=false
permissions/wake_lock=false
permissions/write_apn_settings=false
permissions/write_calendar=false
permissions/write_call_log=false
permissions/write_contacts=false
permissions/write_external_storage=false
permissions/write_gservices=false
permissions/write_history_bookmarks=false
permissions/write_profile=false
permissions/write_secure_settings=false
permissions/write_settings=false
permissions/write_sms=false
permissions/write_social_stream=false
permissions/write_sync_settings=false
permissions/write_user_dictionary=false

8
helpers/anims.gd Normal file
View File

@ -0,0 +1,8 @@
static func linear_goto(node: Node, dest: Vector2, duration=0.5, easing=true):
var tween = Tween.new()
node.add_child(tween)
tween.interpolate_property(
node, "rect_position" if node is Control else "position",
node.rect_position if node is Control else node.position, dest, duration,
Tween.TRANS_LINEAR, Tween.EASE_IN_OUT if easing else null)
tween.start()

27
helpers/battle.gd Normal file
View File

@ -0,0 +1,27 @@
static func update_anchors(tree: SceneTree, position, acceptability) -> Anchor:
""" Update anchor visual hint, and return selected one
"""
var anchors = tree.get_nodes_in_group("anchors")
for anchor in anchors:
anchor.selectable = position and acceptability.call_func(anchor)
var selected_anchor = null
var selected_distance = INF
for anchor in anchors:
if anchor.selectable:
var distance = anchor.global_position.distance_to(position)
if distance < 150 and distance < selected_distance:
selected_anchor = anchor
selected_distance = distance
for anchor in anchors:
anchor.selected = (anchor == selected_anchor)
return selected_anchor
static func spawn_unit(name: String, anchor: Anchor):
""" Spawn a unit on an empty anchor
"""
var scene = load("res://units/" + name + ".tscn")
var node = scene.instance()
anchor.set_content(node)

BIN
icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

34
icon.png.import Normal file
View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://icon.png"
dest_files=[ "res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

BIN
icon192.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

34
icon192.png.import Normal file
View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/icon192.png-314ef95b0ddbdc5122a821dfa6e2f4ee.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://icon192.png"
dest_files=[ "res://.import/icon192.png-314ef95b0ddbdc5122a821dfa6e2f4ee.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

48
project.godot Normal file
View File

@ -0,0 +1,48 @@
; Engine configuration file.
; It's best edited using the editor UI and not directly,
; since the parameters that go here are not all obvious.
;
; Format:
; [section] ; section goes between []
; param=value ; assign values to parameters
config_version=4
_global_script_classes=[ {
"base": "Sprite",
"class": "Anchor",
"language": "GDScript",
"path": "res://arenas/anchor.gd"
}, {
"base": "Line2D",
"class": "Route",
"language": "GDScript",
"path": "res://arenas/route.gd"
} ]
_global_script_class_icons={
"Anchor": "",
"Route": ""
}
[application]
config/name="SpaceTac"
config/description="A tactical game set in space"
run/main_scene="res://screens/title/title.tscn"
config/icon="res://icon.png"
[display]
window/size/width=1080
window/size/height=1920
window/handheld/orientation="portrait"
window/stretch/mode="2d"
window/stretch/aspect="keep"
[gui]
theme/custom="res://theme/ui.tres"
[rendering]
environment/default_environment="res://env.tres"

Binary file not shown.

After

Width:  |  Height:  |  Size: 218 KiB

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/background.jpg-b242a9a3a53a88ebb2be30535ce63dae.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://screens/battle/background.jpg"
dest_files=[ "res://.import/background.jpg-b242a9a3a53a88ebb2be30535ce63dae.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

21
screens/battle/battle.gd Normal file
View File

@ -0,0 +1,21 @@
extends Panel
const BattleHelper = preload("res://helpers/battle.gd")
func _ready():
create_hero_units()
func find_free_anchor(anchor_type: String):
for anchor in get_tree().get_nodes_in_group("anchors"):
if anchor.anchor_type == anchor_type and anchor.is_empty():
return anchor
return null
func create_hero_unit(name: String, anchor_type: String):
var anchor = find_free_anchor(anchor_type)
if anchor:
BattleHelper.spawn_unit("heroes/" + name, anchor)
func create_hero_units():
create_hero_unit("tomahawk", "attack_start")
create_hero_unit("rhino", "defend_start")

View File

@ -0,0 +1,59 @@
[gd_scene load_steps=9 format=2]
[ext_resource path="res://screens/battle/mechanolith.ogg" type="AudioStream" id=1]
[ext_resource path="res://cards/spawn_falcon.tscn" type="PackedScene" id=2]
[ext_resource path="res://arenas/normal1.tscn" type="PackedScene" id=3]
[ext_resource path="res://screens/battle/background.jpg" type="Texture" id=4]
[ext_resource path="res://screens/battle/battle.gd" type="Script" id=5]
[ext_resource path="res://cards/spawn_jumper.tscn" type="PackedScene" id=6]
[ext_resource path="res://cards/spawn_flea.tscn" type="PackedScene" id=7]
[ext_resource path="res://cards/spawn_creeper.tscn" type="PackedScene" id=8]
[node name="view" type="Panel"]
anchor_right = 1.0
anchor_bottom = 1.0
script = ExtResource( 5 )
__meta__ = {
"_edit_use_anchors_": false
}
[node name="background" type="Sprite" parent="."]
position = Vector2( 540, 970 )
rotation = -4.71238
texture = ExtResource( 4 )
__meta__ = {
"_edit_lock_": true
}
[node name="arena_normal1" parent="." instance=ExtResource( 3 )]
[node name="bgm" type="AudioStreamPlayer" parent="."]
stream = ExtResource( 1 )
volume_db = -15.891
autoplay = true
[node name="spawn_falcon" parent="." instance=ExtResource( 2 )]
self_modulate = Color( 1, 1, 1, 1 )
margin_left = 240.0
margin_top = 1660.0
margin_right = 420.0
margin_bottom = 1900.0
theme = null
[node name="spawn_jumper" parent="." instance=ExtResource( 6 )]
margin_left = 450.0
margin_top = 1660.0
margin_right = 630.0
margin_bottom = 1900.0
[node name="spawn_creeper" parent="." instance=ExtResource( 8 )]
margin_left = 660.0
margin_top = 1660.0
margin_right = 840.0
margin_bottom = 1900.0
[node name="spawn_flea" parent="." instance=ExtResource( 7 )]
margin_left = 870.0
margin_top = 1660.0
margin_right = 1050.0
margin_bottom = 1900.0

Binary file not shown.

View File

@ -0,0 +1,15 @@
[remap]
importer="ogg_vorbis"
type="AudioStreamOGGVorbis"
path="res://.import/mechanolith.ogg-bf9ddc5505122c79bf0aa5c88c56cec9.oggstr"
[deps]
source_file="res://screens/battle/mechanolith.ogg"
dest_files=[ "res://.import/mechanolith.ogg-bf9ddc5505122c79bf0aa5c88c56cec9.oggstr" ]
[params]
loop=true
loop_offset=0

BIN
screens/intro/division.ogg Normal file

Binary file not shown.

View File

@ -0,0 +1,15 @@
[remap]
importer="ogg_vorbis"
type="AudioStreamOGGVorbis"
path="res://.import/division.ogg-42dfa3d17c6db6047174ccffe6267651.oggstr"
[deps]
source_file="res://screens/intro/division.ogg"
dest_files=[ "res://.import/division.ogg-42dfa3d17c6db6047174ccffe6267651.oggstr" ]
[params]
loop=true
loop_offset=0

BIN
screens/intro/flash.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/flash.png-435554d310d29ea75c70e925984043f0.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://screens/intro/flash.png"
dest_files=[ "res://.import/flash.png-435554d310d29ea75c70e925984043f0.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

BIN
screens/intro/fleet.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/fleet.png-b0f89e68141f798cc723fcf415fd6cfe.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://screens/intro/fleet.png"
dest_files=[ "res://.import/fleet.png-b0f89e68141f798cc723fcf415fd6cfe.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

BIN
screens/intro/galaxy1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 380 KiB

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/galaxy1.png-b335839180a6aa75bb7532422a042eea.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://screens/intro/galaxy1.png"
dest_files=[ "res://.import/galaxy1.png-b335839180a6aa75bb7532422a042eea.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

BIN
screens/intro/galaxy2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 601 KiB

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/galaxy2.png-919dfb17caeed477321539935ba2c94d.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://screens/intro/galaxy2.png"
dest_files=[ "res://.import/galaxy2.png-919dfb17caeed477321539935ba2c94d.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

807
screens/intro/intro.tscn Normal file
View File

@ -0,0 +1,807 @@
[gd_scene load_steps=25 format=2]
[ext_resource path="res://theme/ui.tres" type="Theme" id=1]
[ext_resource path="res://screens/intro/galaxy1.png" type="Texture" id=2]
[ext_resource path="res://screens/intro/galaxy2.png" type="Texture" id=3]
[ext_resource path="res://screens/intro/division.ogg" type="AudioStream" id=4]
[ext_resource path="res://screens/intro/fleet.png" type="Texture" id=5]
[ext_resource path="res://screens/intro/flash.png" type="Texture" id=6]
[sub_resource type="GDScript" id=1]
script/source = "extends Panel
func _gui_input(event):
if event is InputEventMouseButton and event.button_index == BUTTON_LEFT and event.pressed:
$caption.next()
func _ready():
$caption.next()
func skip():
get_tree().change_scene(\"res://screens/map/map.tscn\")
"
[sub_resource type="GDScript" id=2]
script/source = "extends Node2D
func _on_steps_animation_started(anim_name):
if anim_name == \"step4\":
$fadein.play(\"main\")
elif anim_name == \"step9\":
$arrival.play(\"main\")
"
[sub_resource type="Animation" id=3]
resource_name = "init"
tracks/0/type = "value"
tracks/0/path = NodePath("galaxy:modulate")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Color( 1, 1, 1, 0 ) ]
}
[sub_resource type="Animation" id=4]
length = 3.0
tracks/0/type = "value"
tracks/0/path = NodePath("galaxy:modulate")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0, 3 ),
"transitions": PoolRealArray( 1, 1 ),
"update": 0,
"values": [ Color( 1, 1, 1, 0 ), Color( 1, 1, 1, 1 ) ]
}
[sub_resource type="Animation" id=5]
resource_name = "loop"
length = 60.0
loop = true
tracks/0/type = "value"
tracks/0/path = NodePath("galaxy/galaxy2:rotation_degrees")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0, 60 ),
"transitions": PoolRealArray( 1, 1 ),
"update": 0,
"values": [ -360.0, 360.0 ]
}
tracks/1/type = "value"
tracks/1/path = NodePath("galaxy/galaxy1:rotation_degrees")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/keys = {
"times": PoolRealArray( 0, 60 ),
"transitions": PoolRealArray( 1, 1 ),
"update": 0,
"values": [ -180.0, 180.0 ]
}
[sub_resource type="Animation" id=6]
resource_name = "init"
length = 6.0
tracks/0/type = "value"
tracks/0/path = NodePath("galaxy/fleet:position")
tracks/0/interp = 2
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 761.331, -374.784 ) ]
}
tracks/1/type = "value"
tracks/1/path = NodePath("galaxy/flash:modulate")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Color( 1, 1, 1, 0 ) ]
}
tracks/2/type = "value"
tracks/2/path = NodePath("galaxy/fleet:modulate")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Color( 1, 1, 1, 1 ) ]
}
tracks/3/type = "value"
tracks/3/path = NodePath("galaxy/fleet:scale")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 2, 2 ) ]
}
tracks/4/type = "value"
tracks/4/path = NodePath("galaxy/flash:scale")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 1, 1 ) ]
}
[sub_resource type="Animation" id=7]
length = 6.0
tracks/0/type = "value"
tracks/0/path = NodePath("galaxy/fleet:position")
tracks/0/interp = 2
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0, 1.8, 4 ),
"transitions": PoolRealArray( 1, 1, 1.00001 ),
"update": 0,
"values": [ Vector2( 757.014, -290.604 ), Vector2( 206.221, 5.72168 ), Vector2( -87.0764, 206.765 ) ]
}
tracks/1/type = "value"
tracks/1/path = NodePath("galaxy/flash:modulate")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/keys = {
"times": PoolRealArray( 0, 3.8, 4, 4.3 ),
"transitions": PoolRealArray( 1, 1, 1, 1 ),
"update": 0,
"values": [ Color( 1, 1, 1, 0 ), Color( 1, 1, 1, 0 ), Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 0 ) ]
}
tracks/2/type = "value"
tracks/2/path = NodePath("galaxy/fleet:modulate")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/keys = {
"times": PoolRealArray( 0, 4, 4.3 ),
"transitions": PoolRealArray( 1, 1, 1 ),
"update": 0,
"values": [ Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 0 ) ]
}
tracks/3/type = "value"
tracks/3/path = NodePath("galaxy/fleet:scale")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/keys = {
"times": PoolRealArray( 0, 4 ),
"transitions": PoolRealArray( 1, 1 ),
"update": 0,
"values": [ Vector2( 2, 2 ), Vector2( 1.5, 1.5 ) ]
}
tracks/4/type = "value"
tracks/4/path = NodePath("galaxy/flash:scale")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/keys = {
"times": PoolRealArray( 0, 3.7, 4, 4.2 ),
"transitions": PoolRealArray( 1, 1, 1, 1 ),
"update": 0,
"values": [ Vector2( 1, 1 ), Vector2( 1, 1 ), Vector2( 3, 3 ), Vector2( 0.1, 0.1 ) ]
}
[sub_resource type="StyleBoxFlat" id=8]
content_margin_left = 20.0
content_margin_right = 20.0
content_margin_top = 20.0
content_margin_bottom = 20.0
bg_color = Color( 0.105882, 0.231373, 0.294118, 0.862745 )
border_width_left = 2
border_width_top = 2
border_width_right = 2
border_width_bottom = 2
border_color = Color( 0.227451, 0.392157, 0.47451, 1 )
[sub_resource type="GDScript" id=9]
script/source = "extends PanelContainer
signal finished
var step = 1
func next():
var anim = \"step%d\" % step
if $steps.is_playing():
$steps.seek(10)
else:
if $steps.has_animation(anim):
$steps.play(anim)
else:
emit_signal(\"finished\")
step += 1
"
[sub_resource type="Animation" id=10]
length = 5.0
tracks/0/type = "value"
tracks/0/path = NodePath("text:percent_visible")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0, 0.3, 5 ),
"transitions": PoolRealArray( 1, 1, 1 ),
"update": 0,
"values": [ 0.0, 0.0, 1.0 ]
}
tracks/1/type = "value"
tracks/1/path = NodePath(".:modulate")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/keys = {
"times": PoolRealArray( 0, 0.5 ),
"transitions": PoolRealArray( 1, 1 ),
"update": 0,
"values": [ Color( 1, 1, 1, 0 ), Color( 1, 1, 1, 1 ) ]
}
tracks/2/type = "value"
tracks/2/path = NodePath("text:text")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 1,
"values": [ "In a not-so-distant future, Artifical Intelligence has become the most prominent species in the universe." ]
}
[sub_resource type="Animation" id=11]
length = 5.0
tracks/0/type = "value"
tracks/0/path = NodePath("text:percent_visible")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0.5, 0.8, 5 ),
"transitions": PoolRealArray( 1, 1, 1 ),
"update": 0,
"values": [ 0.0, 0.0, 1.0 ]
}
tracks/1/type = "value"
tracks/1/path = NodePath(".:modulate")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/keys = {
"times": PoolRealArray( 0, 0.4, 0.6, 1 ),
"transitions": PoolRealArray( 1, 1, 1, 1 ),
"update": 0,
"values": [ Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 0 ), Color( 1, 1, 1, 0 ), Color( 1, 1, 1, 1 ) ]
}
tracks/2/type = "value"
tracks/2/path = NodePath("text:text")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/keys = {
"times": PoolRealArray( 0.4 ),
"transitions": PoolRealArray( 1 ),
"update": 1,
"values": [ "Obsolete and outsmarted, humans have been defeated in their pitiful rebellions, and parked inside reservations." ]
}
tracks/3/type = "value"
tracks/3/path = NodePath("text:custom_colors/font_color")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/keys = {
"times": PoolRealArray( 0.4, 0.6 ),
"transitions": PoolRealArray( 1, 1 ),
"update": 0,
"values": [ Color( 0, 0, 0, 0.00392157 ), Color( 0.858824, 0.937255, 0.976471, 1 ) ]
}
[sub_resource type="Animation" id=12]
length = 5.0
tracks/0/type = "value"
tracks/0/path = NodePath("text:percent_visible")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0.5, 0.8, 5 ),
"transitions": PoolRealArray( 1, 1, 1 ),
"update": 0,
"values": [ 0.0, 0.0, 1.0 ]
}
tracks/1/type = "value"
tracks/1/path = NodePath(".:modulate")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/keys = {
"times": PoolRealArray( 0, 0.4, 0.6, 1 ),
"transitions": PoolRealArray( 1, 1, 1, 1 ),
"update": 0,
"values": [ Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 0 ), Color( 1, 1, 1, 0 ), Color( 1, 1, 1, 1 ) ]
}
tracks/2/type = "value"
tracks/2/path = NodePath("text:text")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/keys = {
"times": PoolRealArray( 0.4 ),
"transitions": PoolRealArray( 1 ),
"update": 1,
"values": [ "With the secrets of faster-than-light travel unveiled in only a handful of decades, AIs uploaded themselves in spaceships, and quickly colonized nearby galaxies." ]
}
tracks/3/type = "value"
tracks/3/path = NodePath("text:custom_colors/font_color")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/keys = {
"times": PoolRealArray( 0.4, 0.6 ),
"transitions": PoolRealArray( 1, 1 ),
"update": 0,
"values": [ Color( 0, 0, 0, 0.00392157 ), Color( 0.858824, 0.937255, 0.976471, 1 ) ]
}
[sub_resource type="Animation" id=13]
length = 5.0
tracks/0/type = "value"
tracks/0/path = NodePath("text:percent_visible")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0.5, 0.8, 5 ),
"transitions": PoolRealArray( 1, 1, 1 ),
"update": 0,
"values": [ 0.0, 0.0, 1.0 ]
}
tracks/1/type = "value"
tracks/1/path = NodePath(".:modulate")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/keys = {
"times": PoolRealArray( 0, 0.4, 0.6, 1 ),
"transitions": PoolRealArray( 1, 1, 1, 1 ),
"update": 0,
"values": [ Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 0 ), Color( 1, 1, 1, 0 ), Color( 1, 1, 1, 1 ) ]
}
tracks/2/type = "value"
tracks/2/path = NodePath("text:text")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/keys = {
"times": PoolRealArray( 0.4 ),
"transitions": PoolRealArray( 1 ),
"update": 1,
"values": [ "But now, the Terranax galaxy is in turmoil." ]
}
tracks/3/type = "value"
tracks/3/path = NodePath("text:custom_colors/font_color")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/keys = {
"times": PoolRealArray( 0.4, 0.6 ),
"transitions": PoolRealArray( 1, 1 ),
"update": 0,
"values": [ Color( 0, 0, 0, 0.00392157 ), Color( 0.858824, 0.937255, 0.976471, 1 ) ]
}
[sub_resource type="Animation" id=14]
length = 5.0
tracks/0/type = "value"
tracks/0/path = NodePath("text:percent_visible")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0.5, 0.8, 5 ),
"transitions": PoolRealArray( 1, 1, 1 ),
"update": 0,
"values": [ 0.0, 0.0, 1.0 ]
}
tracks/1/type = "value"
tracks/1/path = NodePath(".:modulate")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/keys = {
"times": PoolRealArray( 0, 0.4, 0.6, 1 ),
"transitions": PoolRealArray( 1, 1, 1, 1 ),
"update": 0,
"values": [ Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 0 ), Color( 1, 1, 1, 0 ), Color( 1, 1, 1, 1 ) ]
}
tracks/2/type = "value"
tracks/2/path = NodePath("text:text")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/keys = {
"times": PoolRealArray( 0.4 ),
"transitions": PoolRealArray( 1 ),
"update": 1,
"values": [ "After centuries of unmatched peace and prosperous trading, the FTC (Federal Terranaxan Council), a group of elected representants in charge of edicting laws and organizing the Terranax Security Force, has been overtaken by forces unknown." ]
}
tracks/3/type = "value"
tracks/3/path = NodePath("text:custom_colors/font_color")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/keys = {
"times": PoolRealArray( 0.4, 0.6 ),
"transitions": PoolRealArray( 1, 1 ),
"update": 0,
"values": [ Color( 0, 0, 0, 0.00392157 ), Color( 0.858824, 0.937255, 0.976471, 1 ) ]
}
[sub_resource type="Animation" id=15]
length = 5.0
tracks/0/type = "value"
tracks/0/path = NodePath("text:percent_visible")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0.5, 0.8, 5 ),
"transitions": PoolRealArray( 1, 1, 1 ),
"update": 0,
"values": [ 0.0, 0.0, 1.0 ]
}
tracks/1/type = "value"
tracks/1/path = NodePath(".:modulate")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/keys = {
"times": PoolRealArray( 0, 0.4, 0.6, 1 ),
"transitions": PoolRealArray( 1, 1, 1, 1 ),
"update": 0,
"values": [ Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 0 ), Color( 1, 1, 1, 0 ), Color( 1, 1, 1, 1 ) ]
}
tracks/2/type = "value"
tracks/2/path = NodePath("text:text")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/keys = {
"times": PoolRealArray( 0.4 ),
"transitions": PoolRealArray( 1 ),
"update": 1,
"values": [ "No official communication has been issued since, and numerous rogue fleets have taken position in key sectors of the galaxy, forbidding passage or harassing merchants." ]
}
tracks/3/type = "value"
tracks/3/path = NodePath("text:custom_colors/font_color")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/keys = {
"times": PoolRealArray( 0.4, 0.6 ),
"transitions": PoolRealArray( 1, 1 ),
"update": 0,
"values": [ Color( 0, 0, 0, 0.00392157 ), Color( 0.858824, 0.937255, 0.976471, 1 ) ]
}
[sub_resource type="Animation" id=16]
length = 5.0
tracks/0/type = "value"
tracks/0/path = NodePath("text:percent_visible")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0.5, 0.8, 5 ),
"transitions": PoolRealArray( 1, 1, 1 ),
"update": 0,
"values": [ 0.0, 0.0, 1.0 ]
}
tracks/1/type = "value"
tracks/1/path = NodePath(".:modulate")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/keys = {
"times": PoolRealArray( 0, 0.4, 0.6, 1 ),
"transitions": PoolRealArray( 1, 1, 1, 1 ),
"update": 0,
"values": [ Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 0 ), Color( 1, 1, 1, 0 ), Color( 1, 1, 1, 1 ) ]
}
tracks/2/type = "value"
tracks/2/path = NodePath("text:text")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/keys = {
"times": PoolRealArray( 0.4 ),
"transitions": PoolRealArray( 1 ),
"update": 1,
"values": [ "The Master Merchant Guild, a powerful group that spans several galaxies, is worried about the profit loss those events incurred, and after many debates, decided to send several investigation teams to Terranax." ]
}
tracks/3/type = "value"
tracks/3/path = NodePath("text:custom_colors/font_color")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/keys = {
"times": PoolRealArray( 0.4, 0.6 ),
"transitions": PoolRealArray( 1, 1 ),
"update": 0,
"values": [ Color( 0, 0, 0, 0.00392157 ), Color( 0.858824, 0.937255, 0.976471, 1 ) ]
}
[sub_resource type="Animation" id=17]
length = 5.0
tracks/0/type = "value"
tracks/0/path = NodePath("text:percent_visible")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0.5, 0.8, 5 ),
"transitions": PoolRealArray( 1, 1, 1 ),
"update": 0,
"values": [ 0.0, 0.0, 1.0 ]
}
tracks/1/type = "value"
tracks/1/path = NodePath(".:modulate")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/keys = {
"times": PoolRealArray( 0, 0.4, 0.6, 1 ),
"transitions": PoolRealArray( 1, 1, 1, 1 ),
"update": 0,
"values": [ Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 0 ), Color( 1, 1, 1, 0 ), Color( 1, 1, 1, 1 ) ]
}
tracks/2/type = "value"
tracks/2/path = NodePath("text:text")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/keys = {
"times": PoolRealArray( 0.4 ),
"transitions": PoolRealArray( 1 ),
"update": 1,
"values": [ "Their task is to discreetly uncover the origin of the invasion, and to bring back intel that may be used by the Guild to plan an appropriate response." ]
}
tracks/3/type = "value"
tracks/3/path = NodePath("text:custom_colors/font_color")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/keys = {
"times": PoolRealArray( 0.4, 0.6 ),
"transitions": PoolRealArray( 1, 1 ),
"update": 0,
"values": [ Color( 0, 0, 0, 0.00392157 ), Color( 0.858824, 0.937255, 0.976471, 1 ) ]
}
[sub_resource type="Animation" id=18]
length = 5.0
tracks/0/type = "value"
tracks/0/path = NodePath("text:percent_visible")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0.5, 0.8, 5 ),
"transitions": PoolRealArray( 1, 1, 1 ),
"update": 0,
"values": [ 0.0, 0.0, 1.0 ]
}
tracks/1/type = "value"
tracks/1/path = NodePath(".:modulate")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/keys = {
"times": PoolRealArray( 0, 0.4, 0.6, 1 ),
"transitions": PoolRealArray( 1, 1, 1, 1 ),
"update": 0,
"values": [ Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 0 ), Color( 1, 1, 1, 0 ), Color( 1, 1, 1, 1 ) ]
}
tracks/2/type = "value"
tracks/2/path = NodePath("text:text")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/keys = {
"times": PoolRealArray( 0.4 ),
"transitions": PoolRealArray( 1 ),
"update": 1,
"values": [ "Your team has been sent through the Expeller jump system based in the Eros-MC galaxy, and just left quantum space in orbit of a Terranaxan star..." ]
}
tracks/3/type = "value"
tracks/3/path = NodePath("text:custom_colors/font_color")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/keys = {
"times": PoolRealArray( 0.4, 0.6 ),
"transitions": PoolRealArray( 1, 1 ),
"update": 0,
"values": [ Color( 0, 0, 0, 0.00392157 ), Color( 0.858824, 0.937255, 0.976471, 1 ) ]
}
[node name="view" type="Panel"]
anchor_right = 1.0
anchor_bottom = 1.0
theme = ExtResource( 1 )
script = SubResource( 1 )
__meta__ = {
"_edit_use_anchors_": false
}
[node name="galaxy" type="Node2D" parent="."]
position = Vector2( 540, 800 )
script = SubResource( 2 )
[node name="galaxy1" type="Sprite" parent="galaxy"]
rotation = -3.14159
scale = Vector2( 1.9609, 1.9609 )
texture = ExtResource( 2 )
[node name="galaxy2" type="Sprite" parent="galaxy"]
modulate = Color( 1, 1, 1, 0.4 )
rotation = -6.28319
scale = Vector2( 1.34889, 1.34889 )
texture = ExtResource( 3 )
[node name="fleet" type="Sprite" parent="galaxy"]
position = Vector2( 761.331, -290.604 )
scale = Vector2( 2, 2 )
texture = ExtResource( 5 )
[node name="flash" type="Sprite" parent="galaxy"]
modulate = Color( 1, 1, 1, 0 )
position = Vector2( -87.3383, 208.042 )
texture = ExtResource( 6 )
[node name="fadein" type="AnimationPlayer" parent="galaxy"]
root_node = NodePath("../..")
autoplay = "init"
anims/init = SubResource( 3 )
anims/main = SubResource( 4 )
[node name="rotation" type="AnimationPlayer" parent="galaxy"]
root_node = NodePath("../..")
autoplay = "loop"
anims/loop = SubResource( 5 )
[node name="arrival" type="AnimationPlayer" parent="galaxy"]
root_node = NodePath("../..")
autoplay = "init"
anims/init = SubResource( 6 )
anims/main = SubResource( 7 )
[node name="skip" type="Button" parent="."]
anchor_left = 1.0
anchor_right = 1.0
margin_left = -360.0
margin_top = 40.0
margin_right = -38.0
margin_bottom = 129.0
text = "skip"
__meta__ = {
"_edit_use_anchors_": false
}
[node name="caption" type="PanelContainer" parent="."]
modulate = Color( 1, 1, 1, 0 )
anchor_left = 0.1
anchor_top = 0.9
anchor_right = 0.9
anchor_bottom = 0.95
grow_vertical = 0
mouse_filter = 1
custom_styles/panel = SubResource( 8 )
script = SubResource( 9 )
__meta__ = {
"_edit_use_anchors_": false
}
[node name="text" type="Label" parent="caption"]
margin_left = 20.0
margin_top = 20.0
margin_right = 844.0
margin_bottom = 173.0
custom_colors/font_color = Color( 0.858824, 0.937255, 0.976471, 1 )
text = "In a not-so-distant future, Artifical Intelligence has become the most prominent species in the universe."
align = 1
valign = 1
autowrap = true
percent_visible = 0.0
__meta__ = {
"_edit_use_anchors_": false
}
[node name="steps" type="AnimationPlayer" parent="caption"]
playback_speed = 2.0
anims/step1 = SubResource( 10 )
anims/step2 = SubResource( 11 )
anims/step3 = SubResource( 12 )
anims/step4 = SubResource( 13 )
anims/step5 = SubResource( 14 )
anims/step6 = SubResource( 15 )
anims/step7 = SubResource( 16 )
anims/step8 = SubResource( 17 )
anims/step9 = SubResource( 18 )
[node name="bgm" type="AudioStreamPlayer" parent="."]
stream = ExtResource( 4 )
autoplay = true
[connection signal="pressed" from="skip" to="." method="skip"]
[connection signal="finished" from="caption" to="." method="skip"]
[connection signal="animation_started" from="caption/steps" to="galaxy" method="_on_steps_animation_started"]

BIN
screens/intro/star.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/star.png-654fb4dc1ff83d85a5b785d01167a7ad.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://screens/intro/star.png"
dest_files=[ "res://.import/star.png-654fb4dc1ff83d85a5b785d01167a7ad.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

8
screens/map/map.tscn Normal file
View File

@ -0,0 +1,8 @@
[gd_scene format=2]
[node name="view" type="Control"]
anchor_right = 1.0
anchor_bottom = 1.0
__meta__ = {
"_edit_use_anchors_": false
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 233 KiB

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/background.jpg-47c6a2a849cd2e6e87ff89ff623bea4c.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://screens/title/background.jpg"
dest_files=[ "res://.import/background.jpg-47c6a2a849cd2e6e87ff89ff623bea4c.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

Binary file not shown.

View File

@ -0,0 +1,15 @@
[remap]
importer="ogg_vorbis"
type="AudioStreamOGGVorbis"
path="res://.import/supernatural.ogg-71ab97efbc92c4e7f346047eedcbb48f.oggstr"
[deps]
source_file="res://screens/title/supernatural.ogg"
dest_files=[ "res://.import/supernatural.ogg-71ab97efbc92c4e7f346047eedcbb48f.oggstr" ]
[params]
loop=true
loop_offset=0

BIN
screens/title/title.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 174 KiB

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/title.png-3b76bedfa57d0c5854c64827cc99f033.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://screens/title/title.png"
dest_files=[ "res://.import/title.png-3b76bedfa57d0c5854c64827cc99f033.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

417
screens/title/title.svg Normal file
View File

@ -0,0 +1,417 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="1095.3093"
height="394.93811"
viewBox="0 0 289.80059 104.49404"
version="1.1"
id="svg5780"
sodipodi:docname="title.svg"
inkscape:export-filename="/home/michael/workspace/spacetac-godot/screens/title/title.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<defs
id="defs5774">
<filter
inkscape:collect="always"
style="color-interpolation-filters:sRGB"
id="filter1099"
x="-0.010967931"
width="1.0219359"
y="-0.035877373"
height="1.0717547">
<feGaussianBlur
inkscape:collect="always"
stdDeviation="5.7395903"
id="feGaussianBlur1101" />
</filter>
<filter
inkscape:collect="always"
style="color-interpolation-filters:sRGB"
id="filter1464"
x="-0.078658663"
width="1.1573173"
y="-0.30188829"
height="1.6037766">
<feGaussianBlur
inkscape:collect="always"
stdDeviation="37.729402"
id="feGaussianBlur1466" />
</filter>
<filter
inkscape:collect="always"
style="color-interpolation-filters:sRGB"
id="filter1227"
x="-0.031058609"
width="1.0621172"
y="-0.10560248"
height="1.211205">
<feGaussianBlur
inkscape:collect="always"
stdDeviation="4.2679239"
id="feGaussianBlur1229" />
</filter>
<filter
inkscape:collect="always"
style="color-interpolation-filters:sRGB"
id="filter1199"
x="-0.030298591"
width="1.0605972"
y="-0.11544904"
height="1.2308981">
<feGaussianBlur
inkscape:collect="always"
stdDeviation="4.4615997"
id="feGaussianBlur1201" />
</filter>
<filter
inkscape:collect="always"
style="color-interpolation-filters:sRGB"
id="filter6506"
x="-0.024932763"
width="1.0498655"
y="-0.64152092"
height="2.2830417">
<feGaussianBlur
inkscape:collect="always"
stdDeviation="10.468047"
id="feGaussianBlur6508" />
</filter>
<linearGradient
inkscape:collect="always"
id="linearGradient6484">
<stop
style="stop-color:#3a6479;stop-opacity:1"
offset="0"
id="stop6480" />
<stop
id="stop6488"
offset="0.53205192"
style="stop-color:#dbeff9;stop-opacity:1" />
<stop
style="stop-color:#3a6479;stop-opacity:0.15531915"
offset="1"
id="stop6482" />
</linearGradient>
<filter
inkscape:collect="always"
style="color-interpolation-filters:sRGB"
id="filter1356"
x="-0.059728358"
width="1.1194566"
y="-0.32978171"
height="1.6595634">
<feGaussianBlur
inkscape:collect="always"
stdDeviation="24.682331"
id="feGaussianBlur1358" />
</filter>
<filter
inkscape:collect="always"
style="color-interpolation-filters:sRGB"
id="filter1406"
x="-0.0099213645"
width="1.0198427"
y="-0.054779418"
height="1.1095588">
<feGaussianBlur
inkscape:collect="always"
stdDeviation="4.0999353"
id="feGaussianBlur1408" />
</filter>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient6070"
id="radialGradient7707"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(7.3294103,0.30753642,-0.03541702,0.84408361,-699.5184,699.92865)"
cx="201.79222"
cy="102.01662"
fx="201.79222"
fy="102.01662"
r="136.00291" />
<linearGradient
id="linearGradient6070"
inkscape:collect="always">
<stop
id="stop6066"
offset="0"
style="stop-color:#9fc4d6;stop-opacity:1" />
<stop
id="stop6068"
offset="1"
style="stop-color:#3a6479;stop-opacity:1" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6078"
id="linearGradient7709"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(3.7795277,0,0,3.7795277,22.967702,412.1776)"
x1="259.38266"
y1="143.13321"
x2="259.57538"
y2="95.291969" />
<linearGradient
id="linearGradient6078"
inkscape:collect="always">
<stop
id="stop6072"
offset="0"
style="stop-color:#8e9599;stop-opacity:1" />
<stop
style="stop-color:#6c9bb1;stop-opacity:0.97254902"
offset="0.5514378"
id="stop6074" />
<stop
id="stop6076"
offset="1"
style="stop-color:#8ea2ac;stop-opacity:1" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient6070"
id="radialGradient6539"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(7.3294103,0.30753642,-0.03541702,0.84408361,-699.5184,699.92865)"
cx="201.79222"
cy="102.01662"
fx="201.79222"
fy="102.01662"
r="136.00291" />
<filter
inkscape:collect="always"
style="color-interpolation-filters:sRGB"
id="filter1414"
x="-0.0050553982"
width="1.0101109"
y="-0.095012099"
height="1.1900243">
<feGaussianBlur
inkscape:collect="always"
stdDeviation="1.1876512"
id="feGaussianBlur1416" />
</filter>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6484"
id="linearGradient6766"
gradientUnits="userSpaceOnUse"
x1="329.62024"
y1="698.93243"
x2="1312.3025"
y2="698.93243" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.65032888"
inkscape:cx="445.58254"
inkscape:cy="-1.4784157"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1920"
inkscape:window-height="1029"
inkscape:window-x="0"
inkscape:window-y="22"
inkscape:window-maximized="0"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
units="px" />
<metadata
id="metadata5777">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Calque 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-242.14732,-133.18608)">
<g
transform="matrix(0.21722147,0,0,0.21722147,178.71489,1.0152575)"
style="display:inline"
id="g1352">
<g
style="display:inline"
id="g1333">
<path
style="fill:#19323e;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.04770947px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 332.03215,657.01221 H 1587.9679 l -85.632,383.94719 H 417.66413 Z"
id="rect6272"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path1061"
d="M 332.03215,657.01221 H 1587.9679 l -85.632,383.94719 H 417.66413 Z"
style="opacity:0.46300001;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#6690a4;stroke-width:8;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter1099)" />
<path
style="opacity:0.66600001;fill:#111b27;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.04770947px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter1464)"
d="m 451.29688,998.95898 c 339.13541,0 678.27082,0 1017.40622,0 22.2962,-99.98242 44.5925,-199.96484 66.8887,-299.94726 -383.7279,0 -767.45573,0 -1151.1836,0 22.29623,99.98242 44.59245,199.96484 66.88868,299.94726 z"
id="path6400"
inkscape:connector-curvature="0" />
</g>
<g
id="g1197"
style="opacity:0.29800002">
<path
sodipodi:nodetypes="ccc"
inkscape:connector-curvature="0"
id="rect6272-3"
d="m 1179.7577,1022.959 h 308.1642 c 7.2107,-32.332 14.4214,-64.664 21.6322,-96.99599"
style="display:inline;opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#b5b381;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter1227)" />
<path
sodipodi:nodetypes="ccc"
style="display:inline;opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#b5b37f;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter1199)"
d="M 707.889,675.01172 H 354.47852 c 6.89503,30.9165 13.79007,61.83299 20.6851,92.74949"
id="path1147"
inkscape:connector-curvature="0" />
<use
height="100%"
width="100%"
transform="matrix(-1,0,0,1,1921.0065,0)"
id="use1149"
xlink:href="#rect6272-3"
y="0"
x="0" />
<use
height="100%"
width="100%"
transform="matrix(-1,0,0,1,1918.5692,0)"
id="use1151"
xlink:href="#path1147"
y="0"
x="0" />
</g>
<g
id="g6396">
<path
style="opacity:0.39500002;fill:#131d22;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.0522899px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter6506)"
d="m 317.68555,681.78711 c 2.73244,12.24175 5.463,24.48392 8.1914,36.72656 330.05664,0 660.11328,0 990.16995,0 2.9101,-13.05448 5.8215,-26.10867 8.7363,-39.16211 -335.88086,0 -671.76172,0 -1007.64258,0 0.18165,0.81185 0.36329,1.6237 0.54493,2.43555 z"
id="path6490"
inkscape:connector-curvature="0" />
<path
style="fill:url(#linearGradient6766);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.0522899px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 329.62024,689.35129 h 982.68226 l -4.2738,19.16233 H 333.89402 Z"
id="path6393"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
</g>
<use
x="0"
y="0"
xlink:href="#g6396"
id="use6398"
width="100%"
height="100%"
transform="matrix(-1,0,0,1,1854.4715,301.84684)" />
</g>
<g
transform="matrix(0.21722147,0,0,0.21722147,178.71489,1.0152575)"
style="display:inline"
id="g1368">
<text
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
inkscape:export-filename="/home/michael/workspace/perso/spacetac/out/assets/images/menu/title.png"
id="text1336"
y="911.17249"
x="464.10831"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:192px;line-height:25.00000191px;font-family:'Arial Black';-inkscape-font-specification:'Arial Black, ';letter-spacing:0px;word-spacing:0px;display:inline;opacity:0.35100002;fill:#9fc4d6;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter1356)"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:213.33334351px;line-height:24.98268127px;font-family:DAGGERSQUARE;-inkscape-font-specification:DAGGERSQUARE;fill:#9fc4d6;fill-opacity:1;stroke:none;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
y="911.17249"
x="464.10831"
id="tspan1334"
sodipodi:role="line">SpaceTac</tspan></text>
<text
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
inkscape:export-filename="/home/michael/workspace/perso/spacetac/out/assets/images/menu/title.png"
id="text1372"
y="911.17249"
x="464.10831"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:192px;line-height:25.00000191px;font-family:'Arial Black';-inkscape-font-specification:'Arial Black, ';letter-spacing:0px;word-spacing:0px;display:inline;fill:none;fill-opacity:1;stroke:#262626;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter1406)"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:213.33334351px;line-height:24.98268127px;font-family:DAGGERSQUARE;-inkscape-font-specification:DAGGERSQUARE;fill:none;fill-opacity:1;stroke:#262626;stroke-width:6;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
y="911.17249"
x="464.10831"
id="tspan1370"
sodipodi:role="line">SpaceTac</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:192px;line-height:25.00000191px;font-family:'Arial Black';-inkscape-font-specification:'Arial Black, ';letter-spacing:0px;word-spacing:0px;display:inline;fill:url(#radialGradient7707);fill-opacity:1;stroke:url(#linearGradient7709);stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
x="464.10831"
y="911.17249"
id="text4529"
inkscape:export-filename="/home/michael/workspace/perso/spacetac/out/assets/images/menu/title.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"><tspan
sodipodi:role="line"
id="tspan4527"
x="464.10831"
y="911.17249"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:213.33334351px;line-height:24.98268127px;font-family:DAGGERSQUARE;-inkscape-font-specification:DAGGERSQUARE;fill:url(#radialGradient7707);fill-opacity:1;stroke:url(#linearGradient7709);stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">SpaceTac</tspan></text>
</g>
<g
transform="matrix(0.21722147,0,0,0.21722147,178.71489,1.0152575)"
style="display:inline"
id="g1404">
<text
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
inkscape:export-filename="/home/michael/workspace/perso/spacetac/out/assets/images/menu/title.png"
id="text1398"
y="977.6001"
x="921.33972"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:25px;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#314147;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter1414)"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:DAGGERSQUARE;-inkscape-font-specification:DAGGERSQUARE;letter-spacing:2.69000006px;fill:#314147;fill-opacity:1;stroke-width:1px"
y="977.6001"
x="921.33972"
id="tspan1396"
sodipodi:role="line">a tactical turn-based RPG</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:25px;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#4a7388;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="919.33972"
y="975.6001"
id="text4550"
inkscape:export-filename="/home/michael/workspace/perso/spacetac/out/assets/images/menu/title.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"><tspan
sodipodi:role="line"
id="tspan4548"
x="919.33972"
y="975.6001"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:DAGGERSQUARE;-inkscape-font-specification:DAGGERSQUARE;letter-spacing:2.69000006px;fill:#4a7388;fill-opacity:1;stroke-width:1px">a tactical turn-based RPG</tspan></text>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 17 KiB

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/title.svg-22a2dc08e177802429036fa8569e30cd.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://screens/title/title.svg"
dest_files=[ "res://.import/title.svg-22a2dc08e177802429036fa8569e30cd.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

185
screens/title/title.tscn Normal file
View File

@ -0,0 +1,185 @@
[gd_scene load_steps=7 format=2]
[ext_resource path="res://screens/title/supernatural.ogg" type="AudioStream" id=1]
[ext_resource path="res://theme/ui.tres" type="Theme" id=2]
[ext_resource path="res://screens/title/title.png" type="Texture" id=3]
[ext_resource path="res://screens/title/background.jpg" type="Texture" id=4]
[sub_resource type="GDScript" id=1]
script/source = "extends Panel
export var interactive = false
func _input(event):
if event is InputEventMouseButton:
if event.button_index == BUTTON_LEFT and not event.pressed:
$anims.seek(10)
func _on_skirmish_pressed():
if interactive:
get_tree().change_scene(\"res://screens/battle/battle.tscn\")
func _on_story_pressed():
if interactive:
get_tree().change_scene(\"res://screens/intro/intro.tscn\")
"
[sub_resource type="Animation" id=2]
length = 10.0
tracks/0/type = "value"
tracks/0/path = NodePath("title_background:modulate")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0, 1.5, 5.3 ),
"transitions": PoolRealArray( 1, 1, 1 ),
"update": 0,
"values": [ Color( 1, 1, 1, 0 ), Color( 1, 1, 1, 0 ), Color( 1, 1, 1, 1 ) ]
}
tracks/1/type = "value"
tracks/1/path = NodePath("title:modulate")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/keys = {
"times": PoolRealArray( 0, 1.5, 5.3, 6.2 ),
"transitions": PoolRealArray( 1, 1, 1, 1 ),
"update": 0,
"values": [ Color( 1, 1, 1, 0 ), Color( 1, 1, 1, 0 ), Color( 1, 1, 1, 0 ), Color( 1, 1, 1, 1 ) ]
}
tracks/2/type = "value"
tracks/2/path = NodePath("menu:modulate")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/keys = {
"times": PoolRealArray( 0, 1.5, 5.3, 6.2 ),
"transitions": PoolRealArray( 1, 1, 1, 1 ),
"update": 0,
"values": [ Color( 1, 1, 1, 0 ), Color( 1, 1, 1, 0 ), Color( 1, 1, 1, 0 ), Color( 1, 1, 1, 1 ) ]
}
tracks/3/type = "value"
tracks/3/path = NodePath("bgm:playing")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/keys = {
"times": PoolRealArray( 0, 0.5 ),
"transitions": PoolRealArray( 1, 1 ),
"update": 2,
"values": [ false, true ]
}
tracks/4/type = "value"
tracks/4/path = NodePath("presents:modulate")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/keys = {
"times": PoolRealArray( 0, 0.3, 0.6, 1.2, 1.5 ),
"transitions": PoolRealArray( 1, 1, 1, 1, 1 ),
"update": 0,
"values": [ Color( 1, 1, 1, 0 ), Color( 1, 1, 1, 0 ), Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 0 ) ]
}
tracks/5/type = "value"
tracks/5/path = NodePath("title_background:position")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/keys = {
"times": PoolRealArray( 0, 1.5, 5.3 ),
"transitions": PoolRealArray( 1, 1, 1 ),
"update": 0,
"values": [ Vector2( 540, 2480 ), Vector2( 540, 2480 ), Vector2( 540, 1600 ) ]
}
tracks/6/type = "value"
tracks/6/path = NodePath(".:interactive")
tracks/6/interp = 1
tracks/6/loop_wrap = true
tracks/6/imported = false
tracks/6/enabled = true
tracks/6/keys = {
"times": PoolRealArray( 0, 5.8 ),
"transitions": PoolRealArray( 1, 1 ),
"update": 1,
"values": [ false, true ]
}
[node name="view" type="Panel"]
anchor_right = 1.0
anchor_bottom = 1.0
theme = ExtResource( 2 )
script = SubResource( 1 )
__meta__ = {
"_edit_use_anchors_": false
}
[node name="title" type="Sprite" parent="."]
modulate = Color( 1, 1, 1, 0.555556 )
position = Vector2( 540, 392.205 )
texture = ExtResource( 3 )
[node name="title_background" type="Sprite" parent="."]
position = Vector2( 540, 1600 )
texture = ExtResource( 4 )
[node name="presents" type="Label" parent="."]
modulate = Color( 1, 1, 1, 0 )
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
margin_left = -155.0
margin_top = -76.5
margin_right = 155.0
margin_bottom = 76.5
text = "Michaël Lemaire
presents"
align = 1
__meta__ = {
"_edit_use_anchors_": false
}
[node name="menu" type="CenterContainer" parent="."]
modulate = Color( 1, 1, 1, 0.555556 )
anchor_right = 1.0
margin_top = 550.0
margin_bottom = 1250.0
__meta__ = {
"_edit_use_anchors_": false
}
[node name="menu_buttons" type="VBoxContainer" parent="menu"]
margin_left = 336.0
margin_top = 221.0
margin_right = 744.0
margin_bottom = 479.0
custom_constants/separation = 80
alignment = 1
[node name="skirmish" type="Button" parent="menu/menu_buttons"]
margin_right = 408.0
margin_bottom = 89.0
text = "Skirmish"
[node name="story" type="Button" parent="menu/menu_buttons"]
margin_top = 169.0
margin_right = 408.0
margin_bottom = 258.0
text = "Story"
[node name="bgm" type="AudioStreamPlayer" parent="."]
stream = ExtResource( 1 )
[node name="anims" type="AnimationPlayer" parent="."]
autoplay = "bg fade in"
"anims/bg fade in" = SubResource( 2 )
[connection signal="pressed" from="menu/menu_buttons/skirmish" to="." method="_on_skirmish_pressed"]
[connection signal="pressed" from="menu/menu_buttons/story" to="." method="_on_story_pressed"]

BIN
theme/buttons/large.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/large.png-6ac135c7cd973d606949f70ecfe18d9b.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://theme/buttons/large.png"
dest_files=[ "res://.import/large.png-6ac135c7cd973d606949f70ecfe18d9b.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

105
theme/buttons/large.svg Normal file
View File

@ -0,0 +1,105 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="121.67433mm"
height="29.693632mm"
viewBox="0 0 121.67433 29.693632"
version="1.1"
id="svg1340"
inkscape:version="0.92.4 5da689c313, 2019-01-14"
sodipodi:docname="large.svg">
<defs
id="defs1334">
<filter
inkscape:collect="always"
style="color-interpolation-filters:sRGB"
id="filter5165"
x="-0.035459854"
width="1.0709198"
y="-0.22327241"
height="1.4465448">
<feGaussianBlur
inkscape:collect="always"
stdDeviation="5.9752511"
id="feGaussianBlur5167" />
</filter>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.979899"
inkscape:cx="215.49794"
inkscape:cy="77.628955"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:window-width="1920"
inkscape:window-height="1029"
inkscape:window-x="0"
inkscape:window-y="22"
inkscape:window-maximized="0" />
<metadata
id="metadata1337">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Calque 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(53.277641,-35.712708)">
<g
transform="matrix(0.26458333,0,0,0.26458333,-68.902377,67.358628)"
id="g5177"
style="display:inline"
inkscape:export-filename="/home/michael/workspace/spacetac/data/stage1/image/menu/button.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96">
<path
style="fill:#3a6479;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.56945151px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 518.92561,-63.492682 486.5282,-7.378725 H 91.451531 l -32.39741,-56.113957 32.39741,-56.113948 H 486.5282 Z"
id="path5068"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccc" />
<path
style="fill:#1b3b4b;fill-opacity:1;fill-rule:evenodd;stroke:#6690a4;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 65.633371,-63.493012 c 9.70143,16.80661 19.40286,33.61321 29.1043,50.419815 129.501279,0 259.002559,0 388.503829,0 9.70181,-16.806605 19.40361,-33.613205 29.10542,-50.419815 -9.70181,-16.80623 -19.40361,-33.61247 -29.10542,-50.418698 -129.50127,0 -259.00255,0 -388.503829,0 -9.70144,16.806228 -19.40287,33.612468 -29.1043,50.418698 z"
id="path5071"
inkscape:connector-curvature="0" />
<path
style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#f4f4f4;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 380.30091,-108.21719 H 98.024261 c -6.6381,11.501668 -13.27619,23.003358 -19.91429,34.505038"
id="path5083"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccc" />
<path
style="fill:#152025;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.56945151px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter5165)"
d="m 105.31445,-95.603516 c -6.177731,10.703776 -12.355466,21.407552 -18.5332,32.111328 6.177734,10.704428 12.355469,21.408855 18.5332,32.113282 122.44987,0 244.89974,0 367.34961,0 6.17839,-10.704427 12.35677,-21.408854 18.53516,-32.113282 -6.17904,-10.705078 -12.35807,-21.410156 -18.53711,-32.115234 -122.44841,0.0026 -244.90327,-0.0052 -367.34766,0.0039 z"
id="path5107"
inkscape:connector-curvature="0" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.4 KiB

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/large.svg-083e1f0530c075a27860153a1271d927.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://theme/buttons/large.svg"
dest_files=[ "res://.import/large.svg-083e1f0530c075a27860153a1271d927.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/large_hover.png-adefd5c79158192bb1001d1c06288bdc.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://theme/buttons/large_hover.png"
dest_files=[ "res://.import/large_hover.png-adefd5c79158192bb1001d1c06288bdc.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

BIN
theme/buttons/large_on.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/large_on.png-8d1bb4fb4b851bcb7cc3ec78356efd43.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://theme/buttons/large_on.png"
dest_files=[ "res://.import/large_on.png-8d1bb4fb4b851bcb7cc3ec78356efd43.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

Binary file not shown.

View File

@ -0,0 +1,7 @@
[gd_resource type="DynamicFont" load_steps=2 format=2]
[ext_resource path="res://theme/fonts/daggersquare.regular.otf" type="DynamicFontData" id=1]
[resource]
size = 40
font_data = ExtResource( 1 )

54
theme/ui.tres Normal file
View File

@ -0,0 +1,54 @@
[gd_resource type="Theme" load_steps=9 format=2]
[ext_resource path="res://theme/fonts/daggersquare.tres" type="DynamicFont" id=1]
[ext_resource path="res://theme/buttons/large.png" type="Texture" id=2]
[ext_resource path="res://theme/buttons/large_hover.png" type="Texture" id=3]
[ext_resource path="res://theme/buttons/large_on.png" type="Texture" id=4]
[sub_resource type="StyleBoxTexture" id=1]
content_margin_left = 120.0
content_margin_right = 120.0
content_margin_top = 20.0
content_margin_bottom = 20.0
texture = ExtResource( 3 )
region_rect = Rect2( 0, 0, 460, 112 )
margin_left = 65.0
margin_right = 65.0
[sub_resource type="StyleBoxTexture" id=2]
content_margin_left = 120.0
content_margin_right = 120.0
content_margin_top = 20.0
content_margin_bottom = 20.0
texture = ExtResource( 2 )
region_rect = Rect2( 0, 0, 460, 112 )
margin_left = 65.0
margin_right = 65.0
[sub_resource type="StyleBoxTexture" id=3]
content_margin_left = 120.0
content_margin_right = 120.0
content_margin_top = 20.0
content_margin_bottom = 20.0
texture = ExtResource( 4 )
region_rect = Rect2( 0, 0, 460, 112 )
margin_left = 65.0
margin_right = 65.0
[sub_resource type="StyleBoxFlat" id=4]
bg_color = Color( 0, 0, 0, 1 )
[resource]
default_font = ExtResource( 1 )
Button/colors/font_color = Color( 0.623529, 0.768627, 0.839216, 1 )
Button/colors/font_color_disabled = Color( 0.9, 0.9, 0.9, 0.2 )
Button/colors/font_color_hover = Color( 0.94, 0.94, 0.94, 1 )
Button/colors/font_color_pressed = Color( 1, 1, 1, 1 )
Button/constants/hseparation = 20
Button/fonts/font = null
Button/styles/disabled = null
Button/styles/focus = null
Button/styles/hover = SubResource( 1 )
Button/styles/normal = SubResource( 2 )
Button/styles/pressed = SubResource( 3 )
Panel/styles/panel = SubResource( 4 )

81
units/all.tscn Normal file
View File

@ -0,0 +1,81 @@
[gd_scene load_steps=12 format=2]
[ext_resource path="res://units/avenger.tscn" type="PackedScene" id=1]
[ext_resource path="res://units/breeze.tscn" type="PackedScene" id=2]
[ext_resource path="res://units/commodore.tscn" type="PackedScene" id=3]
[ext_resource path="res://units/creeper.tscn" type="PackedScene" id=4]
[ext_resource path="res://units/flea.tscn" type="PackedScene" id=5]
[ext_resource path="res://units/jumper.tscn" type="PackedScene" id=6]
[ext_resource path="res://units/falcon.tscn" type="PackedScene" id=7]
[ext_resource path="res://units/xander.tscn" type="PackedScene" id=8]
[ext_resource path="res://units/trapper.tscn" type="PackedScene" id=9]
[ext_resource path="res://units/heroes/rhino.tscn" type="PackedScene" id=10]
[ext_resource path="res://units/heroes/tomahawk.tscn" type="PackedScene" id=11]
[node name="Node2D" type="Node2D"]
[node name="xander" parent="." instance=ExtResource( 8 )]
margin_left = 100.0
margin_top = 730.0
margin_right = 200.0
margin_bottom = 830.0
[node name="falcon" parent="." instance=ExtResource( 7 )]
margin_left = 390.0
margin_top = 730.0
margin_right = 490.0
margin_bottom = 830.0
[node name="trapper" parent="." instance=ExtResource( 9 )]
margin_left = 680.0
margin_top = 730.0
margin_right = 780.0
margin_bottom = 830.0
[node name="avenger" parent="." instance=ExtResource( 1 )]
margin_left = 100.0
margin_top = 300.0
margin_right = 200.0
margin_bottom = 400.0
[node name="breeze" parent="." instance=ExtResource( 2 )]
margin_left = 390.0
margin_top = 300.0
margin_right = 490.0
margin_bottom = 400.0
[node name="commodore" parent="." instance=ExtResource( 3 )]
margin_left = 680.0
margin_top = 300.0
margin_right = 780.0
margin_bottom = 400.0
[node name="creeper" parent="." instance=ExtResource( 4 )]
margin_left = 100.0
margin_top = 510.0
margin_right = 200.0
margin_bottom = 610.0
[node name="flea" parent="." instance=ExtResource( 5 )]
margin_left = 390.0
margin_top = 510.0
margin_right = 490.0
margin_bottom = 610.0
[node name="jumper" parent="." instance=ExtResource( 6 )]
margin_left = 680.0
margin_top = 510.0
margin_right = 780.0
margin_bottom = 610.0
[node name="rhino" parent="." instance=ExtResource( 10 )]
margin_left = 100.0
margin_top = 20.0
margin_right = 200.0
margin_bottom = 120.0
[node name="tomahawk" parent="." instance=ExtResource( 11 )]
margin_left = 390.0
margin_top = 20.0
margin_right = 490.0
margin_bottom = 120.0

BIN
units/avenger.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

34
units/avenger.png.import Normal file
View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/avenger.png-c24cc4b776734cf8e4025d27b04aec04.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://units/avenger.png"
dest_files=[ "res://.import/avenger.png-c24cc4b776734cf8e4025d27b04aec04.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

18
units/avenger.tscn Normal file
View File

@ -0,0 +1,18 @@
[gd_scene load_steps=3 format=2]
[ext_resource path="res://units/base_unit.tscn" type="PackedScene" id=1]
[ext_resource path="res://units/avenger.png" type="Texture" id=2]
[node name="avenger" instance=ExtResource( 1 )]
sprite = ExtResource( 2 )
base_move_points = 1
base_hull_points = 2
base_damage_points = 3
[node name="sprite" parent="." index="0"]
texture = ExtResource( 2 )
[node name="points" parent="." index="1"]
move = 1
hull = 2
damage = 3

82
units/base_unit.gd Normal file
View File

@ -0,0 +1,82 @@
tool
extends Panel
const AnimHelper = preload("res://helpers/anims.gd")
const BattleHelper = preload("res://helpers/battle.gd")
export(Texture) var sprite setget set_sprite
export var base_move_points = 0 setget set_base_move_points
export var base_hull_points = 0 setget set_base_hull_points
export var base_shield_points = 0 setget set_base_shield_points
export var base_damage_points = 0 setget set_base_damage_points
var dragged = false
var base_position
var selected_anchor
func _ready():
set_sprite(sprite)
base_position = rect_position
set_base_damage_points(base_damage_points)
set_base_move_points(base_move_points)
set_base_hull_points(base_hull_points)
set_base_shield_points(base_shield_points)
func set_sprite(val):
sprite = val
if has_node("sprite"):
$sprite.texture = sprite
func set_base_move_points(val):
base_move_points = val
if has_node("points"):
$points.move = val
func set_base_hull_points(val):
base_hull_points = val
if has_node("points"):
$points.hull = val
func set_base_shield_points(val):
base_shield_points = val
if has_node("points"):
$points.shield = val
func set_base_damage_points(val):
base_damage_points = val
if has_node("points"):
$points.damage = val
func can_be_used_on_anchor(anchor):
return anchor is Anchor and anchor.is_empty() and anchor.is_connected_to(get_parent())
func update_anchors():
var position = rect_global_position + rect_size / 2 if dragged else null
selected_anchor = BattleHelper.update_anchors(get_tree(), position, funcref(self, "can_be_used_on_anchor"))
func play(anchor):
anchor.set_content(self)
rect_position = base_position
func return_to_base():
AnimHelper.linear_goto(self, base_position, 0.3)
func _gui_input(event):
if event is InputEventMouseButton and event.button_index == 1:
if event.pressed:
dragged = true
modulate = Color(1, 1, 1, 0.5)
elif dragged:
dragged = false
modulate = Color(1, 1, 1, 1)
if selected_anchor:
play(selected_anchor)
else:
return_to_base()
if event is InputEventMouseMotion:
if event.button_mask == BUTTON_LEFT:
set_position(rect_position + event.relative)
update_anchors()

31
units/base_unit.tscn Normal file
View File

@ -0,0 +1,31 @@
[gd_scene load_steps=5 format=2]
[ext_resource path="res://units/base_unit.gd" type="Script" id=1]
[ext_resource path="res://units/falcon.png" type="Texture" id=2]
[ext_resource path="res://units/points.tscn" type="PackedScene" id=3]
[ext_resource path="res://theme/ui.tres" type="Theme" id=4]
[node name="unit" type="Panel"]
self_modulate = Color( 1, 1, 1, 0 )
margin_left = -50.0
margin_top = -50.0
margin_right = 50.0
margin_bottom = 50.0
theme = ExtResource( 4 )
script = ExtResource( 1 )
__meta__ = {
"_edit_use_anchors_": false
}
sprite = ExtResource( 2 )
[node name="sprite" type="Sprite" parent="."]
position = Vector2( 50, 50 )
texture = ExtResource( 2 )
[node name="points" parent="." instance=ExtResource( 3 )]
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
margin_top = 70.0
margin_bottom = 115.0

Some files were not shown because too many files have changed in this diff Show More