/// <summary> /// Generate an <see cref="AbstractItem"/> that is correct for the game solution /// </summary> /// <param name="ItemKind"></param> /// <returns></returns> private AbstractItem GenerateCorrectAbstractItem(E_ItemKind ItemKind) { int wvRandom; E_Gradiation wvGradiation; E_Shape wvShape; E_Color wvColor; E_Texture wvTexture; AbstractItem wvAbstractItem = new AbstractItem(E_ItemType.A, ItemKind); ItemGraficalProperty wvProperty = new ItemGraficalProperty(); List <E_PropertiesKind> wvPropertiesKind = new List<E_PropertiesKind>(); wvRandom = attRandom.Next((int)E_PropertiesKind._NULL + 1 ,(int)E_PropertiesKind._END); if (ItemKind == E_ItemKind.HAT)//Because in our DB only HATS have the E_PropertyKind.SHAPE implemented { for (int i = (int)E_PropertiesKind._NULL + 1; i < (int)E_PropertiesKind._END ; i++) { if (i != wvRandom) wvPropertiesKind.Add((E_PropertiesKind)i); } } else { for (int i = (int)E_PropertiesKind._NULL + 1; i < (int)E_PropertiesKind._END; i++) { if (i != (int)E_PropertiesKind.SHAPE) wvPropertiesKind.Add((E_PropertiesKind)i); } } wvGradiation = E_Gradiation._NULL; foreach (E_PropertiesKind pk in wvPropertiesKind) { wvProperty = new ItemGraficalProperty(); switch (pk) { case E_PropertiesKind.COLOR: #region Color from Gradiation List<E_Color> wvColors = new List<E_Color>(); if(wvGradiation == E_Gradiation._NULL)//This because is no possible to have WHITE items with DARK graiation or DARK item with LIGHT gradaition { for (int i = (int)E_Color._NULL + 1; i < (int)E_Color._END; i++) { wvColors.Add((E_Color)i); } } else { for (int i = (int)E_Color._NULL + 1; i < (int)E_Color._END; i++) { if ((E_Color)i != E_Color.BLACK && (E_Color)i != E_Color.WHITE) wvColors.Add((E_Color)i); } } wvRandom = attRandom.Next(wvColors.Count); wvColor = wvColors[wvRandom]; #endregion wvProperty.SetContent(pk, wvColor); break; case E_PropertiesKind.GRADIATION: wvRandom = attRandom.Next(1 + (int)E_Gradiation._NULL, (int)E_Gradiation._END); wvGradiation = (E_Gradiation)wvRandom; wvProperty.SetContent(pk, wvGradiation); break; case E_PropertiesKind.SHAPE: wvRandom = attRandom.Next(1 + (int)E_Shape._NULL, (int)E_Shape._END); wvShape = (E_Shape)wvRandom; wvProperty.SetContent(pk, wvShape); break; default: //TEXTURE wvRandom = attRandom.Next(1 + (int)E_Texture._NULL, (int)E_Texture._END); wvTexture = (E_Texture)wvRandom; wvProperty.SetContent(pk, wvTexture); break; } wvAbstractItem.AddProperty(wvProperty); } return wvAbstractItem; }
public AlredyWearingAnItemException(E_ItemKind ItemKind) { this.ItemKind = ItemKind; }