Files
owniverse/world/entity.gd
T

133 lines
3.5 KiB
GDScript
Raw Normal View History

extends Node
class_name OwniverseEntity
var id: String
var is_visible: bool = false
var unlock: Dictionary = {}
var cost: Dictionary = {}
var bind: Dictionary = {}
var mass: float
var space: int
var lifespan: int
var auto: float
var gamma: float
var blast: int
var life_product: Dictionary = {}
var voids: int
var output_or: Dictionary = {}
var output_and: Dictionary = {}
var destroy_level: int
var degradation: Dictionary = {}
#deg_mass: "",
#deg_h: "",
#He": "",
#Met": "",
var planets: Dictionary = {}
#var habitable: "",
#var rocky: "",
#var gas giant: "",
#var asteroids: "",
var count_as: String
var group_as: String
var event_group: String
var space_bonus: float
var civ_bonus: float
var claim: String
var SCD: Dictionary = {
"id": "SCD",
"is_visible": "1",
"unlock": "Star:300",
"cost": "",
"bind": "Star:1000",
"mass": "",
"space": "",
"lifespan": "10000000",
"auto": "", "gamma": "",
"blast": "",
"life_product": "",
"voids": "",
"output": "",
"destroy_level": "",
"deg_mass": "",
"H": "",
"He": "",
"Met": "",
"planets": "",
"habitable": "",
"rocky": "",
"gas giant": "",
"asteroids": "",
"count_as": "",
"group_as": "SC",
"event_group": "SC",
"space_bonus": "0.1",
"civ_bonus": "4",
"claim": "C2.3"
}
func init_entity(values: Dictionary) -> bool:
id = values.id
is_visible = values.is_visible == "1"
unlock = _parse_and_string(values.unlock)
cost = _parse_and_string(values.cost)
bind = _parse_and_string(values.bind)
mass = float(values.mass)
space = int(values.space)
lifespan = int(values.lifespan)
auto = float(values.auto)
gamma = float(values.gamma)
blast = int(values.blast)
life_product = _parse_and_string(values.life_product)
voids = int(values.voids)
output_or = _parse_or_string(values.output)
output_and = _parse_and_string(values.output)
destroy_level = int(values.destroy_level)
degradation = _parse_and_string(values.degradation)
planets = _parse_planet_string(values.planets)
count_as = values.count_as
group_as = values.group_as
event_group = values.event_group
space_bonus = float(values.space_bonus)
civ_bonus = float(values.civ_bonus)
claim = values.claim
return true
func _parse_or_string(source_line: String) -> Dictionary:
var result = {}
if source_line.contains("^"):
var first_split = source_line.split("^")
var second_split = first_split[1].split("%")
var probability = float(second_split[1])
result["chance"] = probability
result["positive"] = second_split[0]
result["negative"] = first_split[0]
return result
func _parse_and_string(source_line: String) -> Dictionary:
var result = {}
if source_line.contains("&"):
var first_split = source_line.split("&")
for elem in first_split:
var second_split = elem.split(":")
result[second_split[0]] = float(second_split[1])
return result
func _parse_planet_string(source_line: String) -> Dictionary:
var result = {}
if source_line.contains("&"):
var first_split = source_line.split("&")
for elem in first_split:
var second_split = elem.split(":")
result[second_split[0]] = {}
result[second_split[0]]["amount"] = int(second_split[1])
result[second_split[0]]["chance"] = int(second_split[2])
return result