/// <summary> /// Прошедшее время глагола (спряжение по залогу и роду) /// </summary> public string Past(Voice voice, Gender gender) { var i = (int)voice * 78; i += 7 + (int)(gender.Gen()); return(Verbs.schemas[SchemaIndex].GetForm(Word, i)); }
/// <summary> /// Личные местоимения (я, ты, он, она, они, и т.д.) /// </summary> /// <param name="gender">Род только для 3 лица</param> /// <param name="preposition">С предлогом</param> public static string Personal(Case @case, Person person, Gender gender = Gender.M, bool preposition = false) { var gen = gender.Gen(); var col = 0; if (gen == Gender.P) { col = 5 + (int)person; } else { switch (person) { case Person.First: col = 0; break; case Person.Second: col = 1; break; case Person.Third: col = 2 + (int)gen; break; } } var row = 0 + 2 * (int)@case + (preposition ? 1 : 0); return(Items[row][col]); }
/// <summary> /// Притяжательные возвратные (свой, своя, свое и т.д.) /// </summary> public static string PossessiveReflexive(Case @case, Gender gender) { var gen = gender.Gen(); var col = (int)gen; var row = 52 + @case.IndexWithAnimate(gender); return(Items[row][col]); }
/// <summary> /// Притяжательные местоимения (мой, твой, его, и т.д.) /// </summary> /// <param name="person">Лицо говорящего. Не используется для number = Number.Plural</param> /// <param name="number">Число (ед: мой твой его, множ: ваш)</param> public static string Possessive(Case @case, Person person, Gender gender, Number number = Number.Singular) { var gen = gender.Gen(); var col = (int)gen; var row = 20 + 8 * (number == Number.Singular ? (int)person : 3) + @case.IndexWithAnimate(gender);; return(Items[row][col]); }
/// <summary> /// Словоформы по падежам, родам и числам /// </summary> public string this[Case @case, Gender gender] { get { var i = @case.IndexWithAnimate(gender); i += 8 * (int)gender.Gen(); return(Adjectives.schemas[SchemaIndex].GetForm(Word, i)); } }
/// <summary> /// Причастие (спряжение по залогу, падежу, роду и времени) /// </summary> public string Participle(Voice voice, Case @case, Gender gender, Tense tense) { var i = @case.IndexWithAnimate(gender); i += (int)voice * 78; i += 14; i += 8 * (int)gender.Gen(); i += 32 * (int)tense; return(Verbs.schemas[SchemaIndex].GetForm(Word, i)); }