Compare commits
No commits in common. "master" and "0.1" have entirely different histories.
|
@ -96,7 +96,7 @@ texture = ExtResource( 2 )
|
||||||
[node name="BGMSlider" type="HBoxContainer" parent="."]
|
[node name="BGMSlider" type="HBoxContainer" parent="."]
|
||||||
show_behind_parent = true
|
show_behind_parent = true
|
||||||
margin_left = 192.0
|
margin_left = 192.0
|
||||||
margin_right = 360.0
|
margin_right = 480.0
|
||||||
margin_bottom = 16.0
|
margin_bottom = 16.0
|
||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
size_flags_vertical = 4
|
size_flags_vertical = 4
|
||||||
|
@ -116,7 +116,7 @@ text = "BGM"
|
||||||
show_behind_parent = true
|
show_behind_parent = true
|
||||||
margin_left = 29.0
|
margin_left = 29.0
|
||||||
margin_top = 5.0
|
margin_top = 5.0
|
||||||
margin_right = 168.0
|
margin_right = 288.0
|
||||||
margin_bottom = 10.0
|
margin_bottom = 10.0
|
||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
size_flags_vertical = 4
|
size_flags_vertical = 4
|
||||||
|
|
94
Main.gd
94
Main.gd
|
@ -67,97 +67,3 @@ func game_over():
|
||||||
remove_child(map)
|
remove_child(map)
|
||||||
map.queue_free()
|
map.queue_free()
|
||||||
map = null
|
map = null
|
||||||
|
|
||||||
const FLOOR = 1
|
|
||||||
var belt_dirs = [ # v2 is widebelt second tile offset
|
|
||||||
{v=Vector2(1, 0), v2=Vector2(0,1), fx=false, fy=false, t=false},
|
|
||||||
{v=Vector2(0, 1), v2=Vector2(1,0), fx=true, fy=false, t=true},
|
|
||||||
{v=Vector2(-1,0), v2=Vector2(0,1), fx=true, fy=true, t=false},
|
|
||||||
{v=Vector2(0,-1), v2=Vector2(1,0), fx=false, fy=true, t=true}
|
|
||||||
]
|
|
||||||
var cursor_sprites = [
|
|
||||||
null,
|
|
||||||
load('res://assets/sprites/belt.tres'),
|
|
||||||
load('res://assets/sprites/channel.tres'),
|
|
||||||
load('res://assets/sprites/2x2belt.tres'),
|
|
||||||
load('res://assets/sprites/smelter.tres'),
|
|
||||||
load('res://assets/sprites/forge.tres'),
|
|
||||||
load('res://assets/sprites/lathe.tres'),
|
|
||||||
load('res://assets/sprites/welder.tres'),
|
|
||||||
]
|
|
||||||
var machines = {
|
|
||||||
4: load('res://machines/Smelter.tscn'),
|
|
||||||
5: load('res://machines/Forge.tscn'),
|
|
||||||
6: load('res://machines/Lathe.tscn'),
|
|
||||||
7: load('res://machines/Welder.tscn')
|
|
||||||
}
|
|
||||||
func _input(event):
|
|
||||||
if not map:
|
|
||||||
return
|
|
||||||
var Tiles: TileMap = map.get_node("TileMap")
|
|
||||||
var BeltTiles: TileMap = map.get_node("BeltTiles")
|
|
||||||
var belt_types = {1: 0, 2: 4, 3: 1} # 2 for secondary wide (3)
|
|
||||||
if event is InputEventMouse:
|
|
||||||
if p1_selection <= 0:
|
|
||||||
return
|
|
||||||
var pos = get_cursor_snapped_position()
|
|
||||||
if pos.x < 0:
|
|
||||||
return
|
|
||||||
var grid_index = BeltTiles.world_to_map(pos + Vector2(4,4))
|
|
||||||
|
|
||||||
if p1_selection <= 3:
|
|
||||||
if event.button_mask & BUTTON_MASK_LEFT:
|
|
||||||
if event is InputEventMouseMotion:
|
|
||||||
var dir = int(fposmod(round((event.relative.angle()/TAU)*4), 4))
|
|
||||||
var d = belt_dirs[dir]
|
|
||||||
if Tiles.get_cellv(grid_index) == FLOOR:
|
|
||||||
if p1_selection == 3:
|
|
||||||
if Tiles.get_cellv(grid_index+d.v2) == FLOOR:
|
|
||||||
if dir == 0 or dir == 3:
|
|
||||||
BeltTiles.set_cellv(grid_index, 1, d.fx, d.fy, d.t)
|
|
||||||
BeltTiles.set_cellv(grid_index+d.v2, 2, d.fx, d.fy, d.t)
|
|
||||||
else:
|
|
||||||
BeltTiles.set_cellv(grid_index, 2, d.fx, d.fy, d.t)
|
|
||||||
BeltTiles.set_cellv(grid_index+d.v2, 1, d.fx, d.fy, d.t)
|
|
||||||
else:
|
|
||||||
BeltTiles.set_cellv(grid_index, belt_types[p1_selection], d.fx, d.fy, d.t)
|
|
||||||
elif event.button_mask & BUTTON_MASK_RIGHT:
|
|
||||||
if Tiles.get_cellv(grid_index) == FLOOR:
|
|
||||||
BeltTiles.set_cellv(grid_index, -1)
|
|
||||||
if p1_selection == 3:
|
|
||||||
for offset in [Vector2(1,0), Vector2(0,1), Vector2(1,1)]:
|
|
||||||
if Tiles.get_cellv(grid_index + offset) == FLOOR:
|
|
||||||
BeltTiles.set_cellv(grid_index + offset, -1)
|
|
||||||
else:
|
|
||||||
if event is InputEventMouseButton:
|
|
||||||
if event.button_mask & BUTTON_MASK_LEFT:
|
|
||||||
var px_size = cursor_sprites[p1_selection].get_size()
|
|
||||||
var cell_size = px_size / 8
|
|
||||||
for i in cell_size.x:
|
|
||||||
for j in cell_size.y:
|
|
||||||
if not check_tile_buildable(grid_index + Vector2(i, j)):
|
|
||||||
return
|
|
||||||
var target_rect = Rect2(pos, px_size)
|
|
||||||
for machine in map.get_node("Machines").get_children():
|
|
||||||
if target_rect.intersects(machine.get_global_rect()):
|
|
||||||
return false # Check if any overlap
|
|
||||||
var machine = machines[p1_selection].instance()
|
|
||||||
machine.position = pos + px_size/2
|
|
||||||
map.get_node("Machines").add_child(machine)
|
|
||||||
elif event.button_mask & BUTTON_MASK_RIGHT:
|
|
||||||
# Delete a machine underneath, but only if it has never worked
|
|
||||||
for machine in map.get_node("Machines").get_children():
|
|
||||||
if machine.get_global_rect().has_point(event.position):
|
|
||||||
if not machine.was_started:
|
|
||||||
map.get_node("Machines").remove_child(machine)
|
|
||||||
machine.queue_free()
|
|
||||||
return false
|
|
||||||
|
|
||||||
|
|
||||||
func check_tile_buildable(grid_index):
|
|
||||||
if not map:
|
|
||||||
return
|
|
||||||
var Tiles: TileMap = map.get_node("TileMap")
|
|
||||||
if Tiles.get_cellv(grid_index) != FLOOR:
|
|
||||||
return false
|
|
||||||
return true
|
|
||||||
|
|
|
@ -4,10 +4,6 @@
|
||||||
|
|
||||||
[resource]
|
[resource]
|
||||||
size = 32
|
size = 32
|
||||||
outline_size = 1
|
outline_size = 2
|
||||||
outline_color = Color( 1, 1, 0, 1 )
|
outline_color = Color( 1, 1, 0, 1 )
|
||||||
extra_spacing_top = -8
|
|
||||||
extra_spacing_bottom = -8
|
|
||||||
extra_spacing_char = -1
|
|
||||||
extra_spacing_space = 5
|
|
||||||
font_data = ExtResource( 1 )
|
font_data = ExtResource( 1 )
|
||||||
|
|
|
@ -26,9 +26,6 @@ func get_belt_direction(tx, ty):
|
||||||
var tp = beltmap.is_cell_transposed(tx, ty)
|
var tp = beltmap.is_cell_transposed(tx, ty)
|
||||||
return int(tp) + int(xflip)*2
|
return int(tp) + int(xflip)*2
|
||||||
|
|
||||||
func get_global_rect():
|
|
||||||
return Rect2(to_global(rect.position), rect.size)
|
|
||||||
|
|
||||||
onready var recipe = Constants.RECIPES[machine_type]
|
onready var recipe = Constants.RECIPES[machine_type]
|
||||||
func _ready():
|
func _ready():
|
||||||
var top_left_corner_tile = position - Vector2(width/2-4, height/2-4)
|
var top_left_corner_tile = position - Vector2(width/2-4, height/2-4)
|
||||||
|
|
Loading…
Reference in New Issue