示例#1
0
 // for setting GUI properly
 public void SetZapfhahnValues(Zapfsaeule selectedZapfsaeule, Zapfhahn selectedZapfhahn, CustomerSimulation customerSimulation)
 {
     this.customerSimulation = customerSimulation;
     this.selectedZapfsaeule = selectedZapfsaeule;
     this.selectedZapfhahn   = selectedZapfhahn;
     this.selectedFuelType   = selectedZapfhahn.GetFuelType();
     // Transaction vo de Zapfsüle wo im GUI slektiert isch
     SelectedFuelLabel.Content  = selectedZapfhahn.GetFuelType().GetFuelTypeName();
     CostPerLiterTextBlock.Text = $"{(decimal)selectedZapfhahn.GetFuelType().GetCostPerLiterInCent() / 100}.-";
     CostBox.Text  = this.selectedZapfsaeule.GetCurrentTransactionFuelAmount() * (decimal)this.selectedZapfhahn.GetFuelType().GetCostPerLiterInCent() / 100 + ".-";
     LiterBox.Text = this.selectedZapfsaeule.GetCurrentTransactionFuelAmount() + " L";
     if (this.selectedZapfsaeule.isTanking())
     {
         TakeFuel.Content = "Stop";
     }
     else if (this.selectedZapfsaeule.isLocked())
     {
         TakeFuel.Content    = "Go pay";
         TakeFuel.Background = Brushes.LightGray;
         TakeFuel.IsEnabled  = false;
     }
     else if (selectedZapfsaeule.isLocked() == false)
     {
         TakeFuel.Content = "Start Tanking";
         TakeFuel.ClearValue(BackgroundProperty);
         TakeFuel.IsEnabled = true;
     }
     RefreshTransactions();
 }
示例#2
0
        //---------------------------------------------------------------------

        private IFuelType GetFuelType(InputVar <int> fuelTypeIndex, Dictionary <string, int> lineNumbers, InputParameters parameters)
        {
            IFuelType selectedFT = null;

            foreach (IFuelType ftype in parameters.FuelTypes)
            {
                if (ftype.Index == fuelTypeIndex.Value)
                {
                    return(ftype);
                }
            }

            if (selectedFT == null)
            {
                throw new InputValueException(fuelTypeIndex.Value.String,
                                              "The fuel type {0} was not previously listed",
                                              fuelTypeIndex.Value.String);
            }

            int lineNumber;

            if (lineNumbers.TryGetValue(fuelTypeIndex.Value.String, out lineNumber))
            {
                throw new InputValueException(fuelTypeIndex.Value.String,
                                              "The fuel type {0} was previously used on line {1}",
                                              fuelTypeIndex.Value.String, lineNumber);
            }
            else
            {
                lineNumbers[fuelTypeIndex.Value.String] = LineNumber;
            }


            return(selectedFT);
        }
