public void load(ref string[] iter, ref int index) { string line = iter[index]; while (line != "end") { line = iter[index]; index++; switch (line) { case "id": id = int.Parse(iter[index++]); Animals[id] = this; sId = Math.Max(id, sId); break; case "name": name = iter[index++]; if (name[0] == '"') { name = name.Substring(1, name.Length - 2); } break; case "species": species = iter[index++]; if (species[0] == '"') { species = species.Substring(1, species.Length - 2); } break; case "position": position.x = float.Parse(iter[index++]); position.y = float.Parse(iter[index++]); break; case "facing": facing = float.Parse(iter[index++]); break; case "amount_eaten": amount_eaten = float.Parse(iter[index++]); break; case "aggression": aggression = float.Parse(iter[index++]); break; case "destination": destination.load(ref iter, ref index); break; case "current_action": current_action.load(ref iter, ref index); break; case "action_history": string actionName = iter[index]; while (actionName != "end") { if (actionName == "Action" || actionName == "TargetAction") { TargetAction action = new TargetAction(); action.load(ref iter, ref index); action_history.Add(action); } actionName = iter[index]; } index++; break; case "health": health = float.Parse(iter[index++]); maxHealth = float.Parse(iter[index++]); break; case "strength": strength = float.Parse(iter[index++]); break; case "dexterity": dexterity = float.Parse(iter[index++]); break; case "intelligence": intelligence = float.Parse(iter[index++]); break; case "running_speed": running_speed = float.Parse(iter[index++]); break; case "walking_speed": walking_speed = float.Parse(iter[index++]); break; case "turning_speed": turning_speed = float.Parse(iter[index++]); break; case "entity_size": entity_size = float.Parse(iter[index++]); break; case "entity_mass": entity_mass = float.Parse(iter[index++]); break; case "rest_energy_per_day": rest_energy_per_day = float.Parse(iter[index++]); break; case "hunger_limits": hunger_limits_lower = float.Parse(iter[index++]); hunger_limits_upper = float.Parse(iter[index++]); hunger_limits_breed = float.Parse(iter[index++]); break; case "life_expectancy": life_expectancy = float.Parse(iter[index++]); break; case "breeding_age": breeding_age = float.Parse(iter[index++]); break; case "age": age = float.Parse(iter[index++]); break; case "breeding_rate": breeding_rate = float.Parse(iter[index++]); breeding_count = float.Parse(iter[index++]); break; case "diet": diet = float.Parse(iter[index++]); break; case "sight_radius": sight_radius = float.Parse(iter[index++]); break; case "graphic": graphic.load(ref iter, ref index); break; case "damage_base": damage_base = float.Parse(iter[index++]); break; case "attack_rate": attack_rate = float.Parse(iter[index++]); break; case "attack_cooldown": attack_cooldown = float.Parse(iter[index++]); break; case "attacked_by": attacked_by = int.Parse(iter[index++]); break; case "attacked_by_cooldown": attacked_by_cooldown = float.Parse(iter[index++]); break; case "energy": energy = float.Parse(iter[index++]); break; case "accumulated_energy": accumulated_energy = float.Parse(iter[index++]); break; case "birthdate": birthdate = iter[index++]; if (birthdate[0] == '"') { birthdate = birthdate.Substring(1, birthdate.Length - 2); } birthtime = convertDate(birthdate); break; case "deathdate": deathdate = iter[index++]; if (deathdate[0] == '"') { deathdate = deathdate.Substring(1, deathdate.Length - 2); } deathtime = convertDate(deathdate); break; case "deathby": string deathby = iter[index++]; if (deathby[0] == '"') { deathby = deathby.Substring(1, deathby.Length - 2); } deathbys[deathby] = 1; break; case "deathtime": index++; break; case "mate_find_cooldown": mate_find_cooldown = float.Parse(iter[index++]); break; case "fertility": fertility = float.Parse(iter[index++]); break; case "parents": parent1 = int.Parse(iter[index++]); parent2 = int.Parse(iter[index++]); break; case "hunger_damage_cooldown": hunger_damage_cooldown = float.Parse(iter[index++]); break; case "hunger_heal_cooldown": hunger_heal_cooldown = float.Parse(iter[index++]); break; case "mutation_rate": mutation_rate = float.Parse(iter[index++]); break; case "mutation_amount": mutation_amount = float.Parse(iter[index++]); break; case "local_population_max": local_population_max = float.Parse(iter[index++]); break; case "desired_num_children": desired_num_children = float.Parse(iter[index++]); break; case "children": line = iter[index++]; while (line != "end") { children.Add(int.Parse(line)); line = iter[index++]; } line = iter[index++]; break; case "species_alignment": while (line != "end") { line = iter[index++]; } line = iter[index++]; break; case "end": index--; break; default: Console.WriteLine("Unknown property: " + line); break; } } }
public void load(ref string[] iter, ref int index) { string line = iter[index]; while (line != "end") { line = iter[index]; index++; switch (line) { case "id": id = int.Parse(iter[index++]); Animals[id] = this; sId = Math.Max(id, sId); break; case "name": name = iter[index++]; if (name[0] == '"') { name = name.Substring(1, name.Length - 2); } break; case "species": species = iter[index++]; if (species[0] == '"') { species = species.Substring(1, species.Length - 2); } break; case "position": position.x = float.Parse(iter[index++]); position.y = float.Parse(iter[index++]); break; case "facing": facing = float.Parse(iter[index++]); break; case "amount_eaten": amount_eaten = float.Parse(iter[index++]); break; case "aggression": aggression = float.Parse(iter[index++]); break; case "destination": destination.load(ref iter, ref index); break; case "current_action": current_action.load(ref iter, ref index); break; case "action_history": string actionName = iter[index]; while (actionName != "end") { if (actionName == "Action" || actionName == "TargetAction") { TargetAction action = new TargetAction(); action.load(ref iter, ref index); action_history.Add(action); } actionName = iter[index]; } index++; break; case "health": health = float.Parse(iter[index++]); maxHealth = float.Parse(iter[index++]); break; case "strength": strength = float.Parse(iter[index++]); break; case "dexterity": dexterity = float.Parse(iter[index++]); break; case "intelligence": intelligence = float.Parse(iter[index++]); break; case "running_speed": running_speed = float.Parse(iter[index++]); break; case "walking_speed": walking_speed = float.Parse(iter[index++]); break; case "turning_speed": turning_speed = float.Parse(iter[index++]); break; case "entity_size": entity_size = float.Parse(iter[index++]); break; case "entity_mass": entity_mass = float.Parse(iter[index++]); break; case "rest_energy_per_day": rest_energy_per_day = float.Parse(iter[index++]); break; case "hunger_limits": hunger_limits_lower = float.Parse(iter[index++]); hunger_limits_upper = float.Parse(iter[index++]); hunger_limits_breed = float.Parse(iter[index++]); break; case "life_expectancy": life_expectancy = float.Parse(iter[index++]); break; case "breeding_age": breeding_age = float.Parse(iter[index++]); break; case "age": age = float.Parse(iter[index++]); break; case "breeding_rate": breeding_rate = float.Parse(iter[index++]); breeding_count = float.Parse(iter[index++]); break; case "diet": diet = float.Parse(iter[index++]); break; case "sight_radius": sight_radius = float.Parse(iter[index++]); break; case "graphic": graphic.load(ref iter, ref index); break; case "damage_base": damage_base = float.Parse(iter[index++]); break; case "attack_rate": attack_rate = float.Parse(iter[index++]); break; case "attack_cooldown": attack_cooldown = float.Parse(iter[index++]); break; case "attacked_by": attacked_by = int.Parse(iter[index++]); break; case "attacked_by_cooldown": attacked_by_cooldown = float.Parse(iter[index++]); break; case "energy": energy = float.Parse(iter[index++]); break; case "accumulated_energy": accumulated_energy = float.Parse(iter[index++]); break; case "birthdate": birthdate = iter[index++]; if (birthdate[0] == '"') { birthdate = birthdate.Substring(1, birthdate.Length - 2); } birthtime = convertDate(birthdate); break; case "deathdate": deathdate = iter[index++]; if (deathdate[0] == '"') { deathdate = deathdate.Substring(1, deathdate.Length - 2); } deathtime = convertDate(deathdate); break; case "deathby": string deathby = iter[index++]; if (deathby[0] == '"') { deathby = deathby.Substring(1, deathby.Length - 2); } deathbys[deathby] = 1; break; case "deathtime": index++; break; case "mate_find_cooldown": mate_find_cooldown = float.Parse(iter[index++]); break; case "fertility": fertility = float.Parse(iter[index++]); break; case "parents": parent1 = int.Parse(iter[index++]); parent2 = int.Parse(iter[index++]); break; case "hunger_damage_cooldown": hunger_damage_cooldown = float.Parse(iter[index++]); break; case "hunger_heal_cooldown": hunger_heal_cooldown = float.Parse(iter[index++]); break; case "mutation_rate": mutation_rate = float.Parse(iter[index++]); break; case "mutation_amount": mutation_amount = float.Parse(iter[index++]); break; case "local_population_max": local_population_max = float.Parse(iter[index++]); break; case "desired_num_children": desired_num_children = float.Parse(iter[index++]); break; case "children": line = iter[index++]; while (line != "end") { children.Add(int.Parse(line)); line = iter[index++]; } line = iter[index++]; break; case "species_alignment": while (line != "end") { line = iter[index++]; } line = iter[index++]; break; case "end": index--; break; default: Console.WriteLine("Unknown property: " + line); break; } } }