private void lvStartGame_EditCommit(object sender, EditListView.mEditCommit e) { SayiTahminIcerik sti = lvStartGameToSayiTahmin(null); ReflectFunctions.SetPropertyValueDirect(sti, e.BaseItem.Name, e.Value, YesNoCombo.Items[0].ToString()); GlobalVariants.ActiveProfile.LastGameProp = sti; refreshYildizPuani(sti); }
public static int GetDifficultLevel(SayiTahminIcerik sticerik) { int dpoints = 100; int ibasorta = (sticerik.MaxBasamak + sticerik.MinBasamak) / 2; if (ibasorta <= 3) { dpoints -= 30; } else { dpoints -= (30 - ibasorta * 3); } int isure = sticerik.Sure / 10; if (isure == 0 || isure > 20) { dpoints -= 20; } else if (isure < 20) { dpoints -= isure; } if (sticerik.RakalmarFarkli) { dpoints -= 15; } if (sticerik.GecmisiGoster && !sticerik.VectorelMode) { dpoints -= 10; } if (sticerik.YanlisTahminSayisi <= 0 || sticerik.YanlisTahminSayisi > 20) { dpoints -= 20; } else { dpoints -= sticerik.YanlisTahminSayisi; } if (dpoints <= 10) { return(0); } if (dpoints >= 90) { return(6); } float fpoint = (float)dpoints; float fsonuc = fpoint / 100f * 6f; return((int)Math.Round(fsonuc)); }
/// <summary> /// Yeni bir oyun başlatır /// </summary> /// <param name="stgamedata">Başlatılacak oyun içeriğini tutan data</param> public void StartGame(SayiTahminIcerik stgamedata, UserProfile gamerProfile) { if (IsGameStarted) { throw new Exception(String.GetLangText("STG_ERR_NEWGAME_EXC")); } if (stgamedata == null) { throw new Exception(String.GetLangText("STG_ERR_NULL_EXC")); } SayiTahminData = stgamedata; GamerProfile = gamerProfile; StartGame(false); }
/// <summary> /// Reflection ile SayiTahminIcerik sınıfının içeriğini EditListView'e aktaracağız. /// </summary> /// <param name="icerik"></param> void fillStartGameLv(SayiTahminIcerik icerik) { lvStartGame.Items.Clear(); Type type = icerik.GetType(); PropertyInfo[] allProperties = type.GetProperties(); foreach (var property in allProperties) { if (property.CustomAttributes == null) { continue; } var cdata = (SayiTahminAttribute)property.GetCustomAttribute(typeof(SayiTahminAttribute)); if (cdata == null) { continue; } ListViewItem lvItem = new ListViewItem() { Name = property.Name, Text = GlobalVariants.PhraseList[cdata.Description]?.Text ?? cdata.Description }; ListViewItem.ListViewSubItem lvSubItem = new ListViewItem.ListViewSubItem(); if (property.PropertyType == typeof(bool)) { if ((bool)property.GetValue(icerik, null)) { lvSubItem.Text = YesNoCombo.Items[0].ToString(); } else { lvSubItem.Text = YesNoCombo.Items[1].ToString(); } } else { lvSubItem.Text = property.GetValue(icerik, null)?.ToString(); } EditListView.EditItemTag editItemTag = new EditListView.EditItemTag(cdata.Group); lvSubItem.Tag = editItemTag; lvItem.SubItems.Add(lvSubItem); lvStartGame.Items.Add(lvItem); } }
private void btnStartGame_Click(object sender, EventArgs e) { SayiTahminIcerik sti = lvStartGameToSayiTahmin(null); sti.VectorelMode = CWMode; if (sti.MinBasamak > sti.MaxBasamak) { Mesaj.mbox.Göster(String.GetLangText("GLB_ERROR_MINMAX")); return; } if (ActiveGame.IsGameStarted) { return; } GlobalVariants.ActiveProfile.LastGameProp = sti; ActiveGame.StartGame(sti, GlobalVariants.ActiveProfile); //starZorluk.YıldızPuanı = SayiTahminChecker.GetDifficultLevel(GlobalVariants.ActiveProfile.LastGameProp); }
/// <summary> /// EditListView deki itemleri Reflection yardımıyla SayiTahminIcerik sınıfına çeviriyoruz. /// </summary> /// <param name="prototype"></param> /// <returns></returns> SayiTahminIcerik lvStartGameToSayiTahmin(SayiTahminIcerik prototype) { SayiTahminIcerik stIcerik = prototype ?? new SayiTahminIcerik(); Type type = stIcerik.GetType(); foreach (ListViewItem lvItem in lvStartGame.Items) { PropertyInfo pInfo = type.GetProperty(lvItem.Name); Type mtype = pInfo.PropertyType; TypeConverter tconvert = TypeDescriptor.GetConverter(mtype); string itemtext = lvItem.SubItems[1].Text; if (mtype == typeof(bool)) { itemtext = (itemtext == YesNoCombo.Items[0].ToString()).ToString(); } object obj = tconvert.ConvertFromString(itemtext); pInfo.SetValue(stIcerik, obj); } return(stIcerik); }
private void refreshYildizPuani(SayiTahminIcerik sti) { sti.VectorelMode = CWMode; starZorluk.YıldızPuanı = SayiTahminChecker.GetDifficultLevel(sti); }