示例#3
0
 /// <summary>
 /// Switch for:
 /// Pumps Gas from a selected Zapfsäule. If the Zapfsaeule is already Tanking the Process is stopped
 /// If The Zapfsaeule isnt tanking yet the Zapfsaeule is locked and the Tanking process is started
 /// </summary>
 /// <param name="zapfsaeule">the selected zapfsaeule to tank from</param>
 /// <param name="fuelType">the selected fueltype to take from the zapfsaeule</param>
 public void PumpGasFromZapfsauele(Zapfsaeule zapfsaeule, IFuelType fuelType)
 {
     if (zapfsaeule.isTanking())
     {
         this.tankstellenkasse.AddTransaction(zapfsaeule.StopTankingTimer());
     }
     else
     {
         FuelTank currentFuelTank = this.availableFuelTanks.Find(x => x.GetFuelType() == fuelType);
         zapfsaeule.StartTankingTimer(currentFuelTank, this.SaveFuelTanks);
         zapfsaeule.Lock();
     }
 }
        //---------------------------------------------------------------------

        /// <summary>
        /// Writes a trailer file.
        /// </summary>
        /// <param name="gisFilePath">
        /// Path of the .gis file that the trailer file is associated with.
        /// The name of the trailer file is the path with the ".gis"
        /// extension replaced with ".trl".
        /// </param>
        /// <param name="FuelTypes">
        /// List of forest types assigned to classes 1, 2, ...
        /// </param>
        public static void Write(string        gisFilePath,
                                 IFuelType[] FuelTypes)
        {
            string trlFilePath = Path.ChangeExtension(gisFilePath, ".trl");
            using (BinaryWriter writer = new BinaryWriter(File.Open(trlFilePath, FileMode.Create))) 
            {
                //  Record 1
                writer.Write(Trail74Record);

                //  Records 2 to 7 (color scheme)
                //      record  color values
                //      ------  ------------
                //          2   green classes 0 - 127 (doc says 0-128 but that's 129 values)
                //          3   green classes 128 - 255 (doc says 129-255 but that's only 127 values)
                //          4   red classes 0 - 127 (see note for green)
                //          5   red classes 128 - 255 (see note for green)
                //          6   blue classes 0 - 127 (see note for green)
                //          7   blue classes 128 - 255 (see note for green)

                writer.Write(PadTo256Values(green));
                writer.Write(PadTo256Values(red));
                writer.Write(PadTo256Values(blue));

                //  Record 8
                writer.Write(Trail74Record);

                //  Records 9 to 16 (histogram values)
                for (int record = 9; record <= 16; record++)
                    writer.Write(allZeroesRecord);

                //  Records 17 on up (class names: 4 per record)
                writer.Write(MakeClassName(Class0Name));
                //foreach (IFuelType FuelType in FuelTypes)
                //    writer.Write(MakeClassName(FuelType.Name.ToString));
            }
        }
示例#5
0
 public HondaV6Engine(IFuelType fuelType)
 {
     _fuelType = fuelType;
 }
示例#6
0
 public BMWI6Engine(IFuelType fuelType)
 {
     _fuelType = fuelType;
 }
