From 34fed24f91af56acb16fb1c3dc105df429f0fef3 Mon Sep 17 00:00:00 2001 From: techwizz-somboo Date: Thu, 17 Mar 2022 15:13:55 -0600 Subject: [PATCH] Added main menu among many things --- Levels/Dead.gd | 26 +++ Levels/Dead.tscn | 78 +++++++++ Levels/Main.tscn | 46 +++++ Levels/Menu.gd | 27 +++ Levels/Options.gd | 20 +++ Levels/Options.tscn | 320 ++++++++++++++++++++++++++++++++++ Objects/Ai-tank/tank00.gd | 8 +- Objects/Bullet/Bullet.gd | 3 + Objects/Player-tank/Player.gd | 1 - click/.gdignore | 0 click/icon.png.import | 35 ++++ export_presets.cfg | 65 +++++++ fonts/Born2bSportyV2.ttf | Bin 0 -> 55532 bytes fonts/Extrude.ttf | Bin 0 -> 19020 bytes misc/scripts/global.gd | 3 +- project.godot | 2 +- 16 files changed, 628 insertions(+), 6 deletions(-) create mode 100644 Levels/Dead.gd create mode 100644 Levels/Dead.tscn create mode 100644 Levels/Main.tscn create mode 100644 Levels/Menu.gd create mode 100644 Levels/Options.gd create mode 100644 Levels/Options.tscn create mode 100644 click/.gdignore create mode 100644 click/icon.png.import create mode 100644 fonts/Born2bSportyV2.ttf create mode 100644 fonts/Extrude.ttf diff --git a/Levels/Dead.gd b/Levels/Dead.gd new file mode 100644 index 0000000..f604f7a --- /dev/null +++ b/Levels/Dead.gd @@ -0,0 +1,26 @@ +extends Control + + +# Declare member variables here. Examples: +# var a = 2 +# var b = "text" + + +# Called when the node enters the scene tree for the first time. +func _ready(): + pass # Replace with function body. + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +#func _process(delta): +# pass + + +func _on_Button_pressed(): + Global.playerdead = 0 + get_tree().change_scene(Global.beforedeathscene) + + +func _on_Button2_pressed(): + Global.playerdead = 0 + get_tree().change_scene("res://Levels/Main.tscn") diff --git a/Levels/Dead.tscn b/Levels/Dead.tscn new file mode 100644 index 0000000..f8410ad --- /dev/null +++ b/Levels/Dead.tscn @@ -0,0 +1,78 @@ +[gd_scene load_steps=5 format=2] + +[ext_resource path="res://fonts/Born2bSportyV2.ttf" type="DynamicFontData" id=1] +[ext_resource path="res://Levels/Dead.gd" type="Script" id=2] + +[sub_resource type="DynamicFont" id=1] +size = 144 +font_data = ExtResource( 1 ) + +[sub_resource type="DynamicFont" id=2] +size = 92 +font_data = ExtResource( 1 ) + +[node name="Dead" type="Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +script = ExtResource( 2 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="VBoxContainer" type="VBoxContainer" parent="."] +modulate = Color( 0.329412, 0.0470588, 0.0470588, 1 ) +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +margin_left = -499.5 +margin_top = -72.0 +margin_right = 499.5 +margin_bottom = 72.0 +__meta__ = { +"_edit_use_anchors_": false, +"_editor_description_": "" +} + +[node name="CenterContainer" type="CenterContainer" parent="VBoxContainer"] +margin_right = 999.0 +margin_bottom = 144.0 + +[node name="Label" type="Label" parent="VBoxContainer/CenterContainer"] +margin_right = 999.0 +margin_bottom = 144.0 +custom_fonts/font = SubResource( 1 ) +text = "You be dead bro :(" + +[node name="Button" type="Button" parent="."] +anchor_left = 0.5 +anchor_top = 0.665 +anchor_right = 0.5 +anchor_bottom = 0.682 +margin_left = -231.5 +margin_top = -66.0 +margin_right = 231.5 +margin_bottom = 66.0 +custom_fonts/font = SubResource( 2 ) +text = "Retry Level" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Button2" type="Button" parent="."] +anchor_left = 0.5 +anchor_top = 0.801 +anchor_right = 0.5 +anchor_bottom = 0.823 +margin_left = -231.5 +margin_top = -32.0106 +margin_right = 231.5 +margin_bottom = 99.9894 +custom_fonts/font = SubResource( 2 ) +text = "Menu" +__meta__ = { +"_edit_use_anchors_": false +} + +[connection signal="pressed" from="Button" to="." method="_on_Button_pressed"] +[connection signal="pressed" from="Button2" to="." method="_on_Button2_pressed"] diff --git a/Levels/Main.tscn b/Levels/Main.tscn new file mode 100644 index 0000000..304cc7d --- /dev/null +++ b/Levels/Main.tscn @@ -0,0 +1,46 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://Levels/Menu.gd" type="Script" id=1] + +[node name="Menu" type="Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="VBoxContainer" type="VBoxContainer" parent="."] +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +margin_left = -31.0 +margin_top = -34.0 +margin_right = 32.0 +margin_bottom = 34.0 +rect_scale = Vector2( 2, 2 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="StartButton" type="Button" parent="VBoxContainer"] +margin_right = 63.0 +margin_bottom = 20.0 +text = "Play" + +[node name="OptionsButton" type="Button" parent="VBoxContainer"] +margin_top = 24.0 +margin_right = 63.0 +margin_bottom = 44.0 +text = "Options" + +[node name="ExitButton" type="Button" parent="VBoxContainer"] +margin_top = 48.0 +margin_right = 63.0 +margin_bottom = 68.0 +text = "Quit" + +[connection signal="pressed" from="VBoxContainer/StartButton" to="." method="_on_StartButton_pressed"] +[connection signal="pressed" from="VBoxContainer/OptionsButton" to="." method="_on_OptionsButton_pressed"] +[connection signal="pressed" from="VBoxContainer/ExitButton" to="." method="_on_ExitButton_pressed"] diff --git a/Levels/Menu.gd b/Levels/Menu.gd new file mode 100644 index 0000000..b8f366f --- /dev/null +++ b/Levels/Menu.gd @@ -0,0 +1,27 @@ +extends Control + + +# Declare member variables here. Examples: +# var a = 2 +# var b = "text" + + +# Called when the node enters the scene tree for the first time. +func _ready(): + pass # Replace with function body. + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +#func _process(delta): +# pass + + +func _on_StartButton_pressed(): + get_tree().change_scene("res://Levels/Level01.tscn") + +func _on_OptionsButton_pressed(): + get_tree().change_scene("res://Levels/Options.tscn") + +func _on_ExitButton_pressed(): + get_tree().quit() + diff --git a/Levels/Options.gd b/Levels/Options.gd new file mode 100644 index 0000000..a6d69cd --- /dev/null +++ b/Levels/Options.gd @@ -0,0 +1,20 @@ +extends Control + + +# Declare member variables here. Examples: +# var a = 2 +# var b = "text" + + +# Called when the node enters the scene tree for the first time. +func _ready(): + pass # Replace with function body. + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +#func _process(delta): +# pass + + +func _on_Button_pressed(): + get_tree().change_scene("res://Levels/Main.tscn") diff --git a/Levels/Options.tscn b/Levels/Options.tscn new file mode 100644 index 0000000..7e7deee --- /dev/null +++ b/Levels/Options.tscn @@ -0,0 +1,320 @@ +[gd_scene load_steps=19 format=2] + +[ext_resource path="res://fonts/Extrude.ttf" type="DynamicFontData" id=1] +[ext_resource path="res://fonts/Born2bSportyV2.ttf" type="DynamicFontData" id=2] +[ext_resource path="res://Levels/Options.gd" type="Script" id=3] + +[sub_resource type="DynamicFont" id=1] +size = 222 +font_data = ExtResource( 1 ) + +[sub_resource type="DynamicFont" id=2] +size = 118 +font_data = ExtResource( 1 ) + +[sub_resource type="DynamicFont" id=3] +size = 73 +font_data = ExtResource( 1 ) + +[sub_resource type="DynamicFont" id=4] +size = 43 +font_data = ExtResource( 1 ) + +[sub_resource type="DynamicFont" id=5] +size = 37 +font_data = ExtResource( 1 ) + +[sub_resource type="DynamicFont" id=6] +size = 35 +font_data = ExtResource( 1 ) + +[sub_resource type="DynamicFont" id=7] +size = 35 +font_data = ExtResource( 1 ) + +[sub_resource type="DynamicFont" id=8] +size = 73 +font_data = ExtResource( 1 ) + +[sub_resource type="DynamicFont" id=9] +size = 40 +font_data = ExtResource( 1 ) + +[sub_resource type="DynamicFont" id=10] +size = 35 +font_data = ExtResource( 1 ) + +[sub_resource type="DynamicFont" id=11] +size = 37 +font_data = ExtResource( 1 ) + +[sub_resource type="DynamicFont" id=12] +size = 33 +font_data = ExtResource( 1 ) + +[sub_resource type="DynamicFont" id=13] +size = 50 +font_data = ExtResource( 1 ) + +[sub_resource type="DynamicFont" id=14] +size = 50 +font_data = ExtResource( 1 ) + +[sub_resource type="DynamicFont" id=15] +font_data = ExtResource( 2 ) + +[node name="Control" type="Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +script = ExtResource( 3 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="VBoxContainer" type="VBoxContainer" parent="."] +anchor_left = 0.5 +anchor_right = 0.5 +margin_left = -444.5 +margin_top = 88.0 +margin_right = 444.5 +margin_bottom = 223.0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="CenterContainer" type="CenterContainer" parent="VBoxContainer"] +margin_right = 889.0 +margin_bottom = 223.0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Label" type="Label" parent="VBoxContainer/CenterContainer"] +margin_right = 889.0 +margin_bottom = 223.0 +custom_fonts/font = SubResource( 1 ) +text = "Options" + +[node name="VBoxContainer2" type="VBoxContainer" parent="."] +anchor_left = 0.5 +anchor_top = 0.324 +anchor_right = 0.5 +anchor_bottom = 0.324 +margin_left = -291.0 +margin_right = 291.0 +margin_bottom = 367.0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="CenterContainer2" type="CenterContainer" parent="VBoxContainer2"] +margin_right = 582.0 +margin_bottom = 119.0 + +[node name="Label" type="Label" parent="VBoxContainer2/CenterContainer2"] +margin_right = 582.0 +margin_bottom = 119.0 +custom_fonts/font = SubResource( 2 ) +text = "Controls" + +[node name="VBoxContainer3" type="VBoxContainer" parent="."] +anchor_left = 0.344 +anchor_top = 0.458 +anchor_right = 0.5 +anchor_bottom = 0.46 +margin_left = -336.0 +margin_right = 176.0 +margin_bottom = 244.0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="CenterContainer3" type="CenterContainer" parent="VBoxContainer3"] +margin_right = 811.0 +margin_bottom = 74.0 + +[node name="Label" type="Label" parent="VBoxContainer3/CenterContainer3"] +margin_left = 229.0 +margin_right = 581.0 +margin_bottom = 74.0 +custom_fonts/font = SubResource( 3 ) +text = "Keyboard" + +[node name="CenterContainer4" type="CenterContainer" parent="VBoxContainer3"] +margin_top = 78.0 +margin_right = 811.0 +margin_bottom = 122.0 + +[node name="Label" type="Label" parent="VBoxContainer3/CenterContainer4"] +margin_left = 280.0 +margin_right = 531.0 +margin_bottom = 44.0 +custom_fonts/font = SubResource( 4 ) +text = "W - Move Up" + +[node name="CenterContainer5" type="CenterContainer" parent="VBoxContainer3"] +margin_top = 126.0 +margin_right = 811.0 +margin_bottom = 164.0 + +[node name="Label" type="Label" parent="VBoxContainer3/CenterContainer5"] +margin_left = 280.0 +margin_right = 530.0 +margin_bottom = 38.0 +custom_fonts/font = SubResource( 5 ) +text = "A - Move Left" + +[node name="CenterContainer6" type="CenterContainer" parent="VBoxContainer3"] +margin_top = 168.0 +margin_right = 811.0 +margin_bottom = 204.0 + +[node name="Label" type="Label" parent="VBoxContainer3/CenterContainer6"] +margin_left = 279.0 +margin_right = 531.0 +margin_bottom = 36.0 +custom_fonts/font = SubResource( 6 ) +text = "S - Move Down" + +[node name="CenterContainer7" type="CenterContainer" parent="VBoxContainer3"] +margin_top = 208.0 +margin_right = 811.0 +margin_bottom = 244.0 + +[node name="Label" type="Label" parent="VBoxContainer3/CenterContainer7"] +margin_left = 277.0 +margin_right = 534.0 +margin_bottom = 36.0 +custom_fonts/font = SubResource( 7 ) +text = "D - Move Right" + +[node name="VBoxContainer4" type="VBoxContainer" parent="."] +anchor_left = 0.5 +anchor_right = 0.5 +margin_left = 57.0 +margin_top = 660.0 +margin_right = 157.5 +margin_bottom = 92.0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="CenterContainer" type="CenterContainer" parent="VBoxContainer4"] +margin_right = 347.0 +margin_bottom = 74.0 + +[node name="Label" type="Label" parent="VBoxContainer4/CenterContainer"] +margin_left = 16.0 +margin_right = 331.0 +margin_bottom = 74.0 +custom_fonts/font = SubResource( 8 ) +text = "GamePad" + +[node name="CenterContainer2" type="CenterContainer" parent="VBoxContainer4"] +margin_top = 78.0 +margin_right = 347.0 +margin_bottom = 118.0 + +[node name="Label" type="Label" parent="VBoxContainer4/CenterContainer2"] +margin_left = 46.0 +margin_right = 300.0 +margin_bottom = 40.0 +custom_fonts/font = SubResource( 9 ) +text = "Up - Move Up" + +[node name="CenterContainer3" type="CenterContainer" parent="VBoxContainer4"] +margin_top = 122.0 +margin_right = 347.0 +margin_bottom = 158.0 + +[node name="Label" type="Label" parent="VBoxContainer4/CenterContainer3"] +margin_left = 25.0 +margin_right = 321.0 +margin_bottom = 36.0 +custom_fonts/font = SubResource( 10 ) +text = "Left - Move Left" + +[node name="CenterContainer4" type="CenterContainer" parent="VBoxContainer4"] +margin_top = 162.0 +margin_right = 347.0 +margin_bottom = 200.0 + +[node name="Label" type="Label" parent="VBoxContainer4/CenterContainer4"] +margin_right = 347.0 +margin_bottom = 38.0 +custom_fonts/font = SubResource( 11 ) +text = "Down - Move Down" + +[node name="CenterContainer5" type="CenterContainer" parent="VBoxContainer4"] +margin_top = 204.0 +margin_right = 347.0 +margin_bottom = 238.0 + +[node name="Label" type="Label" parent="VBoxContainer4/CenterContainer5"] +margin_left = 15.0 +margin_right = 331.0 +margin_bottom = 34.0 +custom_fonts/font = SubResource( 12 ) +text = "Right - Move Right" + +[node name="VBoxContainer5" type="VBoxContainer" parent="."] +anchor_left = 0.5 +anchor_top = 0.324 +anchor_right = 0.5 +anchor_bottom = 0.324 +margin_left = -291.0 +margin_top = 646.0 +margin_right = 291.0 +margin_bottom = 117.0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="CenterContainer" type="CenterContainer" parent="VBoxContainer5"] +margin_right = 582.0 +margin_bottom = 119.0 + +[node name="Label" type="Label" parent="VBoxContainer5/CenterContainer"] +margin_left = 62.0 +margin_right = 519.0 +margin_bottom = 119.0 +custom_fonts/font = SubResource( 2 ) +text = "Credits" + +[node name="CenterContainer2" type="CenterContainer" parent="VBoxContainer5"] +margin_top = 123.0 +margin_right = 582.0 +margin_bottom = 174.0 + +[node name="Label" type="Label" parent="VBoxContainer5/CenterContainer2"] +margin_left = 152.0 +margin_right = 429.0 +margin_bottom = 51.0 +custom_fonts/font = SubResource( 13 ) +text = "Paul Black" + +[node name="CenterContainer3" type="CenterContainer" parent="VBoxContainer5"] +margin_top = 178.0 +margin_right = 582.0 +margin_bottom = 229.0 + +[node name="Label" type="Label" parent="VBoxContainer5/CenterContainer3"] +margin_left = 89.0 +margin_right = 493.0 +margin_bottom = 51.0 +custom_fonts/font = SubResource( 14 ) +text = "Noah Archuleta" + +[node name="Button" type="Button" parent="."] +margin_left = 10.0 +margin_top = 10.0 +margin_right = 50.0 +margin_bottom = 32.0 +rect_scale = Vector2( 3, 3 ) +custom_fonts/font = SubResource( 15 ) +text = "Back" +__meta__ = { +"_edit_use_anchors_": false +} + +[connection signal="pressed" from="Button" to="." method="_on_Button_pressed"] diff --git a/Objects/Ai-tank/tank00.gd b/Objects/Ai-tank/tank00.gd index 81819d0..cbb773e 100644 --- a/Objects/Ai-tank/tank00.gd +++ b/Objects/Ai-tank/tank00.gd @@ -42,7 +42,7 @@ func _ready(): func _physics_process(delta): velocity = Vector3.ZERO - if ablewalk == 0: + if ablewalk == 1: _walk_towards_player() $CollisionShapeBottom.rotation.y = lerp_angle($CollisionShapeBottom.rotation.y, atan2(velocity.x, velocity.z), delta * angular_acceleration) _look_at_player() @@ -60,12 +60,14 @@ func _bullet_fire(): func _walk_towards_player(): if player != null: # Makes sure player is not an empty variable (not equal to nill/null) - velocity = (player.transform.origin - transform.origin).normalized() * speed # make velocity direction equal to player direction + if Global.playerdead == 0: + velocity = (player.transform.origin - transform.origin).normalized() * speed # make velocity direction equal to player direction velocity = move_and_slide(velocity) # Move AI towards player func _look_at_player(): if player != null: - $CollisionShapeTop.look_at(Vector3(player.global_transform.origin.x, global_transform.origin.y, player.global_transform.origin.z), Vector3(0,1,0)) # Look at player + if Global.playerdead == 0: + $CollisionShapeTop.look_at(Vector3(player.global_transform.origin.x, global_transform.origin.y, player.global_transform.origin.z), Vector3(0,1,0)) # Look at player func _walk_towards_player_timer(): walkingrandomnum.randomize() diff --git a/Objects/Bullet/Bullet.gd b/Objects/Bullet/Bullet.gd index 33094a7..db888e8 100644 --- a/Objects/Bullet/Bullet.gd +++ b/Objects/Bullet/Bullet.gd @@ -18,6 +18,9 @@ func _physics_process(delta): print ("Found Player Tank") self.queue_free() body.queue_free() + Global.playerdead = 1 + Global.beforedeathscene = get_tree().current_scene.filename + get_tree().change_scene("res://Levels/Dead.tscn") else: if get_overlapping_bodies(): if body.has_node("TankAI"): diff --git a/Objects/Player-tank/Player.gd b/Objects/Player-tank/Player.gd index cd3e28c..f120fb1 100644 --- a/Objects/Player-tank/Player.gd +++ b/Objects/Player-tank/Player.gd @@ -10,7 +10,6 @@ var angular_acceleration = 7 # How fast the player rotates var velocity = Vector3.ZERO func _physics_process(delta): - Global.player = self # Makes the player variable in the global script equal to self var direction = Vector3.ZERO ### Input management if Input.is_action_pressed("move_right"): diff --git a/click/.gdignore b/click/.gdignore new file mode 100644 index 0000000..e69de29 diff --git a/click/icon.png.import b/click/icon.png.import new file mode 100644 index 0000000..4e527fa --- /dev/null +++ b/click/icon.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/icon.png-48fcc5e8ec849ca7ca2a3dab10f71f87.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://click/icon.png" +dest_files=[ "res://.import/icon.png-48fcc5e8ec849ca7ca2a3dab10f71f87.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 +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/export_presets.cfg b/export_presets.cfg index 1f143ad..3212b32 100644 --- a/export_presets.cfg +++ b/export_presets.cfg @@ -22,3 +22,68 @@ texture_format/s3tc=true texture_format/etc=false texture_format/etc2=false texture_format/no_bptc_fallbacks=true + +[preset.1] + +name="Mac OSX" +platform="Mac OSX" +runnable=true +custom_features="" +export_filter="all_resources" +include_filter="" +exclude_filter="" +export_path="export/.dmg" +script_export_mode=1 +script_encryption_key="" + +[preset.1.options] + +custom_template/debug="" +custom_template/release="" +application/name="" +application/info="Made with Godot Engine" +application/icon="" +application/identifier="" +application/signature="" +application/app_category="Games" +application/short_version="1.0" +application/version="1.0" +application/copyright="" +display/high_res=false +privacy/camera_usage_description="" +privacy/microphone_usage_description="" +codesign/enable=true +codesign/identity="" +codesign/timestamp=true +codesign/hardened_runtime=true +codesign/replace_existing_signature=true +codesign/entitlements/custom_file="" +codesign/entitlements/allow_jit_code_execution=false +codesign/entitlements/allow_unsigned_executable_memory=false +codesign/entitlements/allow_dyld_environment_variables=false +codesign/entitlements/disable_library_validation=false +codesign/entitlements/audio_input=false +codesign/entitlements/camera=false +codesign/entitlements/location=false +codesign/entitlements/address_book=false +codesign/entitlements/calendars=false +codesign/entitlements/photos_library=false +codesign/entitlements/apple_events=false +codesign/entitlements/debugging=false +codesign/entitlements/app_sandbox/enabled=false +codesign/entitlements/app_sandbox/network_server=false +codesign/entitlements/app_sandbox/network_client=false +codesign/entitlements/app_sandbox/device_usb=false +codesign/entitlements/app_sandbox/device_bluetooth=false +codesign/entitlements/app_sandbox/files_downloads=0 +codesign/entitlements/app_sandbox/files_pictures=0 +codesign/entitlements/app_sandbox/files_music=0 +codesign/entitlements/app_sandbox/files_movies=0 +codesign/custom_options=PoolStringArray( ) +notarization/enable=false +notarization/apple_id_name="" +notarization/apple_id_password="" +notarization/apple_team_id="" +texture_format/s3tc=true +texture_format/etc=false +texture_format/etc2=false diff --git a/fonts/Born2bSportyV2.ttf b/fonts/Born2bSportyV2.ttf new file mode 100644 index 0000000000000000000000000000000000000000..02001782191bb61a6e111d0c10cae154ef9a298f GIT binary patch literal 55532 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 literal 0 HcmV?d00001 diff --git a/fonts/Extrude.ttf b/fonts/Extrude.ttf new file mode 100644 index 0000000000000000000000000000000000000000..9438e6135bc175157823f72b975b65e1983f39a8 GIT binary patch literal 19020 zcmeHPYp5L8egDtQ&hC9ky1KerUAdVL*VZM^bJe#CYxD~cmOy2~ABgu`s6iLm2WQ$p_JvHk5uS6xw0}O-gZ-7D}Sq z-|v6UnVEgBEaltI?#!Im%=w@H`~1(@6;DJqNhE>1^zg$+o;d!^-}-^bW6LPredxi5 z9+nB&gZyUX_dNB?zWu-ZzxV$_#5;}r(G%y^E-e2;{yCB02+EF~c;nKn%==#!$$b~~ zxmVU+yRg2FH_Kxq$d9~o_BUQWbL`Z=iiDBK{R^j0t(}xhzjFw6KgD_XX%ysN3>NXO z1>_e_pSyJV#~=RvJn}KlKR)~FiM8_A@A@iU{T}MCo?E+oL9WPOpzaamXV0&lJGJN8 z|9(s4(6>-_{=%!TT{?LA1Hkj>R@DDoI98m0__g2rlj9Qyej(#I6o~xoZGZM{cVCYH za0HM6ulT&-z%zlYi##91>k-nCzDcX><)oIJk~d^rOZcRxWewS@C7yqa_j3tF{IC00 zQSwLT?)`^Uy-}1(UOUycX$sl>moB|54Vjg9EDZWub3rF>2=IgZXK^-ou1CJ$1f;y< znaGdUBbIx-<0NoC^R5hc=Goqh&0XJN%QTHTch~1or)@L$AU5yScSUH=6ZLw=Ca=%h zG|L0A?O2Aq!X4Q(^EMr1(rl;WaCb57U75ZoN}tWX_h$C5?_xiMqk*x<;to=f=Wa`< zBgm2ac1up~!F^1*%a`AlKbOChcOWGK3fuJhzpa0N{e$)Q9gR_k!^`6|N%53~Hsfxn z402(f_^bJyM}52l?6jZ|485u(uEuelpS+d2{5)qqmG+82#SZ{Ma|fJ{mtf{=tSV8%}R{Z{zI7 zXyf}Ef4S-GrYjQ*6K_uZ*XG9N_a*B5tcOTw;W%vJ;4wv5E zv#{r_Js-^+p83<6f0~`2{USc!o7*Bj<=5NqzYPv4$liB7*>~VdAtyiE|873~=L1&) zA4z#PU~$OeD}}uG%L7-y0zcbdot&Fos!o>Yz0Lo5^{W5&ua3_9FM|!Jr93iV2z^u+ zS*aE)Uaea9swEGJa;=OcF1c!L)hkx{Ddmu@c%>W)Dqb;aG#XJO#`R+z5C+PG7XyZh zQ~?e8Bn;ZM_Rfye-aV9|cW)KvA^>ID>)iFapu9^RV8%h-86gh*2>lbU6EZC`QkGZb zRgt+`wa9a&j_!&8%hyB!uo0j|Rx@2D#&9v8;wms$Oh09!k`LB+vpKz?CF|xeB&NKm z0gz+B72z~EMcJ=n=6WBV^set&3o{981}&{P7?%@rMr0aes0Y=OkKvU#d_xmu2#f+% zKmpp2I{cKpvhoJot$O4Ta86MPqy#Mm7@{92XT^4KJ)ts{(cn$n-e!=J(%6iz08XEh zU9y5vzAgfyDIqx)09^42y^nE|vPGpV#X;fbKr4R93zg_7Qref%yte8C6L^%Uz^4pa z10&{JoUGP;Jm**A24K1dro^ytD7`ghF3PZ(d|NUy{Co}f>pUETh>R=0H!Qzzlu0Sd z4k^i;EXp17CByZ^MxeT24k?hdTCjJZr3wM477R}pRT#j)WPXPU#Q}y3L=Y83BR>uc zkfd_aiyPNs9R!dOk;=#sFXr2q?0CNMG4Rk3PxTFi9V3=0OGzDoqaLW1>KK62bac`u z5<-3&9&sAVsBFZWABO}P#2LJ;;+-SaQo*8Ygy?ep0XO#WmDEra00(F$4WGVP2#OV<5$*##hGweftr-H9 z7FGJG5LEpEUs;SnJPf;lh$?0gx{7gHVP~r8h?;Wk8AG=S(}D;XE5I%qZA|r~h7sL2 zGprBEqr!o-;dO2AZ!2(p0uAZ|L>@4Ko;JersSlu9kWN54XlOW+q~aH2eY{n9nNs&= zV_U6%fpO5knCa$USV0)Xn=tUg8M3m5IidAgYAJR=F7wUO$tq(NZda{h=hSor*gNui zI;O!=B6;XChC;vXtqJu8uljtv`I7TUZ`ce~H@O z!W_T}Fhq4&1I$)X14xd3zt10dm|KfR9ru1-1J|ZpPu~ zPQmKWkSnJY(Jj`>ARowGC5AZ+I5|y>;3fjf4j7byRRt)vkVox+n$elI?X}G%m<%Lx zgs8;|tR!%!*3!UZywF?|W_@xe1q`%MuD}p{=;s_9P~Sn>+)uY$+^wR$9E_~^Ri2pN!8e;lycom}DzV^~)J6o*e3ZvIc?!}971B0})I=y>7+Fjd zp;digF&NT{9}^rx#pwjVYBv{Jj|<(Yfg!fGT>YhS`DDT)ig&9c6uDFuNI36S*@Kdc z0(f(9VQz#olvm-w({H11^iVh7C}q}kf@<6}3kS_dPp`>giFY7skc0M&bOmPBt{S>d ztEbD6lX_~MYE_kKh`F6hTJ4%a8uhB0HZ^8y&IB+x4<&9WecPdm+KXCBjJ(tLji9Nf zV5ph^S2t=9Fo2@q z_!USsa9f1rCO(Y{%c}DX=m(&=s*yIBBLF!Ff;kqp?R0P)p~!k8h#)&Fh;V%gF|OB8 z2y5x&mll=6OYwyZM(BxPFl|6R4*)S3QlXwRTBk^5ic096I+`G6pia+qZDQVLg~EEvJk zDQL_NER{M1ZCHOjM`Rl7oYc&1s5u^o_wZcm4}*oQWEOyQYl2A}P=?of>QUxO`6}`> z#euyK=nKc!1Ga5zOkXM|4d_1l#gl5I?{H&C{bNjetX)P}B(WBR7TjgWi1=a?9qb5= zl$0$U2mn-13~CqwLCPM3+BMg{{f+@4F3OcEotuyzpYKZz&;!Ci_bpIu1WJH&5c^a@ z6@QIXzyM4Ss< zwieQdV?%$z>ZE3HX|z2`E1?CL5xU^nFcB9`-M|GjH@cqo+gNW#Mn8d=xaxY&ON|_Y zhcTHCz^zpp0n9e6`e}C(s+ILb)bJaiOM@T1g(b?gYlg zc$eX2#$rmaVaJ{QnzNeF&HRhhb$$}(CI!?Es9B&vAbk+gR`)5d15t31iVbKtE`6;- zG`wxss-|JT5`J+|Ly;tq62N?fceI((*7tVG8(di*j+%_oO4lFAufChw4XdnZF~JTN zP3#=&A3BH7{^NnY>=tN1HY?NAK`+P}S7xRZ?FDr#=niGaol?knKr{_XFdA;!bkklf ze6jVUUN>lm=qFc-rLAQ$ZLRa2CZ7x6KR&N>2R^vv;{q`I=4VQ|ieP*q%Pp%K|5 zpD_e2sBzisw9QypSJU}Eh{9;*r>EfyK?fM708o8ds%hLMe^U8I$pOc;GgN75jARq7 z(yBfw$1EnMoUYdzAA_q`Wvm=qZI<;iAga{QiKaF>*qUN1x-IG&!a{N-N;)abTE9-~^1*xvizoc*W1rJZCPZw8w8M60cI^Y{X$bYvQezEj24yE3j7 zV;*EFnh0nTIxU7st#*?z^6YxVU2A$(Sn_3jL;5ux=M`!eI0#L+DF$^I2jM($4#tF3 zsrrn0LF_%F03a+;FOWV?T?YOTG_iJq5tWdJiw0Nmk9nyP^VG#vPmz!ixbfFH|>cfEga7|9Z??I#j6b3CZH2_1Z6NI=Z z-4;W7R%$REB?jg!wFd`!`*VGa9xFdR zHmCE=2co|vf ztr)2uYcB7bbNT^e*0{2b(M-_lxtJQKS5~Mwm$pO9($twg;>Rw+QyF7!C4eC6txfyF zm}x-Tq;S$teWA0TsuKZd`BoKVG$p3jq?cL(4W#;@06x0)EA0+)pJr}SO5tB`=pGgB zfWk@xZ8Rp*5PuhQ83Pj`?nP!JRC)Rm^%1nd=B3eCAu+28?LbBCMSV-04mCaxy}88y z&*&tgGTCLMA`bjIZZ~GhS|*5p4NOh=IRq6=qTfzk-jv0MM1{F(Q01MpRVIs z{WXj+JIp|bMK0ZXk6Q}{$Q#>4IW+M((svkR9>$n^u};=z4`a;37;`UP(K_Sf4P(s1 z81pd3+)-GDF=m~e4r9#lp(Ahz&#rT;SSts+*dXOF#;ntmIdjEig>elo&JAPCK*=!1 zJd809W6Xmo)U?$w#@sv)9LAW*8^7)tv;7@`T?a;_5q6BRM=Z}(v%e-sn3+E~Ppv4`}xml(ZUtOP2WetpUHG)0m|v2XgXFHO8X)_vcBM$e|OdXL}LVEIQ0#E7si z31olNYgW^eP%-1gB&Mz&8Q;(1D(-}$j)ktFi`cY>zBbsjkJN%q2eJ*n z4l(U>X!C+ihcb)b+ne${%D*E|VpaEq$dhMqc}OnHCAo+eC$ZWq4_&@=@%58PJb~Ov z{iXgnWKNwt^E&S4!FyXD!i(-r9_;qQqj=#(EGD19_O9~)X&Ik8@z*=NFC#BUPhEWN z%&X^TmzVF{yS%)Nl5Vd8O8^@0D2Si2iCbPsTUFC^&z{>|f4SPN>%LAf7V??H^>VeFcC1pNCLw9%)5*(brt zp8@?3V<*57>;*fDUsFAcT@1&tJLGxL?M3XVdP&wiU;aRTzwr9`Gt0{d`F~Fy{)NW3 j+(C}phB8VrvEkVhH`C&W*S`BN%>3wb