initial
This commit is contained in:
130
Scene.gd
Normal file
130
Scene.gd
Normal file
@@ -0,0 +1,130 @@
|
||||
extends Node2D
|
||||
class_name Scene
|
||||
|
||||
const gs = preload("res://GameScript.gd")
|
||||
#@onready var gamescript: gs = %GameScript
|
||||
@onready var ScriptBuilder = $GameScript
|
||||
|
||||
|
||||
@onready var map = NavigationServer2D.map_create()
|
||||
@onready var region = NavigationServer2D.region_create()
|
||||
@export var camera:Camera2D
|
||||
@onready var pathfind = $pathfind
|
||||
var ego
|
||||
|
||||
signal transitioned(Scene)
|
||||
|
||||
@export var background_scale = 1.0
|
||||
|
||||
|
||||
var start_scale_point : ScalePoint
|
||||
var end_scale_point : ScalePoint
|
||||
@export var starting_point: Vector2
|
||||
func _ready():
|
||||
ScriptBuilder =get_node("/root/Node2D/GameScript")
|
||||
NavigationServer2D.region_set_navigation_polygon(region, $pathfind.navigation_polygon)
|
||||
NavigationServer2D.region_set_map(region, map)
|
||||
NavigationServer2D.map_set_active(map, true)
|
||||
var graham = load("res://Ego.tscn").instantiate()
|
||||
|
||||
if starting_point:
|
||||
graham.position = starting_point
|
||||
else:
|
||||
if find_child("default-starting-point"):
|
||||
graham.position = find_child("default-starting-point").position
|
||||
|
||||
add_child(graham)
|
||||
ego = graham
|
||||
#ego.find_node("AnimationPlayer").play("west")
|
||||
#ego.find_node("AnimationPlayer").stop()
|
||||
self.start_scale_point = $StartScalePoint
|
||||
self.end_scale_point = $EndScalePoint
|
||||
camera = get_viewport().get_camera_2d()
|
||||
|
||||
|
||||
|
||||
# Called every frame. 'delhideta' is the elapsed time since the previous frame.
|
||||
func _process(delta):
|
||||
#print(ScriptBuilder.current_script)
|
||||
if ScriptBuilder.current_script:
|
||||
ScriptBuilder.current_script.step(delta, get_node("/root/Node2D"))
|
||||
|
||||
#func ego_scale(ego:Node2D):
|
||||
#
|
||||
#var value_sum = 0.0
|
||||
#var weight_sum = 0.0
|
||||
#
|
||||
#if $Graham and $Graham.position:
|
||||
#for c in get_children():
|
||||
#if c is ScalePoint:
|
||||
#var weight = 1.0 / $Graham.position.distance_to(c.position)
|
||||
#weight_sum += weight
|
||||
#var value = c.target_scale * weight
|
||||
#value_sum += value
|
||||
#return value_sum / weight_sum
|
||||
#else:
|
||||
#return 1.0
|
||||
func ego_scale(ego:Node2D):
|
||||
if start_scale_point and end_scale_point:
|
||||
|
||||
return remap(ego.position.y, start_scale_point.position.y, end_scale_point.position.y, start_scale_point.target_scale, end_scale_point.target_scale)
|
||||
return 1.0
|
||||
|
||||
# var scale_points=[]
|
||||
# var total_distance = 0.0
|
||||
# for c in get_children():
|
||||
# if c is ScalePoint:
|
||||
# scale_points.append(c)
|
||||
# total_distance += ego.position.distance_to(c.position)
|
||||
#
|
||||
# var inverse_distance_influence = []
|
||||
# for p in scale_points:
|
||||
# inverse_distance_influence.append ([ego.position.distance_to(p.position) / total_distance, p.target_scale])
|
||||
#
|
||||
# inverse_distance_influence.sort()
|
||||
# var target_scale = 0.0
|
||||
# var remaining = 1.0
|
||||
# var should_print = rand_range(0.0, 20.0) <= 0.1
|
||||
# for p in inverse_distance_influence:
|
||||
# var weight = (1.0 - p[0]) * remaining
|
||||
# remaining -= weight
|
||||
# target_scale += weight * p[1]
|
||||
# if should_print:
|
||||
# print("weight:", weight, " scale:", p[1])
|
||||
# if should_print:
|
||||
# print("")
|
||||
## inverse_distance_influence.append(z)
|
||||
#
|
||||
#
|
||||
# return target_scale
|
||||
#
|
||||
|
||||
|
||||
|
||||
#var start = ego.position.distance_to(start_scale_point.position)
|
||||
#var end = ego.position.distance_to(end_scale_point.position)
|
||||
|
||||
#var magnitude = sqrt((start*start) + (end*end))
|
||||
#var start_influence = 1.0 - start/magnitude
|
||||
#var end_influence = 1.0 - end/magnitude
|
||||
#var start_influence = range_lerp(start * start, 0.0, smallest_influence * smallest_influence, 1.0, 0.0)
|
||||
#var end_influence = range_lerp(end * end, 0.0, smallest_influence * smallest_influence, 1.0, 0.0)
|
||||
#print ( "start:", start_influence, " end:", end_influence)
|
||||
|
||||
|
||||
func _on_script_complete():
|
||||
ScriptBuilder.current_script = null
|
||||
|
||||
func start_main_script(s):
|
||||
if ScriptBuilder.current_script and ScriptBuilder.current_script.interrupt():
|
||||
ScriptBuilder.current_script = s
|
||||
if not ScriptBuilder.current_script:
|
||||
ScriptBuilder.current_script = s
|
||||
|
||||
func _unhandled_input(event):
|
||||
if event is InputEventMouseButton and event.is_pressed():
|
||||
print (ego.position, pathfind.to_local(get_global_mouse_position()))
|
||||
var path = NavigationServer2D.map_get_path(map, ego.position, pathfind.to_local(get_global_mouse_position()), true)
|
||||
start_main_script(ScriptBuilder.init(ScriptBuilder.walk_path(ego, path)).can_interrupt().build(self, "_on_script_complete"))
|
||||
pass
|
||||
|
||||
Reference in New Issue
Block a user