Naprawa błędów i dalsze plany

Witam w kolejnym wpisie poświęconym IL.

Nie pojawiło się w tym czasie nic nowego, ponieważ byłem pochłonięty naprawą błędów napotkanych przeze mnie w poprzednich wpisach. Mianowicie poprawki w stackowaniu, w końcu będę mógł pokazać jak to działa. Jednak do najtrudniejszych zmian należały (choć i tak nie było najgorzej) to wyparcie indeksowania od zera wszystkich właściwości w bazie co prowadziło do konfliktów nazw po usunięciu jednej z nich ze środka. Poza tym, każda usunięta właściwość z bazy automatycznie wywołuje metodę która usuwa jej pozostałości z każdego przedmiotu w bazie. Mam zamiar spróbować podobnej metody z kategoriami, chociaż one są bardziej stabilne ze względu na to iż każdy Item może należeć do dokładnie jednej kategorii.

Co do zmian wizualnych to rozmyśliłem się z możliwości zmiany nazwy kategorii w itemie, ponieważ uznałem, że bezpieczniej i wygodniej będzie zastąpić dotychczasowy „+ button” takim który rozwija Menu kontekstowe z dostępnymi (nieistniejącymi w przedmiocie) właściwościami.

PropertyUpdate.jpgZmiany nie były aż takie trudne, wystarczyło jedynie przepisać w nieco inny sposób starą metodę dodającą oraz utworzyć metodę pomocniczą wywoływaną dla każdego przycisku w Menu kontekstowym:


private void AddProperty(object userData)
{
var data = (ItemProperty) userData;
ItemProperty property = data;
EditedItem.ItemProperties.Add(property);
var index = EditedItem.ItemProperties.Count;

//property = EditedItem.ItemProperties[index];
}


ItemPropertyList.onAddDropdownCallback = (Rect rect, ReorderableList list) =>
{
var menu = new GenericMenu();

for (int i = 0; i < _database.ItemProperties.Count; i++)
{
if (!EditedItem.ItemProperties.Contains(_database.ItemProperties[i]))
{
menu.AddItem(new GUIContent(_database.ItemProperties[i].PropertyName), false, AddProperty, _database.GetByNameProperty(_database.ItemProperties[i].PropertyName));
}
}

menu.ShowAsContext();
};

Co do Stackowania do nie ma tu za dużo do omawiania poza tym, że mój ItemPrefab ma dziecko o nazwie Amount, które jak wcześniej wspominałem wyświetla aktualny zasób tego przedmiotu w slocie (ale tylko gdy jest większy od 1). Prefab można zastąpić własnym, podobnie z AmountPrefab, co pozwala na całkowitą modyfikacje czcionki, koloru a nawet marginesów wyświetlania się tego licznika. Co do układu slotów to dodam tylko tyle, że robi to za mnie komponent Grid Layout Group.

Stacking

W przyszłości mam zamiar zaimplementować również Drag and Drop, ale z możliwością zablokowania tej opcji, ponieważ nie wszystkie ekwipunki go potrzebują, i nie wszystkie się nadają.

To by było już wszystko na ten krótki wpis z poprawek w IL. Do zobaczenia w następnym wpisie.

Reklamy

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Wyloguj / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Wyloguj / Zmień )

Connecting to %s