Coin Spawner tweaks, grid-free movement on island

master
Martin Felis 2022-01-23 14:08:28 +01:00
parent 626238ddbe
commit d7049b43ed
10 changed files with 85 additions and 19 deletions

View File

@ -2,15 +2,15 @@
importer="texture" importer="texture"
type="StreamTexture" type="StreamTexture"
path="res://.import/icon.png-9e2c68854eff2ba15efab32e39b37c44.stex" path="res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex"
metadata={ metadata={
"vram_texture": false "vram_texture": false
} }
[deps] [deps]
source_file="res://addons/gdhexgrid/icon.png" source_file="res://icon.png"
dest_files=[ "res://.import/icon.png-9e2c68854eff2ba15efab32e39b37c44.stex" ] dest_files=[ "res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex" ]
[params] [params]

View File

@ -28,6 +28,7 @@ process/fix_alpha_border=true
process/premult_alpha=false process/premult_alpha=false
process/HDR_as_SRGB=false process/HDR_as_SRGB=false
process/invert_color=false process/invert_color=false
process/normal_map_invert_y=false
stream=false stream=false
size_limit=0 size_limit=0
detect_3d=true detect_3d=true

View File

@ -28,6 +28,7 @@ process/fix_alpha_border=true
process/premult_alpha=false process/premult_alpha=false
process/HDR_as_SRGB=false process/HDR_as_SRGB=false
process/invert_color=false process/invert_color=false
process/normal_map_invert_y=false
stream=false stream=false
size_limit=0 size_limit=0
detect_3d=true detect_3d=true

View File

@ -25,9 +25,9 @@
borderopacity="1.0" borderopacity="1.0"
inkscape:pageopacity="0.0" inkscape:pageopacity="0.0"
inkscape:pageshadow="2" inkscape:pageshadow="2"
inkscape:zoom="0.7" inkscape:zoom="1.979899"
inkscape:cx="193.12383" inkscape:cx="193.12383"
inkscape:cy="-78.795116" inkscape:cy="128.13748"
inkscape:document-units="mm" inkscape:document-units="mm"
inkscape:current-layer="layer1" inkscape:current-layer="layer1"
showgrid="false" showgrid="false"
@ -49,7 +49,7 @@
<dc:format>image/svg+xml</dc:format> <dc:format>image/svg+xml</dc:format>
<dc:type <dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title> <dc:title />
</cc:Work> </cc:Work>
</rdf:RDF> </rdf:RDF>
</metadata> </metadata>
@ -119,7 +119,7 @@
sodipodi:nodetypes="cc" /> sodipodi:nodetypes="cc" />
<g <g
id="g2020" id="g2020"
transform="matrix(0.7487091,0,0,0.7487091,22.654087,15.131824)"> transform="matrix(0.7487091,0,0,0.7487091,22.011525,15.311364)">
<rect <rect
y="60.764866" y="60.764866"
x="34.11235" x="34.11235"
@ -150,5 +150,54 @@
id="path1969" id="path1969"
inkscape:connector-curvature="0" inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccccccccc" /> sodipodi:nodetypes="ccccccccccccc" />
<ellipse
style="fill:#ffff00;fill-opacity:1;stroke:#241c1c;stroke-width:0.59499997;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.28632483"
id="path891"
cx="71.115189"
cy="57.663963"
rx="4.9444861"
ry="7.4835467" />
<ellipse
style="fill:#ffff00;fill-opacity:1;stroke:#241c1c;stroke-width:0.59499997;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.28632483"
id="path893"
cx="70.914734"
cy="46.973183"
rx="3.4076865"
ry="4.4099469" />
<path
style="fill:#ffff00;fill-opacity:1;stroke:#241c1c;stroke-width:0.59499997;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.28632483"
d="m 76.576478,56.227926 c 0.974202,3.635771 0.665907,6.877365 -0.688596,7.240302 -1.354503,0.362937 -3.24229,-2.290218 -4.216492,-5.925988 -0.974202,-3.635771 -0.665907,-6.877365 0.688596,-7.240302 1.354503,-0.362937 3.24229,2.290218 4.216492,5.925988 z"
id="path895"
inkscape:connector-curvature="0"
sodipodi:nodetypes="sssss" />
<path
style="fill:#ffff00;fill-rule:evenodd;stroke:#c0be08;stroke-width:0.59500003;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 67.774315,45.866354 c 0,0 -2.666291,1.274117 -3.073598,2.53906 -0.268239,0.833048 0.668174,2.539061 0.668174,2.539061 l 1.202713,-1.469983 2.004521,-0.400904 z"
id="path897"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cscccc" />
<path
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.59499997;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.28632483"
id="path899"
sodipodi:type="arc"
sodipodi:cx="-70.017845"
sodipodi:cy="-46.00531"
sodipodi:rx="1.0151163"
sodipodi:ry="1.603617"
sodipodi:start="0"
sodipodi:end="6.2530804"
d="m -69.002729,-46.00531 a 1.0151163,1.603617 0 0 1 -1.007476,1.603571 1.0151163,1.603617 0 0 1 -1.022641,-1.579434 1.0151163,1.603617 0 0 1 0.992083,-1.627345 1.0151163,1.603617 0 0 1 1.037574,1.554938 l -1.014656,0.04827 z"
transform="scale(-1)" />
<path
style="fill:#ffffff;fill-opacity:0.28627451;stroke:#000000;stroke-width:0.59499997;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path901"
sodipodi:type="arc"
sodipodi:cx="69.808182"
sodipodi:cy="46.459103"
sodipodi:rx="0.20966499"
sodipodi:ry="0.45379427"
sodipodi:start="0"
sodipodi:end="6.2530784"
d="m 70.017847,46.459103 a 0.20966499,0.45379427 0 0 1 -0.208087,0.453781 0.20966499,0.45379427 0 0 1 -0.211219,-0.44695 0.20966499,0.45379427 0 0 1 0.204907,-0.46051 0.20966499,0.45379427 0 0 1 0.214304,0.440018 l -0.20957,0.01366 z" />
</g> </g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 6.6 KiB