示例#7
0
        //---------------------------------------------------------------------

        protected override IInputParameters Parse()
        {
            ReadLandisDataVar();

            InputParameters parameters = new InputParameters(PlugIn.ModelCore.Species.Count);

            InputVar <int> timestep = new InputVar <int>("Timestep");

            ReadVar(timestep);
            parameters.Timestep = timestep.Value;

            // Table of Fuel coefficients
            InputVar <string> speciesName = new InputVar <string>("Species");
            InputVar <double> FuelCoeff   = new InputVar <double>("Fuel Coefficient");

            Dictionary <string, int> lineNumbers = new Dictionary <string, int>();

            const string HardwoodLabel = "HardwoodMaximum";

            while (!AtEndOfInput && CurrentName != HardwoodLabel)
            {
                StringReader currentLine = new StringReader(CurrentLine);

                ReadValue(speciesName, currentLine);
                ISpecies species = GetSpecies(speciesName.Value);
                CheckForRepeatedName(speciesName.Value, "species", lineNumbers);

                ReadValue(FuelCoeff, currentLine);
                parameters.FuelCoefficients[species.Index] = FuelCoeff.Value;

                CheckNoDataAfter(string.Format("the {0} column", FuelCoeff.Name),
                                 currentLine);
                GetNextLine();
            }

            const string FuelTypeNames = "FuelTypes";

            //------------------------------------------------------------
            InputVar <int> hardwoodMax = new InputVar <int>("HardwoodMaximum");

            ReadVar(hardwoodMax);
            parameters.HardwoodMax = hardwoodMax.Value;

            InputVar <int> deadFirMaxAge = new InputVar <int>("DeadFirMaxAge");

            ReadVar(deadFirMaxAge);
            parameters.DeadFirMaxAge = deadFirMaxAge.Value;


            //------------------------------------------------------------
            //  Read definitions of Fuel maps

            PlugIn.ModelCore.UI.WriteLine("   Reading in the Fuel Assignment table...");
            ReadName(FuelTypeNames);

            List <string> speciesNames = new List <string>();

            InputVar <int>          fi     = new InputVar <int>("Fuel Index (should match table in dynamic fire input file)");
            InputVar <BaseFuelType> bft    = new InputVar <BaseFuelType>("Base Fuel Type");
            InputVar <int>          minAge = new InputVar <int>("Min Age");
            InputVar <int>          maxAge = new InputVar <int>("Max Age");

            lineNumbers.Clear();
            Dictionary <int, int> FuelTypeLineNumbers = new Dictionary <int, int>();

            const string DisturbanceConversionTable = "DisturbanceConversionTable";
            const string EcoregionTable             = "EcoregionTable";

            while (!AtEndOfInput && CurrentName != DisturbanceConversionTable && CurrentName != EcoregionTable)
            {
                StringReader currentLine = new StringReader(CurrentLine);

                ReadValue(fi, currentLine);
                CheckForRepeatedIndex(fi.Value, "fuel type", FuelTypeLineNumbers);

                IFuelType currentFuelType = new FuelType(PlugIn.ModelCore.Species.Count, PlugIn.ModelCore.Ecoregions.Count);
                parameters.FuelTypes.Add(currentFuelType);

                currentFuelType.Index = fi.Value;

                ReadValue(bft, currentLine);
                currentFuelType.BaseFuel = bft.Value;

                // Read the age ranges for the species:
                ReadValue(minAge, currentLine);
                currentFuelType.MinAge = minAge.Value;

                TextReader.SkipWhitespace(currentLine);
                string word = TextReader.ReadWord(currentLine);
                if (word != "to")
                {
                    StringBuilder message = new StringBuilder();
                    message.AppendFormat("Expected \"to\" after the minimum age ({0})",
                                         minAge.Value.String);
                    if (word.Length > 0)
                    {
                        message.AppendFormat(", but found \"{0}\" instead", word);
                    }
                    throw NewParseException(message.ToString());
                }

                ReadValue(maxAge, currentLine);
                currentFuelType.MaxAge = maxAge.Value;

                //  Read the species for the fuel type:
                speciesNames = new List <string>();

                TextReader.SkipWhitespace(currentLine);
                while (currentLine.Peek() != -1)
                {
                    ReadValue(speciesName, currentLine);
                    string name = speciesName.Value.Actual;
                    bool   negativeMultiplier = name.StartsWith("-");
                    if (negativeMultiplier)
                    {
                        name = name.Substring(1);
                        if (name.Length == 0)
                        {
                            throw new InputValueException(speciesName.Value.String,
                                                          "No species name after \"-\"");
                        }
                    }
                    ISpecies species = GetSpecies(new InputValue <string>(name, speciesName.Value.String));
                    if (speciesNames.Contains(species.Name))
                    {
                        throw NewParseException("The species {0} appears more than once.", species.Name);
                    }
                    speciesNames.Add(species.Name);

                    currentFuelType[species.Index] = negativeMultiplier ? -1 : 1;

                    TextReader.SkipWhitespace(currentLine);
                }
                if (speciesNames.Count == 0)
                {
                    throw NewParseException("At least one species is required.");
                }

                GetNextLine();
            }

            //----------------------------------------------------------
            // Optional ecoregion data
            if (ReadOptionalName(EcoregionTable))
            {
                PlugIn.ModelCore.UI.WriteLine("   Loading Ecoregion data...");
                InputVar <int>    fi2           = new InputVar <int>("Fuel Index (Ecoregion Table)");
                InputVar <string> ecoregionName = new InputVar <string>("Ecoregion Name");
                lineNumbers.Clear();

                while (!AtEndOfInput && CurrentName != DisturbanceConversionTable)
                {
                    StringReader currentLine = new StringReader(CurrentLine);

                    ReadValue(fi2, currentLine);
                    IFuelType currentFuelType = GetFuelType(fi2, lineNumbers, parameters);

                    bool[] ecoregions = new bool[PlugIn.ModelCore.Ecoregions.Count];
                    for (int i = 0; i < PlugIn.ModelCore.Ecoregions.Count; i++)
                    {
                        ecoregions[i] = false;
                    }

                    //  Read the ecoregions for the fuel type:
                    List <string> ecoNames = new List <string>();

                    TextReader.SkipWhitespace(currentLine);
                    while (currentLine.Peek() != -1)
                    {
                        ReadValue(ecoregionName, currentLine);
                        IEcoregion ecoregion = GetEcoregion(ecoregionName.Value);

                        if (ecoNames.Contains(ecoregion.Name))
                        {
                            throw NewParseException("The ecoregion {0} appears more than once.", ecoregion.Name);
                        }

                        ecoNames.Add(ecoregion.Name);

                        ecoregions[ecoregion.Index] = true;

                        TextReader.SkipWhitespace(currentLine);
                    }

                    currentFuelType.Ecoregions = ecoregions;

                    GetNextLine();
                }
            }


            //------------------------------------------------------------
            //  Read definitions of Disturbance Types
            PlugIn.ModelCore.UI.WriteLine("   Reading in the Disturbance Type table...");
            ReadName(DisturbanceConversionTable);

            InputVar <int>    fti              = new InputVar <int>("Fuel Index");
            InputVar <int>    maxAgeS          = new InputVar <int>("Max Age");
            InputVar <string> prescriptionName = new InputVar <string>("Prescription");

            lineNumbers.Clear();
            Dictionary <int, int> distTypeLineNumbers = new Dictionary <int, int>();

            const string MapFileNames       = "MapFileNames";
            const string PctConiferFileName = "PctConiferFileName";
            const string PctDeadFirFileName = "PctDeadFirFileName";

            while (!AtEndOfInput && CurrentName != MapFileNames)
            {
                StringReader currentLine = new StringReader(CurrentLine);

                ReadValue(fti, currentLine);

                IDisturbanceType currentDisturbanceType = new DisturbanceType();
                parameters.DisturbanceTypes.Add(currentDisturbanceType);

                currentDisturbanceType.FuelIndex = fti.Value;

                ReadValue(maxAgeS, currentLine);
                currentDisturbanceType.MaxAge = maxAgeS.Value;

                List <string> prescriptionNames = new List <string>();

                TextReader.SkipWhitespace(currentLine);
                while (currentLine.Peek() != -1)
                {
                    ReadValue(prescriptionName, currentLine);
                    prescriptionNames.Add(prescriptionName.Value);

                    TextReader.SkipWhitespace(currentLine);
                }
                if (prescriptionNames.Count == 0)
                {
                    throw NewParseException("At least one prescription is required.");
                }

                currentDisturbanceType.PrescriptionNames = prescriptionNames;

                GetNextLine();
            }
            //------------------------------------------------------------
            // Template for filenames of Fuel maps

            PlugIn.ModelCore.UI.WriteLine("   Reading in map names...");

            InputVar <string> mapFileNames = new InputVar <string>(MapFileNames);

            ReadVar(mapFileNames);
            parameters.MapFileNames = mapFileNames.Value;

            //
            //GetNextLine();
            //------------------------------------------------------------
            // Template for filenames of percent conifer maps

            InputVar <string> pctConiferFileName = new InputVar <string>(PctConiferFileName);

            ReadVar(pctConiferFileName);
            parameters.PctConiferFileName = pctConiferFileName.Value;

            //GetNextLine();
            //------------------------------------------------------------
            // Template for filenames of percent dead fir maps

            InputVar <string> pctDeadFirFileName = new InputVar <string>(PctDeadFirFileName);

            ReadVar(pctDeadFirFileName);
            parameters.PctDeadFirFileName = pctDeadFirFileName.Value;

            CheckNoDataAfter(string.Format("the {0} parameter", PctDeadFirFileName));

            return(parameters);
        }
示例#8
0
 public BMWI6Engine(IFuelType fuelType)
 {
     _fuelType = fuelType;
 }
示例#9
0
 public HondaV6Engine(IFuelType fuelType)
 {
     _fuelType = fuelType;
 }
示例#10
0
        /// <summary>
        ///  constructor for the Zapfhahn
        /// </summary>
        /// <param name="fuelType">Fueltype which the gas nozzle will dispense</param>

        public Zapfhahn(IFuelType fuelType)
        {
            this.fueltype = fuelType;
        }