/// <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"); }
//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); }
// 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); }
/// <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"); }
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; }