After

Width:  |  Height:  |  Size: 9.6 KiB

View File

@ -28,6 +28,7 @@ process/fix_alpha_border=true
process/premult_alpha=false process/premult_alpha=false
process/HDR_as_SRGB=false process/HDR_as_SRGB=false
process/invert_color=false process/invert_color=false
process/normal_map_invert_y=false
stream=false stream=false
size_limit=0 size_limit=0
detect_3d=true detect_3d=true

View File

@ -28,6 +28,7 @@ process/fix_alpha_border=true
process/premult_alpha=false process/premult_alpha=false
process/HDR_as_SRGB=false process/HDR_as_SRGB=false
process/invert_color=false process/invert_color=false
process/normal_map_invert_y=false
stream=false stream=false
size_limit=0 size_limit=0
detect_3d=true detect_3d=true

View File

@ -28,6 +28,7 @@ process/fix_alpha_border=true
process/premult_alpha=false process/premult_alpha=false
process/HDR_as_SRGB=false process/HDR_as_SRGB=false
process/invert_color=false process/invert_color=false
process/normal_map_invert_y=false
stream=false stream=false
size_limit=0 size_limit=0
detect_3d=true detect_3d=true

View File

@ -5,7 +5,7 @@ onready var Coin = preload("./Coin.tscn")
# Declare member variables here. Examples: # Declare member variables here. Examples:
# var a = 2 # var a = 2
# var b = "text" # var b = "text"
var coin_spread = 50 var coin_spread = 100
# Called when the node enters the scene tree for the first time. # Called when the node enters the scene tree for the first time.
func _ready(): func _ready():
@ -17,19 +17,22 @@ func _ready():
#func _process(delta): #func _process(delta):
# pass # pass
func emit_coins (num, _position = null): func create_coins (num, _position = null):
var result = []
for i in range (num): for i in range (num):
var coin = Coin.instance() var coin = Coin.instance()
coin.position = position coin.position = position
if _position != null: if _position != null:
coin.position = _position coin.position = _position
coin.velocity = Vector2 (rand_range(-coin_spread, coin_spread), rand_range (-coin_spread, coin_spread)) coin.velocity = Vector2 (2 * rand_range(-coin_spread, coin_spread), rand_range (-coin_spread, coin_spread))
coin.z_pos = 0 coin.z_pos = 0
coin.z_vel = rand_range(300, 800) coin.z_vel = rand_range(300, 800)
add_child(coin) result.push_back(coin)
return result
func _unhandled_input(event): func _unhandled_input(event):
if 'position' in event: if 'position' in event:
@ -37,4 +40,6 @@ func _unhandled_input(event):
if event is InputEventMouseButton: if event is InputEventMouseButton:
if event.button_index == BUTTON_LEFT and event.pressed: if event.button_index == BUTTON_LEFT and event.pressed:
emit_coins(25, relative_pos) var coins = create_coins(25, relative_pos)
for coin in coins:
add_child(coin)

