diff --git a/3D Input/Bein_Mensch2.blend b/3D Input/Bein_Mensch2.blend deleted file mode 100644 index bf7be03..0000000 Binary files a/3D Input/Bein_Mensch2.blend and /dev/null differ diff --git a/3D Input/Bein_Mensch2.blend1 b/3D Input/Bein_Mensch2.blend1 deleted file mode 100644 index 633127d..0000000 Binary files a/3D Input/Bein_Mensch2.blend1 and /dev/null differ diff --git a/3D Input/Mensch_Bein.blend b/3D Input/Mensch_Bein.blend new file mode 100644 index 0000000..216ec85 Binary files /dev/null and b/3D Input/Mensch_Bein.blend differ diff --git a/3D Input/Mensch_Bein.blend1 b/3D Input/Mensch_Bein.blend1 new file mode 100644 index 0000000..7113e98 Binary files /dev/null and b/3D Input/Mensch_Bein.blend1 differ diff --git a/3D Input/Mensch_vogelarm_img.jpg.import b/3D Input/Mensch_vogelarm_img.jpg.import new file mode 100644 index 0000000..203be74 --- /dev/null +++ b/3D Input/Mensch_vogelarm_img.jpg.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Mensch_vogelarm_img.jpg-5d39f9db9f9783e3ca3f442f40cfd4a4.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://3D Input/Mensch_vogelarm_img.jpg" +dest_files=[ "res://.import/Mensch_vogelarm_img.jpg-5d39f9db9f9783e3ca3f442f40cfd4a4.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 diff --git a/BodyConfig/LoadBodyParts.gd b/BodyConfig/LoadBodyParts.gd index 125aab2..232e710 100644 --- a/BodyConfig/LoadBodyParts.gd +++ b/BodyConfig/LoadBodyParts.gd @@ -4,11 +4,11 @@ extends VBoxContainer # Called when the node enters the scene tree for the first time. func _ready(): for entry in BodyPartLoader.bodyparts: - #var button = Button.new() - #button.text = entry.key - pass + var button = Button.new() + button.text = entry + add_child(button) + button.connect("pressed", get_parent().get_parent().get_parent(), "body_part_chosen", [button.text]) -# Called every frame. 'delta' is the elapsed time since the previous frame. -#func _process(delta): -# pass +func button_pressed(params): + emit_signal("choose_bodypart", params[0]) diff --git a/BodyConfig/bodyBuilderMenu.tscn b/BodyConfig/bodyBuilderMenu.tscn index bb409dc..b0066b8 100644 --- a/BodyConfig/bodyBuilderMenu.tscn +++ b/BodyConfig/bodyBuilderMenu.tscn @@ -47,7 +47,7 @@ handle_input_locally = false render_target_update_mode = 3 [node name="Camera" type="Camera" parent="GUI/HBoxC/ViewportContainer/Viewport"] -transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 3 ) +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 7.8064 ) [node name="MouseLook" type="RayCast" parent="GUI/HBoxC/ViewportContainer/Viewport"] enabled = true @@ -55,3 +55,5 @@ collide_with_areas = true collide_with_bodies = false [node name="Torso" parent="." instance=ExtResource( 1 )] + +[editable path="Torso"] diff --git a/BodyConfig/bodyBuildingScript.gd b/BodyConfig/bodyBuildingScript.gd index 3060f0f..e3e9c7a 100644 --- a/BodyConfig/bodyBuildingScript.gd +++ b/BodyConfig/bodyBuildingScript.gd @@ -18,6 +18,7 @@ var _viewport : Viewport var _velx = 0 var _vely = 0 +var _attachment_point : Spatial # Called when the node enters the scene tree for the first time. @@ -66,15 +67,29 @@ func _physics_process(delta): if _rayCast.is_colliding(): # collider will be the node hit - print(_rayCast.get_collider()) + make_it_shine(false) + var temp = _rayCast.get_collider().get_parent() + if temp.has_node("OmniLight"): + _attachment_point = temp + make_it_shine(true) func _input(event): - if event is InputEventMouseButton: - if event.pressed and _viewport.get_viewport().get_mouse_position().x >= 0: - print("Mouse Click at: ", event.position) - _prev_mouse_pos = event.position - _viewRot = true - else: - print("mouse unpressed at: ", event.position) - _viewRot = false + if _viewport.get_viewport().get_mouse_position().x >= 0: + if event is InputEventMouseButton: + if event.pressed: + print("Mouse Click at: ", event.position) + _prev_mouse_pos = event.position + _viewRot = true + else: + print("mouse unpressed at: ", event.position) + _viewRot = false + + +func body_part_chosen(params): + _attachment_point.add_child(BodyPartLoader.bodyparts[params].instance()) + + +func make_it_shine(highlight : bool): + if _attachment_point != null: + _attachment_point.get_node("OmniLight").visible = highlight diff --git a/BodyParts/Arm.tscn b/BodyParts/Arm.tscn index 200c275..0413105 100644 --- a/BodyParts/Arm.tscn +++ b/BodyParts/Arm.tscn @@ -4,7 +4,7 @@ [ext_resource path="res://3D Input/untitled.glb" type="PackedScene" id=2] [ext_resource path="res://BodyParts/Arm.gd" type="Script" id=3] -[sub_resource type="CapsuleShape" id=3] +[sub_resource type="CapsuleShape" id=1] radius = 0.724339 height = 5.27855 @@ -13,28 +13,33 @@ radius = 0.591769 [node name="Arm" instance=ExtResource( 1 )] script = ExtResource( 3 ) +key = 0 +damage = 10.0 [node name="PartCollider" parent="." index="0"] -transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -5.34203 ) -shape = SubResource( 3 ) +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -2.83 ) +shape = SubResource( 1 ) [node name="Mesh" parent="." index="1" instance=ExtResource( 2 )] [node name="Sphere" parent="Mesh" index="0"] visible = false +[node name="Armature" parent="Mesh" index="1"] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) + [node name="BoneAttachment" type="BoneAttachment" parent="Mesh/Armature/Skeleton" index="1"] -transform = Transform( 1, -1.98247e-23, -2.98292e-24, 6.50669e-24, -9.49949e-08, 1, -2.07684e-23, -1, -9.49949e-08, -2.23781e-16, -0.0078205, -5.05441 ) +transform = Transform( 1, -1.98292e-23, -3.18966e-24, 6.71348e-24, -9.49949e-08, 1, -2.07636e-23, -1, -9.49949e-08, -2.23781e-16, -0.0078205, -5.05441 ) bone_name = "bone_2" [node name="RemoteTransform" type="RemoteTransform" parent="Mesh/Armature/Skeleton/BoneAttachment" index="0"] remote_path = NodePath("../../../../../TouchArea") [node name="TouchArea" parent="." index="2"] -transform = Transform( 1, -1.98247e-23, -2.98292e-24, 6.50669e-24, -9.49949e-08, 1, -2.07684e-23, -1, -9.49949e-08, -2.23781e-16, -0.0078205, -7.60024 ) +transform = Transform( 1, -1.98292e-23, -3.18966e-24, 6.71348e-24, -9.49949e-08, 1, -2.07636e-23, -1, -9.49949e-08, -2.23781e-16, -0.0078205, -5.05441 ) [node name="CollisionShape" type="CollisionShape" parent="TouchArea" index="0"] -transform = Transform( 1, 2.98291e-24, -1.98247e-23, -2.07684e-23, -9.49949e-08, -1, -6.50669e-24, 1, -9.49949e-08, 2.23781e-16, 0.399765, 0.00782054 ) +transform = Transform( 1, 2.98291e-24, -1.98247e-23, -2.07684e-23, -9.49949e-08, -1, -6.50669e-24, 1, -9.49949e-08, 0, 0, 0 ) shape = SubResource( 2 ) [editable path="Mesh"] diff --git a/BodyParts/BodyBase/AttachmentPoint.tscn b/BodyParts/BodyBase/AttachmentPoint.tscn new file mode 100644 index 0000000..049c59b --- /dev/null +++ b/BodyParts/BodyBase/AttachmentPoint.tscn @@ -0,0 +1,26 @@ +[gd_scene load_steps=3 format=2] + +[sub_resource type="SphereMesh" id=1] + +[sub_resource type="SphereShape" id=2] + +[node name="AttachmentPoint" type="Spatial"] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) + +[node name="Mesh" type="MeshInstance" parent="."] +transform = Transform( 0.3, 0, 0, 0, 0.3, 0, 0, 0, 0.3, 0, 0, 0 ) +mesh = SubResource( 1 ) +material/0 = null + +[node name="OmniLight" type="OmniLight" parent="."] +transform = Transform( 1, 3.12639e-13, -1.77715e-26, -3.12639e-13, 1, -5.68434e-14, 0, 5.68434e-14, 1, -0.680858, 0, -1.38872 ) +visible = false +light_color = Color( 0.956863, 0.121569, 0.121569, 1 ) +light_energy = 3.86 +omni_range = 1.8 + +[node name="Area" type="Area" parent="."] + +[node name="CollisionShape" type="CollisionShape" parent="Area"] +transform = Transform( 0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0 ) +shape = SubResource( 2 ) diff --git a/BodyParts/BodyBase/BodyBase.tscn b/BodyParts/BodyBase/BodyBase.tscn index e52a13e..eb25341 100644 --- a/BodyParts/BodyBase/BodyBase.tscn +++ b/BodyParts/BodyBase/BodyBase.tscn @@ -1,20 +1,13 @@ -[gd_scene load_steps=7 format=2] +[gd_scene load_steps=5 format=2] [ext_resource path="res://BodyParts/BodyBase/BodyBase.gd" type="Script" id=1] +[ext_resource path="res://BodyParts/BodyBase/AttachmentPoint.tscn" type="PackedScene" id=2] [sub_resource type="CapsuleMesh" id=1] [sub_resource type="CapsuleShape" id=2] -[sub_resource type="SphereMesh" id=3] - -[sub_resource type="SphereShape" id=4] - -[sub_resource type="SphereShape" id=5] - -[node name="Torso" type="RigidBody" groups=[ -"Player", -]] +[node name="Torso" type="RigidBody"] script = ExtResource( 1 ) [node name="TorsoMesh" type="MeshInstance" parent="."] @@ -22,32 +15,11 @@ mesh = SubResource( 1 ) material/0 = null [node name="TorsoCollider" type="CollisionShape" parent="."] +transform = Transform( 0.8, 0, 0, 0, 0.8, 0, 0, 0, 0.8, 0, 0, 0 ) shape = SubResource( 2 ) -[node name="FrontLeft" type="Spatial" parent="."] +[node name="FrontLeft" parent="." instance=ExtResource( 2 )] transform = Transform( 0.5, -1.62921e-07, -0.866025, -3.25841e-07, -1, 0, -0.866025, 2.82187e-07, -0.5, 0.6, 0, 1 ) -[node name="FrontLeftAttachMent" type="MeshInstance" parent="FrontLeft"] -transform = Transform( 0.3, 0, 0, 0, 0.3, 0, 0, 0, 0.3, 0, 0, 0 ) -mesh = SubResource( 3 ) -material/0 = null - -[node name="Area" type="Area" parent="FrontLeft"] - -[node name="CollisionShape" type="CollisionShape" parent="FrontLeft/Area"] -transform = Transform( 0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0 ) -shape = SubResource( 4 ) - -[node name="FrontRight" type="Spatial" parent="."] -transform = Transform( 0.5, -1.62921e-07, 0.866025, -3.25841e-07, -1, 0, 0.866025, -2.82187e-07, -0.5, -0.6, 0, 1 ) - -[node name="FrontRightAttachMent" type="MeshInstance" parent="FrontRight"] -transform = Transform( 0.3, 0, 0, 0, 0.3, 0, 0, 5.0822e-21, 0.3, 0, 0, 0 ) -mesh = SubResource( 3 ) -material/0 = null - -[node name="Area" type="Area" parent="FrontRight"] - -[node name="CollisionShape" type="CollisionShape" parent="FrontRight/Area"] -transform = Transform( 0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0 ) -shape = SubResource( 5 ) +[node name="FrontRight" parent="." instance=ExtResource( 2 )] +transform = Transform( -0.5, 0, 0.866025, 0, 1, 0, -0.866025, 0, -0.5, -0.6, 0, 1 ) diff --git a/Controllers/GameStateController.gd b/Controllers/GameStateController.gd new file mode 100644 index 0000000..54dd23a --- /dev/null +++ b/Controllers/GameStateController.gd @@ -0,0 +1,49 @@ +extends Node + +var _win_screen_scene +var _fighting_scene_path = "res://Ingame/Testing.tscn" + +#test vars +var test = 0 +var tested = false +signal player_win(player_id) + + + +func _ready(): + _win_screen_scene = preload("res://UI/WinScreen.tscn").instance() + #_fighting_scene = preload("res://Ingame/Testing.tscn").instance() + + connect("player_win", self, "_switch_to_win") + _win_screen_scene.connect("start_fight", self, "_switch_to_fighting") + + +func _switch_scene(scene): + #delete children + for child in get_children(): + child.queue_free() + + #append win scene + add_child(scene) + + +func _switch_to_win(player_id): + _switch_scene(_win_screen_scene) + + #call win message in win scene + _win_screen_scene.set_win_message(player_id) + + +func _switch_to_fighting(): + #_switch_scene(_fighting_scene) + get_tree().reload_current_scene() + + +# test +#func _process(delta): + #if test > 3 and not tested: + #tested = true + #test = 0 + #emit_signal("player_win", 1) + #else: + #test += delta diff --git a/Controllers/GameStateController.tscn b/Controllers/GameStateController.tscn new file mode 100644 index 0000000..e55c1f8 --- /dev/null +++ b/Controllers/GameStateController.tscn @@ -0,0 +1,9 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://Controllers/GameStateController.gd" type="Script" id=1] +[ext_resource path="res://Ingame/Testing.tscn" type="PackedScene" id=2] + +[node name="GameStateController" type="Node"] +script = ExtResource( 1 ) + +[node name="InGame" parent="." instance=ExtResource( 2 )] diff --git a/Global/BodyPartLoader.gd b/Global/BodyPartLoader.gd index 9e968b2..4bc3b22 100644 --- a/Global/BodyPartLoader.gd +++ b/Global/BodyPartLoader.gd @@ -5,3 +5,4 @@ var bodyparts : Dictionary # Called when the node enters the scene tree for the first time. func _ready(): bodyparts["Arm"] = load("res://BodyParts/Arm.tscn") + diff --git a/Ingame/Testing.tscn b/Ingame/Testing.tscn index 6b3c697..1170527 100644 --- a/Ingame/Testing.tscn +++ b/Ingame/Testing.tscn @@ -39,9 +39,11 @@ transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3.02111, 0 ) [node name="Arm" parent="Torso/FrontLeft" index="1" instance=ExtResource( 1 )] key = 83 +damage = 10.0 [node name="Arm" parent="Torso/FrontRight" index="1" instance=ExtResource( 1 )] key = 65 +damage = 10.0 [node name="Torso2" parent="." instance=ExtResource( 3 )] transform = Transform( -0.866025, -0.353553, -0.353553, -6.18172e-08, -0.707107, 0.707107, -0.5, 0.612372, 0.612372, 0, 3.02111, -9 ) @@ -49,9 +51,11 @@ player_id = 1 [node name="Arm" parent="Torso2/FrontLeft" index="1" instance=ExtResource( 1 )] key = 81 +damage = 10.0 [node name="Arm" parent="Torso2/FrontRight" index="1" instance=ExtResource( 1 )] key = 87 +damage = 10.0 [node name="UI" parent="." instance=ExtResource( 2 )] diff --git a/UI/WinScreen.tscn b/UI/WinScreen.tscn index 77fb92c..adffb9e 100644 --- a/UI/WinScreen.tscn +++ b/UI/WinScreen.tscn @@ -10,28 +10,52 @@ __meta__ = { "_edit_use_anchors_": false } labelPath = NodePath("MarginContainer/VBoxContainer/PlayerWon") +continuePath = NodePath("MarginContainer/VBoxContainer/Control/Continue") [node name="MarginContainer" type="MarginContainer" parent="."] anchor_right = 1.0 anchor_bottom = 1.0 +__meta__ = { +"_edit_use_anchors_": false +} [node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer"] margin_right = 1024.0 margin_bottom = 600.0 [node name="Congratz" type="Label" parent="MarginContainer/VBoxContainer"] -margin_top = -1.0 margin_right = 1024.0 -margin_bottom = 249.0 +margin_bottom = 250.0 rect_min_size = Vector2( 0, 250 ) text = "CONGRATULATIONS!" align = 1 valign = 2 [node name="PlayerWon" type="Label" parent="MarginContainer/VBoxContainer"] -margin_top = 254.0 +margin_top = 253.0 margin_right = 1024.0 -margin_bottom = 404.0 -rect_min_size = Vector2( 0, 150 ) +margin_bottom = 503.0 +rect_min_size = Vector2( 0, 250 ) align = 1 valign = 1 + +[node name="Control" type="Control" parent="MarginContainer/VBoxContainer"] +margin_top = 508.0 +margin_right = 1024.0 +margin_bottom = 508.0 + +[node name="Continue" type="Button" parent="MarginContainer/VBoxContainer/Control"] +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +margin_left = -100.0 +margin_top = -10.0 +margin_right = 100.0 +margin_bottom = 15.0 +rect_min_size = Vector2( 200, 25 ) +text = "Continue" +__meta__ = { +"_edit_use_anchors_": false +} +[connection signal="pressed" from="MarginContainer/VBoxContainer/Control/Continue" to="." method="_on_Continue_pressed"] diff --git a/UI/WinScreenScript.gd b/UI/WinScreenScript.gd index 0e8dae2..6d9c713 100644 --- a/UI/WinScreenScript.gd +++ b/UI/WinScreenScript.gd @@ -1,22 +1,23 @@ extends Control export(NodePath) var labelPath +export(NodePath) var continuePath -#signal player_win(player_id) +signal start_fight() var _playerWonLabel +var _continueButton -# Called when the node enters the scene tree for the first time. func _ready(): _playerWonLabel = get_node(labelPath) as Label - - #connect("player_win", self, "_win_message") - - #emit_signal("player_win", 1) + _continueButton = get_node(continuePath) as Label -func _win_message(player_id): - _playerWonLabel.text = "test" +func set_win_message(player_id): + _playerWonLabel.text = "Player " + str(player_id + 1) + " is victorious!" + + +func _on_Continue_pressed(): + print("test2") - #print("game won!") - #print(player_id) + emit_signal("start_fight") diff --git a/project.godot b/project.godot index 0337e80..32d0b12 100644 --- a/project.godot +++ b/project.godot @@ -33,13 +33,12 @@ _global_script_class_icons={ [application] config/name="BodyPartFighter" -run/main_scene="res://Ingame/Testing.tscn" config/icon="res://icon.png" [autoload] -InGameState="*res://Global/InGameState.gd" BodyPartLoader="*res://Global/BodyPartLoader.gd" +InGameState="*res://Global/InGameState.gd" [rendering]