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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

84 CAPITOLO 3. IMPLEMENTAZIONE<br />

• Update(): il me<strong>to</strong>do da chiamare ad ogni iterazione per aggiornare tutti<br />

i componenti registrati.<br />

Infine vi sono i quattro me<strong>to</strong><strong>di</strong> utilizzati per invocare gli eventi OnCreate,<br />

OnChange, OnActive e OnDestroy.<br />

OnCreate viene invoca<strong>to</strong>, attraverso il Fac<strong>to</strong>ry, <strong>su</strong>lla creazione <strong>di</strong> <strong>un</strong> proprio<br />

componente, mentre OnDestroy viene invoca<strong>to</strong>, sempre attraverso il Fac<strong>to</strong>ry,<br />

<strong>su</strong>lla <strong>su</strong>a <strong>di</strong>struzione. OnChange viene invoca<strong>to</strong> quando cambia il valore <strong>di</strong><br />

<strong>un</strong> proprio componente, e OnActive quando quest’ultimo cambia sta<strong>to</strong> e <strong>di</strong>venta<br />

attivo (cioè quando ogni <strong>su</strong>o eventuale sot<strong>to</strong>-componente è sta<strong>to</strong> crea<strong>to</strong><br />

ed inizializza<strong>to</strong>). Tali eventi verranno poi ascoltati dal Layer Logic, che si<br />

occuperà <strong>di</strong> propagarne la loro notifica attraverso la rete.<br />

La classe SharedComponentFac<strong>to</strong>ry viene utilizzata per creare e <strong>di</strong>struggere<br />

istanze <strong>di</strong> SharedComponents.<br />

Quando il componente da creare appartiene al Manager lega<strong>to</strong> all’istanza del<br />

Fac<strong>to</strong>ry in questione, allora verrà crea<strong>to</strong> attraverso il mo<strong>to</strong>do Create().<br />

Quando invece il componente da creare appartiene ad <strong>un</strong> altro contes<strong>to</strong> (tipicamente<br />

sono copie <strong>di</strong> componenti appartenenti ad altri <strong>Peer</strong>), allora viene<br />

invoca<strong>to</strong> il me<strong>to</strong>do CreateFromOtherContext().<br />

3.5 Layer Logic<br />

Il Layer Logic è sostanzialmente <strong>di</strong>viso in due regioni, <strong>di</strong>fferenziate dal<br />

livello <strong>di</strong> generalizzazione implici<strong>to</strong> nelle classi che ne fanno parte.<br />

La regione più Generic Oriented introduce il contes<strong>to</strong> logico, in<strong>di</strong>vidua<strong>to</strong> dalla<br />

classe <strong>Peer</strong>Context: questa <strong>un</strong>isce le f<strong>un</strong>zionalità esposte dal Layer P2P e<br />

quelle caratteristiche del Data Layer rappresenta<strong>to</strong> dal modulo SharedComponents.<br />

La classe <strong>Peer</strong>Context, infatti, é composta da <strong>un</strong>’istanza <strong>di</strong> <strong>Peer</strong> e <strong>un</strong>a <strong>di</strong><br />

SharedcomponentsManager; queste ri<strong>su</strong>ltano legate tra loro tramite il mede-

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

Saved successfully!

Ooh no, something went wrong!