View File

@ -186,6 +186,7 @@ script = ExtResource( 2 )
z_index = -1 z_index = -1
[node name="GridHighlight" type="Node2D" parent="World"] [node name="GridHighlight" type="Node2D" parent="World"]
visible = false
script = ExtResource( 8 ) script = ExtResource( 8 )
[node name="UI" type="CanvasLayer" parent="World"] [node name="UI" type="CanvasLayer" parent="World"]

View File

@ -543,7 +543,10 @@ func update_navigation_target_island(start_world: Vector2, target_world: Vector2
player_navigation_path.append(target_world_coord) player_navigation_path.append(target_world_coord)
func update_player_navigation_target(target_world: Vector2): func update_player_navigation_target(mouse_pos: Vector2):
var target_tile = Globals.HexGrid.get_hex_center(Globals.ScreenToHex(mouse_pos, WorldCamera))
var target_world = Globals.ScreenToWorld(mouse_pos, WorldCamera)
var start_world = PlayerChar.transform.origin var start_world = PlayerChar.transform.origin
player_navigation_path = [] player_navigation_path = []
@ -553,14 +556,17 @@ func update_player_navigation_target(target_world: Vector2):
var player_near_anchor = check_player_near_anchor() var player_near_anchor = check_player_near_anchor()
if current_island != null: if current_island != null:
update_navigation_target_island(start_world, target_world) update_navigation_target_island(start_world, target_tile)
if current_island.get_tile_by_world_coord(target_tile) != null:
player_navigation_path.append(target_world)
if len(player_navigation_path) == 0 and player_near_anchor: if len(player_navigation_path) == 0 and player_near_anchor:
start_world = Globals.HexToWorld(anchor_tile) start_world = Globals.HexToWorld(anchor_tile)
if current_island == null or (len(player_navigation_path) == 0 and player_near_anchor): if current_island == null or (len(player_navigation_path) == 0 and player_near_anchor):
update_navigation_target_ocean(start_world, target_world) update_navigation_target_ocean(start_world, target_tile)
player_navigation_path.append(target_world)
var planning_duration_msec = OS.get_system_time_msecs() - start_timestamp var planning_duration_msec = OS.get_system_time_msecs() - start_timestamp
if Globals.debug_nav: if Globals.debug_nav:
@ -580,7 +586,7 @@ func handle_game_event(event):
if event is InputEventMouseButton: if event is InputEventMouseButton:
# Move main character # Move main character
if event.pressed and event.button_index == BUTTON_LEFT: if event.pressed and event.button_index == BUTTON_LEFT:
update_player_navigation_target (Globals.HexGrid.get_hex_center(Globals.ScreenToHex(get_global_mouse_position(), WorldCamera))) update_player_navigation_target (get_global_mouse_position())
return false return false