mvp player barrier (gr8 for tutorials)
This commit is contained in:
parent
2510e99dba
commit
66f9210156
7 changed files with 123 additions and 10 deletions
4
board.gd
4
board.gd
|
|
@ -49,8 +49,8 @@ func type_at(pos: Vector2i, type: Piece.Type) -> Piece:
|
||||||
func solid_at(pos: Vector2i) -> bool:
|
func solid_at(pos: Vector2i) -> bool:
|
||||||
return any_at(pos, func(p): return p.type == Piece.Type.Wall or p.type == Piece.Type.Ball or p.type == Piece.Type.Player)
|
return any_at(pos, func(p): return p.type == Piece.Type.Wall or p.type == Piece.Type.Ball or p.type == Piece.Type.Player)
|
||||||
|
|
||||||
func passable_at(pos: Vector2i) -> bool:
|
func passable_at(pos: Vector2i, for_player := false) -> bool:
|
||||||
return not solid_at(pos)
|
return not solid_at(pos) and not (for_player and type_at(pos, Piece.Type.PlayerBarrier))
|
||||||
|
|
||||||
func remove_piece(piece: Piece):
|
func remove_piece(piece: Piece):
|
||||||
remove_child(piece)
|
remove_child(piece)
|
||||||
|
|
|
||||||
95
level/player_barrier_01.tscn
Normal file
95
level/player_barrier_01.tscn
Normal file
|
|
@ -0,0 +1,95 @@
|
||||||
|
[gd_scene load_steps=7 format=3 uid="uid://dl5w8rbk60gwm"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://c8ywa33v3jq7t" path="res://board.gd" id="1_tgj2k"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://bkaa4sl1n2f5w" path="res://piece/wall.tscn" id="2_s4for"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://bghr6ew34loyb" path="res://piece/ball.tscn" id="3_pphtv"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://cnjmu3qesbndk" path="res://piece/player.tscn" id="4_lac8a"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://uf8vnylfqal1" path="res://piece/goal.tscn" id="5_p20hb"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://bxgv16ue166pp" path="res://piece/player_barrier.tscn" id="6_s4for"]
|
||||||
|
|
||||||
|
[node name="Level1" type="Node3D"]
|
||||||
|
script = ExtResource("1_tgj2k")
|
||||||
|
metadata/_custom_type_script = "uid://c8ywa33v3jq7t"
|
||||||
|
|
||||||
|
[node name="Wall" parent="." instance=ExtResource("2_s4for")]
|
||||||
|
|
||||||
|
[node name="Wall2" parent="." instance=ExtResource("2_s4for")]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.5, 0.6, 0.5)
|
||||||
|
|
||||||
|
[node name="Wall3" parent="." instance=ExtResource("2_s4for")]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.5, 0.6, 0.5)
|
||||||
|
|
||||||
|
[node name="Wall4" parent="." instance=ExtResource("2_s4for")]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.5, 0.6, 0.5)
|
||||||
|
|
||||||
|
[node name="Wall5" parent="." instance=ExtResource("2_s4for")]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.5, 0.6, 0.5)
|
||||||
|
|
||||||
|
[node name="Wall6" parent="." instance=ExtResource("2_s4for")]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.5, 0.6, 0.5)
|
||||||
|
|
||||||
|
[node name="Wall7" parent="." instance=ExtResource("2_s4for")]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.5, 0.6, 0.5)
|
||||||
|
|
||||||
|
[node name="Wall10" parent="." instance=ExtResource("2_s4for")]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.5, 0.600054, 4.5)
|
||||||
|
|
||||||
|
[node name="Wall11" parent="." instance=ExtResource("2_s4for")]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.5, 0.6, 4.5)
|
||||||
|
|
||||||
|
[node name="Wall12" parent="." instance=ExtResource("2_s4for")]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.5, 0.6, 4.5)
|
||||||
|
|
||||||
|
[node name="Wall13" parent="." instance=ExtResource("2_s4for")]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.5, 0.6, 4.5)
|
||||||
|
|
||||||
|
[node name="Wall14" parent="." instance=ExtResource("2_s4for")]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.5, 0.6, 4.5)
|
||||||
|
|
||||||
|
[node name="Wall15" parent="." instance=ExtResource("2_s4for")]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.5, 0.6, 4.5)
|
||||||
|
|
||||||
|
[node name="Wall16" parent="." instance=ExtResource("2_s4for")]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.5, 0.6, 4.5)
|
||||||
|
|
||||||
|
[node name="Wall8" parent="." instance=ExtResource("2_s4for")]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.5, 0.6, 1.5)
|
||||||
|
|
||||||
|
[node name="Wall9" parent="." instance=ExtResource("2_s4for")]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.5, 0.6, 2.5)
|
||||||
|
|
||||||
|
[node name="Wall17" parent="." instance=ExtResource("2_s4for")]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.5, 0.6, 3.5)
|
||||||
|
|
||||||
|
[node name="Wall23" parent="." instance=ExtResource("2_s4for")]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.5, 0.6, 2.5)
|
||||||
|
|
||||||
|
[node name="Wall25" parent="." instance=ExtResource("2_s4for")]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.5, 0.6, 3.5)
|
||||||
|
|
||||||
|
[node name="Wall24" parent="." instance=ExtResource("2_s4for")]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.5, 0.6, 1.5)
|
||||||
|
|
||||||
|
[node name="Ball" parent="." instance=ExtResource("3_pphtv")]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.5, 0.3, 1.5)
|
||||||
|
|
||||||
|
[node name="Player" parent="." instance=ExtResource("4_lac8a")]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.5, 1, 1.5)
|
||||||
|
|
||||||
|
[node name="Goal2" parent="." instance=ExtResource("5_p20hb")]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.5, 0, 1.5)
|
||||||
|
|
||||||
|
[node name="PlayerBarrier" parent="." instance=ExtResource("6_s4for")]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.5, 0.5, 3.5)
|
||||||
|
|
||||||
|
[node name="PlayerBarrier2" parent="." instance=ExtResource("6_s4for")]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.5, 0.5, 2.5)
|
||||||
|
|
||||||
|
[node name="PlayerBarrier3" parent="." instance=ExtResource("6_s4for")]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.5, 0.5, 1.5)
|
||||||
|
|
||||||
|
[node name="PlayerBarrier4" parent="." instance=ExtResource("6_s4for")]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.5, 0.5, 2.5)
|
||||||
|
|
||||||
|
[node name="PlayerBarrier5" parent="." instance=ExtResource("6_s4for")]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.5, 0.5, 3.5)
|
||||||
10
main.gd
10
main.gd
|
|
@ -16,11 +16,7 @@ var player: Piece
|
||||||
var level_num := -1
|
var level_num := -1
|
||||||
# TODO: instead of dumb numbered levels, GIVE THEM GOOD NAMES AND MANUALLY ORDER THEM!
|
# TODO: instead of dumb numbered levels, GIVE THEM GOOD NAMES AND MANUALLY ORDER THEM!
|
||||||
var levels: Array[PackedScene] = [
|
var levels: Array[PackedScene] = [
|
||||||
preload("res://level/level_00.tscn"),
|
preload("res://level/player_barrier_01.tscn"),
|
||||||
preload("res://level/level_01.tscn"),
|
|
||||||
preload("res://level/level_02.tscn"),
|
|
||||||
preload("res://level/level_03.tscn"),
|
|
||||||
preload("res://level/level_04.tscn"),
|
|
||||||
]
|
]
|
||||||
# TODO: screen transition to hide awkward animations lol
|
# TODO: screen transition to hide awkward animations lol
|
||||||
var time := 0:
|
var time := 0:
|
||||||
|
|
@ -117,12 +113,12 @@ func step(move: Vector2i):
|
||||||
|
|
||||||
var pos := player.lpos
|
var pos := player.lpos
|
||||||
var ball := board.find_piece_at(pos + move, func(p): return p.type == Piece.Type.Ball)
|
var ball := board.find_piece_at(pos + move, func(p): return p.type == Piece.Type.Ball)
|
||||||
if board.passable_at(pos + move):
|
if board.passable_at(pos + move, true):
|
||||||
hist.create_action("move")
|
hist.create_action("move")
|
||||||
hist.add_do_method(player.do_move(move))
|
hist.add_do_method(player.do_move(move))
|
||||||
hist.add_undo_method(player.undo_move())
|
hist.add_undo_method(player.undo_move())
|
||||||
hist.commit_action()
|
hist.commit_action()
|
||||||
elif ball != null:
|
elif not board.type_at(pos+move, Piece.Type.PlayerBarrier) and ball != null:
|
||||||
hist.create_action("push")
|
hist.create_action("push")
|
||||||
hist.add_do_method(ball.do_push(move))
|
hist.add_do_method(ball.do_push(move))
|
||||||
hist.add_do_method(player.do_bump(move))
|
hist.add_do_method(player.do_bump(move))
|
||||||
|
|
|
||||||
BIN
model/arrow.res
BIN
model/arrow.res
Binary file not shown.
9
model/player_barrier.tres
Normal file
9
model/player_barrier.tres
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
[gd_resource type="BoxMesh" load_steps=2 format=3 uid="uid://bvfmi7q57va1u"]
|
||||||
|
|
||||||
|
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_wvmwf"]
|
||||||
|
transparency = 4
|
||||||
|
albedo_color = Color(0.819608, 0.254902, 0.321569, 0.47451)
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
material = SubResource("StandardMaterial3D_wvmwf")
|
||||||
|
size = Vector3(0.95, 0.5, 0.95)
|
||||||
4
piece.gd
4
piece.gd
|
|
@ -13,6 +13,7 @@ enum Type {
|
||||||
Ball,
|
Ball,
|
||||||
Player,
|
Player,
|
||||||
FloorIce,
|
FloorIce,
|
||||||
|
PlayerBarrier,
|
||||||
}
|
}
|
||||||
|
|
||||||
## squares per second
|
## squares per second
|
||||||
|
|
@ -141,4 +142,5 @@ func _process(_delta: float) -> void:
|
||||||
speedometer.text = format_vel(lvel_displayed)
|
speedometer.text = format_vel(lvel_displayed)
|
||||||
if arrow:
|
if arrow:
|
||||||
arrow.visible = lvel_displayed != Vector2i.ZERO
|
arrow.visible = lvel_displayed != Vector2i.ZERO
|
||||||
rotation.y = (1.0*lvel_displayed.clampi(-1,1)).angle_to(Vector2.UP)
|
if lvel != Vector2i.ZERO:
|
||||||
|
rotation.y = (1.0*lvel_displayed.clampi(-1,1)).angle_to(Vector2.UP)
|
||||||
|
|
|
||||||
11
piece/player_barrier.tscn
Normal file
11
piece/player_barrier.tscn
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
[gd_scene load_steps=3 format=3 uid="uid://bxgv16ue166pp"]
|
||||||
|
|
||||||
|
[ext_resource type="BoxMesh" uid="uid://bvfmi7q57va1u" path="res://model/player_barrier.tres" id="1_y608q"]
|
||||||
|
[ext_resource type="Script" uid="uid://bq3a5hhccxndn" path="res://piece.gd" id="2_xveqp"]
|
||||||
|
|
||||||
|
[node name="PlayerBarrier" type="MeshInstance3D"]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5, 0.5, 0.5)
|
||||||
|
mesh = ExtResource("1_y608q")
|
||||||
|
script = ExtResource("2_xveqp")
|
||||||
|
type = 5
|
||||||
|
metadata/_custom_type_script = "uid://bq3a5hhccxndn"
|
||||||
Loading…
Reference in a new issue