Καινούριες/προσαρμοσμένες μέθοδοι και αντικείμενα

Καινούριες μέθοδοι

Γνωρίζετε ήδη ότι η μηχανή παρέχει προκαθορισμένα αντικείμενα (όπως οι χαρακτήρες, οι σκηνές κ.λπ.) που διαθέτουν μεθόδους που μπορείτε να καλέσετε από τα scripts. Επιπρόσθετα η WME σας επιτρέπει να ορίσετε τις δικές σας μεθόδους για αυτά τα αντικείμενα. Ο τρόπος ορισμού είναι ίδιος με τον ορισμό μίας συνάρτησης, με τη διαφορά ότι αντί του τίτλου function θα πρέπει να χρησιμοποιήσετε τον τίτλο method. Μία τέτοια συνάρτηση είναι ενεργή και εξωτερικά του script. Μπορείτε δηλαδή να την καλέσετε με τον ίδιο ακριβώς τρόπο με τις προκαθορισμένες μεθόδους.

Τα μόνα που χρειάζεται να κάνετε είναι:

  1. να δημιουργήσετε ένα αρχείο script,
  2. να ορίσετε μία ή περισσότερες μεθόδους μέσα στο script και
  3. να ορίσετε το script σε ένα αντικείμενο (για παράδειγμα ένα χαρακτήρα)

Παράδειγμα:

method MyTestMethod(parameter)
{
  Game.Msg("Αυτή είναι δοκιμαστική μέθοδος. Η δοσμένη παράμετρος είναι " + parameter);
}

Εφόσον έχετε ορίσει το παραπάνω script σε κάποιο αντικείμενο (είτε στο αρχείο προσδιορισμού του αντικειμένου είτε μέσω του SceneEdit είτε με την μέθοδο AttachScript), μπορείτε να καλέσετε την μέθοδο από ένα άλλο script:

SomeObject.MyTestMethod("κάποια παράμετρος");

Αν θέλετε να αναφερθείτε στο αντικείμενο που ανήκει η μέθοδος χρησιμοποιήστε την λέξη κλειδί this. Αυτή η ψεύδο-μεταβλητή κρατάει αναφορά σε πιο αντικείμενο είναι ορισμένο το script.

Εξαιτίας του τρόπου που δουλεύουν τα scripts στην WME, η μηχανή δεν μπορεί να εντοπίσει λάθος γραμμένα ονόματα μεθόδων κατά την μεταγλώττιση. Αυτά θα εντοπιστούν όταν το παιχνίδι δουλεύει και θα προκαλέσουν κάποιο σφάλμα. Αυτός είναι περιορισμός μόνο των μεθόδων και όχι τον συνηθισμένων συναρτήσεων.

Επίσης είναι δυνατό να υπερκαλύψετε τις προκαθορισμένες μεθόδους όπως Talk και GoTo απλώς δίνοντας το ίδιο όνομα σε μία δικιά σας μέθοδο. Σε αυτή την περίπτωση προτείνεται να καλέσετε την αρχική μέθοδο μέσω της δικιάς σας νέας μεθόδου. Στο ακόλουθο παράδειγμα παρουσιάζεται μία νέα GoTo μέθοδος η οποία πρώτα αναγράφει τις συντεταγμένες του προορισμού στη σκηνή και μετά καλεί την αρχική GoTo μέθοδο για την κίνηση.

method GoTo(X, Y)
{
  Game.Msg("Ο χαρακτήρας θα περπατήσει στο σημείο " + X + ", " + Y);
  this.GoTo(X, Y);
}

Καινούρια αντικείμενα

Στο προηγούμενο κεφάλαιο είδαμε πως μπορούμε να δημιουργήσουμε νέες μεθόδους για να εμπλουτίσουμε τα προκαθορισμένα αντικείμενα. Όμως υπάρχει η δυνατότητα δημιουργίας και νέων αντικειμένων. Καταρχήν πρέπει να δημιουργήσετε ένα αρχείο script που θα περιλαμβάνει όλες τις μεθόδους που το καινούριο αντικείμενο θα παρέχει. Όταν θέλετε να "τρέξετε" το αντικείμενο χρησιμοποιήστε την παρακάτω σύνταξη:

// δημιουργία καινούριου αντικειμένου
        var MyObject = new Object("script_filename");

        // θα καλέσουμε την μέθοδό του
        MyObject.MyMethod();

Από τώρα και στο εξής μπορείτε να καλείτε τις μεθόδους του αντικειμένου MyObject όπως αυτές έχουν οριστεί στο αρχείο script (που στον παραπάνω κώδικα είναι το script_filename).

Αυτή η προσέγγιση είναι χρήσιμη σε διάφορες λειτουργίες. Για παράδειγμα μπορείτε να δημιουργήσετε "βιβλιοθήκες κώδικα", δηλαδή αντικείμενα που παρέχουν διάφορες μοιρασμένες συναρτήσεις. Αυτός είναι ο (μοναδικός) τρόπος που η WME υποστηρίζει γενικές συναρτήσεις που μοιράζονται μεταξύ πολλών scripts.