Ejemplo n.º 1
0
        /// <summary>
        /// The number of calendar days to a the endDate for the optional daycount, convention and holiday calendar./>
        /// </summary>
        /// <param name="startDate"></param>
        /// <param name="endDate">The date to which the number of days is to be calculated.</param>
        /// <param name="daycount">Optional daycount, defaulting to <see cref="Daycount.DcACTACT"/></param>
        /// <param name="convention">Optional daycount convention adjusting both start and end dates, defaulting to <see cref="Convention.None"/>.</param>
        /// <param name="calendar">Optional holiday calendar, defaulting to an empty calendar.</param>
        /// <returns></returns>
        public static long DaysTo(this DateTime startDate, DateTime endDate, Daycount daycount = Daycount.DcACTACT, Convention convention = Convention.None, SortedSet <DateTime> calendar = null)
        {
            DateTime d1 = startDate.Modify(convention, calendar);
            DateTime d2 = endDate.Modify(convention, calendar);

            switch (daycount)
            {
            case Daycount.DcACT360:
            case Daycount.DcACT365:
            case Daycount.DcACTACT:
            case Daycount.DcACT36525:
                return((long)(d2 - d1).TotalDays);

            case Daycount.Dc30360:
                int day1 = d1.Day;
                int day2 = d2.Day;

                if (day1 >= 30)
                {
                    if (day2 >= 30)
                    {
                        day2 = 30;
                    }
                    day1 = 30;
                }

                return(360 * (d2.Year - d1.Year) + 30 * (d2.Month - d1.Month) + (day2 - day1));

            case Daycount.Dc30E360:
                return(360 * (long)(d2.Year - d1.Year) + 30 * (long)(d2.Month - d1.Month) + (long)(Math.Min(d2.Day, 30) - Math.Min(d1.Day, 30)));
            }

            throw new ArgumentException("Invalid DaysTo call");
        }
Ejemplo n.º 2
0
    //Load saved world
    public void LoadData()
    {
        DestroyEverything();

        GameData gd;

        gd = SaveLoad.LoadWorld(this);

        //Loading resources
        ResourceManager resManager   = FindObjectOfType <ResourceManager>();
        Daycount        dayManager   = FindObjectOfType <Daycount>();
        ScoreManager    scoreManager = FindObjectOfType <ScoreManager>();

        resManager.food           = gd.Food;
        resManager.wood           = gd.Wood;
        resManager.stone          = gd.Stone;
        scoreManager.ScoreCurrent = gd.Score;
        scoreManager.TimeCurrent  = gd.Time;
        dayManager.day            = gd.Daycount;

        //update grid
        CreateGrid(gd.width, gd.height);

        for (int i = 0; i < gd.OcGrid.Length; i++)
        {
            if (gd.OcGrid[2, i] == -1000)
            {
                break;
            }
            SetOccupied(gd.OcGrid[0, i], gd.OcGrid[1, i]);
        }

        BuildEverything(gd);
    }
Ejemplo n.º 3
0
 // Use this for initialization
 void Start()
 {
     daycount  = FindObjectOfType <Daycount>();
     gluttony  = Random.Range(5, 10);
     age       = 0;
     hunger    = 0;
     popc      = FindObjectOfType <PopulationManager>();
     rm        = FindObjectOfType <ResourceManager>();
     available = true;
     popc.IncreasePopulation(1);
 }
Ejemplo n.º 4
0
        /// <summary>
        /// The year fraction to a the endDate for the optional daycount, convention and holiday calendar./>
        /// </summary>
        /// <param name="startDate"></param>
        /// <param name="endDate">The date to which the number of days is to be calculated.</param>
        /// <param name="daycount">Optional daycount, defaulting to <see cref="Daycount.DcACTACT"/></param>
        /// <param name="convention">Optional daycount convention adjusting both start and end dates, defaulting to <see cref="Convention.None"/>.</param>
        /// <param name="calendar">Optional holiday calendar, defaulting to an empty calendar.</param>
        /// <returns></returns>
        public static double YearFraction(this DateTime startDate, DateTime endDate, Daycount daycount = Daycount.DcACTACT, Convention convention = Convention.None, SortedSet <DateTime> calendar = null)
        {
            startDate = startDate.TruncateTime();
            endDate   = endDate.TruncateTime();

            double days = startDate.DaysTo(endDate, daycount, convention, calendar);

            switch (daycount)
            {
            case Daycount.DcACT360:
            case Daycount.Dc30360:
            case Daycount.Dc30E360:
                return(days / 360);

            case Daycount.DcACT365:
                return(days / 365);

            case Daycount.DcACTACT:
                double yf = 0;

                DateTime d1       = startDate.Modify(convention, calendar);
                DateTime d2       = endDate.Modify(convention, calendar);
                DateTime currDate = d1;
                DateTime nextDate = new(d1.Year + 1, 1, 1);

                for (int i = 0; i <= d2.Year - d1.Year; i++)
                {
                    if (i == d2.Year - d1.Year)
                    {
                        yf += (double)(d2 - currDate).TotalDays / (DateTime.IsLeapYear(currDate.Year) ? 366 : 365);
                    }
                    else
                    {
                        yf += (nextDate - currDate).TotalDays / (DateTime.IsLeapYear(currDate.Year) ? 366 : 365);
                    }

                    currDate = nextDate;
                    nextDate = nextDate.AddYears(1);
                }

                return(yf);

            case Daycount.DcACT36525:
                return(days / 365.25);
            }

            throw new ArgumentException("Invalid YearFraction call");
        }
