Added Colours and Damage support
parent
8b05248180
commit
3722c73a15
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Models/spaceship_model_modified.tscn (Stored with Git LFS)
BIN
Models/spaceship_model_modified.tscn (Stored with Git LFS)
Binary file not shown.
|
@ -1,7 +1,8 @@
|
|||
[gd_scene load_steps=3 format=2]
|
||||
[gd_scene load_steps=4 format=2]
|
||||
|
||||
[ext_resource path="res://Scripts/Arena.gd" type="Script" id=1]
|
||||
[ext_resource path="res://Scripts/Camera.gd" type="Script" id=2]
|
||||
[ext_resource path="res://Models/space_arena.tscn" type="PackedScene" id=3]
|
||||
|
||||
[node name="Arena" type="Spatial"]
|
||||
script = ExtResource( 1 )
|
||||
|
@ -9,3 +10,5 @@ script = ExtResource( 1 )
|
|||
[node name="Camera" type="Camera" parent="."]
|
||||
transform = Transform( 1, 0, 0, 0, 0.942566, 0.334021, 0, -0.334021, 0.942566, 0, 0.462908, 1.26081 )
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="space_arena" parent="." instance=ExtResource( 3 )]
|
||||
|
|
|
@ -16,6 +16,23 @@ margin_left = -100.0
|
|||
margin_right = 100.0
|
||||
margin_bottom = 25.0
|
||||
placeholder_text = "Enter IP Address of Server"
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="NameLineEdit" type="LineEdit" parent="."]
|
||||
anchor_left = 0.5
|
||||
anchor_top = 0.3
|
||||
anchor_right = 0.5
|
||||
anchor_bottom = 0.3
|
||||
margin_left = -100.0
|
||||
margin_top = -40.0
|
||||
margin_right = 100.0
|
||||
margin_bottom = -15.0
|
||||
placeholder_text = "Enter Display Name"
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="StartButton" type="Button" parent="."]
|
||||
anchor_left = 0.5
|
||||
|
@ -30,3 +47,13 @@ text = "Start"
|
|||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="ColorPicker" type="ColorPicker" parent="."]
|
||||
anchor_left = 0.05
|
||||
anchor_top = 0.5
|
||||
anchor_right = 0.05
|
||||
anchor_bottom = 0.5
|
||||
grow_vertical = 2
|
||||
edit_alpha = false
|
||||
presets_enabled = false
|
||||
presets_visible = false
|
||||
|
|
|
@ -132,20 +132,21 @@ shape = SubResource( 1 )
|
|||
visible = false
|
||||
anchor_left = 0.5
|
||||
anchor_right = 0.5
|
||||
margin_left = -390.0
|
||||
margin_left = -350.0
|
||||
margin_top = 15.0
|
||||
margin_right = 390.0
|
||||
margin_bottom = 50.0
|
||||
margin_right = 350.0
|
||||
margin_bottom = 85.0
|
||||
grow_horizontal = 2
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="TimeBar" type="HSlider" parent="MainPanel"]
|
||||
anchor_top = 0.5
|
||||
anchor_right = 0.5
|
||||
anchor_bottom = 0.5
|
||||
anchor_top = 0.25
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 0.25
|
||||
margin_left = 10.0
|
||||
margin_right = -10.0
|
||||
grow_vertical = 2
|
||||
max_value = 5.0
|
||||
step = 0.01
|
||||
|
@ -156,10 +157,10 @@ __meta__ = {
|
|||
}
|
||||
|
||||
[node name="AddButton" type="Button" parent="MainPanel"]
|
||||
anchor_left = 0.6
|
||||
anchor_top = 0.5
|
||||
anchor_right = 0.7
|
||||
anchor_bottom = 0.5
|
||||
anchor_left = 0.333
|
||||
anchor_top = 0.75
|
||||
anchor_right = 0.5
|
||||
anchor_bottom = 0.75
|
||||
margin_left = 6.0
|
||||
margin_right = -1.0
|
||||
grow_vertical = 2
|
||||
|
@ -169,10 +170,9 @@ __meta__ = {
|
|||
}
|
||||
|
||||
[node name="PlayButton" type="Button" parent="MainPanel"]
|
||||
anchor_left = 0.5
|
||||
anchor_top = 0.5
|
||||
anchor_right = 0.6
|
||||
anchor_bottom = 0.5
|
||||
anchor_top = 0.75
|
||||
anchor_right = 0.167
|
||||
anchor_bottom = 0.75
|
||||
margin_left = 6.0
|
||||
margin_right = -1.0
|
||||
grow_vertical = 2
|
||||
|
@ -181,11 +181,24 @@ __meta__ = {
|
|||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="PlayLastButton" type="Button" parent="MainPanel"]
|
||||
anchor_left = 0.167
|
||||
anchor_top = 0.75
|
||||
anchor_right = 0.333
|
||||
anchor_bottom = 0.75
|
||||
margin_left = 6.0
|
||||
margin_right = -1.0
|
||||
grow_vertical = 2
|
||||
text = "Play Last"
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="RemoveButton" type="Button" parent="MainPanel"]
|
||||
anchor_left = 0.7
|
||||
anchor_top = 0.5
|
||||
anchor_right = 0.8
|
||||
anchor_bottom = 0.5
|
||||
anchor_left = 0.5
|
||||
anchor_top = 0.75
|
||||
anchor_right = 0.667
|
||||
anchor_bottom = 0.75
|
||||
margin_left = 5.0
|
||||
margin_right = -3.0
|
||||
grow_vertical = 2
|
||||
|
@ -195,10 +208,10 @@ __meta__ = {
|
|||
}
|
||||
|
||||
[node name="ClearButton" type="Button" parent="MainPanel"]
|
||||
anchor_left = 0.8
|
||||
anchor_top = 0.5
|
||||
anchor_right = 0.9
|
||||
anchor_bottom = 0.5
|
||||
anchor_left = 0.667
|
||||
anchor_top = 0.75
|
||||
anchor_right = 0.833
|
||||
anchor_bottom = 0.75
|
||||
margin_left = 3.0
|
||||
margin_right = -5.0
|
||||
grow_vertical = 2
|
||||
|
@ -208,10 +221,10 @@ __meta__ = {
|
|||
}
|
||||
|
||||
[node name="EndTurnButton" type="Button" parent="MainPanel"]
|
||||
anchor_left = 0.9
|
||||
anchor_top = 0.5
|
||||
anchor_left = 0.833
|
||||
anchor_top = 0.75
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 0.5
|
||||
anchor_bottom = 0.75
|
||||
margin_left = 1.0
|
||||
margin_right = -6.0
|
||||
grow_vertical = 2
|
||||
|
@ -419,6 +432,17 @@ step = 0.001
|
|||
tick_count = 3
|
||||
ticks_on_borders = true
|
||||
|
||||
[node name="ResetButton" type="Button" parent="ThrustPanel"]
|
||||
anchor_left = 0.1
|
||||
anchor_top = 0.5
|
||||
anchor_right = 0.1
|
||||
anchor_bottom = 0.5
|
||||
grow_vertical = 2
|
||||
text = "Reset"
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="TurnEndBanner" type="TextureRect" parent="."]
|
||||
visible = false
|
||||
modulate = Color( 1, 1, 1, 0 )
|
||||
|
@ -534,9 +558,30 @@ margin_bottom = 40.0
|
|||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="InfoPanel" type="Panel" parent="."]
|
||||
visible = false
|
||||
anchor_left = 1.0
|
||||
anchor_right = 1.0
|
||||
margin_left = -200.0
|
||||
margin_bottom = 100.0
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="Label" type="Label" parent="InfoPanel"]
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
margin_left = 10.0
|
||||
margin_top = 10.0
|
||||
margin_right = -10.0
|
||||
margin_bottom = -10.0
|
||||
[connection signal="mouse_entered" from="." to="." method="_on_Player_mouse_entered"]
|
||||
[connection signal="mouse_exited" from="." to="." method="_on_Player_mouse_exited"]
|
||||
[connection signal="value_changed" from="MainPanel/TimeBar" to="." method="_on_TimeBar_value_changed"]
|
||||
[connection signal="pressed" from="MainPanel/AddButton" to="." method="_on_AddButton_pressed"]
|
||||
[connection signal="pressed" from="MainPanel/PlayButton" to="." method="_on_PlayButton_pressed"]
|
||||
[connection signal="pressed" from="MainPanel/PlayLastButton" to="." method="_on_PlayLastButton_pressed"]
|
||||
[connection signal="pressed" from="MainPanel/RemoveButton" to="." method="_on_RemoveButton_pressed"]
|
||||
[connection signal="pressed" from="MainPanel/ClearButton" to="." method="_on_ClearButton_pressed"]
|
||||
[connection signal="pressed" from="MainPanel/EndTurnButton" to="." method="_on_EndTurnButton_pressed"]
|
||||
|
@ -546,3 +591,4 @@ __meta__ = {
|
|||
[connection signal="value_changed" from="ThrustPanel/YRot" to="." method="_on_YRot_value_changed"]
|
||||
[connection signal="value_changed" from="ThrustPanel/ZLin" to="." method="_on_ZLin_value_changed"]
|
||||
[connection signal="value_changed" from="ThrustPanel/ZRot" to="." method="_on_ZRot_value_changed"]
|
||||
[connection signal="pressed" from="ThrustPanel/ResetButton" to="." method="_on_ResetButton_pressed"]
|
||||
|
|
|
@ -16,7 +16,8 @@ remote func place_player(player_id : int, position : Vector3, rotation : Vector3
|
|||
if player_id == get_tree().get_network_unique_id():
|
||||
player.is_local = true
|
||||
get_parent().console_print('Setting player with id (' + String(player_id) + ') as local')
|
||||
player.init()
|
||||
player.init(player_id, get_parent().color_dict[player_id])
|
||||
$Camera.register_player(player)
|
||||
|
||||
func init():
|
||||
get_parent().arena_ready()
|
||||
|
@ -24,3 +25,10 @@ func init():
|
|||
func play_full_plans():
|
||||
for player in players.values():
|
||||
player.play_full_plan()
|
||||
|
||||
func mouse_enter(player_obj : RigidBody):
|
||||
players[get_tree().get_network_unique_id()].display_data(player_obj)
|
||||
|
||||
func mouse_exit(player_obj : RigidBody):
|
||||
players[get_tree().get_network_unique_id()].clear_info_panel()
|
||||
|
||||
|
|
|
@ -3,28 +3,56 @@ extends Camera
|
|||
const TRANSLATION_SPEED : float = 0.1
|
||||
const ROTATION_SPEED : float = 0.025
|
||||
|
||||
var players = []
|
||||
var index : int = 0
|
||||
var locked : bool = false
|
||||
|
||||
func register_player(player):
|
||||
players.append(player)
|
||||
|
||||
func _physics_process(delta : float) -> void:
|
||||
if Input.is_action_pressed("camera_forward"):
|
||||
translate(TRANSLATION_SPEED * Vector3(0, 0, -1))
|
||||
translate(TRANSLATION_SPEED * Vector3(0, 0, -1)); locked = false
|
||||
if Input.is_action_pressed("camera_backward"):
|
||||
translate(TRANSLATION_SPEED * Vector3(0, 0, 1))
|
||||
translate(TRANSLATION_SPEED * Vector3(0, 0, 1)); locked = false
|
||||
if Input.is_action_pressed("camera_strafe_up"):
|
||||
translate(TRANSLATION_SPEED * Vector3(0, 1, 0))
|
||||
translate(TRANSLATION_SPEED * Vector3(0, 1, 0)); locked = false
|
||||
if Input.is_action_pressed("camera_strafe_down"):
|
||||
translate(TRANSLATION_SPEED * Vector3(0, -1, 0))
|
||||
translate(TRANSLATION_SPEED * Vector3(0, -1, 0)); locked = false
|
||||
if Input.is_action_pressed("camera_strafe_right"):
|
||||
translate(TRANSLATION_SPEED * Vector3(1, 0, 0))
|
||||
translate(TRANSLATION_SPEED * Vector3(1, 0, 0)); locked = false
|
||||
if Input.is_action_pressed("camera_strafe_left"):
|
||||
translate(TRANSLATION_SPEED * Vector3(-1, 0, 0))
|
||||
translate(TRANSLATION_SPEED * Vector3(-1, 0, 0)); locked = false
|
||||
if Input.is_action_pressed("camera_pitch_down"):
|
||||
rotate_object_local(Vector3(1,0,0), -ROTATION_SPEED)
|
||||
rotate_object_local(Vector3(1,0,0), -ROTATION_SPEED); locked = false
|
||||
if Input.is_action_pressed("camera_pitch_up"):
|
||||
rotate_object_local(Vector3(1,0,0), ROTATION_SPEED)
|
||||
rotate_object_local(Vector3(1,0,0), ROTATION_SPEED); locked = false
|
||||
if Input.is_action_pressed("camera_roll_left"):
|
||||
rotate_object_local(Vector3(0,0,1), ROTATION_SPEED)
|
||||
rotate_object_local(Vector3(0,0,1), ROTATION_SPEED); locked = false
|
||||
if Input.is_action_pressed("camera_roll_right"):
|
||||
rotate_object_local(Vector3(0,0,1), -ROTATION_SPEED)
|
||||
rotate_object_local(Vector3(0,0,1), -ROTATION_SPEED); locked = false
|
||||
if Input.is_action_pressed("camera_yaw_left"):
|
||||
rotate_object_local(Vector3(0,1,0), ROTATION_SPEED)
|
||||
rotate_object_local(Vector3(0,1,0), ROTATION_SPEED); locked = false
|
||||
if Input.is_action_pressed("camera_yaw_right"):
|
||||
rotate_object_local(Vector3(0,1,0), -ROTATION_SPEED)
|
||||
rotate_object_local(Vector3(0,1,0), -ROTATION_SPEED); locked = false
|
||||
if Input.is_action_just_pressed("camera_switch_player"):
|
||||
move_to_player(index % len(players))
|
||||
index += 1
|
||||
locked = true
|
||||
if locked:
|
||||
move_to_player(index % len(players))
|
||||
|
||||
func move_to_player(index : int):
|
||||
translation = players[index].translation
|
||||
rotation = players[index].rotation
|
||||
translate(Vector3(0, -0.8, -2))
|
||||
rotate_object_local(Vector3(1,0,0), PI-0.3)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -1,5 +1,9 @@
|
|||
extends RigidBody
|
||||
|
||||
var player_id : int
|
||||
|
||||
var mouse_over_player : RigidBody = null
|
||||
|
||||
var thrust_plan : Plan = Plan.new()
|
||||
var weapons_plan : Plan = Plan.new()
|
||||
var is_local : bool = false
|
||||
|
@ -13,6 +17,11 @@ var initial_velocity : Vector3 = Vector3(0,0,0)
|
|||
var initial_rotational_velocity : Vector3 = Vector3(0,0,0)
|
||||
var enable_physics : bool = false
|
||||
|
||||
var end_translation : Vector3 = Vector3.ZERO
|
||||
var end_rotation : Vector3 = Vector3.ZERO
|
||||
var end_linear_velocity : Vector3 = Vector3.ZERO
|
||||
var end_rotational_velocity : Vector3 = Vector3.ZERO
|
||||
|
||||
var round_time : float = 0.0
|
||||
var end_of_round_translation : Vector3 = get_translation()
|
||||
var end_of_round_rotation : Vector3 = get_rotation()
|
||||
|
@ -28,9 +37,10 @@ onready var turn_end_banner : TextureRect = $TurnEndBanner
|
|||
|
||||
const TIME_STEP : float = 0.01
|
||||
const MAX_LIN_THRUST : float = 1.0
|
||||
const MAX_ROT_THRUST : float = 1.0
|
||||
const MAX_ROT_THRUST : float = 0.01
|
||||
|
||||
func init() -> void:
|
||||
func init(id : int, color : Color) -> void:
|
||||
player_id = id
|
||||
last_rotation = get_rotation()
|
||||
last_translation = get_translation()
|
||||
initial_rotation = get_rotation()
|
||||
|
@ -41,6 +51,8 @@ func init() -> void:
|
|||
$MainPanel.visible = true
|
||||
$ThrustPanel.visible = true
|
||||
$WeaponsPanel.visible = true
|
||||
$InfoPanel.visible = true
|
||||
set_colors(color)
|
||||
|
||||
func send_thrust_plan() -> void:
|
||||
for element in thrust_plan.current_elements:
|
||||
|
@ -71,9 +83,18 @@ remote func add_weapons_element(time : float, firing : bool) -> void:
|
|||
get_parent().get_parent().console_print(String(is_local) + ": Adding weapons element with the following params: time = " + String(time) + ", firing = " + String(firing))
|
||||
weapons_plan.add_element(element)
|
||||
|
||||
remote func r_end_turn(r_time_of_death : float) -> void:
|
||||
remote func r_end_turn(
|
||||
r_time_of_death : float,
|
||||
r_end_translation : Vector3,
|
||||
r_end_rotation : Vector3,
|
||||
r_end_linear_velocity : Vector3,
|
||||
r_end_rotational_velocity : Vector3) -> void:
|
||||
self._on_PlayButton_pressed()
|
||||
time_of_death = r_time_of_death
|
||||
end_translation = r_end_translation
|
||||
end_rotation = r_end_rotation
|
||||
end_linear_velocity = r_end_linear_velocity
|
||||
end_rotational_velocity = r_end_rotational_velocity
|
||||
if is_local:
|
||||
$MainPanel/EndTurnButton.disabled = false
|
||||
$MainPanel/TimeBar.value = 0
|
||||
|
@ -161,10 +182,10 @@ func _update_rotate_arrow() -> void:
|
|||
rotate_arrow_scale_obj.scale = Vector3(rotational_thrust_magnitude, rotational_thrust_magnitude, rotational_thrust_magnitude)
|
||||
|
||||
func get_linear_vector() -> Vector3:
|
||||
return Vector3($ThrustPanel/XLin.value, $ThrustPanel/YLin.value, $ThrustPanel/ZLin.value) * MAX_LIN_THRUST
|
||||
return Vector3($ThrustPanel/XLin.value, -$ThrustPanel/YLin.value, $ThrustPanel/ZLin.value) * MAX_LIN_THRUST
|
||||
|
||||
func get_rotational_vector() -> Vector3:
|
||||
return Vector3($ThrustPanel/XRot.value, $ThrustPanel/YRot.value, $ThrustPanel/ZRot.value) * MAX_ROT_THRUST
|
||||
return Vector3($ThrustPanel/XRot.value, -$ThrustPanel/YRot.value, $ThrustPanel/ZRot.value) * MAX_ROT_THRUST
|
||||
|
||||
func _on_XLin_value_changed(value : float) -> void:
|
||||
self._update_arrow()
|
||||
|
@ -208,6 +229,14 @@ func _on_ZRot_value_changed(value : float) -> void:
|
|||
$ThrustPanel/ZRot.value = sign($ThrustPanel/ZRot.value) * \
|
||||
sqrt(1 - pow($ThrustPanel/YRot.value, 2) - pow($ThrustPanel/XRot.value, 2))
|
||||
|
||||
func _on_ResetButton_pressed():
|
||||
$ThrustPanel/XLin.value = 0
|
||||
$ThrustPanel/XRot.value = 0
|
||||
$ThrustPanel/YLin.value = 0
|
||||
$ThrustPanel/YRot.value = 0
|
||||
$ThrustPanel/ZLin.value = 0
|
||||
$ThrustPanel/ZRot.value = 0
|
||||
|
||||
func _get_current_plan_element(all_elements) -> PlanElement:
|
||||
var summed_time : float = 0.0
|
||||
for element in all_elements:
|
||||
|
@ -276,6 +305,10 @@ func _physics_process(delta : float) -> void:
|
|||
|
||||
plan_time += delta
|
||||
|
||||
func _process(delta : float) -> void:
|
||||
if mouse_over_player:
|
||||
display_data(mouse_over_player)
|
||||
|
||||
func disable_all_engine_particles() -> void:
|
||||
var engine_particles = [
|
||||
$"EngineParticleContainer/S-X,R+Y",
|
||||
|
@ -300,84 +333,84 @@ func update_engine_particles(linear_thrust : Vector3, rotational_thrust : Vector
|
|||
var engine_particles : Particles = $"EngineParticleContainer/S-X,R-Y"
|
||||
if linear_thrust.x < 0 or rotational_thrust.y > 0:
|
||||
engine_particles.emitting = true
|
||||
engine_particles.scale = Vector3.ONE * (max(-linear_thrust.x / MAX_LIN_THRUST, 0)+max(rotational_thrust.y / MAX_ROT_THRUST, 0)) * 0.005
|
||||
engine_particles.scale = Vector3.ONE * (max(-linear_thrust.x, 0)+max(rotational_thrust.y, 0)) * 0.005
|
||||
else:
|
||||
engine_particles.emitting = false
|
||||
|
||||
engine_particles = $"EngineParticleContainer/S+X,R+Y"
|
||||
if linear_thrust.x > 0 or rotational_thrust.y < 0:
|
||||
engine_particles.emitting = true
|
||||
engine_particles.scale = Vector3.ONE * (max(linear_thrust.x / MAX_LIN_THRUST, 0)+max(-rotational_thrust.y / MAX_ROT_THRUST, 0)) * 0.005
|
||||
engine_particles.scale = Vector3.ONE * (max(linear_thrust.x, 0)+max(-rotational_thrust.y, 0)) * 0.005
|
||||
else:
|
||||
engine_particles.emitting = false
|
||||
|
||||
engine_particles = $"EngineParticleContainer/S-X,R+Y"
|
||||
if linear_thrust.x < 0 or rotational_thrust.y < 0:
|
||||
engine_particles.emitting = true
|
||||
engine_particles.scale = Vector3.ONE * (max(-linear_thrust.x / MAX_LIN_THRUST, 0)+max(-rotational_thrust.y / MAX_ROT_THRUST, 0)) * 0.005
|
||||
engine_particles.scale = Vector3.ONE * (max(-linear_thrust.x, 0)+max(-rotational_thrust.y, 0)) * 0.005
|
||||
else:
|
||||
engine_particles.emitting = false
|
||||
|
||||
engine_particles = $"EngineParticleContainer/S+X,R-Y"
|
||||
if linear_thrust.x > 0 or rotational_thrust.y > 0:
|
||||
engine_particles.emitting = true
|
||||
engine_particles.scale = Vector3.ONE * (max(linear_thrust.x / MAX_LIN_THRUST, 0)+max(rotational_thrust.y / MAX_ROT_THRUST, 0)) * 0.005
|
||||
engine_particles.scale = Vector3.ONE * (max(linear_thrust.x, 0)+max(rotational_thrust.y, 0)) * 0.005
|
||||
else:
|
||||
engine_particles.emitting = false
|
||||
|
||||
engine_particles = $"EngineParticleContainer/S-Y,R+Z,R+X"
|
||||
if linear_thrust.y < 0 or rotational_thrust.z > 0 or rotational_thrust.x > 0:
|
||||
engine_particles.emitting = true
|
||||
engine_particles.scale = Vector3.ONE * (max(-linear_thrust.y / MAX_LIN_THRUST, 0)+max(rotational_thrust.z / MAX_ROT_THRUST, 0)+max(rotational_thrust.x / MAX_ROT_THRUST, 0)) * 0.01/3
|
||||
engine_particles.scale = Vector3.ONE * (max(-linear_thrust.y, 0)+max(rotational_thrust.z, 0)+max(rotational_thrust.x, 0)) * 0.01/3
|
||||
else:
|
||||
engine_particles.emitting = false
|
||||
|
||||
engine_particles = $"EngineParticleContainer/S-Y,R-Z,R+X"
|
||||
if linear_thrust.y < 0 or rotational_thrust.z < 0 or rotational_thrust.x > 0:
|
||||
engine_particles.emitting = true
|
||||
engine_particles.scale = Vector3.ONE * (max(-linear_thrust.y / MAX_LIN_THRUST, 0)+max(-rotational_thrust.z / MAX_ROT_THRUST, 0)+max(rotational_thrust.x / MAX_ROT_THRUST, 0)) * 0.01/3
|
||||
engine_particles.scale = Vector3.ONE * (max(-linear_thrust.y, 0)+max(-rotational_thrust.z, 0)+max(rotational_thrust.x, 0)) * 0.01/3
|
||||
else:
|
||||
engine_particles.emitting = false
|
||||
|
||||
engine_particles = $"EngineParticleContainer/S-Y,R-Z,R-X"
|
||||
if linear_thrust.y < 0 or rotational_thrust.z < 0 or rotational_thrust.x < 0:
|
||||
engine_particles.emitting = true
|
||||
engine_particles.scale = Vector3.ONE * (max(-linear_thrust.y / MAX_LIN_THRUST, 0)+max(-rotational_thrust.z / MAX_ROT_THRUST, 0)+max(-rotational_thrust.x / MAX_ROT_THRUST, 0)) * 0.01/3
|
||||
engine_particles.scale = Vector3.ONE * (max(-linear_thrust.y, 0)+max(-rotational_thrust.z, 0)+max(-rotational_thrust.x, 0)) * 0.01/3
|
||||
else:
|
||||
engine_particles.emitting = false
|
||||
|
||||
engine_particles = $"EngineParticleContainer/S-Y,R+Z,R-X"
|
||||
if linear_thrust.y < 0 or rotational_thrust.z > 0 or rotational_thrust.x < 0:
|
||||
engine_particles.emitting = true
|
||||
engine_particles.scale = Vector3.ONE * (max(-linear_thrust.y / MAX_LIN_THRUST, 0)+max(rotational_thrust.z / MAX_ROT_THRUST, 0)+max(-rotational_thrust.x / MAX_ROT_THRUST, 0)) * 0.01/3
|
||||
engine_particles.scale = Vector3.ONE * (max(-linear_thrust.y, 0)+max(rotational_thrust.z, 0)+max(-rotational_thrust.x, 0)) * 0.01/3
|
||||
else:
|
||||
engine_particles.emitting = false
|
||||
|
||||
engine_particles = $"EngineParticleContainer/S+Y,R-Z,R+X"
|
||||
if linear_thrust.y > 0 or rotational_thrust.z < 0 or rotational_thrust.x > 0:
|
||||
engine_particles.emitting = true
|
||||
engine_particles.scale = Vector3.ONE * (max(linear_thrust.y / MAX_LIN_THRUST, 0)+max(-rotational_thrust.z / MAX_ROT_THRUST, 0)+max(rotational_thrust.x / MAX_ROT_THRUST, 0)) * 0.01/3
|
||||
engine_particles.scale = Vector3.ONE * (max(linear_thrust.y, 0)+max(-rotational_thrust.z, 0)+max(rotational_thrust.x, 0)) * 0.01/3
|
||||
else:
|
||||
engine_particles.emitting = false
|
||||
|
||||
engine_particles = $"EngineParticleContainer/S+Y,R+Z,R+X"
|
||||
if linear_thrust.y > 0 or rotational_thrust.z > 0 or rotational_thrust.x > 0:
|
||||
engine_particles.emitting = true
|
||||
engine_particles.scale = Vector3.ONE * (max(linear_thrust.y / MAX_LIN_THRUST, 0)+max(rotational_thrust.z / MAX_ROT_THRUST, 0)+max(rotational_thrust.x / MAX_ROT_THRUST, 0)) * 0.01/3
|
||||
engine_particles.scale = Vector3.ONE * (max(linear_thrust.y, 0)+max(rotational_thrust.z, 0)+max(rotational_thrust.x, 0)) * 0.01/3
|
||||
else:
|
||||
engine_particles.emitting = false
|
||||
|
||||
engine_particles = $"EngineParticleContainer/S+Y,R-Z,R-X"
|
||||
if linear_thrust.y > 0 or rotational_thrust.z < 0 or rotational_thrust.x < 0:
|
||||
engine_particles.emitting = true
|
||||
engine_particles.scale = Vector3.ONE * (max(linear_thrust.y / MAX_LIN_THRUST, 0)+max(-rotational_thrust.z / MAX_ROT_THRUST, 0)+max(-rotational_thrust.x / MAX_ROT_THRUST, 0)) * 0.01/3
|
||||
engine_particles.scale = Vector3.ONE * (max(linear_thrust.y, 0)+max(-rotational_thrust.z, 0)+max(-rotational_thrust.x, 0)) * 0.01/3
|
||||
else:
|
||||
engine_particles.emitting = false
|
||||
|
||||
engine_particles = $"EngineParticleContainer/S+Y,R+Z,R-X"
|
||||
if linear_thrust.y > 0 or rotational_thrust.z > 0 or rotational_thrust.x < 0:
|
||||
engine_particles.emitting = true
|
||||
engine_particles.scale = Vector3.ONE * (max(linear_thrust.y / MAX_LIN_THRUST, 0)+max(rotational_thrust.z / MAX_ROT_THRUST, 0)+max(-rotational_thrust.x / MAX_ROT_THRUST, 0)) * 0.01/3
|
||||
engine_particles.scale = Vector3.ONE * (max(linear_thrust.y, 0)+max(rotational_thrust.z, 0)+max(-rotational_thrust.x, 0)) * 0.01/3
|
||||
else:
|
||||
engine_particles.emitting = false
|
||||
|
||||
|
@ -389,19 +422,25 @@ func update_engine_particles(linear_thrust : Vector3, rotational_thrust : Vector
|
|||
var modz : float = linear_thrust.z
|
||||
if modz < 0:
|
||||
modz = -modz
|
||||
engine_particles.scale = Vector3.ONE * (modz / MAX_ROT_THRUST) * 0.02
|
||||
engine_particles2.scale = Vector3.ONE * (modz / MAX_ROT_THRUST) * 0.02
|
||||
engine_particles.scale = Vector3.ONE * (modz) * 0.02
|
||||
engine_particles2.scale = Vector3.ONE * (modz) * 0.02
|
||||
else:
|
||||
engine_particles.emitting = false
|
||||
engine_particles2.emitting = false
|
||||
|
||||
func play_current_plan():
|
||||
pass
|
||||
func play_current_plan() -> void:
|
||||
set_linear_velocity(end_linear_velocity)
|
||||
set_angular_velocity(end_rotational_velocity)
|
||||
set_translation(end_translation)
|
||||
set_rotation(end_rotation)
|
||||
|
||||
func play_all_plans():
|
||||
running_plan = true
|
||||
plan_time = 5 * len(thrust_plan.elements)
|
||||
|
||||
func play_all_plans() -> void:
|
||||
get_parent().play_full_plans()
|
||||
|
||||
func play_full_plan():
|
||||
func play_full_plan() -> void:
|
||||
set_linear_velocity(initial_velocity)
|
||||
set_angular_velocity(initial_rotational_velocity)
|
||||
set_translation(initial_translation)
|
||||
|
@ -409,23 +448,74 @@ func play_full_plan():
|
|||
running_plan = true
|
||||
plan_time = 0.0
|
||||
|
||||
func _on_PlayButton_pressed():
|
||||
func _on_PlayButton_pressed() -> void:
|
||||
play_all_plans()
|
||||
|
||||
func _update_battery_visuals(value : float):
|
||||
func _update_battery_visuals(value : float) -> void:
|
||||
# Assume value is between 0 and 100
|
||||
$WeaponsPanel/FillingBlocker.margin_bottom = 65 - (value * 1.2)
|
||||
|
||||
func _update_laser(length : float):
|
||||
func _update_laser(length : float) -> void:
|
||||
$GunContainer/RayCast/CSGCylinder.height = length
|
||||
$GunContainer/RayCast/CSGCylinder.translation = Vector3(0, length/2, 0)
|
||||
|
||||
func _fire_gun():
|
||||
func _fire_gun() -> void:
|
||||
$GunContainer.visible = true
|
||||
if $GunContainer/RayCast.is_colliding():
|
||||
var raycast_pos : Vector3 = $GunContainer/RayCast.global_transform.origin
|
||||
var target_pos : Vector3 = $GunContainer/RayCast.get_collision_point()
|
||||
var diff : Vector3 = raycast_pos - target_pos
|
||||
_update_laser(diff.length())
|
||||
_update_laser(raycast_pos.distance_to(target_pos))
|
||||
else:
|
||||
_update_laser($GunContainer/RayCast.cast_to.y)
|
||||
|
||||
func get_display_name() -> String:
|
||||
return get_parent().get_parent().name_dict[player_id]
|
||||
|
||||
func get_human_readable_vector(vector : Vector3) -> String:
|
||||
return "(" + String(round(vector.x * 10)/10) + ", " + \
|
||||
String(round(vector.y * 10)/10) + ", " + \
|
||||
String(round(vector.z * 10)/10) + ")"
|
||||
|
||||
func display_data(player_obj : RigidBody) -> void:
|
||||
var text = "Name: " + player_obj.get_display_name() + "\n"
|
||||
text += "Position: " + get_human_readable_vector(player_obj.translation) + "\n"
|
||||
text += "Rotation: " + get_human_readable_vector(player_obj.rotation_degrees) + "\n"
|
||||
text += "Attitude: Hostile"
|
||||
|
||||
$InfoPanel/Label.text = text
|
||||
mouse_over_player = player_obj
|
||||
|
||||
func clear_info_panel() -> void:
|
||||
$InfoPanel/Label.text = ""
|
||||
mouse_over_player = null
|
||||
|
||||
func _on_Player_mouse_entered():
|
||||
get_parent().mouse_enter(self)
|
||||
|
||||
func _on_Player_mouse_exited():
|
||||
get_parent().mouse_exit(self)
|
||||
|
||||
func _on_PlayLastButton_pressed():
|
||||
if len(thrust_plan.elements) == 0:
|
||||
play_full_plan()
|
||||
else:
|
||||
play_current_plan()
|
||||
|
||||
func set_colors(color : Color):
|
||||
var insideMaterial : Material = preload("res://Shaders/InsideSpaceship.tres").duplicate()
|
||||
insideMaterial.emission = color
|
||||
|
||||
var outsideMaterial : Material = preload("res://Shaders/OutsideSpaceship.material").duplicate()
|
||||
outsideMaterial.emission = color
|
||||
outsideMaterial.albedo_color = color
|
||||
|
||||
var particleMaterial : Material = preload("res://Shaders/ParticleSpaceship.tres").duplicate()
|
||||
particleMaterial.emission = color
|
||||
|
||||
for child in $EngineParticleContainer.get_children():
|
||||
child.draw_pass_1.material = particleMaterial
|
||||
for child in $spaceship.get_children():
|
||||
if child.name == "Cube":
|
||||
child.set_surface_material(0, insideMaterial)
|
||||
else:
|
||||
child.set_surface_material(0, outsideMaterial)
|
||||
|
|
|
@ -5,6 +5,10 @@ const PORT : int = 9374
|
|||
const Arena = preload("res://Scenes/Arena.tscn")
|
||||
var console_output : TextEdit = null
|
||||
var peer : NetworkedMultiplayerENet = null
|
||||
var display_name : String = ""
|
||||
var player_color : Color = Color.white
|
||||
var name_dict = {}
|
||||
var color_dict = {}
|
||||
|
||||
func _ready() -> void:
|
||||
get_tree().connect("connected_to_server", self, "_connected_to_server")
|
||||
|
@ -19,6 +23,8 @@ func _process(delta : float) -> void:
|
|||
|
||||
func _connected_to_server() -> void:
|
||||
self.console_print("Connected to server") # Let the server know all about us (eg name)
|
||||
rpc("set_display_name", peer.get_unique_id(), display_name)
|
||||
rpc("set_player_color", peer.get_unique_id(), player_color)
|
||||
|
||||
func _server_disconnected() -> void:
|
||||
var button : Button = $Lobby/StartButton
|
||||
|
@ -45,6 +51,8 @@ func toggle_console() -> bool:
|
|||
func _on_StartButton_pressed() -> void:
|
||||
var button : Button = $Lobby/StartButton
|
||||
var ip_addr : String = $Lobby/IPLineEdit.text
|
||||
display_name = $Lobby/NameLineEdit.text
|
||||
player_color = $Lobby/ColorPicker.color
|
||||
button.disabled = true
|
||||
peer = NetworkedMultiplayerENet.new()
|
||||
peer.create_client(ip_addr, PORT)
|
||||
|
@ -60,3 +68,18 @@ remote func start_game() -> void:
|
|||
arena.init()
|
||||
console_print('Starting Game...')
|
||||
|
||||
remote func add_name_to_dict(id : int, display_name : String):
|
||||
name_dict[id] = display_name
|
||||
|
||||
remote func add_color_to_dict(id : int, color : Color):
|
||||
color_dict[id] = color
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
[gd_resource type="SpatialMaterial" format=2]
|
||||
|
||||
[resource]
|
||||
flags_transparent = true
|
||||
albedo_color = Color( 1, 1, 1, 0.231373 )
|
||||
metallic = 1.0
|
||||
metallic_specular = 1.0
|
||||
roughness = 0.05
|
||||
emission_enabled = true
|
||||
emission = Color( 0.309804, 0.776471, 0.905882, 1 )
|
||||
emission_energy = 0.05
|
||||
emission_operator = 0
|
||||
emission_on_uv2 = false
|
||||
depth_enabled = true
|
||||
depth_scale = 0.05
|
||||
depth_deep_parallax = false
|
||||
depth_flip_tangent = false
|
||||
depth_flip_binormal = false
|
||||
subsurf_scatter_enabled = true
|
||||
subsurf_scatter_strength = 0.28
|
||||
transmission_enabled = true
|
||||
transmission = Color( 0, 0, 0, 1 )
|
||||
refraction_enabled = true
|
||||
refraction_scale = 0.5
|
||||
refraction_texture_channel = 0
|
Binary file not shown.
|
@ -0,0 +1,9 @@
|
|||
[gd_resource type="SpatialMaterial" format=2]
|
||||
|
||||
[resource]
|
||||
albedo_color = Color( 0, 0, 0, 1 )
|
||||
emission_enabled = true
|
||||
emission = Color( 0, 0.905882, 1, 1 )
|
||||
emission_energy = 16.0
|
||||
emission_operator = 0
|
||||
emission_on_uv2 = false
|
|
@ -162,6 +162,11 @@ camera_yaw_left={
|
|||
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":74,"unicode":0,"echo":false,"script":null)
|
||||
]
|
||||
}
|
||||
camera_switch_player={
|
||||
"deadzone": 0.5,
|
||||
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777218,"unicode":0,"echo":false,"script":null)
|
||||
]
|
||||
}
|
||||
|
||||
[locale]
|
||||
|
||||
|
|
Loading…
Reference in New Issue