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); } }