From 5cb839d8e2133ec0941e493a6a0c7e8574cfb21a Mon Sep 17 00:00:00 2001 From: Antti Hakkarainen Date: Thu, 9 Feb 2023 13:33:07 +0200 Subject: [PATCH] buggy implementation of shoreline drawing --- art/terrain/terrain.png | Bin 0 -> 60120 bytes art/terrain/terrain.png.import | 34 + maps/tampere_200px_crop.png | Bin 0 -> 3019 bytes maps/tampere_200px_crop.png.import | 14 + scenes/Main.tscn | 967 ++++++++++++++++++++++++++++- scripts/Globals.gd | 1 + scripts/Main.gd | 2 +- scripts/World.gd | 119 +++- 8 files changed, 1112 insertions(+), 25 deletions(-) create mode 100644 art/terrain/terrain.png create mode 100644 art/terrain/terrain.png.import create mode 100644 maps/tampere_200px_crop.png create mode 100644 maps/tampere_200px_crop.png.import diff --git a/art/terrain/terrain.png b/art/terrain/terrain.png new file mode 100644 index 0000000000000000000000000000000000000000..50fc91b7401f1db0c94f5253e46a6fa4339304aa GIT binary patch literal 60120 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%0Ds{%d7LHo;n8Oct`N9RM9?o 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 JP~)h^=A5uJ_tu`S#fIKVFr= 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 `Rtr;6=rak`fhux41 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 literal 0 HcmV?d00001 diff --git a/maps/tampere_200px_crop.png.import b/maps/tampere_200px_crop.png.import new file mode 100644 index 0000000..d572e71 --- /dev/null +++ b/maps/tampere_200px_crop.png.import @@ -0,0 +1,14 @@ +[remap] + +importer="image" +type="Image" +uid="uid://0a1cbgacbam1" +path="res://.godot/imported/tampere_200px_crop.png-6feaed79770d61a67e37097ebb13d691.image" + +[deps] + +source_file="res://maps/tampere_200px_crop.png" +dest_files=["res://.godot/imported/tampere_200px_crop.png-6feaed79770d61a67e37097ebb13d691.image"] + +[params] + diff --git a/scenes/Main.tscn b/scenes/Main.tscn index b28b1ac..540cf26 100644 --- a/scenes/Main.tscn +++ b/scenes/Main.tscn @@ -5,8 +5,8 @@ [ext_resource type="Script" path="res://scripts/Control.gd" id="3_1t1c8"] [ext_resource type="Script" path="res://scripts/World.gd" id="3_6q5ju"] [ext_resource type="Texture2D" uid="uid://dakvtfpnjuwwl" path="res://art/placeholder/outdoors.png" id="3_yddbk"] -[ext_resource type="Texture2D" uid="uid://bor3gkli3s8eg" path="res://art/terrain/water.png" id="4_i5fj4"] [ext_resource type="PackedScene" uid="uid://2we3txfr812u" path="res://scenes/Camera_zoom_2d.tscn" id="4_rx82t"] +[ext_resource type="Texture2D" uid="uid://djy5ne2grdc03" path="res://art/terrain/terrain.png" id="5_bqev6"] [sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_3q7ue"] texture = ExtResource("2_sfv1p") @@ -460,15 +460,974 @@ texture = ExtResource("3_yddbk") 14:2/size_in_atlas = Vector2i(4, 4) 14:2/0 = 0 -[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_bcy6h"] -texture = ExtResource("4_i5fj4") +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_hwjm3"] +texture = ExtResource("5_bqev6") 0:0/0 = 0 +1:0/0 = 0 +2:0/0 = 0 +3:0/0 = 0 +4:0/0 = 0 +5:0/0 = 0 +6:0/0 = 0 +7:0/0 = 0 +8:0/0 = 0 +9:0/0 = 0 +10:0/0 = 0 +11:0/0 = 0 +12:0/0 = 0 +13:0/0 = 0 +14:0/0 = 0 +15:0/0 = 0 +16:0/0 = 0 +17:0/0 = 0 +18:0/0 = 0 +19:0/0 = 0 +20:0/0 = 0 +21:0/0 = 0 +22:0/0 = 0 +23:0/0 = 0 +24:0/0 = 0 +25:0/0 = 0 +26:0/0 = 0 +27:0/0 = 0 +28:0/0 = 0 +29:0/0 = 0 +30:0/0 = 0 +31:0/0 = 0 +0:1/0 = 0 +1:1/0 = 0 +2:1/0 = 0 +3:1/0 = 0 +4:1/0 = 0 +5:1/0 = 0 +6:1/0 = 0 +7:1/0 = 0 +8:1/0 = 0 +9:1/0 = 0 +10:1/0 = 0 +11:1/0 = 0 +12:1/0 = 0 +13:1/0 = 0 +14:1/0 = 0 +15:1/0 = 0 +16:1/0 = 0 +17:1/0 = 0 +18:1/0 = 0 +19:1/0 = 0 +20:1/0 = 0 +21:1/0 = 0 +22:1/0 = 0 +23:1/0 = 0 +24:1/0 = 0 +25:1/0 = 0 +26:1/0 = 0 +27:1/0 = 0 +28:1/0 = 0 +29:1/0 = 0 +30:1/0 = 0 +31:1/0 = 0 +0:2/0 = 0 +1:2/0 = 0 +2:2/0 = 0 +3:2/0 = 0 +4:2/0 = 0 +5:2/0 = 0 +6:2/0 = 0 +7:2/0 = 0 +8:2/0 = 0 +9:2/0 = 0 +10:2/0 = 0 +11:2/0 = 0 +12:2/0 = 0 +13:2/0 = 0 +14:2/0 = 0 +15:2/0 = 0 +16:2/0 = 0 +17:2/0 = 0 +18:2/0 = 0 +19:2/0 = 0 +20:2/0 = 0 +21:2/0 = 0 +22:2/0 = 0 +23:2/0 = 0 +24:2/0 = 0 +25:2/0 = 0 +26:2/0 = 0 +27:2/0 = 0 +28:2/0 = 0 +29:2/0 = 0 +30:2/0 = 0 +31:2/0 = 0 +0:3/0 = 0 +1:3/0 = 0 +2:3/0 = 0 +3:3/0 = 0 +4:3/0 = 0 +5:3/0 = 0 +6:3/0 = 0 +7:3/0 = 0 +8:3/0 = 0 +9:3/0 = 0 +10:3/0 = 0 +11:3/0 = 0 +12:3/0 = 0 +13:3/0 = 0 +14:3/0 = 0 +15:3/0 = 0 +16:3/0 = 0 +17:3/0 = 0 +18:3/0 = 0 +19:3/0 = 0 +20:3/0 = 0 +21:3/0 = 0 +22:3/0 = 0 +23:3/0 = 0 +24:3/0 = 0 +25:3/0 = 0 +26:3/0 = 0 +27:3/0 = 0 +28:3/0 = 0 +29:3/0 = 0 +30:3/0 = 0 +31:3/0 = 0 +0:4/0 = 0 +1:4/0 = 0 +2:4/0 = 0 +3:4/0 = 0 +4:4/0 = 0 +5:4/0 = 0 +6:4/0 = 0 +7:4/0 = 0 +8:4/0 = 0 +9:4/0 = 0 +10:4/0 = 0 +11:4/0 = 0 +12:4/0 = 0 +13:4/0 = 0 +14:4/0 = 0 +15:4/0 = 0 +16:4/0 = 0 +17:4/0 = 0 +18:4/0 = 0 +19:4/0 = 0 +20:4/0 = 0 +21:4/0 = 0 +22:4/0 = 0 +23:4/0 = 0 +24:4/0 = 0 +25:4/0 = 0 +26:4/0 = 0 +27:4/0 = 0 +28:4/0 = 0 +29:4/0 = 0 +30:4/0 = 0 +31:4/0 = 0 +0:5/0 = 0 +1:5/0 = 0 +2:5/0 = 0 +3:5/0 = 0 +4:5/0 = 0 +5:5/0 = 0 +6:5/0 = 0 +7:5/0 = 0 +8:5/0 = 0 +9:5/0 = 0 +10:5/0 = 0 +11:5/0 = 0 +12:5/0 = 0 +13:5/0 = 0 +14:5/0 = 0 +15:5/0 = 0 +16:5/0 = 0 +17:5/0 = 0 +18:5/0 = 0 +19:5/0 = 0 +20:5/0 = 0 +21:5/0 = 0 +22:5/0 = 0 +23:5/0 = 0 +24:5/0 = 0 +25:5/0 = 0 +26:5/0 = 0 +27:5/0 = 0 +28:5/0 = 0 +29:5/0 = 0 +30:5/0 = 0 +31:5/0 = 0 +0:6/0 = 0 +1:6/0 = 0 +2:6/0 = 0 +3:6/0 = 0 +4:6/0 = 0 +5:6/0 = 0 +6:6/0 = 0 +7:6/0 = 0 +8:6/0 = 0 +9:6/0 = 0 +10:6/0 = 0 +11:6/0 = 0 +12:6/0 = 0 +13:6/0 = 0 +14:6/0 = 0 +15:6/0 = 0 +16:6/0 = 0 +17:6/0 = 0 +18:6/0 = 0 +19:6/0 = 0 +20:6/0 = 0 +21:6/0 = 0 +22:6/0 = 0 +23:6/0 = 0 +24:6/0 = 0 +25:6/0 = 0 +26:6/0 = 0 +27:6/0 = 0 +28:6/0 = 0 +29:6/0 = 0 +30:6/0 = 0 +31:6/0 = 0 +0:7/0 = 0 +1:7/0 = 0 +2:7/0 = 0 +3:7/0 = 0 +4:7/0 = 0 +5:7/0 = 0 +6:7/0 = 0 +7:7/0 = 0 +8:7/0 = 0 +9:7/0 = 0 +10:7/0 = 0 +11:7/0 = 0 +12:7/0 = 0 +13:7/0 = 0 +14:7/0 = 0 +15:7/0 = 0 +16:7/0 = 0 +17:7/0 = 0 +18:7/0 = 0 +19:7/0 = 0 +20:7/0 = 0 +21:7/0 = 0 +22:7/0 = 0 +23:7/0 = 0 +24:7/0 = 0 +25:7/0 = 0 +26:7/0 = 0 +27:7/0 = 0 +28:7/0 = 0 +29:7/0 = 0 +30:7/0 = 0 +31:7/0 = 0 +0:8/0 = 0 +1:8/0 = 0 +2:8/0 = 0 +3:8/0 = 0 +4:8/0 = 0 +5:8/0 = 0 +6:8/0 = 0 +7:8/0 = 0 +8:8/0 = 0 +9:8/0 = 0 +10:8/0 = 0 +11:8/0 = 0 +12:8/0 = 0 +13:8/0 = 0 +14:8/0 = 0 +15:8/0 = 0 +16:8/0 = 0 +17:8/0 = 0 +18:8/0 = 0 +19:8/0 = 0 +20:8/0 = 0 +21:8/0 = 0 +22:8/0 = 0 +23:8/0 = 0 +24:8/0 = 0 +25:8/0 = 0 +26:8/0 = 0 +27:8/0 = 0 +28:8/0 = 0 +29:8/0 = 0 +30:8/0 = 0 +31:8/0 = 0 +0:9/0 = 0 +1:9/0 = 0 +2:9/0 = 0 +3:9/0 = 0 +4:9/0 = 0 +5:9/0 = 0 +6:9/0 = 0 +7:9/0 = 0 +8:9/0 = 0 +9:9/0 = 0 +10:9/0 = 0 +11:9/0 = 0 +12:9/0 = 0 +13:9/0 = 0 +14:9/0 = 0 +15:9/0 = 0 +16:9/0 = 0 +17:9/0 = 0 +18:9/0 = 0 +19:9/0 = 0 +20:9/0 = 0 +21:9/0 = 0 +22:9/0 = 0 +23:9/0 = 0 +24:9/0 = 0 +25:9/0 = 0 +26:9/0 = 0 +27:9/0 = 0 +28:9/0 = 0 +29:9/0 = 0 +30:9/0 = 0 +31:9/0 = 0 +0:10/0 = 0 +1:10/0 = 0 +2:10/0 = 0 +3:10/0 = 0 +4:10/0 = 0 +5:10/0 = 0 +6:10/0 = 0 +7:10/0 = 0 +8:10/0 = 0 +9:10/0 = 0 +10:10/0 = 0 +11:10/0 = 0 +12:10/0 = 0 +13:10/0 = 0 +14:10/0 = 0 +15:10/0 = 0 +16:10/0 = 0 +17:10/0 = 0 +18:10/0 = 0 +19:10/0 = 0 +20:10/0 = 0 +21:10/0 = 0 +22:10/0 = 0 +23:10/0 = 0 +24:10/0 = 0 +25:10/0 = 0 +26:10/0 = 0 +27:10/0 = 0 +28:10/0 = 0 +29:10/0 = 0 +30:10/0 = 0 +31:10/0 = 0 +0:11/0 = 0 +1:11/0 = 0 +2:11/0 = 0 +3:11/0 = 0 +4:11/0 = 0 +5:11/0 = 0 +6:11/0 = 0 +7:11/0 = 0 +8:11/0 = 0 +9:11/0 = 0 +10:11/0 = 0 +11:11/0 = 0 +12:11/0 = 0 +13:11/0 = 0 +14:11/0 = 0 +15:11/0 = 0 +16:11/0 = 0 +17:11/0 = 0 +18:11/0 = 0 +19:11/0 = 0 +20:11/0 = 0 +21:11/0 = 0 +22:11/0 = 0 +23:11/0 = 0 +24:11/0 = 0 +25:11/0 = 0 +26:11/0 = 0 +27:11/0 = 0 +28:11/0 = 0 +29:11/0 = 0 +30:11/0 = 0 +31:11/0 = 0 +0:12/0 = 0 +1:12/0 = 0 +2:12/0 = 0 +3:12/0 = 0 +4:12/0 = 0 +5:12/0 = 0 +6:12/0 = 0 +7:12/0 = 0 +8:12/0 = 0 +9:12/0 = 0 +10:12/0 = 0 +11:12/0 = 0 +12:12/0 = 0 +13:12/0 = 0 +14:12/0 = 0 +15:12/0 = 0 +16:12/0 = 0 +17:12/0 = 0 +18:12/0 = 0 +19:12/0 = 0 +20:12/0 = 0 +21:12/0 = 0 +22:12/0 = 0 +23:12/0 = 0 +24:12/0 = 0 +25:12/0 = 0 +26:12/0 = 0 +27:12/0 = 0 +28:12/0 = 0 +29:12/0 = 0 +30:12/0 = 0 +31:12/0 = 0 +0:13/0 = 0 +1:13/0 = 0 +2:13/0 = 0 +3:13/0 = 0 +4:13/0 = 0 +5:13/0 = 0 +6:13/0 = 0 +7:13/0 = 0 +8:13/0 = 0 +9:13/0 = 0 +10:13/0 = 0 +11:13/0 = 0 +12:13/0 = 0 +13:13/0 = 0 +14:13/0 = 0 +15:13/0 = 0 +16:13/0 = 0 +17:13/0 = 0 +18:13/0 = 0 +19:13/0 = 0 +20:13/0 = 0 +21:13/0 = 0 +22:13/0 = 0 +23:13/0 = 0 +24:13/0 = 0 +25:13/0 = 0 +26:13/0 = 0 +27:13/0 = 0 +28:13/0 = 0 +29:13/0 = 0 +30:13/0 = 0 +31:13/0 = 0 +0:14/0 = 0 +1:14/0 = 0 +2:14/0 = 0 +3:14/0 = 0 +4:14/0 = 0 +5:14/0 = 0 +6:14/0 = 0 +7:14/0 = 0 +8:14/0 = 0 +9:14/0 = 0 +10:14/0 = 0 +11:14/0 = 0 +12:14/0 = 0 +13:14/0 = 0 +14:14/0 = 0 +15:14/0 = 0 +16:14/0 = 0 +17:14/0 = 0 +18:14/0 = 0 +19:14/0 = 0 +20:14/0 = 0 +21:14/0 = 0 +22:14/0 = 0 +23:14/0 = 0 +24:14/0 = 0 +25:14/0 = 0 +26:14/0 = 0 +27:14/0 = 0 +28:14/0 = 0 +29:14/0 = 0 +30:14/0 = 0 +31:14/0 = 0 +0:15/0 = 0 +1:15/0 = 0 +2:15/0 = 0 +3:15/0 = 0 +4:15/0 = 0 +5:15/0 = 0 +6:15/0 = 0 +7:15/0 = 0 +8:15/0 = 0 +9:15/0 = 0 +10:15/0 = 0 +11:15/0 = 0 +12:15/0 = 0 +13:15/0 = 0 +14:15/0 = 0 +15:15/0 = 0 +16:15/0 = 0 +17:15/0 = 0 +18:15/0 = 0 +19:15/0 = 0 +20:15/0 = 0 +21:15/0 = 0 +22:15/0 = 0 +23:15/0 = 0 +24:15/0 = 0 +25:15/0 = 0 +26:15/0 = 0 +27:15/0 = 0 +28:15/0 = 0 +29:15/0 = 0 +30:15/0 = 0 +31:15/0 = 0 +0:16/0 = 0 +1:16/0 = 0 +2:16/0 = 0 +3:16/0 = 0 +4:16/0 = 0 +5:16/0 = 0 +6:16/0 = 0 +7:16/0 = 0 +8:16/0 = 0 +9:16/0 = 0 +10:16/0 = 0 +11:16/0 = 0 +12:16/0 = 0 +13:16/0 = 0 +14:16/0 = 0 +15:16/0 = 0 +16:16/0 = 0 +17:16/0 = 0 +18:16/0 = 0 +19:16/0 = 0 +20:16/0 = 0 +21:16/0 = 0 +22:16/0 = 0 +23:16/0 = 0 +24:16/0 = 0 +25:16/0 = 0 +26:16/0 = 0 +27:16/0 = 0 +28:16/0 = 0 +29:16/0 = 0 +30:16/0 = 0 +31:16/0 = 0 +0:17/0 = 0 +1:17/0 = 0 +2:17/0 = 0 +3:17/0 = 0 +4:17/0 = 0 +5:17/0 = 0 +6:17/0 = 0 +7:17/0 = 0 +8:17/0 = 0 +9:17/0 = 0 +10:17/0 = 0 +11:17/0 = 0 +12:17/0 = 0 +13:17/0 = 0 +14:17/0 = 0 +15:17/0 = 0 +16:17/0 = 0 +17:17/0 = 0 +18:17/0 = 0 +19:17/0 = 0 +20:17/0 = 0 +21:17/0 = 0 +22:17/0 = 0 +23:17/0 = 0 +24:17/0 = 0 +25:17/0 = 0 +26:17/0 = 0 +27:17/0 = 0 +28:17/0 = 0 +29:17/0 = 0 +30:17/0 = 0 +31:17/0 = 0 +0:18/0 = 0 +1:18/0 = 0 +2:18/0 = 0 +3:18/0 = 0 +4:18/0 = 0 +5:18/0 = 0 +6:18/0 = 0 +7:18/0 = 0 +8:18/0 = 0 +9:18/0 = 0 +10:18/0 = 0 +11:18/0 = 0 +12:18/0 = 0 +13:18/0 = 0 +14:18/0 = 0 +15:18/0 = 0 +16:18/0 = 0 +17:18/0 = 0 +18:18/0 = 0 +19:18/0 = 0 +20:18/0 = 0 +21:18/0 = 0 +22:18/0 = 0 +23:18/0 = 0 +24:18/0 = 0 +25:18/0 = 0 +26:18/0 = 0 +27:18/0 = 0 +28:18/0 = 0 +29:18/0 = 0 +30:18/0 = 0 +31:18/0 = 0 +0:19/0 = 0 +1:19/0 = 0 +2:19/0 = 0 +3:19/0 = 0 +4:19/0 = 0 +5:19/0 = 0 +6:19/0 = 0 +7:19/0 = 0 +8:19/0 = 0 +9:19/0 = 0 +10:19/0 = 0 +11:19/0 = 0 +12:19/0 = 0 +13:19/0 = 0 +14:19/0 = 0 +15:19/0 = 0 +16:19/0 = 0 +17:19/0 = 0 +18:19/0 = 0 +19:19/0 = 0 +20:19/0 = 0 +21:19/0 = 0 +22:19/0 = 0 +23:19/0 = 0 +24:19/0 = 0 +25:19/0 = 0 +26:19/0 = 0 +27:19/0 = 0 +28:19/0 = 0 +29:19/0 = 0 +30:19/0 = 0 +31:19/0 = 0 +0:20/0 = 0 +1:20/0 = 0 +2:20/0 = 0 +3:20/0 = 0 +4:20/0 = 0 +5:20/0 = 0 +6:20/0 = 0 +7:20/0 = 0 +8:20/0 = 0 +9:20/0 = 0 +10:20/0 = 0 +11:20/0 = 0 +12:20/0 = 0 +13:20/0 = 0 +14:20/0 = 0 +15:20/0 = 0 +16:20/0 = 0 +17:20/0 = 0 +18:20/0 = 0 +19:20/0 = 0 +20:20/0 = 0 +21:20/0 = 0 +22:20/0 = 0 +23:20/0 = 0 +24:20/0 = 0 +25:20/0 = 0 +26:20/0 = 0 +27:20/0 = 0 +28:20/0 = 0 +29:20/0 = 0 +30:20/0 = 0 +31:20/0 = 0 +0:21/0 = 0 +1:21/0 = 0 +2:21/0 = 0 +3:21/0 = 0 +4:21/0 = 0 +5:21/0 = 0 +6:21/0 = 0 +7:21/0 = 0 +8:21/0 = 0 +9:21/0 = 0 +10:21/0 = 0 +11:21/0 = 0 +12:21/0 = 0 +13:21/0 = 0 +14:21/0 = 0 +15:21/0 = 0 +16:21/0 = 0 +17:21/0 = 0 +18:21/0 = 0 +19:21/0 = 0 +20:21/0 = 0 +21:21/0 = 0 +22:21/0 = 0 +23:21/0 = 0 +24:21/0 = 0 +25:21/0 = 0 +26:21/0 = 0 +27:21/0 = 0 +28:21/0 = 0 +29:21/0 = 0 +30:21/0 = 0 +31:21/0 = 0 +0:22/0 = 0 +1:22/0 = 0 +2:22/0 = 0 +3:22/0 = 0 +4:22/0 = 0 +5:22/0 = 0 +6:22/0 = 0 +7:22/0 = 0 +8:22/0 = 0 +9:22/0 = 0 +10:22/0 = 0 +11:22/0 = 0 +12:22/0 = 0 +13:22/0 = 0 +14:22/0 = 0 +15:22/0 = 0 +16:22/0 = 0 +17:22/0 = 0 +18:22/0 = 0 +19:22/0 = 0 +20:22/0 = 0 +21:22/0 = 0 +22:22/0 = 0 +23:22/0 = 0 +24:22/0 = 0 +25:22/0 = 0 +26:22/0 = 0 +27:22/0 = 0 +28:22/0 = 0 +29:22/0 = 0 +30:22/0 = 0 +31:22/0 = 0 +0:23/0 = 0 +1:23/0 = 0 +2:23/0 = 0 +3:23/0 = 0 +4:23/0 = 0 +5:23/0 = 0 +6:23/0 = 0 +7:23/0 = 0 +8:23/0 = 0 +9:23/0 = 0 +10:23/0 = 0 +11:23/0 = 0 +12:23/0 = 0 +13:23/0 = 0 +14:23/0 = 0 +15:23/0 = 0 +16:23/0 = 0 +17:23/0 = 0 +18:23/0 = 0 +19:23/0 = 0 +20:23/0 = 0 +21:23/0 = 0 +22:23/0 = 0 +23:23/0 = 0 +24:23/0 = 0 +25:23/0 = 0 +26:23/0 = 0 +27:23/0 = 0 +28:23/0 = 0 +29:23/0 = 0 +30:23/0 = 0 +31:23/0 = 0 +0:24/0 = 0 +1:24/0 = 0 +2:24/0 = 0 +3:24/0 = 0 +4:24/0 = 0 +5:24/0 = 0 +6:24/0 = 0 +7:24/0 = 0 +8:24/0 = 0 +9:24/0 = 0 +10:24/0 = 0 +11:24/0 = 0 +12:24/0 = 0 +13:24/0 = 0 +14:24/0 = 0 +15:24/0 = 0 +16:24/0 = 0 +17:24/0 = 0 +18:24/0 = 0 +19:24/0 = 0 +20:24/0 = 0 +21:24/0 = 0 +22:24/0 = 0 +23:24/0 = 0 +24:24/0 = 0 +25:24/0 = 0 +26:24/0 = 0 +27:24/0 = 0 +28:24/0 = 0 +29:24/0 = 0 +30:24/0 = 0 +31:24/0 = 0 +0:25/0 = 0 +1:25/0 = 0 +2:25/0 = 0 +3:25/0 = 0 +4:25/0 = 0 +5:25/0 = 0 +6:25/0 = 0 +7:25/0 = 0 +8:25/0 = 0 +9:25/0 = 0 +10:25/0 = 0 +11:25/0 = 0 +12:25/0 = 0 +13:25/0 = 0 +14:25/0 = 0 +15:25/0 = 0 +16:25/0 = 0 +17:25/0 = 0 +18:25/0 = 0 +19:25/0 = 0 +20:25/0 = 0 +21:25/0 = 0 +22:25/0 = 0 +23:25/0 = 0 +24:25/0 = 0 +25:25/0 = 0 +26:25/0 = 0 +27:25/0 = 0 +28:25/0 = 0 +29:25/0 = 0 +30:25/0 = 0 +31:25/0 = 0 +0:26/0 = 0 +1:26/0 = 0 +2:26/0 = 0 +3:26/0 = 0 +4:26/0 = 0 +5:26/0 = 0 +6:26/0 = 0 +7:26/0 = 0 +8:26/0 = 0 +9:26/0 = 0 +10:26/0 = 0 +11:26/0 = 0 +12:26/0 = 0 +13:26/0 = 0 +14:26/0 = 0 +15:26/0 = 0 +16:26/0 = 0 +17:26/0 = 0 +18:26/0 = 0 +19:26/0 = 0 +20:26/0 = 0 +21:26/0 = 0 +22:26/0 = 0 +23:26/0 = 0 +24:26/0 = 0 +25:26/0 = 0 +26:26/0 = 0 +27:26/0 = 0 +28:26/0 = 0 +29:26/0 = 0 +30:26/0 = 0 +31:26/0 = 0 +0:27/0 = 0 +1:27/0 = 0 +2:27/0 = 0 +3:27/0 = 0 +4:27/0 = 0 +5:27/0 = 0 +6:27/0 = 0 +7:27/0 = 0 +8:27/0 = 0 +9:27/0 = 0 +10:27/0 = 0 +11:27/0 = 0 +12:27/0 = 0 +13:27/0 = 0 +14:27/0 = 0 +15:27/0 = 0 +16:27/0 = 0 +17:27/0 = 0 +18:27/0 = 0 +19:27/0 = 0 +20:27/0 = 0 +21:27/0 = 0 +22:27/0 = 0 +23:27/0 = 0 +24:27/0 = 0 +25:27/0 = 0 +26:27/0 = 0 +27:27/0 = 0 +28:27/0 = 0 +29:27/0 = 0 +30:27/0 = 0 +31:27/0 = 0 +0:28/0 = 0 +1:28/0 = 0 +2:28/0 = 0 +3:28/0 = 0 +4:28/0 = 0 +5:28/0 = 0 +6:28/0 = 0 +7:28/0 = 0 +8:28/0 = 0 +9:28/0 = 0 +10:28/0 = 0 +11:28/0 = 0 +12:28/0 = 0 +13:28/0 = 0 +14:28/0 = 0 +15:28/0 = 0 +16:28/0 = 0 +17:28/0 = 0 +18:28/0 = 0 +19:28/0 = 0 +20:28/0 = 0 +21:28/0 = 0 +22:28/0 = 0 +23:28/0 = 0 +24:28/0 = 0 +25:28/0 = 0 +26:28/0 = 0 +27:28/0 = 0 +28:28/0 = 0 +29:28/0 = 0 +30:28/0 = 0 +31:28/0 = 0 +0:29/0 = 0 +1:29/0 = 0 +2:29/0 = 0 +3:29/0 = 0 +4:29/0 = 0 +5:29/0 = 0 +6:29/0 = 0 +7:29/0 = 0 +8:29/0 = 0 +9:29/0 = 0 +10:29/0 = 0 +11:29/0 = 0 +12:29/0 = 0 +13:29/0 = 0 +14:29/0 = 0 +15:29/0 = 0 +16:29/0 = 0 +17:29/0 = 0 +18:29/0 = 0 +19:29/0 = 0 +20:29/0 = 0 +21:29/0 = 0 +22:29/0 = 0 +23:29/0 = 0 +24:29/0 = 0 +25:29/0 = 0 +26:29/0 = 0 +27:29/0 = 0 +28:29/0 = 0 +29:29/0 = 0 +30:29/0 = 0 +31:29/0 = 0 [sub_resource type="TileSet" id="TileSet_t3bbo"] terrain_set_0/mode = 0 sources/1 = SubResource("TileSetAtlasSource_s55i2") sources/0 = SubResource("TileSetAtlasSource_3q7ue") -sources/2 = SubResource("TileSetAtlasSource_bcy6h") +sources/2 = SubResource("TileSetAtlasSource_hwjm3") [node name="Main" type="Node"] script = ExtResource("1_ysxum") diff --git a/scripts/Globals.gd b/scripts/Globals.gd index 137db18..838bfb2 100644 --- a/scripts/Globals.gd +++ b/scripts/Globals.gd @@ -4,6 +4,7 @@ extends Node var world_map: TileMap +var map_image_size:Vector2i # FILE PATHS const SCENE_PATH:String = "res://scenes/" diff --git a/scripts/Main.gd b/scripts/Main.gd index a913a4c..59f46ad 100644 --- a/scripts/Main.gd +++ b/scripts/Main.gd @@ -9,7 +9,7 @@ extends Node # The idea is for the user to be able to choose the map from GUI later -var map_file_name: String = "res://maps/tampere_10x10km_1000px.png" +var map_file_name: String = "res://maps/tampere_200px_crop.png" func _init(): DisplayServer.window_set_size( diff --git a/scripts/World.gd b/scripts/World.gd index 953b80d..d2180cb 100644 --- a/scripts/World.gd +++ b/scripts/World.gd @@ -6,6 +6,7 @@ var has_placeable_building: bool = false var building var building_type: String var scene +var image:Image = Image.new() # Called when the node enters the scene tree for the first time. func _ready(): @@ -78,9 +79,9 @@ func _input(event): func calculate_grid_coordinates(map_position: Vector2) -> Vector2: return (map_position).floor() -func are_coords_valid(value:int, errmsg:String) -> bool: - if Globals.MAP_MIN_HEIGHT > value or value > Globals.MAP_MAX_HEIGHT: - errmsg = errmsg % [value, Globals.MAP_MIN_HEIGHT, Globals.MAP_MAX_HEIGHT] +func are_coords_valid(value:int, bounds:Vector2i, errmsg:String) -> bool: + if bounds.x > value or value > bounds.y: + errmsg = errmsg % [value, bounds.x, bounds.y] push_error(errmsg) return false @@ -90,16 +91,23 @@ func place_building_to_map(): var building_properties = get_building_properties() var tile_on_mouse = local_to_map(get_global_mouse_position()) - if !are_coords_valid(tile_on_mouse.y,Globals.ERROR_TILE_Y_COORDS_OUT_OF_BOUNDS): + if !are_coords_valid( + tile_on_mouse.y, + Vector2i(0, Globals.map_image_size.y), + Globals.ERROR_TILE_Y_COORDS_OUT_OF_BOUNDS + ): return false - elif !are_coords_valid(tile_on_mouse.x,Globals.ERROR_TILE_X_COORDS_OUT_OF_BOUNDS): + elif !are_coords_valid( + tile_on_mouse.x, + Vector2i(0, Globals.map_image_size.x), + Globals.ERROR_TILE_X_COORDS_OUT_OF_BOUNDS + ): return false set_cell(Globals.LAYER_BUILDINGS, tile_on_mouse, building_properties[0], building_properties[1], 0) func generate_terrain(filename) -> bool: - # Try to load the image which we used to place water & ground to world map - var image:Image = Image.new() + # Try to load the image which we used to place water & ground to world map image = load(filename) if image == null: var errmsg = Globals.ERROR_FAILED_TO_LOAD_FILE @@ -107,28 +115,99 @@ func generate_terrain(filename) -> bool: return false # Check if image is too small or too large - var image_size:Vector2i = image.get_size() - if !are_coords_valid(image_size.y,Globals.ERROR_IMAGE_HEIGHT_INCORRECT): + Globals.map_image_size = image.get_size() + if !validate_mapgen_params(): return false - elif !are_coords_valid(image_size.x,Globals.ERROR_IMAGE_WIDTH_INCORRECT): + + generate_water_and_land() + generate_shorelines() + + # center camera to world map + emit_signal( + "set_camera_position", + Vector2(Globals.map_image_size.x / 2.0 * Globals.TILE_SIZE_X, + Globals.map_image_size.y / 2.0 * Globals.TILE_SIZE_Y) + ) + return true + +func validate_mapgen_params() -> bool: + if !are_coords_valid( + Globals.map_image_size.y, + Vector2i(Globals.MAP_MIN_HEIGHT, Globals.MAP_MAX_HEIGHT), + Globals.ERROR_IMAGE_HEIGHT_INCORRECT): + return false + elif !are_coords_valid( + Globals.map_image_size.x, + Vector2i(Globals.MAP_MIN_WIDTH, Globals.MAP_MAX_WIDTH), + Globals.ERROR_IMAGE_WIDTH_INCORRECT): return false # Try to load the world tilemap where we place the tiles if (Globals.world_map == null): var errmsg = Globals.ERROR_WORLD_TILEMAP_NODE_MISSING % Globals.WORLD_NODE push_error(errmsg) - return false + return false - # Finally populate the world map with hopefully valid tiles! - for x in image_size.x: - for y in image_size.y: + return true + +func generate_water_and_land() -> void: + for x in Globals.map_image_size.x: + for y in Globals.map_image_size.y: # layer | position coords | tilemap id | coords of the tile at tilemap | alternative tile if image.get_pixel(x, y) == Globals.WATER_TILE_COLOR_IN_MAP_FILE: + Globals.world_map.set_cell(Globals.LAYER_TERRAIN, Vector2i(x, y), 2, Vector2i(15,5), 0) + else: Globals.world_map.set_cell(Globals.LAYER_TERRAIN, Vector2i(x, y), 2, Vector2i(0,0), 0) + +func generate_shorelines() -> void: + # for testing avoid map borders to make it simpler to implement + var directions:Array = [ + Vector2i(0,1), # south + Vector2i(1,0), # east + Vector2i(0,-1), # north + Vector2i(-1,0) # west + ] + + for x in range(1, Globals.map_image_size.x-1): + for y in range(1, Globals.map_image_size.y-1): + # skip tiles with water + if image.get_pixel(x, y) == Globals.WATER_TILE_COLOR_IN_MAP_FILE: + continue + + # now we are supposed to be inspecting a tile with land + # 1 = water 0 = land + var surrounding_water_tiles:Array = [] + + # determine which directions have water around the tile + for dir in directions: + if image.get_pixel(x+dir.x, y+dir.y) == Globals.WATER_TILE_COLOR_IN_MAP_FILE: + surrounding_water_tiles.append(1) + continue + surrounding_water_tiles.append(0) + + var selected_tile:Vector2i = Vector2i(0,0) + + match surrounding_water_tiles: + [1,1,0,0]: # south & east + selected_tile = Vector2i(19,0) # or 20 + [0,1,1,0]: # north & east + selected_tile = Vector2i(15,0) # or 60 + [0,0,1,1]: # north & west + selected_tile = Vector2i(11,0) # or 12 + [1,0,0,1]: # south & west + selected_tile = Vector2i(7,0) # or 8 + [0,0,0,1]: # water in west only + selected_tile = Vector2i(9,0) # or 10 + [0,0,1,0]: # water in north only + selected_tile = Vector2i(13,0) # or 14 + [0,1,0,0]: # water in east only + selected_tile = Vector2i(17,0) # or 18 + [1,0,0,0]: # water in south only + selected_tile = Vector2i(5,0) # or 6 + _: # otherwise skip drawing + continue + + # layer | position coords | tilemap id | coords of the tile at tilemap | alternative tile + Globals.world_map.set_cell(Globals.LAYER_TERRAIN, Vector2i(x, y), 2, selected_tile, 0) + - # center camera to world map - emit_signal( - "set_camera_position", - Vector2(image_size.x/2.0*Globals.TILE_SIZE_X, image_size.y/2.0*Globals.TILE_SIZE_Y) - ) - return true