public LaneSpace(int spaceId, int x, int y, Color color, RotateEnum rotate) : base(spaceId, x, y, color, rotate) { double sizeMultiplier = FormatManager.GetSizeMultiplier(); int CornerWidth = (int)(150 * sizeMultiplier); int CornerHeight = (int)(150 * sizeMultiplier); int LaneWidth = (int)(100 * sizeMultiplier); int LaneHeight = (int)(150 * sizeMultiplier); size = new Size(LaneWidth, LaneHeight); }
//Reads text file and generates board spaces. //Creates 40 spaces public void LoadBoardFromFile() { //Determines the dimensions of the spaces and the starting //locations for the four board lanes. double sizeMultiplier = FormatManager.GetSizeMultiplier(); int SpaceSize = (int)((size.Width / 11) * sizeMultiplier); int LaneOneY = SpaceSize * 9 + SpaceSize; int LaneTwoX = 0; int LaneThreeY = 0; int LaneFourX = SpaceSize * 9 + SpaceSize; //Variables for reading the text file int i = 1; int x = 0; int id; String spaceType; String line; String[] lineSplit; char token = ','; reader = new StreamReader(fileLocation); //Add the four constant spaces and the inner board (rectangle within board). innerBoard = new RectangleObject(LaneTwoX + SpaceSize, LaneThreeY + SpaceSize, new Size(SpaceSize * 9, SpaceSize * 9)); boardSpaces.Add(new JailSpace(JAIL_SPACE_ID, LaneOneY, LaneOneY, Color.White, new Size(SpaceSize, SpaceSize), RotateEnum.DoNotRotate)); boardSpaces.Add(new FreeParkingSpace(FREE_PARKING_SPACE_ID, LaneTwoX, LaneOneY, Color.White, new Size(SpaceSize, SpaceSize), RotateEnum.Rotate270)); boardSpaces.Add(new GoToJailSpace(GO_TO_JAIL_SPACE_ID, LaneTwoX, LaneThreeY, Color.White, new Size(SpaceSize, SpaceSize), RotateEnum.Rotate180)); boardSpaces.Add(new GoSpace(GO_SPACE_ID, LaneFourX, LaneThreeY, Color.White, new Size(SpaceSize, SpaceSize), RotateEnum.Rotate90)); //Reads the whole file and generates a board space for each line while (!reader.EndOfStream) { line = reader.ReadLine(); lineSplit = line.Split(token); spaceType = lineSplit[0]; //Moves to next lane once the lane is filled if (i == 10) { i = 1; x++; } //Keeps the id consistent across lanes id = (i + (x * 10)); //Used to determine what kind of board space to create //Each case is a space type and each if is a lane switch (spaceType) { case "Property": Property property = new Property(lineSplit[1], int.Parse(lineSplit[2]), 0, Color.FromName(lineSplit[3].Trim())); if (x == 0) { boardSpaces.Add(new PropertySpace(id, LaneFourX, (i * SpaceSize) + (SpaceSize - SpaceSize), property, new Size(SpaceSize, SpaceSize), RotateEnum.Rotate90)); } else if (x == 1) { boardSpaces.Add(new PropertySpace(id, ((10 - i) * SpaceSize) + (SpaceSize - SpaceSize), LaneOneY, property, new Size(SpaceSize, SpaceSize), RotateEnum.DoNotRotate)); } else if (x == 2) { boardSpaces.Add(new PropertySpace(id, LaneTwoX, ((10 - i) * SpaceSize) + (SpaceSize - SpaceSize), property, new Size(SpaceSize, SpaceSize), RotateEnum.Rotate270)); } else { boardSpaces.Add(new PropertySpace(id, (i * SpaceSize) + (SpaceSize - SpaceSize), LaneThreeY, property, new Size(SpaceSize, SpaceSize), RotateEnum.Rotate180)); } break; case "Railroad": Railroad railroad = new Railroad(lineSplit[1], int.Parse(lineSplit[2])); if (x == 0) { boardSpaces.Add(new RailroadSpace(id, LaneFourX, (i * SpaceSize) + (SpaceSize - SpaceSize), railroad, new Size(SpaceSize, SpaceSize), RotateEnum.Rotate90)); } else if (x == 1) { boardSpaces.Add(new RailroadSpace(id, ((10 - i) * SpaceSize) + (SpaceSize - SpaceSize), LaneOneY, railroad, new Size(SpaceSize, SpaceSize), RotateEnum.DoNotRotate)); } else if (x == 2) { boardSpaces.Add(new RailroadSpace(id, LaneTwoX, ((10 - i) * SpaceSize) + (SpaceSize - SpaceSize), railroad, new Size(SpaceSize, SpaceSize), RotateEnum.Rotate270)); } else { boardSpaces.Add(new RailroadSpace(id, (i * SpaceSize) + (SpaceSize - SpaceSize), LaneThreeY, railroad, new Size(SpaceSize, SpaceSize), RotateEnum.Rotate180)); } break; case "CommunityChest": if (x == 0) { boardSpaces.Add(new CommunityChestSpace(id, LaneFourX, (i * SpaceSize) + (SpaceSize - SpaceSize), new Size(SpaceSize, SpaceSize), RotateEnum.Rotate90)); } else if (x == 1) { boardSpaces.Add(new CommunityChestSpace(id, ((10 - i) * SpaceSize) + (SpaceSize - SpaceSize), LaneOneY, new Size(SpaceSize, SpaceSize), RotateEnum.DoNotRotate)); } else if (x == 0) { boardSpaces.Add(new CommunityChestSpace(id, LaneTwoX, ((10 - i) * SpaceSize) + (SpaceSize - SpaceSize), new Size(SpaceSize, SpaceSize), RotateEnum.Rotate270)); } else { boardSpaces.Add(new CommunityChestSpace(id, (i * SpaceSize) + (SpaceSize - SpaceSize), LaneThreeY, new Size(SpaceSize, SpaceSize), RotateEnum.Rotate180)); } break; case "Chance": if (x == 0) { boardSpaces.Add(new ChanceSpace(id, LaneFourX, (i * SpaceSize) + (SpaceSize - SpaceSize), new Size(SpaceSize, SpaceSize), RotateEnum.Rotate90)); } else if (x == 1) { boardSpaces.Add(new ChanceSpace(id, ((10 - i) * SpaceSize) + (SpaceSize - SpaceSize), LaneOneY, new Size(SpaceSize, SpaceSize), RotateEnum.DoNotRotate)); } else if (x == 2) { boardSpaces.Add(new ChanceSpace(id, LaneTwoX, ((10 - i) * SpaceSize) + (SpaceSize - SpaceSize), new Size(SpaceSize, SpaceSize), RotateEnum.Rotate270)); } else { boardSpaces.Add(new ChanceSpace(id, (i * SpaceSize) + (SpaceSize - SpaceSize), LaneThreeY, new Size(SpaceSize, SpaceSize), RotateEnum.Rotate180)); } break; case "Utility": Utility utility = new Utility(lineSplit[1], 100); if (x == 0) { boardSpaces.Add(new UtilitySpace(id, LaneFourX, (i * SpaceSize) + (SpaceSize - SpaceSize), utility, new Size(SpaceSize, SpaceSize), RotateEnum.Rotate90)); } else if (x == 1) { boardSpaces.Add(new UtilitySpace(id, ((10 - i) * SpaceSize) + (SpaceSize - SpaceSize), LaneOneY, utility, new Size(SpaceSize, SpaceSize), RotateEnum.DoNotRotate)); } else if (x == 2) { boardSpaces.Add(new UtilitySpace(id, LaneTwoX, ((10 - i) * SpaceSize) + (SpaceSize - SpaceSize), utility, new Size(SpaceSize, SpaceSize), RotateEnum.Rotate270)); } else { boardSpaces.Add(new UtilitySpace(id, (i * SpaceSize) + (SpaceSize - SpaceSize), LaneThreeY, utility, new Size(SpaceSize, SpaceSize), RotateEnum.Rotate180)); } break; } i++; } reader.Close(); }