MerlinCore 2.3.0
Camera
Pridaná funkcionalita pre zmenu zoomu:
container.SetCameraZoom(1.0f);
Kde 1.0 je pôvodná hodnota.
Map
Ukončenie levelu:
void IWorld.SetEndCondition(Func<IWorld, MapStatus> condition)
očakáva funkciu (delegate alebo lambda) ktorá dostane IWorld
a vracia enum MapStatus
:
namespace Merlin2d.Game.Enums
{
public enum MapStatus
{
Unfinished,
Failed,
Finished
}
}
Kontrola sa vykonáva po každom Update()
sveta:
- ak nie je implementovaná kontrola, engine sa tvári, ako keby bol vrátený
Unfinished
stav - ak fukcia vráti
Unfinished
pokračuje sa na novú iteráciu update a render - ak funkcia vráti
Failed
hra končí a zobrazí sa správa nastavená pre prehranú hru - ak funkcia vráti
Finished
level končí a:- ak už nie ďalšia dostupná mapa (nepoužíva sa multi-level container / posledný level) zobrazí sa správa nastavená pre vyhratú hru
- ak je dostupná ďalšia mapa, načíta sa a hra pokračuje na tejto mape
End game messages
container.SetEndGameMessage(IMessage message, bool isGameSuccessful)
nastaví ukončovaciu správu - isGameSuccessful
true
nastaví pre vyhratú hru a false
pre prehratú.
Multi-level container mode
Treba v GameContainer
povoliť používanie viacerých levelov:
new GameContainer(name, width, height, true)
(ak je nastavený false alebo vôbec nie je posledný parameter, tak všetko funguje ako doteraz)
Následne nemáte vytvorený žiadny svet, je potrebné si ich pridať:
int AddWorld(string mapSource)
- návratová hodnota je index levelu - viete takto pristupovať k rôznym mapám keď nastavujete parametre.
IWorld GetWorld(int index)
- vracia svet s daným indexom - pozor bezparametrický GetWorld()
vyvolá InvalidOperationException
v tomto režime
int GetWorldCount()
- vracia počet pridaných svetov - kolekcia so svetmi nie je dostupná priamo.