Ejemplo n.º 5
0
    static void CollectData(ref GameData data, Grid grid)
    {
        //Colecting Occupied grid
        data.width  = grid.gridSizeX;
        data.height = grid.gridSizeY;

        data.OcGrid = new int[3, grid.gridSizeX *grid.gridSizeY];

        int lenght = 0;

        for (int x = 0; x < data.width; x++)
        {
            for (int y = 0; y < data.height; y++)
            {
                if (grid.GetNode(x, y).walkable == false)
                {
                    data.OcGrid[0, lenght]   = x;
                    data.OcGrid[1, lenght++] = y;
                }
            }
        }

        data.OcGrid[2, lenght] = -1000;

        //Colecting resources
        ResourceManager resManager   = FindObjectOfType <ResourceManager>();
        Daycount        dayManager   = FindObjectOfType <Daycount>();
        ScoreManager    scoreManager = FindObjectOfType <ScoreManager>();

        data.Food     = resManager.food;
        data.Wood     = resManager.wood;
        data.Stone    = resManager.stone;
        data.Score    = scoreManager.ScoreCurrent;
        data.Time     = scoreManager.TimeCurrent;
        data.Daycount = dayManager.day;

        //Colecting Grass object info
        GameObject[] WorldObjects = GameObject.FindGameObjectsWithTag("Grass");
        double[,] world = new double[3, WorldObjects.Length];
        for (int i = 0; i < WorldObjects.Length; i++)
        {
            world[0, i] = WorldObjects[i].transform.position.x;
            world[1, i] = WorldObjects[i].transform.position.y;
            world[2, i] = WorldObjects[i].transform.position.z;
        }
        data.grassArray = world;

        //Colecting Sand object info
        WorldObjects = GameObject.FindGameObjectsWithTag("Sand");
        world        = new double[3, WorldObjects.Length];
        for (int i = 0; i < WorldObjects.Length; i++)
        {
            world[0, i] = WorldObjects[i].transform.position.x;
            world[1, i] = WorldObjects[i].transform.position.y;
            world[2, i] = WorldObjects[i].transform.position.z;
        }
        data.sandArray = world;

        //Colecting Trees object info
        WorldObjects = GameObject.FindGameObjectsWithTag("Tree");
        world        = new double[3, WorldObjects.Length];
        for (int i = 0; i < WorldObjects.Length; i++)
        {
            world[0, i] = WorldObjects[i].transform.position.x;
            world[1, i] = WorldObjects[i].transform.position.y;
            world[2, i] = WorldObjects[i].transform.position.z;
        }
        data.treeArray = world;

        //Colecting BerryBushes object info
        WorldObjects = GameObject.FindGameObjectsWithTag("BerryBush");
        world        = new double[3, WorldObjects.Length];
        for (int i = 0; i < WorldObjects.Length; i++)
        {
            world[0, i] = WorldObjects[i].transform.position.x;
            world[1, i] = WorldObjects[i].transform.position.y;
            world[2, i] = WorldObjects[i].transform.position.z;
        }
        data.berryBushArray = world;

        //Colecting EmptyBerryBushes object info
        WorldObjects = GameObject.FindGameObjectsWithTag("EmptyBush");
        world        = new double[3, WorldObjects.Length];
        for (int i = 0; i < WorldObjects.Length; i++)
        {
            world[0, i] = WorldObjects[i].transform.position.x;
            world[1, i] = WorldObjects[i].transform.position.y;
            world[2, i] = WorldObjects[i].transform.position.z;
        }
        data.emptyBushArray = world;

        //Colecting Rock object info
        WorldObjects = GameObject.FindGameObjectsWithTag("Rock");
        world        = new double[3, WorldObjects.Length];
        for (int i = 0; i < WorldObjects.Length; i++)
        {
            world[0, i] = WorldObjects[i].transform.position.x;
            world[1, i] = WorldObjects[i].transform.position.y;
            world[2, i] = WorldObjects[i].transform.position.z;
        }
        data.rockArray = world;

        //Colecting Rock object info
        WorldObjects = GameObject.FindGameObjectsWithTag("CivilHouse");
        world        = new double[3, WorldObjects.Length];
        for (int i = 0; i < WorldObjects.Length; i++)
        {
            world[0, i] = WorldObjects[i].transform.position.x;
            world[1, i] = WorldObjects[i].transform.position.y;
            world[2, i] = WorldObjects[i].transform.position.z;
        }
        data.CivilHouseArray = world;

        //Colecting Rock object info
        WorldObjects = GameObject.FindGameObjectsWithTag("FarmShelter");
        world        = new double[3, WorldObjects.Length];
        for (int i = 0; i < WorldObjects.Length; i++)
        {
            world[0, i] = WorldObjects[i].transform.position.x;
            world[1, i] = WorldObjects[i].transform.position.y;
            world[2, i] = WorldObjects[i].transform.position.z;
        }
        data.FarmShelterArray = world;

        //Colecting Rock object info
        WorldObjects = GameObject.FindGameObjectsWithTag("MainBuilding");
        world        = new double[3, WorldObjects.Length];
        for (int i = 0; i < WorldObjects.Length; i++)
        {
            world[0, i] = WorldObjects[i].transform.position.x;
            world[1, i] = WorldObjects[i].transform.position.y;
            world[2, i] = WorldObjects[i].transform.position.z;
        }
        data.MainBuildingArray = world;

        //Colecting Rock object info
        WorldObjects = GameObject.FindGameObjectsWithTag("Gatherer");
        world        = new double[3, WorldObjects.Length];
        for (int i = 0; i < WorldObjects.Length; i++)
        {
            world[0, i] = WorldObjects[i].transform.position.x;
            world[1, i] = WorldObjects[i].transform.position.y;
            world[2, i] = WorldObjects[i].transform.position.z;
        }
        data.GathererArray = world;

        //Colecting Rock object info
        WorldObjects = GameObject.FindGameObjectsWithTag("Forester");
        world        = new double[3, WorldObjects.Length];
        for (int i = 0; i < WorldObjects.Length; i++)
        {
            world[0, i] = WorldObjects[i].transform.position.x;
            world[1, i] = WorldObjects[i].transform.position.y;
            world[2, i] = WorldObjects[i].transform.position.z;
        }
        data.ForesterArray = world;

        //Colecting Rock object info
        WorldObjects = GameObject.FindGameObjectsWithTag("Mason");
        world        = new double[3, WorldObjects.Length];
        for (int i = 0; i < WorldObjects.Length; i++)
        {
            world[0, i] = WorldObjects[i].transform.position.x;
            world[1, i] = WorldObjects[i].transform.position.y;
            world[2, i] = WorldObjects[i].transform.position.z;
        }
        data.MasonArray = world;

        //Colecting Rock object info
        WorldObjects = GameObject.FindGameObjectsWithTag("WareHouse");
        world        = new double[3, WorldObjects.Length];
        for (int i = 0; i < WorldObjects.Length; i++)
        {
            world[0, i] = WorldObjects[i].transform.position.x;
            world[1, i] = WorldObjects[i].transform.position.y;
            world[2, i] = WorldObjects[i].transform.position.z;
        }
        data.WareHouseArray = world;

        //Colecting Rock object info
        WorldObjects = GameObject.FindGameObjectsWithTag("WoodCutter");
        world        = new double[3, WorldObjects.Length];
        for (int i = 0; i < WorldObjects.Length; i++)
        {
            world[0, i] = WorldObjects[i].transform.position.x;
            world[1, i] = WorldObjects[i].transform.position.y;
            world[2, i] = WorldObjects[i].transform.position.z;
        }
        data.WoodCutterArray = world;

        //Colecting Rock object info
        WorldObjects = GameObject.FindGameObjectsWithTag("Citizen");
        world        = new double[3, WorldObjects.Length];
        for (int i = 0; i < WorldObjects.Length; i++)
        {
            world[0, i] = WorldObjects[i].transform.position.x;
            world[1, i] = WorldObjects[i].transform.position.y;
            world[2, i] = WorldObjects[i].transform.position.z;
        }
        data.CitizensArray = world;
    }