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"
type="StreamTexture"
path="res://.import/icon.png-9e2c68854eff2ba15efab32e39b37c44.stex"
path="res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/gdhexgrid/icon.png"
dest_files=[ "res://.import/icon.png-9e2c68854eff2ba15efab32e39b37c44.stex" ]
source_file="res://icon.png"
dest_files=[ "res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex" ]
[params]

View File

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

View File

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

View File

@ -25,9 +25,9 @@
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.7"
inkscape:zoom="1.979899"
inkscape:cx="193.12383"
inkscape:cy="-78.795116"
inkscape:cy="128.13748"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
@ -49,7 +49,7 @@
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
@ -119,7 +119,7 @@
sodipodi:nodetypes="cc" />
<g
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
y="60.764866"
x="34.11235"
@ -150,5 +150,54 @@
id="path1969"
inkscape:connector-curvature="0"
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>
</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/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=true

View File

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

View File

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

View File

@ -5,7 +5,7 @@ onready var Coin = preload("./Coin.tscn")
# Declare member variables here. Examples:
# var a = 2
# var b = "text"
var coin_spread = 50
var coin_spread = 100
# Called when the node enters the scene tree for the first time.
func _ready():
@ -17,19 +17,22 @@ func _ready():
#func _process(delta):
# pass
func emit_coins (num, _position = null):
func create_coins (num, _position = null):
var result = []
for i in range (num):
var coin = Coin.instance()
coin.position = position
if _position != null:
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_vel = rand_range(300, 800)
add_child(coin)
result.push_back(coin)
return result
func _unhandled_input(event):
if 'position' in event:
@ -37,4 +40,6 @@ func _unhandled_input(event):
if event is InputEventMouseButton:
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
[node name="GridHighlight" type="Node2D" parent="World"]
visible = false
script = ExtResource( 8 )
[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)
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
player_navigation_path = []
@ -553,14 +556,17 @@ func update_player_navigation_target(target_world: Vector2):
var player_near_anchor = check_player_near_anchor()
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:
start_world = Globals.HexToWorld(anchor_tile)
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
if Globals.debug_nav:
@ -580,7 +586,7 @@ func handle_game_event(event):
if event is InputEventMouseButton:
# Move main character
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