Example #1
0
        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;
                }
            }
        }
Example #2
0
        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;
                }
            }
        }