Skip to content

Commit aa44a7a

Browse files
committed
Add circle tool
1 parent 2872bce commit aa44a7a

File tree

7 files changed

+69
-63
lines changed

7 files changed

+69
-63
lines changed

assets/style/default_theme.tres

Lines changed: 30 additions & 30 deletions
Large diffs are not rendered by default.

export_presets.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -527,7 +527,7 @@ custom_features=""
527527
export_filter="all_resources"
528528
include_filter=""
529529
exclude_filter="builds/*"
530-
export_path="builds/1_0/android/Little Rage 1.0.0 Android.apk"
530+
export_path="builds/1_0/Little Rage 1.0.0 Android.apk"
531531
encryption_include_filters=""
532532
encryption_exclude_filters=""
533533
encrypt_pck=false

project.godot

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ shift={
177177

178178
[input_devices]
179179

180-
pointing/emulate_mouse_from_touch=false
180+
pointing/android/enable_pan_and_scale_gestures=true
181181

182182
[internationalization]
183183

scenes/uis/LevelEditor.tscn

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -433,12 +433,10 @@ control = NodePath("..")
433433
brush = NodePath("../../../Camera2D/BrushComponent")
434434

435435
[node name="TilesList" type="ItemList" parent="GUI"]
436-
visible = false
437436
anchors_preset = 15
438437
anchor_right = 1.0
439438
anchor_bottom = 1.0
440-
offset_top = -360.0
441-
offset_bottom = -720.0
439+
offset_bottom = -360.0
442440
grow_horizontal = 2
443441
grow_vertical = 2
444442
auto_height = true
@@ -447,6 +445,7 @@ same_column_width = true
447445
icon_mode = 0
448446
icon_scale = 4.0
449447
script = ExtResource("4_uccun")
448+
default_tile = ExtResource("3_62fuo")
450449

451450
[node name="AnimationPlayer" type="AnimationPlayer" parent="GUI/TilesList"]
452451
root_node = NodePath("../..")

scripts/uis/level_editor/BrushComponent.gd

Lines changed: 31 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -22,40 +22,45 @@ enum BrushTypes {
2222
func _ready() -> void:
2323
tiles_list.on_selected.connect(set_selected_tile)
2424

25+
func brush_pen(tile_position: Vector2i) -> void:
26+
if erase:
27+
level.ground.set_cell(tile_position, 1)
28+
else:
29+
selected_tile.place(level, tile_position)
30+
31+
func brush_rectangle(start_tile_position: Vector2i, end_tile_position: Vector2i) -> void:
32+
var first_tile_position: Vector2i = start_tile_position
33+
var last_tile_position: Vector2i = end_tile_position
34+
if start_tile_position < end_tile_position:
35+
first_tile_position = end_tile_position
36+
last_tile_position = start_tile_position
37+
for x in range(last_tile_position.x, first_tile_position.x + 1):
38+
for y in range(last_tile_position.y, first_tile_position.y + 1):
39+
brush_pen(Vector2i(x, y))
40+
41+
func brush_circle(start_tile_position: Vector2i, end_tile_position: Vector2i) -> void:
42+
var radius: int = start_tile_position.distance_squared_to(end_tile_position)
43+
var first_tile_position: Vector2i = start_tile_position + Vector2i(radius, radius)
44+
var last_tile_position: Vector2i = start_tile_position - Vector2i(radius, radius)
45+
for x in range(last_tile_position.x, first_tile_position.x):
46+
for y in range(last_tile_position.y, first_tile_position.y):
47+
var tile_position: Vector2i = Vector2i(x, y)
48+
if start_tile_position.distance_squared_to(tile_position) <= radius:
49+
brush_pen(tile_position)
50+
2551
func brush(start_position: Vector2, end_position: Vector2 = Vector2.ZERO) -> void:
2652
if !enable:
2753
return
28-
2954
var start_tile_position: Vector2i = (start_position / 16.0).floor()
30-
var end_tile_position: Vector2i = (end_position / 16.0).round()
55+
var end_tile_position: Vector2i = (end_position / 16.0).floor()
3156

32-
if erase:
33-
match brush_type:
34-
BrushTypes.PEN:
35-
level.ground.set_cell(start_tile_position, 1)
36-
BrushTypes.RECTANGLE:
37-
var first_tile_position: Vector2i = start_tile_position
38-
var last_tile_position: Vector2i = end_tile_position
39-
if start_tile_position < end_tile_position:
40-
first_tile_position = end_tile_position
41-
last_tile_position = start_tile_position
42-
for x in range(last_tile_position.x, first_tile_position.x):
43-
for y in range(last_tile_position.y, first_tile_position.y):
44-
level.ground.set_cell(Vector2i(x, y), 1)
45-
46-
return
4757
match brush_type:
4858
BrushTypes.PEN:
49-
selected_tile.place(level, start_tile_position)
59+
brush_pen(start_tile_position)
5060
BrushTypes.RECTANGLE:
51-
var first_tile_position: Vector2i = start_tile_position
52-
var last_tile_position: Vector2i = end_tile_position
53-
if start_tile_position < end_tile_position:
54-
first_tile_position = end_tile_position
55-
last_tile_position = start_tile_position
56-
for x in range(last_tile_position.x, first_tile_position.x):
57-
for y in range(last_tile_position.y, first_tile_position.y):
58-
selected_tile.place(level, Vector2i(x, y))
61+
brush_rectangle(start_tile_position, end_tile_position)
62+
BrushTypes.CIRCLE:
63+
brush_circle(start_tile_position, end_tile_position)
5964

6065
func _process(delta: float) -> void:
6166
tile_sprite.visible = enable && !erase && level.mode == LevelPlayer.Mode.EDIT

scripts/uis/level_editor/TilesButton.gd

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ func _ready() -> void:
88
if !tiles_list.is_node_ready():
99
await tiles_list.ready
1010
tiles_list.on_selected.connect(update_tiles_button_texture)
11-
update_tiles_button_texture(tiles_list.editor_tiles[0])
11+
update_tiles_button_texture(tiles_list.default_tile)
1212

1313
func update_tiles_button_texture(tile: EditorTile):
1414
icon = tile.get_icon(level)

scripts/uis/level_editor/tiles/TilesList.gd

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,16 @@ signal on_selected(tile: EditorTile)
55

66
const TILES_DIR: String = "res://data/tiles/"
77

8+
@export var default_tile: EditorTile
9+
810
var editor_tiles: Array[EditorTile]
911

1012
func _ready():
1113
for element in DataLoader.new().load_data_in_dir(TILES_DIR, "EditorTile"):
1214
if element is EditorTile:
1315
editor_tiles.append(element)
1416
item_selected.connect(func(index: int): on_selected.emit(editor_tiles[index]))
15-
on_selected.emit(editor_tiles[0])
17+
on_selected.emit(default_tile)
1618

1719
func create_list(atlas: CompressedTexture2D):
1820
clear()

0 commit comments

Comments
 (0)