public bool OpenProject() { bool loadSuccessful = true; Microsoft.Win32.OpenFileDialog openDialog = new Microsoft.Win32.OpenFileDialog(); openDialog.DefaultExt = DEFAULT_EXT; openDialog.Filter = FILTER; bool?result = openDialog.ShowDialog(); bool isCorrectFileType = System.Text.RegularExpressions.Regex.IsMatch(openDialog.FileName, DEFAULT_EXT); if (result == true && isCorrectFileType) //User pressed OK and the extension is correct { loadSuccessful = true; projectFileName = openDialog.FileName; IFormatter format = new BinaryFormatter(); Stream stream = new FileStream(projectFileName, FileMode.Open, FileAccess.Read, FileShare.Read); ProjectData loadedProject = (ProjectData)format.Deserialize(stream); savedPrizeLevels = loadedProject.savedPrizeLevels; savedGameSetup = loadedProject.savedGameSetup; savedDivisions = loadedProject.savedDivisions; } else if (result == true && !isCorrectFileType) //User pressed OK, but the extension is incorrect { System.Windows.MessageBox.Show("The file must be of type " + DEFAULT_EXT); loadSuccessful = this.OpenProject(); } else if (result == false) //User pressed Cancel or closed the dialog box { loadSuccessful = false; } return(loadSuccessful); }
public void testBuildGameDataThreeDivisonsFourPicksWithLoss() { //Custom input for a game GameSetupModel gs = new GameSetupModel(); gs.maxPermutations = 1000; gs.totalPicks = 4; PrizeLevel pl1 = new PrizeLevel(); pl1.isInstantWin = false; pl1.numCollections = 3; pl1.prizeValue = 100; PrizeLevel pl2 = new PrizeLevel(); pl2.isInstantWin = false; pl2.numCollections = 2; pl2.prizeValue = 50; PrizeLevel pl3 = new PrizeLevel(); pl3.isInstantWin = false; pl3.numCollections = 2; pl3.prizeValue = 25; PrizeLevels pls = new PrizeLevels(); pls.addPrizeLevel(pl1); pls.addPrizeLevel(pl2); pls.addPrizeLevel(pl3); DivisionModel dm1 = new DivisionModel(); dm1.addPrizeLevel(pl1); DivisionModel dm2 = new DivisionModel(); dm2.addPrizeLevel(pl2); DivisionModel dm3 = new DivisionModel(); dm3.addPrizeLevel(pl2); dm3.addPrizeLevel(pl3); DivisionModel dm4 = new DivisionModel(); DivisionsModel dms = new DivisionsModel(); dms.addDivision(dm1); dms.addDivision(dm2); dms.addDivision(dm3); dms.addDivision(dm4); //File Generator FileGenerationService fgs = new FileGenerationService(); fgs.buildGameData(dms, pls, gs, "testBuildGameDataThreeDivisonsFourPicksWithLoss"); }
/// <summary> /// Sets model of the Divisions panel /// </summary> /// <param name="model">The model instance</param> public void SetModel(DivisionsModel model) { if (_model != null) { _model.PropertyChanged -= DivisionsListChanged; } _model = model ?? new DivisionsModel(); DataBind(); }
public void testGetDivision() { DivisionsModel dm = new DivisionsModel(); for (int i = 0; i < numberOfTestRuns; i++) { DivisionModel div = new DivisionModel(); dm.addDivision(div); Assert.IsTrue(dm.getDivision(i) != null, "Number of divisions is wrong."); } }
public void SaveProject(GameSetupModel gsObject, PrizeLevels.PrizeLevels plsObject, DivisionsModel divisionsList) { if (isProjectSaved) { savedGameSetup = gsObject; savedPrizeLevels = plsObject; savedDivisions = divisionsList; IFormatter formatter = new BinaryFormatter(); Stream stream = new FileStream(projectFileName, FileMode.OpenOrCreate, FileAccess.Write, FileShare.None); formatter.Serialize(stream, this); stream.Close(); } else { SaveProjectAs(gsObject, plsObject, divisionsList); } }
public void testBuildGameDataMaxDivison() { GameSetupModel gs = new GameSetupModel(); gs.maxPermutations = 300000; gs.totalPicks = 20; int numPrizeLevels = 12; PrizeLevel[] prizes = new PrizeLevel[numPrizeLevels]; PrizeLevels pls = new PrizeLevels(); for (int i = 0; i < numPrizeLevels; i++) { prizes[i] = new PrizeLevel(); prizes[i].isInstantWin = false; prizes[i].numCollections = i + 1; prizes[i].prizeValue = 100 * i; pls.addPrizeLevel(prizes[i]); } int numberOfDivions = 30; DivisionModel[] divisions = new DivisionModel[numberOfDivions]; DivisionsModel dms = new DivisionsModel(); Random rand = new Random(); for (int i = 0; i < numberOfDivions; i++) { divisions[i] = new DivisionModel(); divisions[i].addPrizeLevel(prizes[rand.Next(0, 12)]); dms.addDivision(divisions[i]); } FileGenerationService fgs = new FileGenerationService(); fgs.buildGameData(dms, pls, gs, "T:\\Work\\JunkOut\\MaxTest.txt"); }
public void testBuildGameDataFiveDivisionsNinePicksWithFailDivision() { GameSetupModel gs = new GameSetupModel(); gs.maxPermutations = 1000; gs.totalPicks = 9; PrizeLevel pl1 = new PrizeLevel(); pl1.isInstantWin = false; pl1.numCollections = 5; pl1.prizeValue = 100; PrizeLevel pl2 = new PrizeLevel(); pl2.isInstantWin = false; pl2.numCollections = 4; pl2.prizeValue = 50; PrizeLevel pl3 = new PrizeLevel(); pl3.isInstantWin = false; pl3.numCollections = 4; pl3.prizeValue = 25; PrizeLevel pl4 = new PrizeLevel(); pl4.isInstantWin = false; pl4.numCollections = 3; pl4.prizeValue = 10; PrizeLevel pl5 = new PrizeLevel(); pl5.isInstantWin = false; pl5.numCollections = 3; pl5.prizeValue = 5; PrizeLevels pls = new PrizeLevels(); pls.addPrizeLevel(pl1); pls.addPrizeLevel(pl2); pls.addPrizeLevel(pl3); pls.addPrizeLevel(pl4); pls.addPrizeLevel(pl5); DivisionModel dm1 = new DivisionModel(); dm1.addPrizeLevel(pl1); DivisionModel dm2 = new DivisionModel(); dm2.addPrizeLevel(pl1); dm2.addPrizeLevel(pl2); DivisionModel dm3 = new DivisionModel(); dm3.addPrizeLevel(pl1); dm3.addPrizeLevel(pl3); DivisionModel dm4 = new DivisionModel(); dm4.addPrizeLevel(pl2); dm4.addPrizeLevel(pl3); DivisionModel dm5 = new DivisionModel(); dm5.addPrizeLevel(pl4); dm5.addPrizeLevel(pl5); DivisionModel dm6 = new DivisionModel(); DivisionsModel dms = new DivisionsModel(); dms.addDivision(dm1); dms.addDivision(dm2); dms.addDivision(dm3); dms.addDivision(dm4); dms.addDivision(dm5); dms.addDivision(dm6); FileGenerationService fgs = new FileGenerationService(); fgs.buildGameData(dms, pls, gs, "testBuildGameDataFiveDivisionsNinePicksWithFail"); }
public void testBuildGameDataFourDivisionsSixPicks() { GameSetupModel gs = new GameSetupModel(); gs.maxPermutations = 1000; gs.totalPicks = 6; PrizeLevel pl1 = new PrizeLevel(); pl1.isInstantWin = false; pl1.numCollections = 3; pl1.prizeValue = 100; PrizeLevel pl2 = new PrizeLevel(); pl2.isInstantWin = false; pl2.numCollections = 3; pl2.prizeValue = 50; PrizeLevel pl3 = new PrizeLevel(); pl3.isInstantWin = false; pl3.numCollections = 3; pl3.prizeValue = 25; PrizeLevels pls = new PrizeLevels(); pls.addPrizeLevel(pl1); pls.addPrizeLevel(pl2); pls.addPrizeLevel(pl3); DivisionModel dm1 = new DivisionModel(); dm1.addPrizeLevel(pl1); dm1.addPrizeLevel(pl2); DivisionModel dm2 = new DivisionModel(); dm2.addPrizeLevel(pl2); dm2.addPrizeLevel(pl3); DivisionModel dm3 = new DivisionModel(); dm3.addPrizeLevel(pl1); dm3.addPrizeLevel(pl3); DivisionModel dm4 = new DivisionModel(); dm4.addPrizeLevel(pl2); DivisionsModel dms = new DivisionsModel(); dms.addDivision(dm1); dms.addDivision(dm2); dms.addDivision(dm3); dms.addDivision(dm4); FileGenerationService fgs = new FileGenerationService(); fgs.buildGameData(dms, pls, gs, "testBuildGameDataFourDivisionsSixPicks"); }
public void testBuildGameDataFourDivisonsFivePicks() { //Custom input for a game GameSetupModel gs = new GameSetupModel(); gs.maxPermutations = 1000; gs.totalPicks = 5; gs.isNearWin = true; gs.nearWins = 2; PrizeLevel pl1 = new PrizeLevel(); pl1.isInstantWin = false; pl1.numCollections = 3; pl1.prizeValue = 100; PrizeLevel pl2 = new PrizeLevel(); pl2.isInstantWin = false; pl2.numCollections = 2; pl2.prizeValue = 50; PrizeLevel pl3 = new PrizeLevel(); pl3.isInstantWin = false; pl3.numCollections = 2; pl3.prizeValue = 25; PrizeLevel pl4 = new PrizeLevel(); pl4.isInstantWin = false; pl4.numCollections = 4; pl4.prizeValue = 10000; PrizeLevel pl5 = new PrizeLevel(); pl5.isInstantWin = false; pl5.numCollections = 3; pl5.prizeValue = 1000; PrizeLevels pls = new PrizeLevels(); pls.addPrizeLevel(pl1); pls.addPrizeLevel(pl2); pls.addPrizeLevel(pl3); pls.addPrizeLevel(pl4); pls.addPrizeLevel(pl5); DivisionModel dm1 = new DivisionModel(); dm1.addPrizeLevel(pl1); DivisionModel dm2 = new DivisionModel(); dm2.addPrizeLevel(pl2); DivisionModel dm3 = new DivisionModel(); dm3.addPrizeLevel(pl2); dm3.addPrizeLevel(pl3); DivisionModel dm4 = new DivisionModel(); dm4.addPrizeLevel(pl5); DivisionModel dm5 = new DivisionModel(); dm5.addPrizeLevel(pl5); dm5.addPrizeLevel(pl2); DivisionsModel dms = new DivisionsModel(); dms.addDivision(dm1); dms.addDivision(dm2); dms.addDivision(dm3); dms.addDivision(dm4); dms.addDivision(dm5); //File Generator FileGenerationService fgs = new FileGenerationService(); fgs.buildGameData(dms, pls, gs, "T:\\Work\\JunkOut\\testBuildGameDataFourDivisonsFivePicks.txt"); }
public void SaveProjectAs(GameSetupModel gsObject, PrizeLevels.PrizeLevels plsObject, DivisionsModel divisionsList) { Microsoft.Win32.SaveFileDialog dialog = new Microsoft.Win32.SaveFileDialog(); if (String.IsNullOrEmpty(projectFileName)) { dialog.FileName = "CollectionGameGeneratorProject" + DEFAULT_EXT; } else { dialog.FileName = projectFileName; } dialog.DefaultExt = DEFAULT_EXT; dialog.Filter = FILTER; bool?result = dialog.ShowDialog(); if (result == true) { projectFileName = dialog.FileName; isProjectSaved = true; SaveProject(gsObject, plsObject, divisionsList); } }
/// <summary> /// Constructs project writer with references to the project models /// </summary> /// <param name="plModel">PrizeLevels model</param> /// <param name="gsuModel">GameSetup model</param> /// <param name="divModel">Divisions model</param> public ProjectWriter(PrizeLevelsModel plModel, GameSetupModel gsuModel, DivisionsModel divModel) { project = new AllModelsModel(plModel, gsuModel, divModel); }
/// <summary> /// Constructs a ProjectData object that holds the references to the models of the project /// </summary> /// <param name="plModel"></param> /// <param name="gsuModel"></param> /// <param name="divModel"></param> public AllModelsModel(PrizeLevelsModel plModel, GameSetupModel gsuModel, DivisionsModel divModel) { PrizeLevelsModel = plModel; GameSetupModel = gsuModel; DivisionsModel = divModel; }
/// <summary> /// Constructor that creates the model data for the client project /// </summary> public AllModelsModel() { GameSetupModel = new GameSetupModel(); PrizeLevelsModel = new PrizeLevelsModel(); DivisionsModel = new DivisionsModel(); }