private void AddDelayTime()
 {
     mCompanies[0].TimeToDevelopNextFunctionality = (int)wordPressNumericUpDown.Value;
     mCompanies[1].TimeToDevelopNextFunctionality = (int)joomlaNumericUpDown.Value;
     mCompanies[2].TimeToDevelopNextFunctionality = (int)drupalNumericUpDown.Value;
     var delayFunc = new Funcionality("Delay", "stagnation");
     foreach (var company in mCompanies)
     {
         if (company.TimeToDevelopNextFunctionality > 0)
         {
             company.mFunctionalities.Add(delayFunc, company.TimeToDevelopNextFunctionality);
             company.developFunctionality(delayFunc);
             company.State = Company.CompanyState.ProccessingFunctionality;
         }
     }
 }
        public void finishDevelopFuncionality()
        {
            ImplementedFunctionalites.Add(mCurrentlyDevelopedFuncionality);

            mCurrentlyDevelopedFuncionality = null;
            TimeToDevelopNextFunctionality = int.MaxValue;

            State = MissingFunctionalities.Count == 0 ? CompanyState.DoneAllFunctionalities : CompanyState.Idle;

            if (State == CompanyState.DoneAllFunctionalities) {
                OrderOfFunctionalitiesImplementationWithCosts = ImplementedFunctionalites.Select(func => new Tuple<Funcionality, int>(func, mFunctionalities[func])).ToList();
            }
        }
 public void developFunctionality(Funcionality func)
 {
     mCurrentlyDevelopedFuncionality = func;
     TimeToDevelopNextFunctionality = mFunctionalities[func];
     State = CompanyState.ProccessingFunctionality;
 }
 public void addRequiredFuncionalityWithCost(Funcionality func, int functionalityCost)
 {
     mFunctionalities.Add(func, functionalityCost);
 }
 public int functionalityCost(Funcionality func)
 {
     return mFunctionalities[func];
 }
        private void FillCompaniesFunctionalities()
        {
            int numberOfCompanies = 3;
            List<String> companyNames = new List<String>{"WordPress", "Joomla", "Drupal"};

            for (int i = 0; i < numberOfCompanies; i++)
            {
                mCompanies.Add(new Company());
                mCompanies[i].Name = companyNames[i];
            }
            foreach (SimulationData data in (List<SimulationData>)dataGridView1.DataSource)
            {
                Funcionality func = new Funcionality(data.Functionality, data.MarketReaction);

                mCompanies[0].addRequiredFuncionalityWithCost(func, data.WordPressCost);
                mCompanies[1].addRequiredFuncionalityWithCost(func, data.JoomlaCost);
                mCompanies[2].addRequiredFuncionalityWithCost(func, data.DrupalCost);

                mFunctionalities.Add(func);
            }

            AddDelayTime();
        }