示例#1
0
 private void CalcLevel(int doorValue)
 {
     if (doorValue == gameSettings.exitCode) //if enetred exit code
     {
         exitCode = true;                    //exit flag
         return;
     }
     if (!m_arrayDoorsValue.Contains(doorValue))    //array doesnt contains coeff
     {
         //ioComponent.WriteOutputLine("Number is not in list!");
         ioComponent.WriteOutputLine(phraseProvider.GetPhrase("ValueNotInList"));
         return;
     }
     if (doorValue == gameSettings.previousLevelCode)
     {
         if (stackStorageComponent.GetSize() == 0)  //stack is empty
         {
             ioComponent.WriteOutputLine(phraseProvider.GetPhrase("FirstLevel"));
             return;
         }
         int divider = stackStorageComponent.Pop();
         for (int i = 0; i < gameSettings.doorsAmount - 1; i++)
         {
             m_arrayDoorsValue[i] /= divider;     // return for previous level
         }
     }
     else
     {
         for (int i = 0; i < gameSettings.doorsAmount - 1; i++)
         {
             try
             { // "checked" - to check out of range int32
                 m_arrayDoorsValue[i] = checked (m_arrayDoorsValue[i] * doorValue);
             }
             catch (OverflowException)
             {
                 // if some value in m_arrayDoorsValue > maxValueInt32
                 this.Reset();
                 stackStorageComponent.Clear();
                 ioComponent.WriteOutputLine(phraseProvider.GetPhrase("Win"));
                 return;
             }
         }
         stackStorageComponent.Push(doorValue);
     }
 }