Crafting System w projekcie IL

Witam w kolejnym wpisie poświęconym IL (wiem, że cały czas to piszę, ale nie mam innego pomysłu na rozpoczęcie wpisu).

Mam zamiar w końcu zaprogramować do wtyczki Crafting System. Dla niewtajemniczonych wytłumaczę, że pozwala on w grach wytwarzać przedmioty z kilku innych. Rozważałem nad implementacją klasycznego systemu, choćby takiego jaki można spotkać w grach takich jak: Skyrim, World of Warcraft czy Gothic: zwykła lista składników i przedmiot wyjściowy, czyli wystarczy zgromadzić składniki i spełnić jakieś ewentualnie dodatkowe warunki (np. zbliżenie się do kowadła). Jest też Crafting System zastosowany (chyba) po raz pierwszy w grze Minecraft. Charakteryzuje się on 9 kwadratowymi slotami których zawartość (Item) ułożona w odpowiedniej kombinacji daje Item wyjściowy.

Postanowiłem zdecydować się na oba rozwiązania. Mam zamiar napisać pod nie sekcje w oknie edytora bazy danych.

Ich podstawą będą 2 klasy opatrzone atrybutem [Serializable]: Recipe oraz BluePrint.

Recipe będzie przechowywać listę Itemów (nie wiem czy zastosować klase Item, ItemData, czy po prostu ID, muszę to przemyśleć) ,oraz ID przedmiotu wyjściowego

Klasa BluePrint również posiada ID przedmotu wyjściowego, jednak oprócz tego posiada 9 zmiennych przechowujących ID przedmiotu wyjściowego w konkretnym polu.

Wiem, co sobie można o tym pomyśleć, jest go głupie bo aż sama się nasuwa do tego tablica, niestety przy zastosowaniu tablicy atakuje mnie mój najgorszy wróg, NullReferenceException. Na pewno coś przeoczyłem, i wkrótce to się poprawi.


[Serializable]
public class Recipe
{
public List<Item> RequiredData;
public int OutputID;

public Recipe(int ID)
{
this.OutputID = ID;
}
}

&nbsp;

[Serializable]
public class BluePrint
{
public string x1y1 = string.Empty;
public string x2y1 = string.Empty;
public string x3y1 = string.Empty;
public string x1y2 = string.Empty;
public string x2y2 = string.Empty;
public string x3y2 = string.Empty;
public string x1y3 = string.Empty;
public string x2y3 = string.Empty;
public string x3y3 = string.Empty;
public int OutputID;

public int blueprintColumns;
public int blueprintRows;

public BluePrint(int ID)
{
this.OutputID = ID;

x1y1 = string.Empty;
x2y1 = string.Empty;
x3y1 = string.Empty;
x1y2 = string.Empty;
x2y2 = string.Empty;
x3y2 = string.Empty;
x1y3 = string.Empty;
x2y3 = string.Empty;
x3y3 = string.Empty;
}
}

Planuję rozwiązać ten problem z tablicami. Później przejdę do wizualnego zastosowania Craftingu. Myślę nad napisaniem osobnego slotu, różniącego się zachowaniem od tego który napisałem ostatnio.

Do zobaczenia jeszcze w tym tygodniu :).

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ń )

Zdjęcie na Facebooku

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

Zdjęcie na Google+

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

Connecting to %s