blob: bbe27bec0aeb1cbb1f8f15dc46fe4ff99f4e6160 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
class_name FoodManager
extends Node2D
export(PackedScene) var FOOD_BASIC: PackedScene
export(NodePath) var WORLD_GENERATOR_NP: NodePath
onready var world_generator: Node2D = get_node(WORLD_GENERATOR_NP)
onready var possible_food_locations: Array = world_generator.get_valid_map_coords()
var current_basic_food: Array = []
func _ready():
randomize()
Event.connect("food_eaten", self, "_on_food_eaten")
func _process(delta) -> void:
if current_basic_food.size() < Global.MAX_BASIC_FOOD:
_place_new_basic_food()
func _place_new_basic_food() -> void:
var food: FoodBasic = FOOD_BASIC.instance()
var type: int = _get_random_food_type(FoodBasic.Type)
Event.emit_signal("food_placing_new_food", type)
var pos_loc: Array = _get_random_pos()
var pos: Vector2 = pos_loc[0]
var loc: Vector2 = pos_loc[1]
# need to set the position first, else it will spawn on the middle and the moved
food.global_position = pos
add_child(food)
food.set_type(type)
food.set_location(loc)
# food.properties["points"] = 1
current_basic_food.append(loc)
Event.emit_signal("food_placed_new_food", food.properties["type"], food.properties["location"])
func _get_random_food_type(type) -> int:
return randi() % type.size()
func _get_random_pos() -> Array:
var found_valid_loc: bool = false
var index: int
var location: Vector2
while not found_valid_loc:
index = randi() % possible_food_locations.size()
location = possible_food_locations[index]
if current_basic_food.find(location) == -1:
found_valid_loc = true
return [world_generator.get_centered_world_position(location), location]
func _on_food_eaten(properties: Dictionary) -> void:
var index: int = current_basic_food.find(properties["location"])
current_basic_food.remove(index)
|