08.09.2019 Views

Progettazione e Sviluppo di un Multiplayer Online Game su Reti Peer-to-Peer

Alma Mater Studiorum Universit`a degli Studi di Bologna Facolta` di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Scienze di Internet Tesi di Laurea in Laboratorio di Programmazione Internet

Alma Mater Studiorum Universit`a degli Studi di Bologna
Facolta` di Scienze Matematiche, Fisiche e Naturali
Corso di Laurea in Scienze di Internet
Tesi di Laurea in Laboratorio di Programmazione Internet

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

3.4. MODULO SHAREDCOMPONENTS 83<br />

FindByGlobalID() e FindByType()) e per la gestione dei Tags (Tag Add(),<br />

Tag Remove() e Tag Has()).<br />

Infine è presente <strong>un</strong> me<strong>to</strong>do virtuale OnChange(), au<strong>to</strong>maticamente invoca<strong>to</strong><br />

ogniqualvolta viene mo<strong>di</strong>fica<strong>to</strong> il Value del componente. In ques<strong>to</strong> me<strong>to</strong>do,<br />

se si tratta <strong>di</strong> <strong>un</strong> proprio componente (non appartenente ad <strong>un</strong> contes<strong>to</strong><br />

esterno, quin<strong>di</strong>) e se ques<strong>to</strong> è tagga<strong>to</strong> con Constants.ComponentTag NotifyChange,<br />

allora viene chiamata la f<strong>un</strong>zione NotifyChange() del SharedComponentsManager.<br />

La classe SharedComponentsManager ha la f<strong>un</strong>zione principale <strong>di</strong> mantenere<br />

e gestire la lista <strong>di</strong> tutte le istanze <strong>di</strong> SharedComponent, sia quelle create<br />

<strong>di</strong>rettamente dal proprio Fac<strong>to</strong>ry (<strong>un</strong> ogget<strong>to</strong> <strong>di</strong> <strong>un</strong>a classe che concretizza<br />

ISharedComponentsFac<strong>to</strong>ry), che quelle provenienti da <strong>un</strong> contes<strong>to</strong> esterno.<br />

É identificata da <strong>un</strong> Name. Quest’ultimo sarà estremamente importante per<br />

la gestione del contes<strong>to</strong> logico introdotta dal Layer Logic.<br />

Sono inoltre implementati i seguenti me<strong>to</strong><strong>di</strong> ausiliari:<br />

• FindByGlobalID(): per cercare <strong>un</strong> componente all’interno della lista<br />

conoscendo il solo GlobalID.<br />

• GetOnlyMine(): per ricavare solo i propri componenti, cioè quelli <strong>di</strong>rettamente<br />

generati dal proprio Fac<strong>to</strong>ry.<br />

• IsMine(): per sapere se il componente passa<strong>to</strong> come parametro, appartiene<br />

o meno a ques<strong>to</strong> Manager.<br />

• AddToUpdater(): aggi<strong>un</strong>ge il componente passa<strong>to</strong> come parametro alla<br />

lista dei componenti da aggiornare ad ogni iterazione.<br />

• RemoveFromUpdater(): rimuove il componente passa<strong>to</strong> come parametro<br />

dalla lista dei componenti da aggiornare ad ogni iterazione.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!