Attualmente sto lavorando su un gioco in XNA e io non sono sicuro di come dovrei andare a fare la seguente ...C# sottoclasse Best Practice
ho una classe di base degli edifici in quanto tale
public class BuildingsBase
{
private int _hp;
public int hp
{
get { return _hp; }
set { _hp= value; }
}
private int _woodRequired;
public int woodRequired
{
get { return _woodRequired; }
set { _woodRequired = value; }
}
}
Ho quindi più sottoclassi per i tipi di costruzione ad es.
public class TownHall:BuildingsBase
{
public int foodHeld;
public TownHall()
{
foodHeld = 100;
woodRequired = 500;
}
}
La mia domanda è, qual è il modo migliore per impostare i valori predefiniti per la costruzione di sottoclassi.
Ad esempio, il legname richiesto per un townhall è impostato su 500 ma in vari punti del codice è necessario accedere a questo valore prima di avere un'istanza di townhall dichiarata (quando si verifica se c'è abbastanza legno da costruire).
Attualmente ho una serie globale di variabili predefinite per ogni tipo di edificio, ma mi chiedo se c'è un modo migliore per farlo.
if (Globals.buildingDefaults[BuildingType.Townhall].woodRequired < Globals.currentWood)
{
Townhall newTH = new Townhall();
}
Perché il downvote? Penso che sia una domanda valida. – Caramiriel
Perché non fare il contrario? Prima build ad es. TownHall interno e poi controlla il valore di 'WoodRequired <= myCurrentWood' se non è disponibile una quantità sufficiente di legno basta distruggere nuovamente l'oggetto. Beh, questo non dovrebbe essere fatto se hai un oggetto enorme con un sacco di calcoli, ovviamente. L'utente non sa di avere già l'oggetto e chiama semplicemente .Show() o qualcosa del genere. –
La seconda idea è implementare una funzione 'int currentWood()' e basta controllarla nel costruttore degli oggetti, lì puoi fermare la creazione se non è disponibile abbastanza legno –