Added: JAVADOC html in deliverables

This commit is contained in:
rubenpirreram
2026-06-19 23:09:49 +02:00
parent 1b155e7056
commit db65e0a8be
222 changed files with 55370 additions and 25 deletions
@@ -0,0 +1,263 @@
<!DOCTYPE HTML>
<html lang="it">
<head>
<!-- Generated by javadoc (25) on Fri Jun 19 23:05:23 CEST 2026 -->
<title>CompositeClientBroadcaster</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-06-19">
<meta name="description" content="declaration: module: it.polimi.ingsw.gc14, package: it.polimi.ingsw.gc14.Network, class: CompositeClientBroadcaster">
<meta name="generator" content="javadoc/ClassWriter">
<link rel="stylesheet" type="text/css" href="../../../../../../resource-files/jquery-ui.min.css">
<link rel="stylesheet" type="text/css" href="../../../../../../resource-files/stylesheet.css">
<script type="text/javascript" src="../../../../../../script-files/script.js"></script>
<script type="text/javascript" src="../../../../../../script-files/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../../../../script-files/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">const pathtoroot = "../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="nav-content">
<div class="nav-menu-button"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button></div>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../module-summary.html">Module</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
<li><a href="../../../../../../search.html">Search</a></li>
<li><a href="../../../../../../help-doc.html#class">Help</a></li>
</ul>
</div>
</div>
<div class="sub-nav">
<div class="nav-content">
<ol class="sub-nav-list">
<li><a href="../../../../../module-summary.html">it.polimi.ingsw.gc14</a></li>
<li><a href="package-summary.html">it.polimi.ingsw.gc14.Network</a></li>
<li><a href="CompositeClientBroadcaster.html" class="current-selection">CompositeClientBroadcaster</a></li>
</ol>
<div class="nav-list-search"><input type="text" id="search-input" disabled placeholder="Search documentation (type /)" aria-label="Search in documentation" autocomplete="off" spellcheck="false"><input type="reset" id="reset-search" disabled value="Reset"></div>
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="main-grid">
<nav role="navigation" class="toc" aria-label="Table of contents">
<div class="toc-header">Contents&nbsp;<input type="text" class="filter-input" disabled placeholder="Filter contents (type .)" aria-label="Filter table of contents" autocomplete="off" spellcheck="false"><input type="reset" class="reset-filter" disabled tabindex="-1" value="Reset"></div>
<ol class="toc-list" tabindex="-1">
<li><a href="#" tabindex="0">Description</a></li>
<li><a href="#field-summary" tabindex="0">Field Summary</a></li>
<li><a href="#constructor-summary" tabindex="0">Constructor Summary</a></li>
<li><a href="#method-summary" tabindex="0">Method Summary</a></li>
<li><a href="#field-detail" tabindex="0">Field Details</a>
<ol class="toc-list">
<li><a href="#rmiServer" tabindex="0">rmiServer</a></li>
<li><a href="#tcpServer" tabindex="0">tcpServer</a></li>
</ol>
</li>
<li><a href="#constructor-detail" tabindex="0">Constructor Details</a>
<ol class="toc-list">
<li><a href="#%3Cinit%3E(it.polimi.ingsw.gc14.Network.RMI.Server.RMIServer,it.polimi.ingsw.gc14.Network.TCP.Server.TCPServer)" tabindex="0">CompositeClientBroadcaster(RMIServer, TCPServer)</a></li>
</ol>
</li>
<li><a href="#method-detail" tabindex="0">Method Details</a>
<ol class="toc-list">
<li><a href="#notifyAll(it.polimi.ingsw.gc14.Network.NetworkEvent)" tabindex="0">notifyAll(NetworkEvent)</a></li>
<li><a href="#notifyAll(it.polimi.ingsw.gc14.Model.MiniModel)" tabindex="0">notifyAll(MiniModel)</a></li>
</ol>
</li>
</ol>
<button class="hide-sidebar"><span>Hide sidebar&nbsp;</span><img src="../../../../../../resource-files/left.svg" alt="Hide sidebar"></button><button class="show-sidebar"><img src="../../../../../../resource-files/right.svg" alt="Show sidebar"><span>&nbsp;Show sidebar</span></button></nav>
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<h1 title="Class CompositeClientBroadcaster" class="title">Class CompositeClientBroadcaster</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
<div class="inheritance">it.polimi.ingsw.gc14.Network.CompositeClientBroadcaster</div>
</div>
<section class="class-description" id="class-description">
<hr>
<div class="horizontal-scroll">
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">CompositeClientBroadcaster</span>
<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
<div class="block">Forwards every notification to both the RMI and the TCP transport layers.
<p>This follows the Composite pattern: the caller interacts with a single
broadcaster without knowing which protocols are active underneath.</div>
</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- =========== FIELD SUMMARY =========== -->
<li>
<section class="field-summary" id="field-summary">
<h2>Field Summary</h2>
<div class="caption"><span>Fields</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Field</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>private final <a href="RMI/Server/RMIServer.html" title="class in it.polimi.ingsw.gc14.Network.RMI.Server">RMIServer</a></code></div>
<div class="col-second even-row-color"><code><a href="#rmiServer" class="member-name-link">rmiServer</a></code></div>
<div class="col-last even-row-color">
<div class="block">RMI transport used to reach RMI-connected clients.</div>
</div>
<div class="col-first odd-row-color"><code>private final <a href="TCP/Server/TCPServer.html" title="class in it.polimi.ingsw.gc14.Network.TCP.Server">TCPServer</a></code></div>
<div class="col-second odd-row-color"><code><a href="#tcpServer" class="member-name-link">tcpServer</a></code></div>
<div class="col-last odd-row-color">
<div class="block">TCP transport used to reach TCP-connected clients.</div>
</div>
</div>
</section>
</li>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>Constructor Summary</h2>
<div class="caption"><span>Constructors</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(it.polimi.ingsw.gc14.Network.RMI.Server.RMIServer,it.polimi.ingsw.gc14.Network.TCP.Server.TCPServer)" class="member-name-link">CompositeClientBroadcaster</a><wbr>(<a href="RMI/Server/RMIServer.html" title="class in it.polimi.ingsw.gc14.Network.RMI.Server">RMIServer</a>&nbsp;rmiServer,
<a href="TCP/Server/TCPServer.html" title="class in it.polimi.ingsw.gc14.Network.TCP.Server">TCPServer</a>&nbsp;tcpServer)</code></div>
<div class="col-last even-row-color">
<div class="block">Constructs a composite broadcaster backed by the given RMI and TCP servers.</div>
</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#notifyAll(it.polimi.ingsw.gc14.Model.MiniModel)" class="member-name-link">notifyAll</a><wbr>(<a href="../Model/MiniModel.html" title="class in it.polimi.ingsw.gc14.Model">MiniModel</a>&nbsp;model)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Forwards the model snapshot to every client on both transports.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#notifyAll(it.polimi.ingsw.gc14.Network.NetworkEvent)" class="member-name-link">notifyAll</a><wbr>(<a href="NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a>&nbsp;event)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Forwards the event to both the RMI and the TCP server.</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#method-summary" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ FIELD DETAIL =========== -->
<li>
<section class="field-details" id="field-detail">
<h2>Field Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="rmiServer">
<h3>rmiServer</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type"><a href="RMI/Server/RMIServer.html" title="class in it.polimi.ingsw.gc14.Network.RMI.Server">RMIServer</a></span>&nbsp;<span class="element-name">rmiServer</span></div>
<div class="block">RMI transport used to reach RMI-connected clients.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="tcpServer">
<h3>tcpServer</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type"><a href="TCP/Server/TCPServer.html" title="class in it.polimi.ingsw.gc14.Network.TCP.Server">TCPServer</a></span>&nbsp;<span class="element-name">tcpServer</span></div>
<div class="block">TCP transport used to reach TCP-connected clients.</div>
</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;(it.polimi.ingsw.gc14.Network.RMI.Server.RMIServer,it.polimi.ingsw.gc14.Network.TCP.Server.TCPServer)">
<h3>CompositeClientBroadcaster</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">CompositeClientBroadcaster</span><wbr><span class="parameters">(<a href="RMI/Server/RMIServer.html" title="class in it.polimi.ingsw.gc14.Network.RMI.Server">RMIServer</a>&nbsp;rmiServer,
<a href="TCP/Server/TCPServer.html" title="class in it.polimi.ingsw.gc14.Network.TCP.Server">TCPServer</a>&nbsp;tcpServer)</span></div>
<div class="block">Constructs a composite broadcaster backed by the given RMI and TCP servers.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>rmiServer</code> - the RMI server used to reach RMI clients.</dd>
<dd><code>tcpServer</code> - the TCP server used to reach TCP clients.</dd>
</dl>
</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="notifyAll(it.polimi.ingsw.gc14.Network.NetworkEvent)">
<h3>notifyAll</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">notifyAll</span><wbr><span class="parameters">(<a href="NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a>&nbsp;event)</span></div>
<div class="block">Forwards the event to both the RMI and the TCP server.
Each server is responsible for filtering error events to the
requesting player only.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>event</code> - the network event to broadcast.</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="notifyAll(it.polimi.ingsw.gc14.Model.MiniModel)">
<h3>notifyAll</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">notifyAll</span><wbr><span class="parameters">(<a href="../Model/MiniModel.html" title="class in it.polimi.ingsw.gc14.Model">MiniModel</a>&nbsp;model)</span></div>
<div class="block">Forwards the model snapshot to every client on both transports.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>model</code> - the mini model snapshot to broadcast.</dd>
</dl>
</div>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</body>
</html>
@@ -0,0 +1,473 @@
<!DOCTYPE HTML>
<html lang="it">
<head>
<!-- Generated by javadoc (25) on Fri Jun 19 23:05:23 CEST 2026 -->
<title>EventType</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-06-19">
<meta name="description" content="declaration: module: it.polimi.ingsw.gc14, package: it.polimi.ingsw.gc14.Network, enum: EventType">
<meta name="generator" content="javadoc/ClassWriter">
<link rel="stylesheet" type="text/css" href="../../../../../../resource-files/jquery-ui.min.css">
<link rel="stylesheet" type="text/css" href="../../../../../../resource-files/stylesheet.css">
<script type="text/javascript" src="../../../../../../script-files/script.js"></script>
<script type="text/javascript" src="../../../../../../script-files/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../../../../script-files/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">const pathtoroot = "../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="nav-content">
<div class="nav-menu-button"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button></div>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../module-summary.html">Module</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
<li><a href="../../../../../../search.html">Search</a></li>
<li><a href="../../../../../../help-doc.html#class">Help</a></li>
</ul>
</div>
</div>
<div class="sub-nav">
<div class="nav-content">
<ol class="sub-nav-list">
<li><a href="../../../../../module-summary.html">it.polimi.ingsw.gc14</a></li>
<li><a href="package-summary.html">it.polimi.ingsw.gc14.Network</a></li>
<li><a href="EventType.html" class="current-selection">EventType</a></li>
</ol>
<div class="nav-list-search"><input type="text" id="search-input" disabled placeholder="Search documentation (type /)" aria-label="Search in documentation" autocomplete="off" spellcheck="false"><input type="reset" id="reset-search" disabled value="Reset"></div>
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="main-grid">
<nav role="navigation" class="toc" aria-label="Table of contents">
<div class="toc-header">Contents&nbsp;<input type="text" class="filter-input" disabled placeholder="Filter contents (type .)" aria-label="Filter table of contents" autocomplete="off" spellcheck="false"><input type="reset" class="reset-filter" disabled tabindex="-1" value="Reset"></div>
<ol class="toc-list" tabindex="-1">
<li><a href="#" tabindex="0">Description</a></li>
<li><a href="#nested-class-summary" tabindex="0">Nested Class Summary</a></li>
<li><a href="#enum-constant-summary" tabindex="0">Enum Constant Summary</a></li>
<li><a href="#field-summary" tabindex="0">Field Summary</a></li>
<li><a href="#constructor-summary" tabindex="0">Constructor Summary</a></li>
<li><a href="#method-summary" tabindex="0">Method Summary</a></li>
<li><a href="#enum-constant-detail" tabindex="0">Enum Constant Details</a>
<ol class="toc-list">
<li><a href="#ADD_PLAYER" tabindex="0">ADD_PLAYER</a></li>
<li><a href="#TOTEM_CHOICE" tabindex="0">TOTEM_CHOICE</a></li>
<li><a href="#SLOT_CHOICE" tabindex="0">SLOT_CHOICE</a></li>
<li><a href="#DRAW_UPPER_TRIBE" tabindex="0">DRAW_UPPER_TRIBE</a></li>
<li><a href="#DRAW_LOWER_TRIBE" tabindex="0">DRAW_LOWER_TRIBE</a></li>
<li><a href="#DRAW_UPPER_BUILD" tabindex="0">DRAW_UPPER_BUILD</a></li>
<li><a href="#DRAW_LOWER_BUILD" tabindex="0">DRAW_LOWER_BUILD</a></li>
<li><a href="#SKIP_TURN" tabindex="0">SKIP_TURN</a></li>
<li><a href="#DISCONNECTED_PLAYER" tabindex="0">DISCONNECTED_PLAYER</a></li>
<li><a href="#RECONNECT_PLAYER" tabindex="0">RECONNECT_PLAYER</a></li>
<li><a href="#NEXT_ROUND" tabindex="0">NEXT_ROUND</a></li>
<li><a href="#ENDED_GAME" tabindex="0">ENDED_GAME</a></li>
</ol>
</li>
<li><a href="#field-detail" tabindex="0">Field Details</a>
<ol class="toc-list">
<li><a href="#description" tabindex="0">description</a></li>
</ol>
</li>
<li><a href="#constructor-detail" tabindex="0">Constructor Details</a>
<ol class="toc-list">
<li><a href="#%3Cinit%3E(java.lang.String)" tabindex="0">EventType(String)</a></li>
</ol>
</li>
<li><a href="#method-detail" tabindex="0">Method Details</a>
<ol class="toc-list">
<li><a href="#values()" tabindex="0">values()</a></li>
<li><a href="#valueOf(java.lang.String)" tabindex="0">valueOf(String)</a></li>
<li><a href="#toString()" tabindex="0">toString()</a></li>
</ol>
</li>
</ol>
<button class="hide-sidebar"><span>Hide sidebar&nbsp;</span><img src="../../../../../../resource-files/left.svg" alt="Hide sidebar"></button><button class="show-sidebar"><img src="../../../../../../resource-files/right.svg" alt="Show sidebar"><span>&nbsp;Show sidebar</span></button></nav>
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<h1 title="Enum Class EventType" class="title">Enum Class EventType</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">java.lang.Enum</a>&lt;<a href="EventType.html" title="enum class in it.polimi.ingsw.gc14.Network">EventType</a>&gt;
<div class="inheritance">it.polimi.ingsw.gc14.Network.EventType</div>
</div>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>All Implemented Interfaces:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Comparable.html" title="class or interface in java.lang" class="external-link">Comparable</a>&lt;<a href="EventType.html" title="enum class in it.polimi.ingsw.gc14.Network">EventType</a>&gt;, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/constant/Constable.html" title="class or interface in java.lang.constant" class="external-link">Constable</a></code></dd>
</dl>
<hr>
<div class="horizontal-scroll">
<div class="type-signature"><span class="modifiers">public enum </span><span class="element-name type-name-label">EventType</span>
<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a>&lt;<a href="EventType.html" title="enum class in it.polimi.ingsw.gc14.Network">EventType</a>&gt;</span></div>
<div class="block">Represents the different types of network events that can be sent between
client and server.</div>
</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<li>
<section class="nested-class-summary" id="nested-class-summary">
<h2>Nested Class Summary</h2>
<div class="inherited-list">
<h3 id="nested-classes-inherited-from-class-java.lang.Enum">Nested classes/interfaces inherited from class&nbsp;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Enum.html#nested-class-summary" title="class or interface in java.lang" class="external-link">Enum</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Enum.EnumDesc.html" title="class or interface in java.lang" class="external-link">Enum.EnumDesc</a>&lt;E&gt;</code></div>
</section>
</li>
<!-- =========== ENUM CONSTANT SUMMARY =========== -->
<li>
<section class="constants-summary" id="enum-constant-summary">
<h2>Enum Constant Summary</h2>
<div class="caption"><span>Enum Constants</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Enum Constant</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code><a href="#ADD_PLAYER" class="member-name-link">ADD_PLAYER</a></code></div>
<div class="col-last even-row-color">
<div class="block">Event used to add a player to the game.</div>
</div>
<div class="col-first odd-row-color"><code><a href="#DISCONNECTED_PLAYER" class="member-name-link">DISCONNECTED_PLAYER</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Event used to notify that a player has disconnected.</div>
</div>
<div class="col-first even-row-color"><code><a href="#DRAW_LOWER_BUILD" class="member-name-link">DRAW_LOWER_BUILD</a></code></div>
<div class="col-last even-row-color">
<div class="block">Event used to draw a building card from the lower card list.</div>
</div>
<div class="col-first odd-row-color"><code><a href="#DRAW_LOWER_TRIBE" class="member-name-link">DRAW_LOWER_TRIBE</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Event used to draw a tribe card from the lower card list.</div>
</div>
<div class="col-first even-row-color"><code><a href="#DRAW_UPPER_BUILD" class="member-name-link">DRAW_UPPER_BUILD</a></code></div>
<div class="col-last even-row-color">
<div class="block">Event used to draw a building card from the upper card list.</div>
</div>
<div class="col-first odd-row-color"><code><a href="#DRAW_UPPER_TRIBE" class="member-name-link">DRAW_UPPER_TRIBE</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Event used to draw a tribe card from the upper card list.</div>
</div>
<div class="col-first even-row-color"><code><a href="#ENDED_GAME" class="member-name-link">ENDED_GAME</a></code></div>
<div class="col-last even-row-color">
<div class="block">Event used to notify that the game has ended.</div>
</div>
<div class="col-first odd-row-color"><code><a href="#NEXT_ROUND" class="member-name-link">NEXT_ROUND</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Event used to apply the transition to the next round.</div>
</div>
<div class="col-first even-row-color"><code><a href="#RECONNECT_PLAYER" class="member-name-link">RECONNECT_PLAYER</a></code></div>
<div class="col-last even-row-color">
<div class="block">Event used to notify that a player has reconnected.</div>
</div>
<div class="col-first odd-row-color"><code><a href="#SKIP_TURN" class="member-name-link">SKIP_TURN</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Event used to skip the current turn or optional action.</div>
</div>
<div class="col-first even-row-color"><code><a href="#SLOT_CHOICE" class="member-name-link">SLOT_CHOICE</a></code></div>
<div class="col-last even-row-color">
<div class="block">Event used to submit a player's slot choice.</div>
</div>
<div class="col-first odd-row-color"><code><a href="#TOTEM_CHOICE" class="member-name-link">TOTEM_CHOICE</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Event used to submit a player's totem choice.</div>
</div>
</div>
</section>
</li>
<!-- =========== FIELD SUMMARY =========== -->
<li>
<section class="field-summary" id="field-summary">
<h2>Field Summary</h2>
<div class="caption"><span>Fields</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Field</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>private final <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
<div class="col-second even-row-color"><code><a href="#description" class="member-name-link">description</a></code></div>
<div class="col-last even-row-color">
<div class="block">Human-readable label for this event type, returned by <a href="#toString()"><code>toString()</code></a>.</div>
</div>
</div>
</section>
</li>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>Constructor Summary</h2>
<div class="caption"><span>Constructors</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier</div>
<div class="table-header col-second">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>private </code></div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.String)" class="member-name-link">EventType</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;description)</code></div>
<div class="col-last even-row-color">&nbsp;</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#toString()" class="member-name-link">toString</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="EventType.html" title="enum class in it.polimi.ingsw.gc14.Network">EventType</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#valueOf(java.lang.String)" class="member-name-link">valueOf</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Returns the enum constant of this class with the specified name.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="EventType.html" title="enum class in it.polimi.ingsw.gc14.Network">EventType</a>[]</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#values()" class="member-name-link">values</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Returns an array containing the constants of this enum class, in
the order they are declared.</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Enum">Methods inherited from class&nbsp;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Enum.html#method-summary" title="class or interface in java.lang" class="external-link">Enum</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Enum.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Enum.html#compareTo(E)" title="class or interface in java.lang" class="external-link">compareTo</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Enum.html#describeConstable()" title="class or interface in java.lang" class="external-link">describeConstable</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Enum.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Enum.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Enum.html#getDeclaringClass()" title="class or interface in java.lang" class="external-link">getDeclaringClass</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Enum.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Enum.html#name()" title="class or interface in java.lang" class="external-link">name</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Enum.html#ordinal()" title="class or interface in java.lang" class="external-link">ordinal</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Enum.html#valueOf(java.lang.Class,java.lang.String)" title="class or interface in java.lang" class="external-link">valueOf</a></code></div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#method-summary" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ ENUM CONSTANT DETAIL =========== -->
<li>
<section class="constant-details" id="enum-constant-detail">
<h2>Enum Constant Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="ADD_PLAYER">
<h3>ADD_PLAYER</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="EventType.html" title="enum class in it.polimi.ingsw.gc14.Network">EventType</a></span>&nbsp;<span class="element-name">ADD_PLAYER</span></div>
<div class="block">Event used to add a player to the game.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="TOTEM_CHOICE">
<h3>TOTEM_CHOICE</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="EventType.html" title="enum class in it.polimi.ingsw.gc14.Network">EventType</a></span>&nbsp;<span class="element-name">TOTEM_CHOICE</span></div>
<div class="block">Event used to submit a player's totem choice.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="SLOT_CHOICE">
<h3>SLOT_CHOICE</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="EventType.html" title="enum class in it.polimi.ingsw.gc14.Network">EventType</a></span>&nbsp;<span class="element-name">SLOT_CHOICE</span></div>
<div class="block">Event used to submit a player's slot choice.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="DRAW_UPPER_TRIBE">
<h3>DRAW_UPPER_TRIBE</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="EventType.html" title="enum class in it.polimi.ingsw.gc14.Network">EventType</a></span>&nbsp;<span class="element-name">DRAW_UPPER_TRIBE</span></div>
<div class="block">Event used to draw a tribe card from the upper card list.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="DRAW_LOWER_TRIBE">
<h3>DRAW_LOWER_TRIBE</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="EventType.html" title="enum class in it.polimi.ingsw.gc14.Network">EventType</a></span>&nbsp;<span class="element-name">DRAW_LOWER_TRIBE</span></div>
<div class="block">Event used to draw a tribe card from the lower card list.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="DRAW_UPPER_BUILD">
<h3>DRAW_UPPER_BUILD</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="EventType.html" title="enum class in it.polimi.ingsw.gc14.Network">EventType</a></span>&nbsp;<span class="element-name">DRAW_UPPER_BUILD</span></div>
<div class="block">Event used to draw a building card from the upper card list.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="DRAW_LOWER_BUILD">
<h3>DRAW_LOWER_BUILD</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="EventType.html" title="enum class in it.polimi.ingsw.gc14.Network">EventType</a></span>&nbsp;<span class="element-name">DRAW_LOWER_BUILD</span></div>
<div class="block">Event used to draw a building card from the lower card list.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="SKIP_TURN">
<h3>SKIP_TURN</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="EventType.html" title="enum class in it.polimi.ingsw.gc14.Network">EventType</a></span>&nbsp;<span class="element-name">SKIP_TURN</span></div>
<div class="block">Event used to skip the current turn or optional action.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="DISCONNECTED_PLAYER">
<h3>DISCONNECTED_PLAYER</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="EventType.html" title="enum class in it.polimi.ingsw.gc14.Network">EventType</a></span>&nbsp;<span class="element-name">DISCONNECTED_PLAYER</span></div>
<div class="block">Event used to notify that a player has disconnected.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="RECONNECT_PLAYER">
<h3>RECONNECT_PLAYER</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="EventType.html" title="enum class in it.polimi.ingsw.gc14.Network">EventType</a></span>&nbsp;<span class="element-name">RECONNECT_PLAYER</span></div>
<div class="block">Event used to notify that a player has reconnected.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="NEXT_ROUND">
<h3>NEXT_ROUND</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="EventType.html" title="enum class in it.polimi.ingsw.gc14.Network">EventType</a></span>&nbsp;<span class="element-name">NEXT_ROUND</span></div>
<div class="block">Event used to apply the transition to the next round.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="ENDED_GAME">
<h3>ENDED_GAME</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="EventType.html" title="enum class in it.polimi.ingsw.gc14.Network">EventType</a></span>&nbsp;<span class="element-name">ENDED_GAME</span></div>
<div class="block">Event used to notify that the game has ended.</div>
</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ FIELD DETAIL =========== -->
<li>
<section class="field-details" id="field-detail">
<h2>Field Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="description">
<h3>description</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">description</span></div>
<div class="block">Human-readable label for this event type, returned by <a href="#toString()"><code>toString()</code></a>.</div>
</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;(java.lang.String)">
<h3>EventType</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="element-name">EventType</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;description)</span></div>
</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="values()">
<h3>values</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="EventType.html" title="enum class in it.polimi.ingsw.gc14.Network">EventType</a>[]</span>&nbsp;<span class="element-name">values</span>()</div>
<div class="block">Returns an array containing the constants of this enum class, in
the order they are declared.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>an array containing the constants of this enum class, in the order they are declared</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="valueOf(java.lang.String)">
<h3>valueOf</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="EventType.html" title="enum class in it.polimi.ingsw.gc14.Network">EventType</a></span>&nbsp;<span class="element-name">valueOf</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</span></div>
<div class="block">Returns the enum constant of this class with the specified name.
The string must match <i>exactly</i> an identifier used to declare an
enum constant in this class. (Extraneous whitespace characters are
not permitted.)</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>name</code> - the name of the enum constant to be returned.</dd>
<dt>Returns:</dt>
<dd>the enum constant with the specified name</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">IllegalArgumentException</a></code> - if this enum class has no constant with the specified name</dd>
<dd><code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/NullPointerException.html" title="class or interface in java.lang" class="external-link">NullPointerException</a></code> - if the argument is null</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="toString()">
<h3>toString</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">toString</span>()</div>
<dl class="notes">
<dt>Overrides:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Enum.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a>&lt;<a href="EventType.html" title="enum class in it.polimi.ingsw.gc14.Network">EventType</a>&gt;</code></dd>
</dl>
</div>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</body>
</html>
@@ -0,0 +1,310 @@
<!DOCTYPE HTML>
<html lang="it">
<head>
<!-- Generated by javadoc (25) on Fri Jun 19 23:05:23 CEST 2026 -->
<title>IClient</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-06-19">
<meta name="description" content="declaration: module: it.polimi.ingsw.gc14, package: it.polimi.ingsw.gc14.Network, interface: IClient">
<meta name="generator" content="javadoc/ClassWriter">
<link rel="stylesheet" type="text/css" href="../../../../../../resource-files/jquery-ui.min.css">
<link rel="stylesheet" type="text/css" href="../../../../../../resource-files/stylesheet.css">
<script type="text/javascript" src="../../../../../../script-files/script.js"></script>
<script type="text/javascript" src="../../../../../../script-files/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../../../../script-files/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">const pathtoroot = "../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="nav-content">
<div class="nav-menu-button"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button></div>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../module-summary.html">Module</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
<li><a href="../../../../../../search.html">Search</a></li>
<li><a href="../../../../../../help-doc.html#class">Help</a></li>
</ul>
</div>
</div>
<div class="sub-nav">
<div class="nav-content">
<ol class="sub-nav-list">
<li><a href="../../../../../module-summary.html">it.polimi.ingsw.gc14</a></li>
<li><a href="package-summary.html">it.polimi.ingsw.gc14.Network</a></li>
<li><a href="IClient.html" class="current-selection">IClient</a></li>
</ol>
<div class="nav-list-search"><input type="text" id="search-input" disabled placeholder="Search documentation (type /)" aria-label="Search in documentation" autocomplete="off" spellcheck="false"><input type="reset" id="reset-search" disabled value="Reset"></div>
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="main-grid">
<nav role="navigation" class="toc" aria-label="Table of contents">
<div class="toc-header">Contents&nbsp;<input type="text" class="filter-input" disabled placeholder="Filter contents (type .)" aria-label="Filter table of contents" autocomplete="off" spellcheck="false"><input type="reset" class="reset-filter" disabled tabindex="-1" value="Reset"></div>
<ol class="toc-list" tabindex="-1">
<li><a href="#" tabindex="0">Description</a></li>
<li><a href="#method-summary" tabindex="0">Method Summary</a></li>
<li><a href="#method-detail" tabindex="0">Method Details</a>
<ol class="toc-list">
<li><a href="#connect(java.lang.String,int)" tabindex="0">connect(String, int)</a></li>
<li><a href="#drawUpperTribeCard(java.lang.String,int)" tabindex="0">drawUpperTribeCard(String, int)</a></li>
<li><a href="#drawLowerTribeCard(java.lang.String,int)" tabindex="0">drawLowerTribeCard(String, int)</a></li>
<li><a href="#drawUpperBuildingCard(java.lang.String,int)" tabindex="0">drawUpperBuildingCard(String, int)</a></li>
<li><a href="#drawLowerBuildingCard(java.lang.String,int)" tabindex="0">drawLowerBuildingCard(String, int)</a></li>
<li><a href="#skipTurn(java.lang.String)" tabindex="0">skipTurn(String)</a></li>
<li><a href="#slotChoice(java.lang.String,int)" tabindex="0">slotChoice(String, int)</a></li>
<li><a href="#totemChoice(java.lang.String,java.lang.String)" tabindex="0">totemChoice(String, String)</a></li>
<li><a href="#notifyDisconnection()" tabindex="0">notifyDisconnection()</a></li>
</ol>
</li>
</ol>
<button class="hide-sidebar"><span>Hide sidebar&nbsp;</span><img src="../../../../../../resource-files/left.svg" alt="Hide sidebar"></button><button class="show-sidebar"><img src="../../../../../../resource-files/right.svg" alt="Show sidebar"><span>&nbsp;Show sidebar</span></button></nav>
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<h1 title="Interface IClient" class="title">Interface IClient</h1>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>All Known Implementing Classes:</dt>
<dd><code><a href="RMI/Client/RMIClient.html" title="class in it.polimi.ingsw.gc14.Network.RMI.Client">RMIClient</a>, <a href="TCP/Client/TCPClient.html" title="class in it.polimi.ingsw.gc14.Network.TCP.Client">TCPClient</a></code></dd>
</dl>
<hr>
<div class="horizontal-scroll">
<div class="type-signature"><span class="modifiers">public interface </span><span class="element-name type-name-label">IClient</span></div>
<div class="block">Defines the operations that a client can request during the game.</div>
</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab3" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab3', 3)" class="table-tab">Abstract Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="../ErrorType.html" title="enum class in it.polimi.ingsw.gc14">ErrorType</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#connect(java.lang.String,int)" class="member-name-link">connect</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;username,
int&nbsp;proposedNPlayers)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Connects the client to the server using the specified username
and preferred connection type.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#drawLowerBuildingCard(java.lang.String,int)" class="member-name-link">drawLowerBuildingCard</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername,
int&nbsp;pos)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Requests to draw a building card from the lower building card list.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#drawLowerTribeCard(java.lang.String,int)" class="member-name-link">drawLowerTribeCard</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername,
int&nbsp;pos)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Requests to draw a tribe card from the lower tribe card list.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#drawUpperBuildingCard(java.lang.String,int)" class="member-name-link">drawUpperBuildingCard</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername,
int&nbsp;pos)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Requests to draw a building card from the upper building card list.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#drawUpperTribeCard(java.lang.String,int)" class="member-name-link">drawUpperTribeCard</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername,
int&nbsp;pos)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Requests to draw a tribe card from the upper tribe card list.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#notifyDisconnection()" class="member-name-link">notifyDisconnection</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Notifies the server of a voluntary disconnection and closes the connection.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#skipTurn(java.lang.String)" class="member-name-link">skipTurn</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Requests to skip the current player's optional action.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#slotChoice(java.lang.String,int)" class="member-name-link">slotChoice</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername,
int&nbsp;pos)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Requests to assign the specified player to a slot.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#totemChoice(java.lang.String,java.lang.String)" class="member-name-link">totemChoice</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;totem)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Requests to assign the selected totem to the specified player.</div>
</div>
</div>
</div>
</div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="connect(java.lang.String,int)">
<h3>connect</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="return-type"><a href="../ErrorType.html" title="enum class in it.polimi.ingsw.gc14">ErrorType</a></span>&nbsp;<span class="element-name">connect</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;username,
int&nbsp;proposedNPlayers)</span></div>
<div class="block">Connects the client to the server using the specified username
and preferred connection type.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>username</code> - the username chosen by the player.</dd>
<dd><code>proposedNPlayers</code> - the desired number of players proposed by this client.</dd>
<dt>Returns:</dt>
<dd><code>true</code> if the connection is established successfully,
<code>false</code> otherwise.</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="drawUpperTribeCard(java.lang.String,int)">
<h3>drawUpperTribeCard</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">drawUpperTribeCard</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername,
int&nbsp;pos)</span></div>
<div class="block">Requests to draw a tribe card from the upper tribe card list.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>playerUsername</code> - the username of the player performing the action.</dd>
<dd><code>pos</code> - the position of the selected card in the upper tribe card list.</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="drawLowerTribeCard(java.lang.String,int)">
<h3>drawLowerTribeCard</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">drawLowerTribeCard</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername,
int&nbsp;pos)</span></div>
<div class="block">Requests to draw a tribe card from the lower tribe card list.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>playerUsername</code> - the username of the player performing the action.</dd>
<dd><code>pos</code> - the position of the selected card in the lower tribe card list.</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="drawUpperBuildingCard(java.lang.String,int)">
<h3>drawUpperBuildingCard</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">drawUpperBuildingCard</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername,
int&nbsp;pos)</span></div>
<div class="block">Requests to draw a building card from the upper building card list.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>playerUsername</code> - the username of the player performing the action.</dd>
<dd><code>pos</code> - the position of the selected card in the upper building card list.</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="drawLowerBuildingCard(java.lang.String,int)">
<h3>drawLowerBuildingCard</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">drawLowerBuildingCard</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername,
int&nbsp;pos)</span></div>
<div class="block">Requests to draw a building card from the lower building card list.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>playerUsername</code> - the username of the player performing the action.</dd>
<dd><code>pos</code> - the position of the selected card in the lower building card list.</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="skipTurn(java.lang.String)">
<h3>skipTurn</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">skipTurn</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername)</span></div>
<div class="block">Requests to skip the current player's optional action.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>playerUsername</code> - the username of the player skipping the action.</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="slotChoice(java.lang.String,int)">
<h3>slotChoice</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">slotChoice</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername,
int&nbsp;pos)</span></div>
<div class="block">Requests to assign the specified player to a slot.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>playerUsername</code> - the username of the player making the slot choice.</dd>
<dd><code>pos</code> - the position of the selected slot.</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="totemChoice(java.lang.String,java.lang.String)">
<h3>totemChoice</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">totemChoice</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;totem)</span></div>
<div class="block">Requests to assign the selected totem to the specified player.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>playerUsername</code> - the username of the player making the totem choice.</dd>
<dd><code>totem</code> - the name of the selected totem.</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="notifyDisconnection()">
<h3>notifyDisconnection</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">notifyDisconnection</span>()</div>
<div class="block">Notifies the server of a voluntary disconnection and closes the connection.</div>
</div>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</body>
</html>
@@ -0,0 +1,233 @@
<!DOCTYPE HTML>
<html lang="it">
<head>
<!-- Generated by javadoc (25) on Fri Jun 19 23:05:23 CEST 2026 -->
<title>InterfaceResolver</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-06-19">
<meta name="description" content="declaration: module: it.polimi.ingsw.gc14, package: it.polimi.ingsw.gc14.Network, class: InterfaceResolver">
<meta name="generator" content="javadoc/ClassWriter">
<link rel="stylesheet" type="text/css" href="../../../../../../resource-files/jquery-ui.min.css">
<link rel="stylesheet" type="text/css" href="../../../../../../resource-files/stylesheet.css">
<script type="text/javascript" src="../../../../../../script-files/script.js"></script>
<script type="text/javascript" src="../../../../../../script-files/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../../../../script-files/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">const pathtoroot = "../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="nav-content">
<div class="nav-menu-button"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button></div>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../module-summary.html">Module</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
<li><a href="../../../../../../search.html">Search</a></li>
<li><a href="../../../../../../help-doc.html#class">Help</a></li>
</ul>
</div>
</div>
<div class="sub-nav">
<div class="nav-content">
<ol class="sub-nav-list">
<li><a href="../../../../../module-summary.html">it.polimi.ingsw.gc14</a></li>
<li><a href="package-summary.html">it.polimi.ingsw.gc14.Network</a></li>
<li><a href="InterfaceResolver.html" class="current-selection">InterfaceResolver</a></li>
</ol>
<div class="nav-list-search"><input type="text" id="search-input" disabled placeholder="Search documentation (type /)" aria-label="Search in documentation" autocomplete="off" spellcheck="false"><input type="reset" id="reset-search" disabled value="Reset"></div>
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="main-grid">
<nav role="navigation" class="toc" aria-label="Table of contents">
<div class="toc-header">Contents&nbsp;<input type="text" class="filter-input" disabled placeholder="Filter contents (type .)" aria-label="Filter table of contents" autocomplete="off" spellcheck="false"><input type="reset" class="reset-filter" disabled tabindex="-1" value="Reset"></div>
<ol class="toc-list" tabindex="-1">
<li><a href="#" tabindex="0">Description</a></li>
<li><a href="#constructor-summary" tabindex="0">Constructor Summary</a></li>
<li><a href="#method-summary" tabindex="0">Method Summary</a></li>
<li><a href="#constructor-detail" tabindex="0">Constructor Details</a>
<ol class="toc-list">
<li><a href="#%3Cinit%3E()" tabindex="0">InterfaceResolver()</a></li>
</ol>
</li>
<li><a href="#method-detail" tabindex="0">Method Details</a>
<ol class="toc-list">
<li><a href="#resolveLocalInterface(java.lang.String)" tabindex="0">resolveLocalInterface(String)</a></li>
<li><a href="#sameSubnet(java.net.InetAddress,java.net.InetAddress,int)" tabindex="0">sameSubnet(InetAddress, InetAddress, int)</a></li>
<li><a href="#toInt(byte%5B%5D)" tabindex="0">toInt(byte[])</a></li>
</ol>
</li>
</ol>
<button class="hide-sidebar"><span>Hide sidebar&nbsp;</span><img src="../../../../../../resource-files/left.svg" alt="Hide sidebar"></button><button class="show-sidebar"><img src="../../../../../../resource-files/right.svg" alt="Show sidebar"><span>&nbsp;Show sidebar</span></button></nav>
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<h1 title="Class InterfaceResolver" class="title">Class InterfaceResolver</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
<div class="inheritance">it.polimi.ingsw.gc14.Network.InterfaceResolver</div>
</div>
<section class="class-description" id="class-description">
<hr>
<div class="horizontal-scroll">
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">InterfaceResolver</span>
<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
<div class="block">Utility class for resolving the local network interface to use when connecting to a server.</div>
</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>Constructor Summary</h2>
<div class="caption"><span>Constructors</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier</div>
<div class="table-header col-second">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>private </code></div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">InterfaceResolver</a>()</code></div>
<div class="col-last even-row-color">&nbsp;</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#resolveLocalInterface(java.lang.String)" class="member-name-link">resolveLocalInterface</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;serverIp)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Returns the local IPv4 address that can reach the given server IP.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>private static boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#sameSubnet(java.net.InetAddress,java.net.InetAddress,int)" class="member-name-link">sameSubnet</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/net/InetAddress.html" title="class or interface in java.net" class="external-link">InetAddress</a>&nbsp;a,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/net/InetAddress.html" title="class or interface in java.net" class="external-link">InetAddress</a>&nbsp;b,
int&nbsp;prefix)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Returns <code>true</code> if <code>a</code> and <code>b</code> share the same subnet given a CIDR <code>prefix</code> length.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>private static int</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#toInt(byte%5B%5D)" class="member-name-link">toInt</a><wbr>(byte[]&nbsp;bytes)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Converts a 4-byte big-endian IPv4 address array to a signed 32-bit integer.</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#method-summary" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;()">
<h3>InterfaceResolver</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="element-name">InterfaceResolver</span>()</div>
</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="resolveLocalInterface(java.lang.String)">
<h3>resolveLocalInterface</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">resolveLocalInterface</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;serverIp)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
<div class="block">Returns the local IPv4 address that can reach the given server IP.
<p>If the server is localhost, returns <code>"127.0.0.1"</code>.
Otherwise, iterates active non-loopback interfaces to find one on the same subnet;
falls back to a UDP connect trick if no matching subnet is found.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>serverIp</code> - the server IP address or hostname.</dd>
<dt>Returns:</dt>
<dd>the local IP address string to use for outbound connections.</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></code> - if no suitable interface can be determined.</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="sameSubnet(java.net.InetAddress,java.net.InetAddress,int)">
<h3>sameSubnet</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private static</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">sameSubnet</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/net/InetAddress.html" title="class or interface in java.net" class="external-link">InetAddress</a>&nbsp;a,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/net/InetAddress.html" title="class or interface in java.net" class="external-link">InetAddress</a>&nbsp;b,
int&nbsp;prefix)</span></div>
<div class="block">Returns <code>true</code> if <code>a</code> and <code>b</code> share the same subnet given a CIDR <code>prefix</code> length.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>a</code> - first IPv4 address.</dd>
<dd><code>b</code> - second IPv4 address.</dd>
<dd><code>prefix</code> - CIDR prefix length (032).</dd>
<dt>Returns:</dt>
<dd><code>true</code> if both addresses belong to the same subnet.</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="toInt(byte[])">
<h3>toInt</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private static</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">toInt</span><wbr><span class="parameters">(byte[]&nbsp;bytes)</span></div>
<div class="block">Converts a 4-byte big-endian IPv4 address array to a signed 32-bit integer.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>bytes</code> - the 4-byte address array.</dd>
<dt>Returns:</dt>
<dd>the corresponding signed integer.</dd>
</dl>
</div>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</body>
</html>
@@ -0,0 +1,321 @@
<!DOCTYPE HTML>
<html lang="it">
<head>
<!-- Generated by javadoc (25) on Fri Jun 19 23:05:23 CEST 2026 -->
<title>NetworkConfig</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-06-19">
<meta name="description" content="declaration: module: it.polimi.ingsw.gc14, package: it.polimi.ingsw.gc14.Network, class: NetworkConfig">
<meta name="generator" content="javadoc/ClassWriter">
<link rel="stylesheet" type="text/css" href="../../../../../../resource-files/jquery-ui.min.css">
<link rel="stylesheet" type="text/css" href="../../../../../../resource-files/stylesheet.css">
<script type="text/javascript" src="../../../../../../script-files/script.js"></script>
<script type="text/javascript" src="../../../../../../script-files/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../../../../script-files/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">const pathtoroot = "../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="nav-content">
<div class="nav-menu-button"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button></div>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../module-summary.html">Module</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
<li><a href="../../../../../../search.html">Search</a></li>
<li><a href="../../../../../../help-doc.html#class">Help</a></li>
</ul>
</div>
</div>
<div class="sub-nav">
<div class="nav-content">
<ol class="sub-nav-list">
<li><a href="../../../../../module-summary.html">it.polimi.ingsw.gc14</a></li>
<li><a href="package-summary.html">it.polimi.ingsw.gc14.Network</a></li>
<li><a href="NetworkConfig.html" class="current-selection">NetworkConfig</a></li>
</ol>
<div class="nav-list-search"><input type="text" id="search-input" disabled placeholder="Search documentation (type /)" aria-label="Search in documentation" autocomplete="off" spellcheck="false"><input type="reset" id="reset-search" disabled value="Reset"></div>
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="main-grid">
<nav role="navigation" class="toc" aria-label="Table of contents">
<div class="toc-header">Contents&nbsp;<input type="text" class="filter-input" disabled placeholder="Filter contents (type .)" aria-label="Filter table of contents" autocomplete="off" spellcheck="false"><input type="reset" class="reset-filter" disabled tabindex="-1" value="Reset"></div>
<ol class="toc-list" tabindex="-1">
<li><a href="#" tabindex="0">Description</a></li>
<li><a href="#field-summary" tabindex="0">Field Summary</a></li>
<li><a href="#constructor-summary" tabindex="0">Constructor Summary</a></li>
<li><a href="#method-summary" tabindex="0">Method Summary</a></li>
<li><a href="#field-detail" tabindex="0">Field Details</a>
<ol class="toc-list">
<li><a href="#RMI_PORT" tabindex="0">RMI_PORT</a></li>
<li><a href="#TCP_PORT" tabindex="0">TCP_PORT</a></li>
<li><a href="#HEARTBEAT_PORT" tabindex="0">HEARTBEAT_PORT</a></li>
<li><a href="#SILENCE_THRESHOLD_MS" tabindex="0">SILENCE_THRESHOLD_MS</a></li>
<li><a href="#KEEPALIVE_INTERVAL_MS" tabindex="0">KEEPALIVE_INTERVAL_MS</a></li>
<li><a href="#MIN_PLAYERS" tabindex="0">MIN_PLAYERS</a></li>
<li><a href="#MAX_PLAYERS" tabindex="0">MAX_PLAYERS</a></li>
</ol>
</li>
<li><a href="#constructor-detail" tabindex="0">Constructor Details</a>
<ol class="toc-list">
<li><a href="#%3Cinit%3E()" tabindex="0">NetworkConfig()</a></li>
</ol>
</li>
</ol>
<button class="hide-sidebar"><span>Hide sidebar&nbsp;</span><img src="../../../../../../resource-files/left.svg" alt="Hide sidebar"></button><button class="show-sidebar"><img src="../../../../../../resource-files/right.svg" alt="Show sidebar"><span>&nbsp;Show sidebar</span></button></nav>
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<h1 title="Class NetworkConfig" class="title">Class NetworkConfig</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
<div class="inheritance">it.polimi.ingsw.gc14.Network.NetworkConfig</div>
</div>
<section class="class-description" id="class-description">
<hr>
<div class="horizontal-scroll">
<div class="type-signature"><span class="modifiers">public final class </span><span class="element-name type-name-label">NetworkConfig</span>
<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
<div class="block">Shared network constants used by both server and client components.</div>
</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- =========== FIELD SUMMARY =========== -->
<li>
<section class="field-summary" id="field-summary">
<h2>Field Summary</h2>
<div class="caption"><span>Fields</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Field</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>static final int</code></div>
<div class="col-second even-row-color"><code><a href="#HEARTBEAT_PORT" class="member-name-link">HEARTBEAT_PORT</a></code></div>
<div class="col-last even-row-color">
<div class="block">Port on which the TCP heartbeat server listens.</div>
</div>
<div class="col-first odd-row-color"><code>static final long</code></div>
<div class="col-second odd-row-color"><code><a href="#KEEPALIVE_INTERVAL_MS" class="member-name-link">KEEPALIVE_INTERVAL_MS</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Milliseconds between keep-alive pings sent by the client.</div>
</div>
<div class="col-first even-row-color"><code>static final int</code></div>
<div class="col-second even-row-color"><code><a href="#MAX_PLAYERS" class="member-name-link">MAX_PLAYERS</a></code></div>
<div class="col-last even-row-color">
<div class="block">Maximum number of players allowed in a game.</div>
</div>
<div class="col-first odd-row-color"><code>static final int</code></div>
<div class="col-second odd-row-color"><code><a href="#MIN_PLAYERS" class="member-name-link">MIN_PLAYERS</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Minimum number of players required to start a game.</div>
</div>
<div class="col-first even-row-color"><code>static final int</code></div>
<div class="col-second even-row-color"><code><a href="#RMI_PORT" class="member-name-link">RMI_PORT</a></code></div>
<div class="col-last even-row-color">
<div class="block">Port on which the RMI registry listens.</div>
</div>
<div class="col-first odd-row-color"><code>static final long</code></div>
<div class="col-second odd-row-color"><code><a href="#SILENCE_THRESHOLD_MS" class="member-name-link">SILENCE_THRESHOLD_MS</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Milliseconds of silence before a client is considered disconnected.</div>
</div>
<div class="col-first even-row-color"><code>static final int</code></div>
<div class="col-second even-row-color"><code><a href="#TCP_PORT" class="member-name-link">TCP_PORT</a></code></div>
<div class="col-last even-row-color">
<div class="block">Port on which the TCP game server listens.</div>
</div>
</div>
</section>
</li>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>Constructor Summary</h2>
<div class="caption"><span>Constructors</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier</div>
<div class="table-header col-second">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>private </code></div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">NetworkConfig</a>()</code></div>
<div class="col-last even-row-color">&nbsp;</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#method-summary" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ FIELD DETAIL =========== -->
<li>
<section class="field-details" id="field-detail">
<h2>Field Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="RMI_PORT">
<h3>RMI_PORT</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">RMI_PORT</span></div>
<div class="block">Port on which the RMI registry listens.</div>
<dl class="notes">
<dt>See Also:</dt>
<dd>
<ul class="tag-list">
<li><a href="../../../../../../constant-values.html#it.polimi.ingsw.gc14.Network.NetworkConfig.RMI_PORT">Constant Field Values</a></li>
</ul>
</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="TCP_PORT">
<h3>TCP_PORT</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">TCP_PORT</span></div>
<div class="block">Port on which the TCP game server listens.</div>
<dl class="notes">
<dt>See Also:</dt>
<dd>
<ul class="tag-list">
<li><a href="../../../../../../constant-values.html#it.polimi.ingsw.gc14.Network.NetworkConfig.TCP_PORT">Constant Field Values</a></li>
</ul>
</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="HEARTBEAT_PORT">
<h3>HEARTBEAT_PORT</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">HEARTBEAT_PORT</span></div>
<div class="block">Port on which the TCP heartbeat server listens.</div>
<dl class="notes">
<dt>See Also:</dt>
<dd>
<ul class="tag-list">
<li><a href="../../../../../../constant-values.html#it.polimi.ingsw.gc14.Network.NetworkConfig.HEARTBEAT_PORT">Constant Field Values</a></li>
</ul>
</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="SILENCE_THRESHOLD_MS">
<h3>SILENCE_THRESHOLD_MS</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type">long</span>&nbsp;<span class="element-name">SILENCE_THRESHOLD_MS</span></div>
<div class="block">Milliseconds of silence before a client is considered disconnected.</div>
<dl class="notes">
<dt>See Also:</dt>
<dd>
<ul class="tag-list">
<li><a href="../../../../../../constant-values.html#it.polimi.ingsw.gc14.Network.NetworkConfig.SILENCE_THRESHOLD_MS">Constant Field Values</a></li>
</ul>
</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="KEEPALIVE_INTERVAL_MS">
<h3>KEEPALIVE_INTERVAL_MS</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type">long</span>&nbsp;<span class="element-name">KEEPALIVE_INTERVAL_MS</span></div>
<div class="block">Milliseconds between keep-alive pings sent by the client.</div>
<dl class="notes">
<dt>See Also:</dt>
<dd>
<ul class="tag-list">
<li><a href="../../../../../../constant-values.html#it.polimi.ingsw.gc14.Network.NetworkConfig.KEEPALIVE_INTERVAL_MS">Constant Field Values</a></li>
</ul>
</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="MIN_PLAYERS">
<h3>MIN_PLAYERS</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">MIN_PLAYERS</span></div>
<div class="block">Minimum number of players required to start a game.</div>
<dl class="notes">
<dt>See Also:</dt>
<dd>
<ul class="tag-list">
<li><a href="../../../../../../constant-values.html#it.polimi.ingsw.gc14.Network.NetworkConfig.MIN_PLAYERS">Constant Field Values</a></li>
</ul>
</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="MAX_PLAYERS">
<h3>MAX_PLAYERS</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">MAX_PLAYERS</span></div>
<div class="block">Maximum number of players allowed in a game.</div>
<dl class="notes">
<dt>See Also:</dt>
<dd>
<ul class="tag-list">
<li><a href="../../../../../../constant-values.html#it.polimi.ingsw.gc14.Network.NetworkConfig.MAX_PLAYERS">Constant Field Values</a></li>
</ul>
</dd>
</dl>
</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;()">
<h3>NetworkConfig</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="element-name">NetworkConfig</span>()</div>
</div>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</body>
</html>
@@ -0,0 +1,588 @@
<!DOCTYPE HTML>
<html lang="it">
<head>
<!-- Generated by javadoc (25) on Fri Jun 19 23:05:23 CEST 2026 -->
<title>NetworkEvent</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-06-19">
<meta name="description" content="declaration: module: it.polimi.ingsw.gc14, package: it.polimi.ingsw.gc14.Network, class: NetworkEvent">
<meta name="generator" content="javadoc/ClassWriter">
<link rel="stylesheet" type="text/css" href="../../../../../../resource-files/jquery-ui.min.css">
<link rel="stylesheet" type="text/css" href="../../../../../../resource-files/stylesheet.css">
<script type="text/javascript" src="../../../../../../script-files/script.js"></script>
<script type="text/javascript" src="../../../../../../script-files/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../../../../script-files/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">const pathtoroot = "../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="nav-content">
<div class="nav-menu-button"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button></div>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../module-summary.html">Module</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
<li><a href="../../../../../../search.html">Search</a></li>
<li><a href="../../../../../../help-doc.html#class">Help</a></li>
</ul>
</div>
</div>
<div class="sub-nav">
<div class="nav-content">
<ol class="sub-nav-list">
<li><a href="../../../../../module-summary.html">it.polimi.ingsw.gc14</a></li>
<li><a href="package-summary.html">it.polimi.ingsw.gc14.Network</a></li>
<li><a href="NetworkEvent.html" class="current-selection">NetworkEvent</a></li>
</ol>
<div class="nav-list-search"><input type="text" id="search-input" disabled placeholder="Search documentation (type /)" aria-label="Search in documentation" autocomplete="off" spellcheck="false"><input type="reset" id="reset-search" disabled value="Reset"></div>
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="main-grid">
<nav role="navigation" class="toc" aria-label="Table of contents">
<div class="toc-header">Contents&nbsp;<input type="text" class="filter-input" disabled placeholder="Filter contents (type .)" aria-label="Filter table of contents" autocomplete="off" spellcheck="false"><input type="reset" class="reset-filter" disabled tabindex="-1" value="Reset"></div>
<ol class="toc-list" tabindex="-1">
<li><a href="#" tabindex="0">Description</a></li>
<li><a href="#field-summary" tabindex="0">Field Summary</a></li>
<li><a href="#constructor-summary" tabindex="0">Constructor Summary</a></li>
<li><a href="#method-summary" tabindex="0">Method Summary</a></li>
<li><a href="#field-detail" tabindex="0">Field Details</a>
<ol class="toc-list">
<li><a href="#errorType" tabindex="0">errorType</a></li>
<li><a href="#username" tabindex="0">username</a></li>
<li><a href="#eventType" tabindex="0">eventType</a></li>
<li><a href="#slotPlayerMap" tabindex="0">slotPlayerMap</a></li>
<li><a href="#orderLogicCard" tabindex="0">orderLogicCard</a></li>
<li><a href="#currentState" tabindex="0">currentState</a></li>
<li><a href="#playerList" tabindex="0">playerList</a></li>
<li><a href="#disconnectedPlayers" tabindex="0">disconnectedPlayers</a></li>
<li><a href="#isError" tabindex="0">isError</a></li>
</ol>
</li>
<li><a href="#constructor-detail" tabindex="0">Constructor Details</a>
<ol class="toc-list">
<li><a href="#%3Cinit%3E(java.lang.String,it.polimi.ingsw.gc14.Network.EventType,boolean,it.polimi.ingsw.gc14.ErrorType)" tabindex="0">NetworkEvent(String, EventType, boolean, ErrorType)</a></li>
</ol>
</li>
<li><a href="#method-detail" tabindex="0">Method Details</a>
<ol class="toc-list">
<li><a href="#getErrorType()" tabindex="0">getErrorType()</a></li>
<li><a href="#getUsername()" tabindex="0">getUsername()</a></li>
<li><a href="#enrichWithGameState(it.polimi.ingsw.gc14.Model.Game,java.util.ArrayList)" tabindex="0">enrichWithGameState(Game, ArrayList)</a></li>
<li><a href="#setData(java.util.Map,it.polimi.ingsw.gc14.Model.OrderLogicCard,it.polimi.ingsw.gc14.Model.GamePackage.CurrentState,java.util.List)" tabindex="0">setData(Map, OrderLogicCard, CurrentState, List)</a></li>
<li><a href="#getEventType()" tabindex="0">getEventType()</a></li>
<li><a href="#isError()" tabindex="0">isError()</a></li>
<li><a href="#setIsError(boolean)" tabindex="0">setIsError(boolean)</a></li>
<li><a href="#setErrorType(it.polimi.ingsw.gc14.ErrorType)" tabindex="0">setErrorType(ErrorType)</a></li>
<li><a href="#toString()" tabindex="0">toString()</a></li>
<li><a href="#apply(it.polimi.ingsw.gc14.Controller.GameController)" tabindex="0">apply(GameController)</a></li>
<li><a href="#apply(it.polimi.ingsw.gc14.Model.MiniModel)" tabindex="0">apply(MiniModel)</a></li>
</ol>
</li>
</ol>
<button class="hide-sidebar"><span>Hide sidebar&nbsp;</span><img src="../../../../../../resource-files/left.svg" alt="Hide sidebar"></button><button class="show-sidebar"><img src="../../../../../../resource-files/right.svg" alt="Show sidebar"><span>&nbsp;Show sidebar</span></button></nav>
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<h1 title="Class NetworkEvent" class="title">Class NetworkEvent</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
<div class="inheritance">it.polimi.ingsw.gc14.Network.NetworkEvent</div>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>All Implemented Interfaces:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
</dl>
<dl class="notes">
<dt>Direct Known Subclasses:</dt>
<dd><code><a href="NetworkEvents/AddPlayer.html" title="class in it.polimi.ingsw.gc14.Network.NetworkEvents">AddPlayer</a>, <a href="NetworkEvents/ApplyNextRound.html" title="class in it.polimi.ingsw.gc14.Network.NetworkEvents">ApplyNextRound</a>, <a href="NetworkEvents/DisconnectedPlayer.html" title="class in it.polimi.ingsw.gc14.Network.NetworkEvents">DisconnectedPlayer</a>, <a href="NetworkEvents/DrawLowerBuildingCard.html" title="class in it.polimi.ingsw.gc14.Network.NetworkEvents">DrawLowerBuildingCard</a>, <a href="NetworkEvents/DrawLowerTribeCard.html" title="class in it.polimi.ingsw.gc14.Network.NetworkEvents">DrawLowerTribeCard</a>, <a href="NetworkEvents/DrawUpperBuildingCard.html" title="class in it.polimi.ingsw.gc14.Network.NetworkEvents">DrawUpperBuildingCard</a>, <a href="NetworkEvents/DrawUpperTribeCard.html" title="class in it.polimi.ingsw.gc14.Network.NetworkEvents">DrawUpperTribeCard</a>, <a href="NetworkEvents/EndedGame.html" title="class in it.polimi.ingsw.gc14.Network.NetworkEvents">EndedGame</a>, <a href="NetworkEvents/ReconnectPlayer.html" title="class in it.polimi.ingsw.gc14.Network.NetworkEvents">ReconnectPlayer</a>, <a href="NetworkEvents/SkipTurn.html" title="class in it.polimi.ingsw.gc14.Network.NetworkEvents">SkipTurn</a>, <a href="NetworkEvents/SlotChoice.html" title="class in it.polimi.ingsw.gc14.Network.NetworkEvents">SlotChoice</a>, <a href="NetworkEvents/TotemChoice.html" title="class in it.polimi.ingsw.gc14.Network.NetworkEvents">TotemChoice</a></code></dd>
</dl>
<hr>
<div class="horizontal-scroll">
<div class="type-signature"><span class="modifiers">public abstract class </span><span class="element-name type-name-label">NetworkEvent</span>
<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>
implements <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></span></div>
<div class="block">Represents an event sent over the network.
<p>A network event contains the information required to identify
the requested action, determine whether it produced an error,
and apply it either to the server-side <a href="../Controller/GameController.html" title="class in it.polimi.ingsw.gc14.Controller"><code>GameController</code></a>
or to the client-side <a href="../Model/MiniModel.html" title="class in it.polimi.ingsw.gc14.Model"><code>MiniModel</code></a>.</div>
<dl class="notes">
<dt>See Also:</dt>
<dd>
<ul class="tag-list">
<li><a href="../../../../../../serialized-form.html#it.polimi.ingsw.gc14.Network.NetworkEvent">Serialized Form</a></li>
</ul>
</dd>
</dl>
</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- =========== FIELD SUMMARY =========== -->
<li>
<section class="field-summary" id="field-summary">
<h2>Field Summary</h2>
<div class="caption"><span>Fields</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Field</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>protected <a href="../Model/GamePackage/CurrentState.html" title="class in it.polimi.ingsw.gc14.Model.GamePackage">CurrentState</a></code></div>
<div class="col-second even-row-color"><code><a href="#currentState" class="member-name-link">currentState</a></code></div>
<div class="col-last even-row-color">
<div class="block">Current state of the game associated with the event.</div>
</div>
<div class="col-first odd-row-color"><code>protected <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/ArrayList.html" title="class or interface in java.util" class="external-link">ArrayList</a><wbr>&lt;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</code></div>
<div class="col-second odd-row-color"><code><a href="#disconnectedPlayers" class="member-name-link">disconnectedPlayers</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Usernames of players currently disconnected from the game.</div>
</div>
<div class="col-first even-row-color"><code>protected <a href="../ErrorType.html" title="enum class in it.polimi.ingsw.gc14">ErrorType</a></code></div>
<div class="col-second even-row-color"><code><a href="#errorType" class="member-name-link">errorType</a></code></div>
<div class="col-last even-row-color">
<div class="block">The error type associated with this event; set when the event failed to apply.</div>
</div>
<div class="col-first odd-row-color"><code>protected final <a href="EventType.html" title="enum class in it.polimi.ingsw.gc14.Network">EventType</a></code></div>
<div class="col-second odd-row-color"><code><a href="#eventType" class="member-name-link">eventType</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Type of the network event.</div>
</div>
<div class="col-first even-row-color"><code>protected boolean</code></div>
<div class="col-second even-row-color"><code><a href="#isError" class="member-name-link">isError</a></code></div>
<div class="col-last even-row-color">
<div class="block">Flag indicating whether the event could not be applied successfully.</div>
</div>
<div class="col-first odd-row-color"><code>protected <a href="../Model/OrderLogicCard.html" title="class in it.polimi.ingsw.gc14.Model">OrderLogicCard</a></code></div>
<div class="col-second odd-row-color"><code><a href="#orderLogicCard" class="member-name-link">orderLogicCard</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Order logic card used to manage the player turn order.</div>
</div>
<div class="col-first even-row-color"><code>protected <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a><wbr>&lt;<a href="../Model/Player.html" title="class in it.polimi.ingsw.gc14.Model">Player</a>&gt;</code></div>
<div class="col-second even-row-color"><code><a href="#playerList" class="member-name-link">playerList</a></code></div>
<div class="col-last even-row-color">
<div class="block">List of all players.</div>
</div>
<div class="col-first odd-row-color"><code>protected <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a><wbr>&lt;<a href="../Model/Slot.html" title="class in it.polimi.ingsw.gc14.Model">Slot</a>,<wbr><a href="../Model/Player.html" title="class in it.polimi.ingsw.gc14.Model">Player</a>&gt;</code></div>
<div class="col-second odd-row-color"><code><a href="#slotPlayerMap" class="member-name-link">slotPlayerMap</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Map associating each occupied slot with the corresponding player.</div>
</div>
<div class="col-first even-row-color"><code>protected final <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
<div class="col-second even-row-color"><code><a href="#username" class="member-name-link">username</a></code></div>
<div class="col-last even-row-color">
<div class="block">Username of the player requesting the event.</div>
</div>
</div>
</section>
</li>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>Constructor Summary</h2>
<div class="caption"><span>Constructors</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier</div>
<div class="table-header col-second">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>protected </code></div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.String,it.polimi.ingsw.gc14.Network.EventType,boolean,it.polimi.ingsw.gc14.ErrorType)" class="member-name-link">NetworkEvent</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;username,
<a href="EventType.html" title="enum class in it.polimi.ingsw.gc14.Network">EventType</a>&nbsp;eventType,
boolean&nbsp;isError,
<a href="../ErrorType.html" title="enum class in it.polimi.ingsw.gc14">ErrorType</a>&nbsp;errorType)</code></div>
<div class="col-last even-row-color">
<div class="block">Constructs a network event.</div>
</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab3" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab3', 3)" class="table-tab">Abstract Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>abstract boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#apply(it.polimi.ingsw.gc14.Controller.GameController)" class="member-name-link">apply</a><wbr>(<a href="../Controller/GameController.html" title="class in it.polimi.ingsw.gc14.Controller">GameController</a>&nbsp;gameController)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Applies this event to the specified server-side game controller.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>abstract void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#apply(it.polimi.ingsw.gc14.Model.MiniModel)" class="member-name-link">apply</a><wbr>(<a href="../Model/MiniModel.html" title="class in it.polimi.ingsw.gc14.Model">MiniModel</a>&nbsp;model)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Applies this event to the specified client-side mini model.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#enrichWithGameState(it.polimi.ingsw.gc14.Model.Game,java.util.ArrayList)" class="member-name-link">enrichWithGameState</a><wbr>(<a href="../Model/Game.html" title="class in it.polimi.ingsw.gc14.Model">Game</a>&nbsp;game,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/ArrayList.html" title="class or interface in java.util" class="external-link">ArrayList</a>&lt;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;disconnectedUsernames)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Populates this event with the current game state so clients can
update their local model after receiving it.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="../ErrorType.html" title="enum class in it.polimi.ingsw.gc14">ErrorType</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getErrorType()" class="member-name-link">getErrorType</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns the error type associated with this event.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="EventType.html" title="enum class in it.polimi.ingsw.gc14.Network">EventType</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getEventType()" class="member-name-link">getEventType</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns the type of this event.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getUsername()" class="member-name-link">getUsername</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns the username of the player requesting the event.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isError()" class="member-name-link">isError</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns whether the event represents an error.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setData(java.util.Map,it.polimi.ingsw.gc14.Model.OrderLogicCard,it.polimi.ingsw.gc14.Model.GamePackage.CurrentState,java.util.List)" class="member-name-link">setData</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="../Model/Slot.html" title="class in it.polimi.ingsw.gc14.Model">Slot</a>,<wbr><a href="../Model/Player.html" title="class in it.polimi.ingsw.gc14.Model">Player</a>&gt;&nbsp;slotPlayerMap,
<a href="../Model/OrderLogicCard.html" title="class in it.polimi.ingsw.gc14.Model">OrderLogicCard</a>&nbsp;orderLogicCard,
<a href="../Model/GamePackage/CurrentState.html" title="class in it.polimi.ingsw.gc14.Model.GamePackage">CurrentState</a>&nbsp;currentState,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../Model/Player.html" title="class in it.polimi.ingsw.gc14.Model">Player</a>&gt;&nbsp;playerList)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Sets the game data associated with this network event.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setErrorType(it.polimi.ingsw.gc14.ErrorType)" class="member-name-link">setErrorType</a><wbr>(<a href="../ErrorType.html" title="enum class in it.polimi.ingsw.gc14">ErrorType</a>&nbsp;errorType)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Overrides the error type for this event.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setIsError(boolean)" class="member-name-link">setIsError</a><wbr>(boolean&nbsp;isError)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Sets whether the event represents an error.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#toString()" class="member-name-link">toString</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns a textual description of the event and its outcome.</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#method-summary" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ FIELD DETAIL =========== -->
<li>
<section class="field-details" id="field-detail">
<h2>Field Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="errorType">
<h3>errorType</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="../ErrorType.html" title="enum class in it.polimi.ingsw.gc14">ErrorType</a></span>&nbsp;<span class="element-name">errorType</span></div>
<div class="block">The error type associated with this event; set when the event failed to apply.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="username">
<h3>username</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">protected final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">username</span></div>
<div class="block">Username of the player requesting the event.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="eventType">
<h3>eventType</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">protected final</span>&nbsp;<span class="return-type"><a href="EventType.html" title="enum class in it.polimi.ingsw.gc14.Network">EventType</a></span>&nbsp;<span class="element-name">eventType</span></div>
<div class="block">Type of the network event.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="slotPlayerMap">
<h3>slotPlayerMap</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="../Model/Slot.html" title="class in it.polimi.ingsw.gc14.Model">Slot</a>,<wbr><a href="../Model/Player.html" title="class in it.polimi.ingsw.gc14.Model">Player</a>&gt;</span>&nbsp;<span class="element-name">slotPlayerMap</span></div>
<div class="block">Map associating each occupied slot with the corresponding player.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="orderLogicCard">
<h3>orderLogicCard</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="../Model/OrderLogicCard.html" title="class in it.polimi.ingsw.gc14.Model">OrderLogicCard</a></span>&nbsp;<span class="element-name">orderLogicCard</span></div>
<div class="block">Order logic card used to manage the player turn order.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="currentState">
<h3>currentState</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="../Model/GamePackage/CurrentState.html" title="class in it.polimi.ingsw.gc14.Model.GamePackage">CurrentState</a></span>&nbsp;<span class="element-name">currentState</span></div>
<div class="block">Current state of the game associated with the event.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="playerList">
<h3>playerList</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../Model/Player.html" title="class in it.polimi.ingsw.gc14.Model">Player</a>&gt;</span>&nbsp;<span class="element-name">playerList</span></div>
<div class="block">List of all players.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="disconnectedPlayers">
<h3>disconnectedPlayers</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/ArrayList.html" title="class or interface in java.util" class="external-link">ArrayList</a>&lt;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</span>&nbsp;<span class="element-name">disconnectedPlayers</span></div>
<div class="block">Usernames of players currently disconnected from the game.
Sent with every event so clients always have an up-to-date list.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="isError">
<h3>isError</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isError</span></div>
<div class="block">Flag indicating whether the event could not be applied successfully.</div>
</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;(java.lang.String,it.polimi.ingsw.gc14.Network.EventType,boolean,it.polimi.ingsw.gc14.ErrorType)">
<h3>NetworkEvent</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="element-name">NetworkEvent</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;username,
<a href="EventType.html" title="enum class in it.polimi.ingsw.gc14.Network">EventType</a>&nbsp;eventType,
boolean&nbsp;isError,
<a href="../ErrorType.html" title="enum class in it.polimi.ingsw.gc14">ErrorType</a>&nbsp;errorType)</span></div>
<div class="block">Constructs a network event.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>username</code> - the username of the player requesting the event.</dd>
<dd><code>eventType</code> - the type of the event.</dd>
<dd><code>isError</code> - <code>true</code> if the event represents an error,
<code>false</code> otherwise.</dd>
</dl>
</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="getErrorType()">
<h3>getErrorType</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../ErrorType.html" title="enum class in it.polimi.ingsw.gc14">ErrorType</a></span>&nbsp;<span class="element-name">getErrorType</span>()</div>
<div class="block">Returns the error type associated with this event.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>the error type, or <code>null</code> if no error occurred.</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="getUsername()">
<h3>getUsername</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">getUsername</span>()</div>
<div class="block">Returns the username of the player requesting the event.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>the username associated with the event.</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="enrichWithGameState(it.polimi.ingsw.gc14.Model.Game,java.util.ArrayList)">
<h3>enrichWithGameState</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">enrichWithGameState</span><wbr><span class="parameters">(<a href="../Model/Game.html" title="class in it.polimi.ingsw.gc14.Model">Game</a>&nbsp;game,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/ArrayList.html" title="class or interface in java.util" class="external-link">ArrayList</a>&lt;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;disconnectedUsernames)</span></div>
<div class="block">Populates this event with the current game state so clients can
update their local model after receiving it.
Subclasses that carry extra state (available totems, etc.) override
this method and call <code>super</code> first.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>game</code> - the current game model.</dd>
<dd><code>disconnectedUsernames</code> - usernames of currently disconnected players.</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="setData(java.util.Map,it.polimi.ingsw.gc14.Model.OrderLogicCard,it.polimi.ingsw.gc14.Model.GamePackage.CurrentState,java.util.List)">
<h3>setData</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setData</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="../Model/Slot.html" title="class in it.polimi.ingsw.gc14.Model">Slot</a>,<wbr><a href="../Model/Player.html" title="class in it.polimi.ingsw.gc14.Model">Player</a>&gt;&nbsp;slotPlayerMap,
<a href="../Model/OrderLogicCard.html" title="class in it.polimi.ingsw.gc14.Model">OrderLogicCard</a>&nbsp;orderLogicCard,
<a href="../Model/GamePackage/CurrentState.html" title="class in it.polimi.ingsw.gc14.Model.GamePackage">CurrentState</a>&nbsp;currentState,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../Model/Player.html" title="class in it.polimi.ingsw.gc14.Model">Player</a>&gt;&nbsp;playerList)</span></div>
<div class="block">Sets the game data associated with this network event.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>slotPlayerMap</code> - the map associating each slot with the player occupying it.</dd>
<dd><code>orderLogicCard</code> - the order logic card used to manage turn order.</dd>
<dd><code>currentState</code> - the current state of the game.</dd>
<dd><code>playerList</code> - the list of the actual state of the players</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="getEventType()">
<h3>getEventType</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="EventType.html" title="enum class in it.polimi.ingsw.gc14.Network">EventType</a></span>&nbsp;<span class="element-name">getEventType</span>()</div>
<div class="block">Returns the type of this event.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>the event type.</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="isError()">
<h3>isError</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isError</span>()</div>
<div class="block">Returns whether the event represents an error.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd><code>true</code> if the event could not be applied successfully,
<code>false</code> otherwise.</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="setIsError(boolean)">
<h3>setIsError</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setIsError</span><wbr><span class="parameters">(boolean&nbsp;isError)</span></div>
<div class="block">Sets whether the event represents an error.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>isError</code> - <code>true</code> if the event could not be applied successfully,
<code>false</code> otherwise.</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="setErrorType(it.polimi.ingsw.gc14.ErrorType)">
<h3>setErrorType</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setErrorType</span><wbr><span class="parameters">(<a href="../ErrorType.html" title="enum class in it.polimi.ingsw.gc14">ErrorType</a>&nbsp;errorType)</span></div>
<div class="block">Overrides the error type for this event.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>errorType</code> - the error type to set.</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="toString()">
<h3>toString</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">toString</span>()</div>
<div class="block">Returns a textual description of the event and its outcome.</div>
<dl class="notes">
<dt>Overrides:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></code></dd>
<dt>Returns:</dt>
<dd>a string describing the event type and whether it represents an error.</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="apply(it.polimi.ingsw.gc14.Controller.GameController)">
<h3>apply</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public abstract</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">apply</span><wbr><span class="parameters">(<a href="../Controller/GameController.html" title="class in it.polimi.ingsw.gc14.Controller">GameController</a>&nbsp;gameController)</span></div>
<div class="block">Applies this event to the specified server-side game controller.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>gameController</code> - the game controller on which the event must be applied.</dd>
<dt>Returns:</dt>
<dd><code>true</code> if the event is applied successfully,
<code>false</code> otherwise.</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="apply(it.polimi.ingsw.gc14.Model.MiniModel)">
<h3>apply</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public abstract</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">apply</span><wbr><span class="parameters">(<a href="../Model/MiniModel.html" title="class in it.polimi.ingsw.gc14.Model">MiniModel</a>&nbsp;model)</span></div>
<div class="block">Applies this event to the specified client-side mini model.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>model</code> - the mini model on which the event must be applied.</dd>
</dl>
</div>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</body>
</html>
@@ -0,0 +1,293 @@
<!DOCTYPE HTML>
<html lang="it">
<head>
<!-- Generated by javadoc (25) on Fri Jun 19 23:05:23 CEST 2026 -->
<title>AddPlayer</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-06-19">
<meta name="description" content="declaration: module: it.polimi.ingsw.gc14, package: it.polimi.ingsw.gc14.Network.NetworkEvents, class: AddPlayer">
<meta name="generator" content="javadoc/ClassWriter">
<link rel="stylesheet" type="text/css" href="../../../../../../../resource-files/jquery-ui.min.css">
<link rel="stylesheet" type="text/css" href="../../../../../../../resource-files/stylesheet.css">
<script type="text/javascript" src="../../../../../../../script-files/script.js"></script>
<script type="text/javascript" src="../../../../../../../script-files/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../../../../../script-files/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">const pathtoroot = "../../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="nav-content">
<div class="nav-menu-button"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button></div>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../../module-summary.html">Module</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
<li><a href="../../../../../../../search.html">Search</a></li>
<li><a href="../../../../../../../help-doc.html#class">Help</a></li>
</ul>
</div>
</div>
<div class="sub-nav">
<div class="nav-content">
<ol class="sub-nav-list">
<li><a href="../../../../../../module-summary.html">it.polimi.ingsw.gc14</a></li>
<li><a href="package-summary.html">it.polimi.ingsw.gc14.Network.NetworkEvents</a></li>
<li><a href="AddPlayer.html" class="current-selection">AddPlayer</a></li>
</ol>
<div class="nav-list-search"><input type="text" id="search-input" disabled placeholder="Search documentation (type /)" aria-label="Search in documentation" autocomplete="off" spellcheck="false"><input type="reset" id="reset-search" disabled value="Reset"></div>
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="main-grid">
<nav role="navigation" class="toc" aria-label="Table of contents">
<div class="toc-header">Contents&nbsp;<input type="text" class="filter-input" disabled placeholder="Filter contents (type .)" aria-label="Filter table of contents" autocomplete="off" spellcheck="false"><input type="reset" class="reset-filter" disabled tabindex="-1" value="Reset"></div>
<ol class="toc-list" tabindex="-1">
<li><a href="#" tabindex="0">Description</a></li>
<li><a href="#field-summary" tabindex="0">Field Summary</a></li>
<li><a href="#constructor-summary" tabindex="0">Constructor Summary</a></li>
<li><a href="#method-summary" tabindex="0">Method Summary</a></li>
<li><a href="#field-detail" tabindex="0">Field Details</a>
<ol class="toc-list">
<li><a href="#proposedNPlayer" tabindex="0">proposedNPlayer</a></li>
</ol>
</li>
<li><a href="#constructor-detail" tabindex="0">Constructor Details</a>
<ol class="toc-list">
<li><a href="#%3Cinit%3E(java.lang.String,int)" tabindex="0">AddPlayer(String, int)</a></li>
</ol>
</li>
<li><a href="#method-detail" tabindex="0">Method Details</a>
<ol class="toc-list">
<li><a href="#getProposedNPlayer()" tabindex="0">getProposedNPlayer()</a></li>
<li><a href="#apply(it.polimi.ingsw.gc14.Controller.GameController)" tabindex="0">apply(GameController)</a></li>
<li><a href="#apply(it.polimi.ingsw.gc14.Model.MiniModel)" tabindex="0">apply(MiniModel)</a></li>
</ol>
</li>
</ol>
<button class="hide-sidebar"><span>Hide sidebar&nbsp;</span><img src="../../../../../../../resource-files/left.svg" alt="Hide sidebar"></button><button class="show-sidebar"><img src="../../../../../../../resource-files/right.svg" alt="Show sidebar"><span>&nbsp;Show sidebar</span></button></nav>
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<h1 title="Class AddPlayer" class="title">Class AddPlayer</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
<div class="inheritance"><a href="../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">it.polimi.ingsw.gc14.Network.NetworkEvent</a>
<div class="inheritance">it.polimi.ingsw.gc14.Network.NetworkEvents.AddPlayer</div>
</div>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>All Implemented Interfaces:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
</dl>
<hr>
<div class="horizontal-scroll">
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">AddPlayer</span>
<span class="extends-implements">extends <a href="../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a></span></div>
<div class="block">Network event used to register a new player in the lobby.
<p>The first player to join also proposes the desired number of players
for the match. Subsequent joiners ignore <code>proposedNPlayer</code> if the
game has already been created.</div>
<dl class="notes">
<dt>See Also:</dt>
<dd>
<ul class="tag-list">
<li><a href="../../../../../../../serialized-form.html#it.polimi.ingsw.gc14.Network.NetworkEvents.AddPlayer">Serialized Form</a></li>
</ul>
</dd>
</dl>
</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- =========== FIELD SUMMARY =========== -->
<li>
<section class="field-summary" id="field-summary">
<h2>Field Summary</h2>
<div class="caption"><span>Fields</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Field</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>private final int</code></div>
<div class="col-second even-row-color"><code><a href="#proposedNPlayer" class="member-name-link">proposedNPlayer</a></code></div>
<div class="col-last even-row-color">
<div class="block">Number of players proposed by this player; used only when creating a new game.</div>
</div>
</div>
<div class="inherited-list">
<h3 id="fields-inherited-from-class-it.polimi.ingsw.gc14.Network.NetworkEvent">Fields inherited from class&nbsp;<a href="../NetworkEvent.html#field-summary" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a></h3>
<code><a href="../NetworkEvent.html#currentState">currentState</a>, <a href="../NetworkEvent.html#disconnectedPlayers">disconnectedPlayers</a>, <a href="../NetworkEvent.html#errorType">errorType</a>, <a href="../NetworkEvent.html#eventType">eventType</a>, <a href="../NetworkEvent.html#isError">isError</a>, <a href="../NetworkEvent.html#orderLogicCard">orderLogicCard</a>, <a href="../NetworkEvent.html#playerList">playerList</a>, <a href="../NetworkEvent.html#slotPlayerMap">slotPlayerMap</a>, <a href="../NetworkEvent.html#username">username</a></code></div>
</section>
</li>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>Constructor Summary</h2>
<div class="caption"><span>Constructors</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.String,int)" class="member-name-link">AddPlayer</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;username,
int&nbsp;proposedNPlayer)</code></div>
<div class="col-last even-row-color">
<div class="block">Class constructor.</div>
</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#apply(it.polimi.ingsw.gc14.Controller.GameController)" class="member-name-link">apply</a><wbr>(<a href="../../Controller/GameController.html" title="class in it.polimi.ingsw.gc14.Controller">GameController</a>&nbsp;gameController)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Applies this event to the specified server-side game controller.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#apply(it.polimi.ingsw.gc14.Model.MiniModel)" class="member-name-link">apply</a><wbr>(<a href="../../Model/MiniModel.html" title="class in it.polimi.ingsw.gc14.Model">MiniModel</a>&nbsp;miniModel)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Applies this event to the client-side mini model, updating players,
turn order, game state, and slot map.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getProposedNPlayer()" class="member-name-link">getProposedNPlayer</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-it.polimi.ingsw.gc14.Network.NetworkEvent">Methods inherited from class&nbsp;<a href="../NetworkEvent.html#method-summary" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a></h3>
<code><a href="../NetworkEvent.html#enrichWithGameState(it.polimi.ingsw.gc14.Model.Game,java.util.ArrayList)" title="enrichWithGameState(Game, ArrayList)">enrichWithGameState</a>, <a href="../NetworkEvent.html#getErrorType()" title="getErrorType()">getErrorType</a>, <a href="../NetworkEvent.html#getEventType()" title="getEventType()">getEventType</a>, <a href="../NetworkEvent.html#getUsername()" title="getUsername()">getUsername</a>, <a href="../NetworkEvent.html#isError()" title="isError()">isError</a>, <a href="../NetworkEvent.html#setData(java.util.Map,it.polimi.ingsw.gc14.Model.OrderLogicCard,it.polimi.ingsw.gc14.Model.GamePackage.CurrentState,java.util.List)" title="setData(Map, OrderLogicCard, CurrentState, List)">setData</a>, <a href="../NetworkEvent.html#setErrorType(it.polimi.ingsw.gc14.ErrorType)" title="setErrorType(ErrorType)">setErrorType</a>, <a href="../NetworkEvent.html#setIsError(boolean)" title="setIsError(boolean)">setIsError</a>, <a href="../NetworkEvent.html#toString()" title="toString()">toString</a></code></div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#method-summary" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ FIELD DETAIL =========== -->
<li>
<section class="field-details" id="field-detail">
<h2>Field Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="proposedNPlayer">
<h3>proposedNPlayer</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">proposedNPlayer</span></div>
<div class="block">Number of players proposed by this player; used only when creating a new game.</div>
</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;(java.lang.String,int)">
<h3>AddPlayer</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">AddPlayer</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;username,
int&nbsp;proposedNPlayer)</span></div>
<div class="block">Class constructor.
Initializes all the attributes.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>username</code> - the name of the player requesting the event</dd>
<dd><code>proposedNPlayer</code> - the number of proposed players to add to the match</dd>
</dl>
</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="getProposedNPlayer()">
<h3>getProposedNPlayer</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">getProposedNPlayer</span>()</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>the number of proposed players to add to the match</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="apply(it.polimi.ingsw.gc14.Controller.GameController)">
<h3>apply</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">apply</span><wbr><span class="parameters">(<a href="../../Controller/GameController.html" title="class in it.polimi.ingsw.gc14.Controller">GameController</a>&nbsp;gameController)</span></div>
<div class="block"><span class="description-from-type-label">Description copied from class:&nbsp;<code><a href="../NetworkEvent.html#apply(it.polimi.ingsw.gc14.Controller.GameController)">NetworkEvent</a></code></span></div>
<div class="block">Applies this event to the specified server-side game controller.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../NetworkEvent.html#apply(it.polimi.ingsw.gc14.Controller.GameController)">apply</a></code>&nbsp;in class&nbsp;<code><a href="../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a></code></dd>
<dt>Parameters:</dt>
<dd><code>gameController</code> - the Game Controller on which to apply the event</dd>
<dt>Returns:</dt>
<dd>true if the player could be added to the match, false otherwise</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="apply(it.polimi.ingsw.gc14.Model.MiniModel)">
<h3>apply</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">apply</span><wbr><span class="parameters">(<a href="../../Model/MiniModel.html" title="class in it.polimi.ingsw.gc14.Model">MiniModel</a>&nbsp;miniModel)</span></div>
<div class="block">Applies this event to the client-side mini model, updating players,
turn order, game state, and slot map.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../NetworkEvent.html#apply(it.polimi.ingsw.gc14.Model.MiniModel)">apply</a></code>&nbsp;in class&nbsp;<code><a href="../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a></code></dd>
<dt>Parameters:</dt>
<dd><code>miniModel</code> - the client-side model to update.</dd>
</dl>
</div>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</body>
</html>
@@ -0,0 +1,339 @@
<!DOCTYPE HTML>
<html lang="it">
<head>
<!-- Generated by javadoc (25) on Fri Jun 19 23:05:23 CEST 2026 -->
<title>ApplyNextRound</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-06-19">
<meta name="description" content="declaration: module: it.polimi.ingsw.gc14, package: it.polimi.ingsw.gc14.Network.NetworkEvents, class: ApplyNextRound">
<meta name="generator" content="javadoc/ClassWriter">
<link rel="stylesheet" type="text/css" href="../../../../../../../resource-files/jquery-ui.min.css">
<link rel="stylesheet" type="text/css" href="../../../../../../../resource-files/stylesheet.css">
<script type="text/javascript" src="../../../../../../../script-files/script.js"></script>
<script type="text/javascript" src="../../../../../../../script-files/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../../../../../script-files/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">const pathtoroot = "../../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="nav-content">
<div class="nav-menu-button"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button></div>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../../module-summary.html">Module</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
<li><a href="../../../../../../../search.html">Search</a></li>
<li><a href="../../../../../../../help-doc.html#class">Help</a></li>
</ul>
</div>
</div>
<div class="sub-nav">
<div class="nav-content">
<ol class="sub-nav-list">
<li><a href="../../../../../../module-summary.html">it.polimi.ingsw.gc14</a></li>
<li><a href="package-summary.html">it.polimi.ingsw.gc14.Network.NetworkEvents</a></li>
<li><a href="ApplyNextRound.html" class="current-selection">ApplyNextRound</a></li>
</ol>
<div class="nav-list-search"><input type="text" id="search-input" disabled placeholder="Search documentation (type /)" aria-label="Search in documentation" autocomplete="off" spellcheck="false"><input type="reset" id="reset-search" disabled value="Reset"></div>
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="main-grid">
<nav role="navigation" class="toc" aria-label="Table of contents">
<div class="toc-header">Contents&nbsp;<input type="text" class="filter-input" disabled placeholder="Filter contents (type .)" aria-label="Filter table of contents" autocomplete="off" spellcheck="false"><input type="reset" class="reset-filter" disabled tabindex="-1" value="Reset"></div>
<ol class="toc-list" tabindex="-1">
<li><a href="#" tabindex="0">Description</a></li>
<li><a href="#field-summary" tabindex="0">Field Summary</a></li>
<li><a href="#constructor-summary" tabindex="0">Constructor Summary</a></li>
<li><a href="#method-summary" tabindex="0">Method Summary</a></li>
<li><a href="#field-detail" tabindex="0">Field Details</a>
<ol class="toc-list">
<li><a href="#upperListTribeCards" tabindex="0">upperListTribeCards</a></li>
<li><a href="#lowerListTribeCards" tabindex="0">lowerListTribeCards</a></li>
<li><a href="#upperListBuildingCards" tabindex="0">upperListBuildingCards</a></li>
<li><a href="#lowerListBuildingCards" tabindex="0">lowerListBuildingCards</a></li>
</ol>
</li>
<li><a href="#constructor-detail" tabindex="0">Constructor Details</a>
<ol class="toc-list">
<li><a href="#%3Cinit%3E(java.util.Map,it.polimi.ingsw.gc14.Model.OrderLogicCard,it.polimi.ingsw.gc14.Model.GamePackage.CurrentState,java.util.List,java.util.ArrayList,java.util.ArrayList,java.util.ArrayList,java.util.ArrayList)" tabindex="0">ApplyNextRound(Map, OrderLogicCard, CurrentState, List, ArrayList, ArrayList, ArrayList, ArrayList)</a></li>
</ol>
</li>
<li><a href="#method-detail" tabindex="0">Method Details</a>
<ol class="toc-list">
<li><a href="#apply(it.polimi.ingsw.gc14.Controller.GameController)" tabindex="0">apply(GameController)</a></li>
<li><a href="#apply(it.polimi.ingsw.gc14.Model.MiniModel)" tabindex="0">apply(MiniModel)</a></li>
</ol>
</li>
</ol>
<button class="hide-sidebar"><span>Hide sidebar&nbsp;</span><img src="../../../../../../../resource-files/left.svg" alt="Hide sidebar"></button><button class="show-sidebar"><img src="../../../../../../../resource-files/right.svg" alt="Show sidebar"><span>&nbsp;Show sidebar</span></button></nav>
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<h1 title="Class ApplyNextRound" class="title">Class ApplyNextRound</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
<div class="inheritance"><a href="../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">it.polimi.ingsw.gc14.Network.NetworkEvent</a>
<div class="inheritance">it.polimi.ingsw.gc14.Network.NetworkEvents.ApplyNextRound</div>
</div>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>All Implemented Interfaces:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
</dl>
<hr>
<div class="horizontal-scroll">
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">ApplyNextRound</span>
<span class="extends-implements">extends <a href="../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a></span></div>
<div class="block">Network event that transitions all clients to the next round.
<p>Carries refreshed card lists for all four board rows in addition
to the standard game state (slot map, turn order, current state,
player list). Only applied client-side; <a href="#apply(it.polimi.ingsw.gc14.Controller.GameController)"><code>apply(GameController)</code></a>
always returns <code>false</code>.</div>
<dl class="notes">
<dt>See Also:</dt>
<dd>
<ul class="tag-list">
<li><a href="../../../../../../../serialized-form.html#it.polimi.ingsw.gc14.Network.NetworkEvents.ApplyNextRound">Serialized Form</a></li>
</ul>
</dd>
</dl>
</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- =========== FIELD SUMMARY =========== -->
<li>
<section class="field-summary" id="field-summary">
<h2>Field Summary</h2>
<div class="caption"><span>Fields</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Field</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>private final <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/ArrayList.html" title="class or interface in java.util" class="external-link">ArrayList</a><wbr>&lt;<a href="../../Model/Cards/BuildingCard.html" title="class in it.polimi.ingsw.gc14.Model.Cards">BuildingCard</a>&gt;</code></div>
<div class="col-second even-row-color"><code><a href="#lowerListBuildingCards" class="member-name-link">lowerListBuildingCards</a></code></div>
<div class="col-last even-row-color">
<div class="block">Building cards shown in the lower row of the board for the new round.</div>
</div>
<div class="col-first odd-row-color"><code>private final <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/ArrayList.html" title="class or interface in java.util" class="external-link">ArrayList</a><wbr>&lt;<a href="../../Model/Cards/TribeCard.html" title="class in it.polimi.ingsw.gc14.Model.Cards">TribeCard</a>&gt;</code></div>
<div class="col-second odd-row-color"><code><a href="#lowerListTribeCards" class="member-name-link">lowerListTribeCards</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Tribe cards shown in the lower row of the board for the new round.</div>
</div>
<div class="col-first even-row-color"><code>private final <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/ArrayList.html" title="class or interface in java.util" class="external-link">ArrayList</a><wbr>&lt;<a href="../../Model/Cards/BuildingCard.html" title="class in it.polimi.ingsw.gc14.Model.Cards">BuildingCard</a>&gt;</code></div>
<div class="col-second even-row-color"><code><a href="#upperListBuildingCards" class="member-name-link">upperListBuildingCards</a></code></div>
<div class="col-last even-row-color">
<div class="block">Building cards shown in the upper row of the board for the new round.</div>
</div>
<div class="col-first odd-row-color"><code>private final <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/ArrayList.html" title="class or interface in java.util" class="external-link">ArrayList</a><wbr>&lt;<a href="../../Model/Cards/TribeCard.html" title="class in it.polimi.ingsw.gc14.Model.Cards">TribeCard</a>&gt;</code></div>
<div class="col-second odd-row-color"><code><a href="#upperListTribeCards" class="member-name-link">upperListTribeCards</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Tribe cards shown in the upper row of the board for the new round.</div>
</div>
</div>
<div class="inherited-list">
<h3 id="fields-inherited-from-class-it.polimi.ingsw.gc14.Network.NetworkEvent">Fields inherited from class&nbsp;<a href="../NetworkEvent.html#field-summary" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a></h3>
<code><a href="../NetworkEvent.html#currentState">currentState</a>, <a href="../NetworkEvent.html#disconnectedPlayers">disconnectedPlayers</a>, <a href="../NetworkEvent.html#errorType">errorType</a>, <a href="../NetworkEvent.html#eventType">eventType</a>, <a href="../NetworkEvent.html#isError">isError</a>, <a href="../NetworkEvent.html#orderLogicCard">orderLogicCard</a>, <a href="../NetworkEvent.html#playerList">playerList</a>, <a href="../NetworkEvent.html#slotPlayerMap">slotPlayerMap</a>, <a href="../NetworkEvent.html#username">username</a></code></div>
</section>
</li>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>Constructor Summary</h2>
<div class="caption"><span>Constructors</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.util.Map,it.polimi.ingsw.gc14.Model.OrderLogicCard,it.polimi.ingsw.gc14.Model.GamePackage.CurrentState,java.util.List,java.util.ArrayList,java.util.ArrayList,java.util.ArrayList,java.util.ArrayList)" class="member-name-link">ApplyNextRound</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="../../Model/Slot.html" title="class in it.polimi.ingsw.gc14.Model">Slot</a>,<wbr><a href="../../Model/Player.html" title="class in it.polimi.ingsw.gc14.Model">Player</a>&gt;&nbsp;slotPlayerMap,
<a href="../../Model/OrderLogicCard.html" title="class in it.polimi.ingsw.gc14.Model">OrderLogicCard</a>&nbsp;orderLogicCard,
<a href="../../Model/GamePackage/CurrentState.html" title="class in it.polimi.ingsw.gc14.Model.GamePackage">CurrentState</a>&nbsp;currentState,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../../Model/Player.html" title="class in it.polimi.ingsw.gc14.Model">Player</a>&gt;&nbsp;players,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/ArrayList.html" title="class or interface in java.util" class="external-link">ArrayList</a>&lt;<a href="../../Model/Cards/TribeCard.html" title="class in it.polimi.ingsw.gc14.Model.Cards">TribeCard</a>&gt;&nbsp;upperListTribeCards,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/ArrayList.html" title="class or interface in java.util" class="external-link">ArrayList</a>&lt;<a href="../../Model/Cards/TribeCard.html" title="class in it.polimi.ingsw.gc14.Model.Cards">TribeCard</a>&gt;&nbsp;lowerListTribeCards,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/ArrayList.html" title="class or interface in java.util" class="external-link">ArrayList</a>&lt;<a href="../../Model/Cards/BuildingCard.html" title="class in it.polimi.ingsw.gc14.Model.Cards">BuildingCard</a>&gt;&nbsp;upperListBuildingCards,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/ArrayList.html" title="class or interface in java.util" class="external-link">ArrayList</a>&lt;<a href="../../Model/Cards/BuildingCard.html" title="class in it.polimi.ingsw.gc14.Model.Cards">BuildingCard</a>&gt;&nbsp;lowerListBuildingCards)</code></div>
<div class="col-last even-row-color">
<div class="block">Constructs an event that updates the game state for the next round.</div>
</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#apply(it.polimi.ingsw.gc14.Controller.GameController)" class="member-name-link">apply</a><wbr>(<a href="../../Controller/GameController.html" title="class in it.polimi.ingsw.gc14.Controller">GameController</a>&nbsp;gameController)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Not applicable server-side.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#apply(it.polimi.ingsw.gc14.Model.MiniModel)" class="member-name-link">apply</a><wbr>(<a href="../../Model/MiniModel.html" title="class in it.polimi.ingsw.gc14.Model">MiniModel</a>&nbsp;miniModel)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Applies this event to the client-side mini model, updating all board lists,
slot map, turn order, and game state for the new round.</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-it.polimi.ingsw.gc14.Network.NetworkEvent">Methods inherited from class&nbsp;<a href="../NetworkEvent.html#method-summary" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a></h3>
<code><a href="../NetworkEvent.html#enrichWithGameState(it.polimi.ingsw.gc14.Model.Game,java.util.ArrayList)" title="enrichWithGameState(Game, ArrayList)">enrichWithGameState</a>, <a href="../NetworkEvent.html#getErrorType()" title="getErrorType()">getErrorType</a>, <a href="../NetworkEvent.html#getEventType()" title="getEventType()">getEventType</a>, <a href="../NetworkEvent.html#getUsername()" title="getUsername()">getUsername</a>, <a href="../NetworkEvent.html#isError()" title="isError()">isError</a>, <a href="../NetworkEvent.html#setData(java.util.Map,it.polimi.ingsw.gc14.Model.OrderLogicCard,it.polimi.ingsw.gc14.Model.GamePackage.CurrentState,java.util.List)" title="setData(Map, OrderLogicCard, CurrentState, List)">setData</a>, <a href="../NetworkEvent.html#setErrorType(it.polimi.ingsw.gc14.ErrorType)" title="setErrorType(ErrorType)">setErrorType</a>, <a href="../NetworkEvent.html#setIsError(boolean)" title="setIsError(boolean)">setIsError</a>, <a href="../NetworkEvent.html#toString()" title="toString()">toString</a></code></div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#method-summary" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ FIELD DETAIL =========== -->
<li>
<section class="field-details" id="field-detail">
<h2>Field Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="upperListTribeCards">
<h3>upperListTribeCards</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/ArrayList.html" title="class or interface in java.util" class="external-link">ArrayList</a>&lt;<a href="../../Model/Cards/TribeCard.html" title="class in it.polimi.ingsw.gc14.Model.Cards">TribeCard</a>&gt;</span>&nbsp;<span class="element-name">upperListTribeCards</span></div>
<div class="block">Tribe cards shown in the upper row of the board for the new round.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="lowerListTribeCards">
<h3>lowerListTribeCards</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/ArrayList.html" title="class or interface in java.util" class="external-link">ArrayList</a>&lt;<a href="../../Model/Cards/TribeCard.html" title="class in it.polimi.ingsw.gc14.Model.Cards">TribeCard</a>&gt;</span>&nbsp;<span class="element-name">lowerListTribeCards</span></div>
<div class="block">Tribe cards shown in the lower row of the board for the new round.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="upperListBuildingCards">
<h3>upperListBuildingCards</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/ArrayList.html" title="class or interface in java.util" class="external-link">ArrayList</a>&lt;<a href="../../Model/Cards/BuildingCard.html" title="class in it.polimi.ingsw.gc14.Model.Cards">BuildingCard</a>&gt;</span>&nbsp;<span class="element-name">upperListBuildingCards</span></div>
<div class="block">Building cards shown in the upper row of the board for the new round.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="lowerListBuildingCards">
<h3>lowerListBuildingCards</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/ArrayList.html" title="class or interface in java.util" class="external-link">ArrayList</a>&lt;<a href="../../Model/Cards/BuildingCard.html" title="class in it.polimi.ingsw.gc14.Model.Cards">BuildingCard</a>&gt;</span>&nbsp;<span class="element-name">lowerListBuildingCards</span></div>
<div class="block">Building cards shown in the lower row of the board for the new round.</div>
</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;(java.util.Map,it.polimi.ingsw.gc14.Model.OrderLogicCard,it.polimi.ingsw.gc14.Model.GamePackage.CurrentState,java.util.List,java.util.ArrayList,java.util.ArrayList,java.util.ArrayList,java.util.ArrayList)">
<h3>ApplyNextRound</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">ApplyNextRound</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="../../Model/Slot.html" title="class in it.polimi.ingsw.gc14.Model">Slot</a>,<wbr><a href="../../Model/Player.html" title="class in it.polimi.ingsw.gc14.Model">Player</a>&gt;&nbsp;slotPlayerMap,
<a href="../../Model/OrderLogicCard.html" title="class in it.polimi.ingsw.gc14.Model">OrderLogicCard</a>&nbsp;orderLogicCard,
<a href="../../Model/GamePackage/CurrentState.html" title="class in it.polimi.ingsw.gc14.Model.GamePackage">CurrentState</a>&nbsp;currentState,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../../Model/Player.html" title="class in it.polimi.ingsw.gc14.Model">Player</a>&gt;&nbsp;players,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/ArrayList.html" title="class or interface in java.util" class="external-link">ArrayList</a>&lt;<a href="../../Model/Cards/TribeCard.html" title="class in it.polimi.ingsw.gc14.Model.Cards">TribeCard</a>&gt;&nbsp;upperListTribeCards,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/ArrayList.html" title="class or interface in java.util" class="external-link">ArrayList</a>&lt;<a href="../../Model/Cards/TribeCard.html" title="class in it.polimi.ingsw.gc14.Model.Cards">TribeCard</a>&gt;&nbsp;lowerListTribeCards,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/ArrayList.html" title="class or interface in java.util" class="external-link">ArrayList</a>&lt;<a href="../../Model/Cards/BuildingCard.html" title="class in it.polimi.ingsw.gc14.Model.Cards">BuildingCard</a>&gt;&nbsp;upperListBuildingCards,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/ArrayList.html" title="class or interface in java.util" class="external-link">ArrayList</a>&lt;<a href="../../Model/Cards/BuildingCard.html" title="class in it.polimi.ingsw.gc14.Model.Cards">BuildingCard</a>&gt;&nbsp;lowerListBuildingCards)</span></div>
<div class="block">Constructs an event that updates the game state for the next round.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>slotPlayerMap</code> - the map associating each slot with the player occupying it.</dd>
<dd><code>orderLogicCard</code> - the order logic card that determines the player order.</dd>
<dd><code>currentState</code> - the current state of the game.</dd>
<dd><code>players</code> - the list of players in the game.</dd>
<dd><code>upperListTribeCards</code> - the upper row of tribe cards for the new round.</dd>
<dd><code>lowerListTribeCards</code> - the lower row of tribe cards for the new round.</dd>
<dd><code>upperListBuildingCards</code> - the upper row of building cards for the new round.</dd>
<dd><code>lowerListBuildingCards</code> - the lower row of building cards for the new round.</dd>
</dl>
</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="apply(it.polimi.ingsw.gc14.Controller.GameController)">
<h3>apply</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">apply</span><wbr><span class="parameters">(<a href="../../Controller/GameController.html" title="class in it.polimi.ingsw.gc14.Controller">GameController</a>&nbsp;gameController)</span></div>
<div class="block">Not applicable server-side.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../NetworkEvent.html#apply(it.polimi.ingsw.gc14.Controller.GameController)">apply</a></code>&nbsp;in class&nbsp;<code><a href="../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a></code></dd>
<dt>Parameters:</dt>
<dd><code>gameController</code> - the game controller (unused).</dd>
<dt>Returns:</dt>
<dd><code>false</code> always.</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="apply(it.polimi.ingsw.gc14.Model.MiniModel)">
<h3>apply</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">apply</span><wbr><span class="parameters">(<a href="../../Model/MiniModel.html" title="class in it.polimi.ingsw.gc14.Model">MiniModel</a>&nbsp;miniModel)</span></div>
<div class="block">Applies this event to the client-side mini model, updating all board lists,
slot map, turn order, and game state for the new round.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../NetworkEvent.html#apply(it.polimi.ingsw.gc14.Model.MiniModel)">apply</a></code>&nbsp;in class&nbsp;<code><a href="../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a></code></dd>
<dt>Parameters:</dt>
<dd><code>miniModel</code> - the client-side model to update.</dd>
</dl>
</div>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</body>
</html>
@@ -0,0 +1,300 @@
<!DOCTYPE HTML>
<html lang="it">
<head>
<!-- Generated by javadoc (25) on Fri Jun 19 23:05:23 CEST 2026 -->
<title>DisconnectedPlayer</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-06-19">
<meta name="description" content="declaration: module: it.polimi.ingsw.gc14, package: it.polimi.ingsw.gc14.Network.NetworkEvents, class: DisconnectedPlayer">
<meta name="generator" content="javadoc/ClassWriter">
<link rel="stylesheet" type="text/css" href="../../../../../../../resource-files/jquery-ui.min.css">
<link rel="stylesheet" type="text/css" href="../../../../../../../resource-files/stylesheet.css">
<script type="text/javascript" src="../../../../../../../script-files/script.js"></script>
<script type="text/javascript" src="../../../../../../../script-files/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../../../../../script-files/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">const pathtoroot = "../../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="nav-content">
<div class="nav-menu-button"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button></div>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../../module-summary.html">Module</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
<li><a href="../../../../../../../search.html">Search</a></li>
<li><a href="../../../../../../../help-doc.html#class">Help</a></li>
</ul>
</div>
</div>
<div class="sub-nav">
<div class="nav-content">
<ol class="sub-nav-list">
<li><a href="../../../../../../module-summary.html">it.polimi.ingsw.gc14</a></li>
<li><a href="package-summary.html">it.polimi.ingsw.gc14.Network.NetworkEvents</a></li>
<li><a href="DisconnectedPlayer.html" class="current-selection">DisconnectedPlayer</a></li>
</ol>
<div class="nav-list-search"><input type="text" id="search-input" disabled placeholder="Search documentation (type /)" aria-label="Search in documentation" autocomplete="off" spellcheck="false"><input type="reset" id="reset-search" disabled value="Reset"></div>
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="main-grid">
<nav role="navigation" class="toc" aria-label="Table of contents">
<div class="toc-header">Contents&nbsp;<input type="text" class="filter-input" disabled placeholder="Filter contents (type .)" aria-label="Filter table of contents" autocomplete="off" spellcheck="false"><input type="reset" class="reset-filter" disabled tabindex="-1" value="Reset"></div>
<ol class="toc-list" tabindex="-1">
<li><a href="#" tabindex="0">Description</a></li>
<li><a href="#field-summary" tabindex="0">Field Summary</a></li>
<li><a href="#constructor-summary" tabindex="0">Constructor Summary</a></li>
<li><a href="#method-summary" tabindex="0">Method Summary</a></li>
<li><a href="#field-detail" tabindex="0">Field Details</a>
<ol class="toc-list">
<li><a href="#availableTotems" tabindex="0">availableTotems</a></li>
</ol>
</li>
<li><a href="#constructor-detail" tabindex="0">Constructor Details</a>
<ol class="toc-list">
<li><a href="#%3Cinit%3E(java.lang.String)" tabindex="0">DisconnectedPlayer(String)</a></li>
</ol>
</li>
<li><a href="#method-detail" tabindex="0">Method Details</a>
<ol class="toc-list">
<li><a href="#enrichWithGameState(it.polimi.ingsw.gc14.Model.Game,java.util.ArrayList)" tabindex="0">enrichWithGameState(Game, ArrayList)</a></li>
<li><a href="#apply(it.polimi.ingsw.gc14.Controller.GameController)" tabindex="0">apply(GameController)</a></li>
<li><a href="#apply(it.polimi.ingsw.gc14.Model.MiniModel)" tabindex="0">apply(MiniModel)</a></li>
</ol>
</li>
</ol>
<button class="hide-sidebar"><span>Hide sidebar&nbsp;</span><img src="../../../../../../../resource-files/left.svg" alt="Hide sidebar"></button><button class="show-sidebar"><img src="../../../../../../../resource-files/right.svg" alt="Show sidebar"><span>&nbsp;Show sidebar</span></button></nav>
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<h1 title="Class DisconnectedPlayer" class="title">Class DisconnectedPlayer</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
<div class="inheritance"><a href="../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">it.polimi.ingsw.gc14.Network.NetworkEvent</a>
<div class="inheritance">it.polimi.ingsw.gc14.Network.NetworkEvents.DisconnectedPlayer</div>
</div>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>All Implemented Interfaces:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
</dl>
<hr>
<div class="horizontal-scroll">
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">DisconnectedPlayer</span>
<span class="extends-implements">extends <a href="../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a></span></div>
<div class="block">Network event used to notify all clients that a player has disconnected.
<p>Also carries the updated list of available totems, since a disconnection
during totem selection may free a totem for other players.</div>
<dl class="notes">
<dt>See Also:</dt>
<dd>
<ul class="tag-list">
<li><a href="../../../../../../../serialized-form.html#it.polimi.ingsw.gc14.Network.NetworkEvents.DisconnectedPlayer">Serialized Form</a></li>
</ul>
</dd>
</dl>
</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- =========== FIELD SUMMARY =========== -->
<li>
<section class="field-summary" id="field-summary">
<h2>Field Summary</h2>
<div class="caption"><span>Fields</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Field</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>private <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a><wbr>&lt;<a href="../../Model/Totems.html" title="enum class in it.polimi.ingsw.gc14.Model">Totems</a>&gt;</code></div>
<div class="col-second even-row-color"><code><a href="#availableTotems" class="member-name-link">availableTotems</a></code></div>
<div class="col-last even-row-color">
<div class="block">Updated list of totems available after the disconnection frees any previously chosen totem.</div>
</div>
</div>
<div class="inherited-list">
<h3 id="fields-inherited-from-class-it.polimi.ingsw.gc14.Network.NetworkEvent">Fields inherited from class&nbsp;<a href="../NetworkEvent.html#field-summary" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a></h3>
<code><a href="../NetworkEvent.html#currentState">currentState</a>, <a href="../NetworkEvent.html#disconnectedPlayers">disconnectedPlayers</a>, <a href="../NetworkEvent.html#errorType">errorType</a>, <a href="../NetworkEvent.html#eventType">eventType</a>, <a href="../NetworkEvent.html#isError">isError</a>, <a href="../NetworkEvent.html#orderLogicCard">orderLogicCard</a>, <a href="../NetworkEvent.html#playerList">playerList</a>, <a href="../NetworkEvent.html#slotPlayerMap">slotPlayerMap</a>, <a href="../NetworkEvent.html#username">username</a></code></div>
</section>
</li>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>Constructor Summary</h2>
<div class="caption"><span>Constructors</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.String)" class="member-name-link">DisconnectedPlayer</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;username)</code></div>
<div class="col-last even-row-color">
<div class="block">Constructs a disconnection event for the specified player.</div>
</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#apply(it.polimi.ingsw.gc14.Controller.GameController)" class="member-name-link">apply</a><wbr>(<a href="../../Controller/GameController.html" title="class in it.polimi.ingsw.gc14.Controller">GameController</a>&nbsp;gameController)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Applies this disconnection event to the server-side game controller.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#apply(it.polimi.ingsw.gc14.Model.MiniModel)" class="member-name-link">apply</a><wbr>(<a href="../../Model/MiniModel.html" title="class in it.polimi.ingsw.gc14.Model">MiniModel</a>&nbsp;miniModel)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Applies this disconnection event to the client-side mini model,
updating player data, turn order, game state, and disconnected player list.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#enrichWithGameState(it.polimi.ingsw.gc14.Model.Game,java.util.ArrayList)" class="member-name-link">enrichWithGameState</a><wbr>(<a href="../../Model/Game.html" title="class in it.polimi.ingsw.gc14.Model">Game</a>&nbsp;game,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/ArrayList.html" title="class or interface in java.util" class="external-link">ArrayList</a>&lt;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;disconnectedUsernames)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Populates this event with the current game state so clients can
update their local model after receiving it.</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-it.polimi.ingsw.gc14.Network.NetworkEvent">Methods inherited from class&nbsp;<a href="../NetworkEvent.html#method-summary" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a></h3>
<code><a href="../NetworkEvent.html#getErrorType()" title="getErrorType()">getErrorType</a>, <a href="../NetworkEvent.html#getEventType()" title="getEventType()">getEventType</a>, <a href="../NetworkEvent.html#getUsername()" title="getUsername()">getUsername</a>, <a href="../NetworkEvent.html#isError()" title="isError()">isError</a>, <a href="../NetworkEvent.html#setData(java.util.Map,it.polimi.ingsw.gc14.Model.OrderLogicCard,it.polimi.ingsw.gc14.Model.GamePackage.CurrentState,java.util.List)" title="setData(Map, OrderLogicCard, CurrentState, List)">setData</a>, <a href="../NetworkEvent.html#setErrorType(it.polimi.ingsw.gc14.ErrorType)" title="setErrorType(ErrorType)">setErrorType</a>, <a href="../NetworkEvent.html#setIsError(boolean)" title="setIsError(boolean)">setIsError</a>, <a href="../NetworkEvent.html#toString()" title="toString()">toString</a></code></div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#method-summary" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ FIELD DETAIL =========== -->
<li>
<section class="field-details" id="field-detail">
<h2>Field Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="availableTotems">
<h3>availableTotems</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../../Model/Totems.html" title="enum class in it.polimi.ingsw.gc14.Model">Totems</a>&gt;</span>&nbsp;<span class="element-name">availableTotems</span></div>
<div class="block">Updated list of totems available after the disconnection frees any previously chosen totem.</div>
</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;(java.lang.String)">
<h3>DisconnectedPlayer</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">DisconnectedPlayer</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;username)</span></div>
<div class="block">Constructs a disconnection event for the specified player.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>username</code> - the username of the player who disconnected.</dd>
</dl>
</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="enrichWithGameState(it.polimi.ingsw.gc14.Model.Game,java.util.ArrayList)">
<h3>enrichWithGameState</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">enrichWithGameState</span><wbr><span class="parameters">(<a href="../../Model/Game.html" title="class in it.polimi.ingsw.gc14.Model">Game</a>&nbsp;game,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/ArrayList.html" title="class or interface in java.util" class="external-link">ArrayList</a>&lt;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;disconnectedUsernames)</span></div>
<div class="block"><span class="description-from-type-label">Description copied from class:&nbsp;<code><a href="../NetworkEvent.html#enrichWithGameState(it.polimi.ingsw.gc14.Model.Game,java.util.ArrayList)">NetworkEvent</a></code></span></div>
<div class="block">Populates this event with the current game state so clients can
update their local model after receiving it.
Subclasses that carry extra state (available totems, etc.) override
this method and call <code>super</code> first.</div>
<dl class="notes">
<dt>Overrides:</dt>
<dd><code><a href="../NetworkEvent.html#enrichWithGameState(it.polimi.ingsw.gc14.Model.Game,java.util.ArrayList)">enrichWithGameState</a></code>&nbsp;in class&nbsp;<code><a href="../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a></code></dd>
<dt>Parameters:</dt>
<dd><code>game</code> - the current game model.</dd>
<dd><code>disconnectedUsernames</code> - usernames of currently disconnected players.</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="apply(it.polimi.ingsw.gc14.Controller.GameController)">
<h3>apply</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">apply</span><wbr><span class="parameters">(<a href="../../Controller/GameController.html" title="class in it.polimi.ingsw.gc14.Controller">GameController</a>&nbsp;gameController)</span></div>
<div class="block">Applies this disconnection event to the server-side game controller.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../NetworkEvent.html#apply(it.polimi.ingsw.gc14.Controller.GameController)">apply</a></code>&nbsp;in class&nbsp;<code><a href="../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a></code></dd>
<dt>Parameters:</dt>
<dd><code>gameController</code> - the game controller on which to apply the event.</dd>
<dt>Returns:</dt>
<dd><code>true</code> if the disconnection is handled successfully.</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="apply(it.polimi.ingsw.gc14.Model.MiniModel)">
<h3>apply</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">apply</span><wbr><span class="parameters">(<a href="../../Model/MiniModel.html" title="class in it.polimi.ingsw.gc14.Model">MiniModel</a>&nbsp;miniModel)</span></div>
<div class="block">Applies this disconnection event to the client-side mini model,
updating player data, turn order, game state, and disconnected player list.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../NetworkEvent.html#apply(it.polimi.ingsw.gc14.Model.MiniModel)">apply</a></code>&nbsp;in class&nbsp;<code><a href="../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a></code></dd>
<dt>Parameters:</dt>
<dd><code>miniModel</code> - the client-side model to update.</dd>
</dl>
</div>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</body>
</html>
@@ -0,0 +1,273 @@
<!DOCTYPE HTML>
<html lang="it">
<head>
<!-- Generated by javadoc (25) on Fri Jun 19 23:05:23 CEST 2026 -->
<title>DrawLowerBuildingCard</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-06-19">
<meta name="description" content="declaration: module: it.polimi.ingsw.gc14, package: it.polimi.ingsw.gc14.Network.NetworkEvents, class: DrawLowerBuildingCard">
<meta name="generator" content="javadoc/ClassWriter">
<link rel="stylesheet" type="text/css" href="../../../../../../../resource-files/jquery-ui.min.css">
<link rel="stylesheet" type="text/css" href="../../../../../../../resource-files/stylesheet.css">
<script type="text/javascript" src="../../../../../../../script-files/script.js"></script>
<script type="text/javascript" src="../../../../../../../script-files/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../../../../../script-files/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">const pathtoroot = "../../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="nav-content">
<div class="nav-menu-button"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button></div>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../../module-summary.html">Module</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
<li><a href="../../../../../../../search.html">Search</a></li>
<li><a href="../../../../../../../help-doc.html#class">Help</a></li>
</ul>
</div>
</div>
<div class="sub-nav">
<div class="nav-content">
<ol class="sub-nav-list">
<li><a href="../../../../../../module-summary.html">it.polimi.ingsw.gc14</a></li>
<li><a href="package-summary.html">it.polimi.ingsw.gc14.Network.NetworkEvents</a></li>
<li><a href="DrawLowerBuildingCard.html" class="current-selection">DrawLowerBuildingCard</a></li>
</ol>
<div class="nav-list-search"><input type="text" id="search-input" disabled placeholder="Search documentation (type /)" aria-label="Search in documentation" autocomplete="off" spellcheck="false"><input type="reset" id="reset-search" disabled value="Reset"></div>
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="main-grid">
<nav role="navigation" class="toc" aria-label="Table of contents">
<div class="toc-header">Contents&nbsp;<input type="text" class="filter-input" disabled placeholder="Filter contents (type .)" aria-label="Filter table of contents" autocomplete="off" spellcheck="false"><input type="reset" class="reset-filter" disabled tabindex="-1" value="Reset"></div>
<ol class="toc-list" tabindex="-1">
<li><a href="#" tabindex="0">Description</a></li>
<li><a href="#field-summary" tabindex="0">Field Summary</a></li>
<li><a href="#constructor-summary" tabindex="0">Constructor Summary</a></li>
<li><a href="#method-summary" tabindex="0">Method Summary</a></li>
<li><a href="#field-detail" tabindex="0">Field Details</a>
<ol class="toc-list">
<li><a href="#pos" tabindex="0">pos</a></li>
</ol>
</li>
<li><a href="#constructor-detail" tabindex="0">Constructor Details</a>
<ol class="toc-list">
<li><a href="#%3Cinit%3E(java.lang.String,int)" tabindex="0">DrawLowerBuildingCard(String, int)</a></li>
</ol>
</li>
<li><a href="#method-detail" tabindex="0">Method Details</a>
<ol class="toc-list">
<li><a href="#apply(it.polimi.ingsw.gc14.Controller.GameController)" tabindex="0">apply(GameController)</a></li>
<li><a href="#apply(it.polimi.ingsw.gc14.Model.MiniModel)" tabindex="0">apply(MiniModel)</a></li>
</ol>
</li>
</ol>
<button class="hide-sidebar"><span>Hide sidebar&nbsp;</span><img src="../../../../../../../resource-files/left.svg" alt="Hide sidebar"></button><button class="show-sidebar"><img src="../../../../../../../resource-files/right.svg" alt="Show sidebar"><span>&nbsp;Show sidebar</span></button></nav>
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<h1 title="Class DrawLowerBuildingCard" class="title">Class DrawLowerBuildingCard</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
<div class="inheritance"><a href="../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">it.polimi.ingsw.gc14.Network.NetworkEvent</a>
<div class="inheritance">it.polimi.ingsw.gc14.Network.NetworkEvents.DrawLowerBuildingCard</div>
</div>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>All Implemented Interfaces:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
</dl>
<hr>
<div class="horizontal-scroll">
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">DrawLowerBuildingCard</span>
<span class="extends-implements">extends <a href="../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a></span></div>
<div class="block">NetworkEvent to draw a building card from the lower card list.</div>
<dl class="notes">
<dt>See Also:</dt>
<dd>
<ul class="tag-list">
<li><a href="../../../../../../../serialized-form.html#it.polimi.ingsw.gc14.Network.NetworkEvents.DrawLowerBuildingCard">Serialized Form</a></li>
</ul>
</dd>
</dl>
</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- =========== FIELD SUMMARY =========== -->
<li>
<section class="field-summary" id="field-summary">
<h2>Field Summary</h2>
<div class="caption"><span>Fields</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Field</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>private final int</code></div>
<div class="col-second even-row-color"><code><a href="#pos" class="member-name-link">pos</a></code></div>
<div class="col-last even-row-color">
<div class="block">Index of the card to draw</div>
</div>
</div>
<div class="inherited-list">
<h3 id="fields-inherited-from-class-it.polimi.ingsw.gc14.Network.NetworkEvent">Fields inherited from class&nbsp;<a href="../NetworkEvent.html#field-summary" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a></h3>
<code><a href="../NetworkEvent.html#currentState">currentState</a>, <a href="../NetworkEvent.html#disconnectedPlayers">disconnectedPlayers</a>, <a href="../NetworkEvent.html#errorType">errorType</a>, <a href="../NetworkEvent.html#eventType">eventType</a>, <a href="../NetworkEvent.html#isError">isError</a>, <a href="../NetworkEvent.html#orderLogicCard">orderLogicCard</a>, <a href="../NetworkEvent.html#playerList">playerList</a>, <a href="../NetworkEvent.html#slotPlayerMap">slotPlayerMap</a>, <a href="../NetworkEvent.html#username">username</a></code></div>
</section>
</li>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>Constructor Summary</h2>
<div class="caption"><span>Constructors</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.String,int)" class="member-name-link">DrawLowerBuildingCard</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;username,
int&nbsp;pos)</code></div>
<div class="col-last even-row-color">
<div class="block">Class constructor.</div>
</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#apply(it.polimi.ingsw.gc14.Controller.GameController)" class="member-name-link">apply</a><wbr>(<a href="../../Controller/GameController.html" title="class in it.polimi.ingsw.gc14.Controller">GameController</a>&nbsp;gameController)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Applies this event to the specified server-side game controller.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#apply(it.polimi.ingsw.gc14.Model.MiniModel)" class="member-name-link">apply</a><wbr>(<a href="../../Model/MiniModel.html" title="class in it.polimi.ingsw.gc14.Model">MiniModel</a>&nbsp;miniModel)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Applies this event to the client-side mini model, removing the drawn card
from the lower building list and updating players, turn order, game state, and slot map.</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-it.polimi.ingsw.gc14.Network.NetworkEvent">Methods inherited from class&nbsp;<a href="../NetworkEvent.html#method-summary" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a></h3>
<code><a href="../NetworkEvent.html#enrichWithGameState(it.polimi.ingsw.gc14.Model.Game,java.util.ArrayList)" title="enrichWithGameState(Game, ArrayList)">enrichWithGameState</a>, <a href="../NetworkEvent.html#getErrorType()" title="getErrorType()">getErrorType</a>, <a href="../NetworkEvent.html#getEventType()" title="getEventType()">getEventType</a>, <a href="../NetworkEvent.html#getUsername()" title="getUsername()">getUsername</a>, <a href="../NetworkEvent.html#isError()" title="isError()">isError</a>, <a href="../NetworkEvent.html#setData(java.util.Map,it.polimi.ingsw.gc14.Model.OrderLogicCard,it.polimi.ingsw.gc14.Model.GamePackage.CurrentState,java.util.List)" title="setData(Map, OrderLogicCard, CurrentState, List)">setData</a>, <a href="../NetworkEvent.html#setErrorType(it.polimi.ingsw.gc14.ErrorType)" title="setErrorType(ErrorType)">setErrorType</a>, <a href="../NetworkEvent.html#setIsError(boolean)" title="setIsError(boolean)">setIsError</a>, <a href="../NetworkEvent.html#toString()" title="toString()">toString</a></code></div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#method-summary" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ FIELD DETAIL =========== -->
<li>
<section class="field-details" id="field-detail">
<h2>Field Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="pos">
<h3>pos</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">pos</span></div>
<div class="block">Index of the card to draw</div>
</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;(java.lang.String,int)">
<h3>DrawLowerBuildingCard</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">DrawLowerBuildingCard</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;username,
int&nbsp;pos)</span></div>
<div class="block">Class constructor.
Initializes all the attributes.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>username</code> - the name of the player requesting the event</dd>
<dd><code>pos</code> - the index of the card to draw</dd>
</dl>
</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="apply(it.polimi.ingsw.gc14.Controller.GameController)">
<h3>apply</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">apply</span><wbr><span class="parameters">(<a href="../../Controller/GameController.html" title="class in it.polimi.ingsw.gc14.Controller">GameController</a>&nbsp;gameController)</span></div>
<div class="block"><span class="description-from-type-label">Description copied from class:&nbsp;<code><a href="../NetworkEvent.html#apply(it.polimi.ingsw.gc14.Controller.GameController)">NetworkEvent</a></code></span></div>
<div class="block">Applies this event to the specified server-side game controller.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../NetworkEvent.html#apply(it.polimi.ingsw.gc14.Controller.GameController)">apply</a></code>&nbsp;in class&nbsp;<code><a href="../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a></code></dd>
<dt>Parameters:</dt>
<dd><code>gameController</code> - the Game Controller on which to apply the event</dd>
<dt>Returns:</dt>
<dd>true if the player could draw the card, false otherwise</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="apply(it.polimi.ingsw.gc14.Model.MiniModel)">
<h3>apply</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">apply</span><wbr><span class="parameters">(<a href="../../Model/MiniModel.html" title="class in it.polimi.ingsw.gc14.Model">MiniModel</a>&nbsp;miniModel)</span></div>
<div class="block">Applies this event to the client-side mini model, removing the drawn card
from the lower building list and updating players, turn order, game state, and slot map.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../NetworkEvent.html#apply(it.polimi.ingsw.gc14.Model.MiniModel)">apply</a></code>&nbsp;in class&nbsp;<code><a href="../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a></code></dd>
<dt>Parameters:</dt>
<dd><code>miniModel</code> - the client-side model to update.</dd>
</dl>
</div>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</body>
</html>
@@ -0,0 +1,273 @@
<!DOCTYPE HTML>
<html lang="it">
<head>
<!-- Generated by javadoc (25) on Fri Jun 19 23:05:23 CEST 2026 -->
<title>DrawLowerTribeCard</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-06-19">
<meta name="description" content="declaration: module: it.polimi.ingsw.gc14, package: it.polimi.ingsw.gc14.Network.NetworkEvents, class: DrawLowerTribeCard">
<meta name="generator" content="javadoc/ClassWriter">
<link rel="stylesheet" type="text/css" href="../../../../../../../resource-files/jquery-ui.min.css">
<link rel="stylesheet" type="text/css" href="../../../../../../../resource-files/stylesheet.css">
<script type="text/javascript" src="../../../../../../../script-files/script.js"></script>
<script type="text/javascript" src="../../../../../../../script-files/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../../../../../script-files/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">const pathtoroot = "../../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="nav-content">
<div class="nav-menu-button"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button></div>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../../module-summary.html">Module</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
<li><a href="../../../../../../../search.html">Search</a></li>
<li><a href="../../../../../../../help-doc.html#class">Help</a></li>
</ul>
</div>
</div>
<div class="sub-nav">
<div class="nav-content">
<ol class="sub-nav-list">
<li><a href="../../../../../../module-summary.html">it.polimi.ingsw.gc14</a></li>
<li><a href="package-summary.html">it.polimi.ingsw.gc14.Network.NetworkEvents</a></li>
<li><a href="DrawLowerTribeCard.html" class="current-selection">DrawLowerTribeCard</a></li>
</ol>
<div class="nav-list-search"><input type="text" id="search-input" disabled placeholder="Search documentation (type /)" aria-label="Search in documentation" autocomplete="off" spellcheck="false"><input type="reset" id="reset-search" disabled value="Reset"></div>
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="main-grid">
<nav role="navigation" class="toc" aria-label="Table of contents">
<div class="toc-header">Contents&nbsp;<input type="text" class="filter-input" disabled placeholder="Filter contents (type .)" aria-label="Filter table of contents" autocomplete="off" spellcheck="false"><input type="reset" class="reset-filter" disabled tabindex="-1" value="Reset"></div>
<ol class="toc-list" tabindex="-1">
<li><a href="#" tabindex="0">Description</a></li>
<li><a href="#field-summary" tabindex="0">Field Summary</a></li>
<li><a href="#constructor-summary" tabindex="0">Constructor Summary</a></li>
<li><a href="#method-summary" tabindex="0">Method Summary</a></li>
<li><a href="#field-detail" tabindex="0">Field Details</a>
<ol class="toc-list">
<li><a href="#pos" tabindex="0">pos</a></li>
</ol>
</li>
<li><a href="#constructor-detail" tabindex="0">Constructor Details</a>
<ol class="toc-list">
<li><a href="#%3Cinit%3E(java.lang.String,int)" tabindex="0">DrawLowerTribeCard(String, int)</a></li>
</ol>
</li>
<li><a href="#method-detail" tabindex="0">Method Details</a>
<ol class="toc-list">
<li><a href="#apply(it.polimi.ingsw.gc14.Controller.GameController)" tabindex="0">apply(GameController)</a></li>
<li><a href="#apply(it.polimi.ingsw.gc14.Model.MiniModel)" tabindex="0">apply(MiniModel)</a></li>
</ol>
</li>
</ol>
<button class="hide-sidebar"><span>Hide sidebar&nbsp;</span><img src="../../../../../../../resource-files/left.svg" alt="Hide sidebar"></button><button class="show-sidebar"><img src="../../../../../../../resource-files/right.svg" alt="Show sidebar"><span>&nbsp;Show sidebar</span></button></nav>
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<h1 title="Class DrawLowerTribeCard" class="title">Class DrawLowerTribeCard</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
<div class="inheritance"><a href="../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">it.polimi.ingsw.gc14.Network.NetworkEvent</a>
<div class="inheritance">it.polimi.ingsw.gc14.Network.NetworkEvents.DrawLowerTribeCard</div>
</div>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>All Implemented Interfaces:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
</dl>
<hr>
<div class="horizontal-scroll">
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">DrawLowerTribeCard</span>
<span class="extends-implements">extends <a href="../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a></span></div>
<div class="block">NetworkEvent to draw a tribe card from the lower card list.</div>
<dl class="notes">
<dt>See Also:</dt>
<dd>
<ul class="tag-list">
<li><a href="../../../../../../../serialized-form.html#it.polimi.ingsw.gc14.Network.NetworkEvents.DrawLowerTribeCard">Serialized Form</a></li>
</ul>
</dd>
</dl>
</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- =========== FIELD SUMMARY =========== -->
<li>
<section class="field-summary" id="field-summary">
<h2>Field Summary</h2>
<div class="caption"><span>Fields</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Field</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>private final int</code></div>
<div class="col-second even-row-color"><code><a href="#pos" class="member-name-link">pos</a></code></div>
<div class="col-last even-row-color">
<div class="block">Index of the card to draw</div>
</div>
</div>
<div class="inherited-list">
<h3 id="fields-inherited-from-class-it.polimi.ingsw.gc14.Network.NetworkEvent">Fields inherited from class&nbsp;<a href="../NetworkEvent.html#field-summary" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a></h3>
<code><a href="../NetworkEvent.html#currentState">currentState</a>, <a href="../NetworkEvent.html#disconnectedPlayers">disconnectedPlayers</a>, <a href="../NetworkEvent.html#errorType">errorType</a>, <a href="../NetworkEvent.html#eventType">eventType</a>, <a href="../NetworkEvent.html#isError">isError</a>, <a href="../NetworkEvent.html#orderLogicCard">orderLogicCard</a>, <a href="../NetworkEvent.html#playerList">playerList</a>, <a href="../NetworkEvent.html#slotPlayerMap">slotPlayerMap</a>, <a href="../NetworkEvent.html#username">username</a></code></div>
</section>
</li>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>Constructor Summary</h2>
<div class="caption"><span>Constructors</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.String,int)" class="member-name-link">DrawLowerTribeCard</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;username,
int&nbsp;pos)</code></div>
<div class="col-last even-row-color">
<div class="block">Class constructor.</div>
</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#apply(it.polimi.ingsw.gc14.Controller.GameController)" class="member-name-link">apply</a><wbr>(<a href="../../Controller/GameController.html" title="class in it.polimi.ingsw.gc14.Controller">GameController</a>&nbsp;gameController)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Applies this event to the specified server-side game controller.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#apply(it.polimi.ingsw.gc14.Model.MiniModel)" class="member-name-link">apply</a><wbr>(<a href="../../Model/MiniModel.html" title="class in it.polimi.ingsw.gc14.Model">MiniModel</a>&nbsp;miniModel)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Applies this event to the client-side mini model, removing the drawn card
from the lower tribe list and updating players, turn order, game state, and slot map.</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-it.polimi.ingsw.gc14.Network.NetworkEvent">Methods inherited from class&nbsp;<a href="../NetworkEvent.html#method-summary" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a></h3>
<code><a href="../NetworkEvent.html#enrichWithGameState(it.polimi.ingsw.gc14.Model.Game,java.util.ArrayList)" title="enrichWithGameState(Game, ArrayList)">enrichWithGameState</a>, <a href="../NetworkEvent.html#getErrorType()" title="getErrorType()">getErrorType</a>, <a href="../NetworkEvent.html#getEventType()" title="getEventType()">getEventType</a>, <a href="../NetworkEvent.html#getUsername()" title="getUsername()">getUsername</a>, <a href="../NetworkEvent.html#isError()" title="isError()">isError</a>, <a href="../NetworkEvent.html#setData(java.util.Map,it.polimi.ingsw.gc14.Model.OrderLogicCard,it.polimi.ingsw.gc14.Model.GamePackage.CurrentState,java.util.List)" title="setData(Map, OrderLogicCard, CurrentState, List)">setData</a>, <a href="../NetworkEvent.html#setErrorType(it.polimi.ingsw.gc14.ErrorType)" title="setErrorType(ErrorType)">setErrorType</a>, <a href="../NetworkEvent.html#setIsError(boolean)" title="setIsError(boolean)">setIsError</a>, <a href="../NetworkEvent.html#toString()" title="toString()">toString</a></code></div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#method-summary" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ FIELD DETAIL =========== -->
<li>
<section class="field-details" id="field-detail">
<h2>Field Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="pos">
<h3>pos</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">pos</span></div>
<div class="block">Index of the card to draw</div>
</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;(java.lang.String,int)">
<h3>DrawLowerTribeCard</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">DrawLowerTribeCard</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;username,
int&nbsp;pos)</span></div>
<div class="block">Class constructor.
Initializes all the attributes.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>username</code> - the name of the player requesting the event</dd>
<dd><code>pos</code> - the index of the card to draw</dd>
</dl>
</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="apply(it.polimi.ingsw.gc14.Controller.GameController)">
<h3>apply</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">apply</span><wbr><span class="parameters">(<a href="../../Controller/GameController.html" title="class in it.polimi.ingsw.gc14.Controller">GameController</a>&nbsp;gameController)</span></div>
<div class="block"><span class="description-from-type-label">Description copied from class:&nbsp;<code><a href="../NetworkEvent.html#apply(it.polimi.ingsw.gc14.Controller.GameController)">NetworkEvent</a></code></span></div>
<div class="block">Applies this event to the specified server-side game controller.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../NetworkEvent.html#apply(it.polimi.ingsw.gc14.Controller.GameController)">apply</a></code>&nbsp;in class&nbsp;<code><a href="../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a></code></dd>
<dt>Parameters:</dt>
<dd><code>gameController</code> - the Game Controller on which to apply the event</dd>
<dt>Returns:</dt>
<dd>true if the player could draw the card, false otherwise</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="apply(it.polimi.ingsw.gc14.Model.MiniModel)">
<h3>apply</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">apply</span><wbr><span class="parameters">(<a href="../../Model/MiniModel.html" title="class in it.polimi.ingsw.gc14.Model">MiniModel</a>&nbsp;miniModel)</span></div>
<div class="block">Applies this event to the client-side mini model, removing the drawn card
from the lower tribe list and updating players, turn order, game state, and slot map.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../NetworkEvent.html#apply(it.polimi.ingsw.gc14.Model.MiniModel)">apply</a></code>&nbsp;in class&nbsp;<code><a href="../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a></code></dd>
<dt>Parameters:</dt>
<dd><code>miniModel</code> - the client-side model to update.</dd>
</dl>
</div>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</body>
</html>
@@ -0,0 +1,273 @@
<!DOCTYPE HTML>
<html lang="it">
<head>
<!-- Generated by javadoc (25) on Fri Jun 19 23:05:23 CEST 2026 -->
<title>DrawUpperBuildingCard</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-06-19">
<meta name="description" content="declaration: module: it.polimi.ingsw.gc14, package: it.polimi.ingsw.gc14.Network.NetworkEvents, class: DrawUpperBuildingCard">
<meta name="generator" content="javadoc/ClassWriter">
<link rel="stylesheet" type="text/css" href="../../../../../../../resource-files/jquery-ui.min.css">
<link rel="stylesheet" type="text/css" href="../../../../../../../resource-files/stylesheet.css">
<script type="text/javascript" src="../../../../../../../script-files/script.js"></script>
<script type="text/javascript" src="../../../../../../../script-files/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../../../../../script-files/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">const pathtoroot = "../../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="nav-content">
<div class="nav-menu-button"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button></div>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../../module-summary.html">Module</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
<li><a href="../../../../../../../search.html">Search</a></li>
<li><a href="../../../../../../../help-doc.html#class">Help</a></li>
</ul>
</div>
</div>
<div class="sub-nav">
<div class="nav-content">
<ol class="sub-nav-list">
<li><a href="../../../../../../module-summary.html">it.polimi.ingsw.gc14</a></li>
<li><a href="package-summary.html">it.polimi.ingsw.gc14.Network.NetworkEvents</a></li>
<li><a href="DrawUpperBuildingCard.html" class="current-selection">DrawUpperBuildingCard</a></li>
</ol>
<div class="nav-list-search"><input type="text" id="search-input" disabled placeholder="Search documentation (type /)" aria-label="Search in documentation" autocomplete="off" spellcheck="false"><input type="reset" id="reset-search" disabled value="Reset"></div>
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="main-grid">
<nav role="navigation" class="toc" aria-label="Table of contents">
<div class="toc-header">Contents&nbsp;<input type="text" class="filter-input" disabled placeholder="Filter contents (type .)" aria-label="Filter table of contents" autocomplete="off" spellcheck="false"><input type="reset" class="reset-filter" disabled tabindex="-1" value="Reset"></div>
<ol class="toc-list" tabindex="-1">
<li><a href="#" tabindex="0">Description</a></li>
<li><a href="#field-summary" tabindex="0">Field Summary</a></li>
<li><a href="#constructor-summary" tabindex="0">Constructor Summary</a></li>
<li><a href="#method-summary" tabindex="0">Method Summary</a></li>
<li><a href="#field-detail" tabindex="0">Field Details</a>
<ol class="toc-list">
<li><a href="#pos" tabindex="0">pos</a></li>
</ol>
</li>
<li><a href="#constructor-detail" tabindex="0">Constructor Details</a>
<ol class="toc-list">
<li><a href="#%3Cinit%3E(java.lang.String,int)" tabindex="0">DrawUpperBuildingCard(String, int)</a></li>
</ol>
</li>
<li><a href="#method-detail" tabindex="0">Method Details</a>
<ol class="toc-list">
<li><a href="#apply(it.polimi.ingsw.gc14.Controller.GameController)" tabindex="0">apply(GameController)</a></li>
<li><a href="#apply(it.polimi.ingsw.gc14.Model.MiniModel)" tabindex="0">apply(MiniModel)</a></li>
</ol>
</li>
</ol>
<button class="hide-sidebar"><span>Hide sidebar&nbsp;</span><img src="../../../../../../../resource-files/left.svg" alt="Hide sidebar"></button><button class="show-sidebar"><img src="../../../../../../../resource-files/right.svg" alt="Show sidebar"><span>&nbsp;Show sidebar</span></button></nav>
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<h1 title="Class DrawUpperBuildingCard" class="title">Class DrawUpperBuildingCard</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
<div class="inheritance"><a href="../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">it.polimi.ingsw.gc14.Network.NetworkEvent</a>
<div class="inheritance">it.polimi.ingsw.gc14.Network.NetworkEvents.DrawUpperBuildingCard</div>
</div>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>All Implemented Interfaces:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
</dl>
<hr>
<div class="horizontal-scroll">
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">DrawUpperBuildingCard</span>
<span class="extends-implements">extends <a href="../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a></span></div>
<div class="block">NetworkEvent to draw a building card from the upper card list.</div>
<dl class="notes">
<dt>See Also:</dt>
<dd>
<ul class="tag-list">
<li><a href="../../../../../../../serialized-form.html#it.polimi.ingsw.gc14.Network.NetworkEvents.DrawUpperBuildingCard">Serialized Form</a></li>
</ul>
</dd>
</dl>
</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- =========== FIELD SUMMARY =========== -->
<li>
<section class="field-summary" id="field-summary">
<h2>Field Summary</h2>
<div class="caption"><span>Fields</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Field</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>private final int</code></div>
<div class="col-second even-row-color"><code><a href="#pos" class="member-name-link">pos</a></code></div>
<div class="col-last even-row-color">
<div class="block">Index of the card to draw</div>
</div>
</div>
<div class="inherited-list">
<h3 id="fields-inherited-from-class-it.polimi.ingsw.gc14.Network.NetworkEvent">Fields inherited from class&nbsp;<a href="../NetworkEvent.html#field-summary" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a></h3>
<code><a href="../NetworkEvent.html#currentState">currentState</a>, <a href="../NetworkEvent.html#disconnectedPlayers">disconnectedPlayers</a>, <a href="../NetworkEvent.html#errorType">errorType</a>, <a href="../NetworkEvent.html#eventType">eventType</a>, <a href="../NetworkEvent.html#isError">isError</a>, <a href="../NetworkEvent.html#orderLogicCard">orderLogicCard</a>, <a href="../NetworkEvent.html#playerList">playerList</a>, <a href="../NetworkEvent.html#slotPlayerMap">slotPlayerMap</a>, <a href="../NetworkEvent.html#username">username</a></code></div>
</section>
</li>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>Constructor Summary</h2>
<div class="caption"><span>Constructors</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.String,int)" class="member-name-link">DrawUpperBuildingCard</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;username,
int&nbsp;pos)</code></div>
<div class="col-last even-row-color">
<div class="block">Class constructor.</div>
</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#apply(it.polimi.ingsw.gc14.Controller.GameController)" class="member-name-link">apply</a><wbr>(<a href="../../Controller/GameController.html" title="class in it.polimi.ingsw.gc14.Controller">GameController</a>&nbsp;gameController)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Applies this event to the specified server-side game controller.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#apply(it.polimi.ingsw.gc14.Model.MiniModel)" class="member-name-link">apply</a><wbr>(<a href="../../Model/MiniModel.html" title="class in it.polimi.ingsw.gc14.Model">MiniModel</a>&nbsp;miniModel)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Applies this event to the client-side mini model, removing the drawn card
from the upper building list and updating players, turn order, game state, and slot map.</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-it.polimi.ingsw.gc14.Network.NetworkEvent">Methods inherited from class&nbsp;<a href="../NetworkEvent.html#method-summary" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a></h3>
<code><a href="../NetworkEvent.html#enrichWithGameState(it.polimi.ingsw.gc14.Model.Game,java.util.ArrayList)" title="enrichWithGameState(Game, ArrayList)">enrichWithGameState</a>, <a href="../NetworkEvent.html#getErrorType()" title="getErrorType()">getErrorType</a>, <a href="../NetworkEvent.html#getEventType()" title="getEventType()">getEventType</a>, <a href="../NetworkEvent.html#getUsername()" title="getUsername()">getUsername</a>, <a href="../NetworkEvent.html#isError()" title="isError()">isError</a>, <a href="../NetworkEvent.html#setData(java.util.Map,it.polimi.ingsw.gc14.Model.OrderLogicCard,it.polimi.ingsw.gc14.Model.GamePackage.CurrentState,java.util.List)" title="setData(Map, OrderLogicCard, CurrentState, List)">setData</a>, <a href="../NetworkEvent.html#setErrorType(it.polimi.ingsw.gc14.ErrorType)" title="setErrorType(ErrorType)">setErrorType</a>, <a href="../NetworkEvent.html#setIsError(boolean)" title="setIsError(boolean)">setIsError</a>, <a href="../NetworkEvent.html#toString()" title="toString()">toString</a></code></div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#method-summary" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ FIELD DETAIL =========== -->
<li>
<section class="field-details" id="field-detail">
<h2>Field Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="pos">
<h3>pos</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">pos</span></div>
<div class="block">Index of the card to draw</div>
</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;(java.lang.String,int)">
<h3>DrawUpperBuildingCard</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">DrawUpperBuildingCard</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;username,
int&nbsp;pos)</span></div>
<div class="block">Class constructor.
Initializes all the attributes.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>username</code> - the name of the player requesting the event</dd>
<dd><code>pos</code> - the index of the card to draw</dd>
</dl>
</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="apply(it.polimi.ingsw.gc14.Controller.GameController)">
<h3>apply</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">apply</span><wbr><span class="parameters">(<a href="../../Controller/GameController.html" title="class in it.polimi.ingsw.gc14.Controller">GameController</a>&nbsp;gameController)</span></div>
<div class="block"><span class="description-from-type-label">Description copied from class:&nbsp;<code><a href="../NetworkEvent.html#apply(it.polimi.ingsw.gc14.Controller.GameController)">NetworkEvent</a></code></span></div>
<div class="block">Applies this event to the specified server-side game controller.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../NetworkEvent.html#apply(it.polimi.ingsw.gc14.Controller.GameController)">apply</a></code>&nbsp;in class&nbsp;<code><a href="../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a></code></dd>
<dt>Parameters:</dt>
<dd><code>gameController</code> - the Game Controller on which to apply the event</dd>
<dt>Returns:</dt>
<dd>true if the player could draw the card, false otherwise</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="apply(it.polimi.ingsw.gc14.Model.MiniModel)">
<h3>apply</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">apply</span><wbr><span class="parameters">(<a href="../../Model/MiniModel.html" title="class in it.polimi.ingsw.gc14.Model">MiniModel</a>&nbsp;miniModel)</span></div>
<div class="block">Applies this event to the client-side mini model, removing the drawn card
from the upper building list and updating players, turn order, game state, and slot map.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../NetworkEvent.html#apply(it.polimi.ingsw.gc14.Model.MiniModel)">apply</a></code>&nbsp;in class&nbsp;<code><a href="../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a></code></dd>
<dt>Parameters:</dt>
<dd><code>miniModel</code> - the client-side model to update.</dd>
</dl>
</div>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</body>
</html>
@@ -0,0 +1,273 @@
<!DOCTYPE HTML>
<html lang="it">
<head>
<!-- Generated by javadoc (25) on Fri Jun 19 23:05:23 CEST 2026 -->
<title>DrawUpperTribeCard</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-06-19">
<meta name="description" content="declaration: module: it.polimi.ingsw.gc14, package: it.polimi.ingsw.gc14.Network.NetworkEvents, class: DrawUpperTribeCard">
<meta name="generator" content="javadoc/ClassWriter">
<link rel="stylesheet" type="text/css" href="../../../../../../../resource-files/jquery-ui.min.css">
<link rel="stylesheet" type="text/css" href="../../../../../../../resource-files/stylesheet.css">
<script type="text/javascript" src="../../../../../../../script-files/script.js"></script>
<script type="text/javascript" src="../../../../../../../script-files/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../../../../../script-files/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">const pathtoroot = "../../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="nav-content">
<div class="nav-menu-button"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button></div>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../../module-summary.html">Module</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
<li><a href="../../../../../../../search.html">Search</a></li>
<li><a href="../../../../../../../help-doc.html#class">Help</a></li>
</ul>
</div>
</div>
<div class="sub-nav">
<div class="nav-content">
<ol class="sub-nav-list">
<li><a href="../../../../../../module-summary.html">it.polimi.ingsw.gc14</a></li>
<li><a href="package-summary.html">it.polimi.ingsw.gc14.Network.NetworkEvents</a></li>
<li><a href="DrawUpperTribeCard.html" class="current-selection">DrawUpperTribeCard</a></li>
</ol>
<div class="nav-list-search"><input type="text" id="search-input" disabled placeholder="Search documentation (type /)" aria-label="Search in documentation" autocomplete="off" spellcheck="false"><input type="reset" id="reset-search" disabled value="Reset"></div>
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="main-grid">
<nav role="navigation" class="toc" aria-label="Table of contents">
<div class="toc-header">Contents&nbsp;<input type="text" class="filter-input" disabled placeholder="Filter contents (type .)" aria-label="Filter table of contents" autocomplete="off" spellcheck="false"><input type="reset" class="reset-filter" disabled tabindex="-1" value="Reset"></div>
<ol class="toc-list" tabindex="-1">
<li><a href="#" tabindex="0">Description</a></li>
<li><a href="#field-summary" tabindex="0">Field Summary</a></li>
<li><a href="#constructor-summary" tabindex="0">Constructor Summary</a></li>
<li><a href="#method-summary" tabindex="0">Method Summary</a></li>
<li><a href="#field-detail" tabindex="0">Field Details</a>
<ol class="toc-list">
<li><a href="#pos" tabindex="0">pos</a></li>
</ol>
</li>
<li><a href="#constructor-detail" tabindex="0">Constructor Details</a>
<ol class="toc-list">
<li><a href="#%3Cinit%3E(java.lang.String,int)" tabindex="0">DrawUpperTribeCard(String, int)</a></li>
</ol>
</li>
<li><a href="#method-detail" tabindex="0">Method Details</a>
<ol class="toc-list">
<li><a href="#apply(it.polimi.ingsw.gc14.Controller.GameController)" tabindex="0">apply(GameController)</a></li>
<li><a href="#apply(it.polimi.ingsw.gc14.Model.MiniModel)" tabindex="0">apply(MiniModel)</a></li>
</ol>
</li>
</ol>
<button class="hide-sidebar"><span>Hide sidebar&nbsp;</span><img src="../../../../../../../resource-files/left.svg" alt="Hide sidebar"></button><button class="show-sidebar"><img src="../../../../../../../resource-files/right.svg" alt="Show sidebar"><span>&nbsp;Show sidebar</span></button></nav>
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<h1 title="Class DrawUpperTribeCard" class="title">Class DrawUpperTribeCard</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
<div class="inheritance"><a href="../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">it.polimi.ingsw.gc14.Network.NetworkEvent</a>
<div class="inheritance">it.polimi.ingsw.gc14.Network.NetworkEvents.DrawUpperTribeCard</div>
</div>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>All Implemented Interfaces:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
</dl>
<hr>
<div class="horizontal-scroll">
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">DrawUpperTribeCard</span>
<span class="extends-implements">extends <a href="../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a></span></div>
<div class="block">NetworkEvent to draw a tribe card from the upper card list.</div>
<dl class="notes">
<dt>See Also:</dt>
<dd>
<ul class="tag-list">
<li><a href="../../../../../../../serialized-form.html#it.polimi.ingsw.gc14.Network.NetworkEvents.DrawUpperTribeCard">Serialized Form</a></li>
</ul>
</dd>
</dl>
</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- =========== FIELD SUMMARY =========== -->
<li>
<section class="field-summary" id="field-summary">
<h2>Field Summary</h2>
<div class="caption"><span>Fields</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Field</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>private final int</code></div>
<div class="col-second even-row-color"><code><a href="#pos" class="member-name-link">pos</a></code></div>
<div class="col-last even-row-color">
<div class="block">Index of the card to draw</div>
</div>
</div>
<div class="inherited-list">
<h3 id="fields-inherited-from-class-it.polimi.ingsw.gc14.Network.NetworkEvent">Fields inherited from class&nbsp;<a href="../NetworkEvent.html#field-summary" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a></h3>
<code><a href="../NetworkEvent.html#currentState">currentState</a>, <a href="../NetworkEvent.html#disconnectedPlayers">disconnectedPlayers</a>, <a href="../NetworkEvent.html#errorType">errorType</a>, <a href="../NetworkEvent.html#eventType">eventType</a>, <a href="../NetworkEvent.html#isError">isError</a>, <a href="../NetworkEvent.html#orderLogicCard">orderLogicCard</a>, <a href="../NetworkEvent.html#playerList">playerList</a>, <a href="../NetworkEvent.html#slotPlayerMap">slotPlayerMap</a>, <a href="../NetworkEvent.html#username">username</a></code></div>
</section>
</li>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>Constructor Summary</h2>
<div class="caption"><span>Constructors</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.String,int)" class="member-name-link">DrawUpperTribeCard</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;username,
int&nbsp;pos)</code></div>
<div class="col-last even-row-color">
<div class="block">Class constructor.</div>
</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#apply(it.polimi.ingsw.gc14.Controller.GameController)" class="member-name-link">apply</a><wbr>(<a href="../../Controller/GameController.html" title="class in it.polimi.ingsw.gc14.Controller">GameController</a>&nbsp;gameController)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Applies this event to the specified server-side game controller.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#apply(it.polimi.ingsw.gc14.Model.MiniModel)" class="member-name-link">apply</a><wbr>(<a href="../../Model/MiniModel.html" title="class in it.polimi.ingsw.gc14.Model">MiniModel</a>&nbsp;miniModel)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Applies this event to the client-side mini model, removing the drawn card
from the upper tribe list and updating players, turn order, game state, and slot map.</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-it.polimi.ingsw.gc14.Network.NetworkEvent">Methods inherited from class&nbsp;<a href="../NetworkEvent.html#method-summary" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a></h3>
<code><a href="../NetworkEvent.html#enrichWithGameState(it.polimi.ingsw.gc14.Model.Game,java.util.ArrayList)" title="enrichWithGameState(Game, ArrayList)">enrichWithGameState</a>, <a href="../NetworkEvent.html#getErrorType()" title="getErrorType()">getErrorType</a>, <a href="../NetworkEvent.html#getEventType()" title="getEventType()">getEventType</a>, <a href="../NetworkEvent.html#getUsername()" title="getUsername()">getUsername</a>, <a href="../NetworkEvent.html#isError()" title="isError()">isError</a>, <a href="../NetworkEvent.html#setData(java.util.Map,it.polimi.ingsw.gc14.Model.OrderLogicCard,it.polimi.ingsw.gc14.Model.GamePackage.CurrentState,java.util.List)" title="setData(Map, OrderLogicCard, CurrentState, List)">setData</a>, <a href="../NetworkEvent.html#setErrorType(it.polimi.ingsw.gc14.ErrorType)" title="setErrorType(ErrorType)">setErrorType</a>, <a href="../NetworkEvent.html#setIsError(boolean)" title="setIsError(boolean)">setIsError</a>, <a href="../NetworkEvent.html#toString()" title="toString()">toString</a></code></div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#method-summary" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ FIELD DETAIL =========== -->
<li>
<section class="field-details" id="field-detail">
<h2>Field Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="pos">
<h3>pos</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">pos</span></div>
<div class="block">Index of the card to draw</div>
</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;(java.lang.String,int)">
<h3>DrawUpperTribeCard</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">DrawUpperTribeCard</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;username,
int&nbsp;pos)</span></div>
<div class="block">Class constructor.
Initializes all the attributes.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>username</code> - the name of the player requesting the event</dd>
<dd><code>pos</code> - the index of the card to draw</dd>
</dl>
</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="apply(it.polimi.ingsw.gc14.Controller.GameController)">
<h3>apply</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">apply</span><wbr><span class="parameters">(<a href="../../Controller/GameController.html" title="class in it.polimi.ingsw.gc14.Controller">GameController</a>&nbsp;gameController)</span></div>
<div class="block"><span class="description-from-type-label">Description copied from class:&nbsp;<code><a href="../NetworkEvent.html#apply(it.polimi.ingsw.gc14.Controller.GameController)">NetworkEvent</a></code></span></div>
<div class="block">Applies this event to the specified server-side game controller.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../NetworkEvent.html#apply(it.polimi.ingsw.gc14.Controller.GameController)">apply</a></code>&nbsp;in class&nbsp;<code><a href="../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a></code></dd>
<dt>Parameters:</dt>
<dd><code>gameController</code> - the Game Controller on which to apply the event</dd>
<dt>Returns:</dt>
<dd>true if the player could draw the card, false otherwise</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="apply(it.polimi.ingsw.gc14.Model.MiniModel)">
<h3>apply</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">apply</span><wbr><span class="parameters">(<a href="../../Model/MiniModel.html" title="class in it.polimi.ingsw.gc14.Model">MiniModel</a>&nbsp;miniModel)</span></div>
<div class="block">Applies this event to the client-side mini model, removing the drawn card
from the upper tribe list and updating players, turn order, game state, and slot map.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../NetworkEvent.html#apply(it.polimi.ingsw.gc14.Model.MiniModel)">apply</a></code>&nbsp;in class&nbsp;<code><a href="../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a></code></dd>
<dt>Parameters:</dt>
<dd><code>miniModel</code> - the client-side model to update.</dd>
</dl>
</div>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</body>
</html>
@@ -0,0 +1,246 @@
<!DOCTYPE HTML>
<html lang="it">
<head>
<!-- Generated by javadoc (25) on Fri Jun 19 23:05:23 CEST 2026 -->
<title>EndedGame</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-06-19">
<meta name="description" content="declaration: module: it.polimi.ingsw.gc14, package: it.polimi.ingsw.gc14.Network.NetworkEvents, class: EndedGame">
<meta name="generator" content="javadoc/ClassWriter">
<link rel="stylesheet" type="text/css" href="../../../../../../../resource-files/jquery-ui.min.css">
<link rel="stylesheet" type="text/css" href="../../../../../../../resource-files/stylesheet.css">
<script type="text/javascript" src="../../../../../../../script-files/script.js"></script>
<script type="text/javascript" src="../../../../../../../script-files/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../../../../../script-files/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">const pathtoroot = "../../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="nav-content">
<div class="nav-menu-button"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button></div>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../../module-summary.html">Module</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
<li><a href="../../../../../../../search.html">Search</a></li>
<li><a href="../../../../../../../help-doc.html#class">Help</a></li>
</ul>
</div>
</div>
<div class="sub-nav">
<div class="nav-content">
<ol class="sub-nav-list">
<li><a href="../../../../../../module-summary.html">it.polimi.ingsw.gc14</a></li>
<li><a href="package-summary.html">it.polimi.ingsw.gc14.Network.NetworkEvents</a></li>
<li><a href="EndedGame.html" class="current-selection">EndedGame</a></li>
</ol>
<div class="nav-list-search"><input type="text" id="search-input" disabled placeholder="Search documentation (type /)" aria-label="Search in documentation" autocomplete="off" spellcheck="false"><input type="reset" id="reset-search" disabled value="Reset"></div>
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="main-grid">
<nav role="navigation" class="toc" aria-label="Table of contents">
<div class="toc-header">Contents&nbsp;<input type="text" class="filter-input" disabled placeholder="Filter contents (type .)" aria-label="Filter table of contents" autocomplete="off" spellcheck="false"><input type="reset" class="reset-filter" disabled tabindex="-1" value="Reset"></div>
<ol class="toc-list" tabindex="-1">
<li><a href="#" tabindex="0">Description</a></li>
<li><a href="#field-summary" tabindex="0">Field Summary</a></li>
<li><a href="#constructor-summary" tabindex="0">Constructor Summary</a></li>
<li><a href="#method-summary" tabindex="0">Method Summary</a></li>
<li><a href="#constructor-detail" tabindex="0">Constructor Details</a>
<ol class="toc-list">
<li><a href="#%3Cinit%3E(java.util.Map,it.polimi.ingsw.gc14.Model.OrderLogicCard,it.polimi.ingsw.gc14.Model.GamePackage.CurrentState,java.util.ArrayList)" tabindex="0">EndedGame(Map, OrderLogicCard, CurrentState, ArrayList)</a></li>
</ol>
</li>
<li><a href="#method-detail" tabindex="0">Method Details</a>
<ol class="toc-list">
<li><a href="#apply(it.polimi.ingsw.gc14.Controller.GameController)" tabindex="0">apply(GameController)</a></li>
<li><a href="#apply(it.polimi.ingsw.gc14.Model.MiniModel)" tabindex="0">apply(MiniModel)</a></li>
</ol>
</li>
</ol>
<button class="hide-sidebar"><span>Hide sidebar&nbsp;</span><img src="../../../../../../../resource-files/left.svg" alt="Hide sidebar"></button><button class="show-sidebar"><img src="../../../../../../../resource-files/right.svg" alt="Show sidebar"><span>&nbsp;Show sidebar</span></button></nav>
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<h1 title="Class EndedGame" class="title">Class EndedGame</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
<div class="inheritance"><a href="../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">it.polimi.ingsw.gc14.Network.NetworkEvent</a>
<div class="inheritance">it.polimi.ingsw.gc14.Network.NetworkEvents.EndedGame</div>
</div>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>All Implemented Interfaces:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
</dl>
<hr>
<div class="horizontal-scroll">
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">EndedGame</span>
<span class="extends-implements">extends <a href="../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a></span></div>
<div class="block">Network event that signals the end of the game and delivers the final standings.
<p>Only applied client-side; <a href="#apply(it.polimi.ingsw.gc14.Controller.GameController)"><code>apply(GameController)</code></a> always returns <code>false</code>.</div>
<dl class="notes">
<dt>See Also:</dt>
<dd>
<ul class="tag-list">
<li><a href="../../../../../../../serialized-form.html#it.polimi.ingsw.gc14.Network.NetworkEvents.EndedGame">Serialized Form</a></li>
</ul>
</dd>
</dl>
</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- =========== FIELD SUMMARY =========== -->
<li>
<section class="field-summary" id="field-summary">
<h2>Field Summary</h2>
<div class="inherited-list">
<h3 id="fields-inherited-from-class-it.polimi.ingsw.gc14.Network.NetworkEvent">Fields inherited from class&nbsp;<a href="../NetworkEvent.html#field-summary" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a></h3>
<code><a href="../NetworkEvent.html#currentState">currentState</a>, <a href="../NetworkEvent.html#disconnectedPlayers">disconnectedPlayers</a>, <a href="../NetworkEvent.html#errorType">errorType</a>, <a href="../NetworkEvent.html#eventType">eventType</a>, <a href="../NetworkEvent.html#isError">isError</a>, <a href="../NetworkEvent.html#orderLogicCard">orderLogicCard</a>, <a href="../NetworkEvent.html#playerList">playerList</a>, <a href="../NetworkEvent.html#slotPlayerMap">slotPlayerMap</a>, <a href="../NetworkEvent.html#username">username</a></code></div>
</section>
</li>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>Constructor Summary</h2>
<div class="caption"><span>Constructors</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.util.Map,it.polimi.ingsw.gc14.Model.OrderLogicCard,it.polimi.ingsw.gc14.Model.GamePackage.CurrentState,java.util.ArrayList)" class="member-name-link">EndedGame</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="../../Model/Slot.html" title="class in it.polimi.ingsw.gc14.Model">Slot</a>,<wbr><a href="../../Model/Player.html" title="class in it.polimi.ingsw.gc14.Model">Player</a>&gt;&nbsp;slotPlayerMap,
<a href="../../Model/OrderLogicCard.html" title="class in it.polimi.ingsw.gc14.Model">OrderLogicCard</a>&nbsp;orderLogicCard,
<a href="../../Model/GamePackage/CurrentState.html" title="class in it.polimi.ingsw.gc14.Model.GamePackage">CurrentState</a>&nbsp;currentState,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/ArrayList.html" title="class or interface in java.util" class="external-link">ArrayList</a>&lt;<a href="../../Model/Player.html" title="class in it.polimi.ingsw.gc14.Model">Player</a>&gt;&nbsp;players)</code></div>
<div class="col-last even-row-color">
<div class="block">Constructs an event containing the final game state.</div>
</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#apply(it.polimi.ingsw.gc14.Controller.GameController)" class="member-name-link">apply</a><wbr>(<a href="../../Controller/GameController.html" title="class in it.polimi.ingsw.gc14.Controller">GameController</a>&nbsp;gameController)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Not applicable server-side.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#apply(it.polimi.ingsw.gc14.Model.MiniModel)" class="member-name-link">apply</a><wbr>(<a href="../../Model/MiniModel.html" title="class in it.polimi.ingsw.gc14.Model">MiniModel</a>&nbsp;miniModel)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Applies this event to the client-side mini model, updating the final
game state and setting the standings list for the leaderboard.</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-it.polimi.ingsw.gc14.Network.NetworkEvent">Methods inherited from class&nbsp;<a href="../NetworkEvent.html#method-summary" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a></h3>
<code><a href="../NetworkEvent.html#enrichWithGameState(it.polimi.ingsw.gc14.Model.Game,java.util.ArrayList)" title="enrichWithGameState(Game, ArrayList)">enrichWithGameState</a>, <a href="../NetworkEvent.html#getErrorType()" title="getErrorType()">getErrorType</a>, <a href="../NetworkEvent.html#getEventType()" title="getEventType()">getEventType</a>, <a href="../NetworkEvent.html#getUsername()" title="getUsername()">getUsername</a>, <a href="../NetworkEvent.html#isError()" title="isError()">isError</a>, <a href="../NetworkEvent.html#setData(java.util.Map,it.polimi.ingsw.gc14.Model.OrderLogicCard,it.polimi.ingsw.gc14.Model.GamePackage.CurrentState,java.util.List)" title="setData(Map, OrderLogicCard, CurrentState, List)">setData</a>, <a href="../NetworkEvent.html#setErrorType(it.polimi.ingsw.gc14.ErrorType)" title="setErrorType(ErrorType)">setErrorType</a>, <a href="../NetworkEvent.html#setIsError(boolean)" title="setIsError(boolean)">setIsError</a>, <a href="../NetworkEvent.html#toString()" title="toString()">toString</a></code></div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#method-summary" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;(java.util.Map,it.polimi.ingsw.gc14.Model.OrderLogicCard,it.polimi.ingsw.gc14.Model.GamePackage.CurrentState,java.util.ArrayList)">
<h3>EndedGame</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">EndedGame</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="../../Model/Slot.html" title="class in it.polimi.ingsw.gc14.Model">Slot</a>,<wbr><a href="../../Model/Player.html" title="class in it.polimi.ingsw.gc14.Model">Player</a>&gt;&nbsp;slotPlayerMap,
<a href="../../Model/OrderLogicCard.html" title="class in it.polimi.ingsw.gc14.Model">OrderLogicCard</a>&nbsp;orderLogicCard,
<a href="../../Model/GamePackage/CurrentState.html" title="class in it.polimi.ingsw.gc14.Model.GamePackage">CurrentState</a>&nbsp;currentState,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/ArrayList.html" title="class or interface in java.util" class="external-link">ArrayList</a>&lt;<a href="../../Model/Player.html" title="class in it.polimi.ingsw.gc14.Model">Player</a>&gt;&nbsp;players)</span></div>
<div class="block">Constructs an event containing the final game state.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>slotPlayerMap</code> - the map associating each slot with the player occupying it.</dd>
<dd><code>orderLogicCard</code> - the order logic card that determines the player order.</dd>
<dd><code>currentState</code> - the current state of the game.</dd>
<dd><code>players</code> - the final list of players, used as the standings.</dd>
</dl>
</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="apply(it.polimi.ingsw.gc14.Controller.GameController)">
<h3>apply</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">apply</span><wbr><span class="parameters">(<a href="../../Controller/GameController.html" title="class in it.polimi.ingsw.gc14.Controller">GameController</a>&nbsp;gameController)</span></div>
<div class="block">Not applicable server-side.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../NetworkEvent.html#apply(it.polimi.ingsw.gc14.Controller.GameController)">apply</a></code>&nbsp;in class&nbsp;<code><a href="../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a></code></dd>
<dt>Parameters:</dt>
<dd><code>gameController</code> - the game controller (unused).</dd>
<dt>Returns:</dt>
<dd><code>false</code> always.</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="apply(it.polimi.ingsw.gc14.Model.MiniModel)">
<h3>apply</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">apply</span><wbr><span class="parameters">(<a href="../../Model/MiniModel.html" title="class in it.polimi.ingsw.gc14.Model">MiniModel</a>&nbsp;miniModel)</span></div>
<div class="block">Applies this event to the client-side mini model, updating the final
game state and setting the standings list for the leaderboard.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../NetworkEvent.html#apply(it.polimi.ingsw.gc14.Model.MiniModel)">apply</a></code>&nbsp;in class&nbsp;<code><a href="../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a></code></dd>
<dt>Parameters:</dt>
<dd><code>miniModel</code> - the client-side model to update.</dd>
</dl>
</div>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</body>
</html>
@@ -0,0 +1,266 @@
<!DOCTYPE HTML>
<html lang="it">
<head>
<!-- Generated by javadoc (25) on Fri Jun 19 23:05:23 CEST 2026 -->
<title>ReconnectPlayer</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-06-19">
<meta name="description" content="declaration: module: it.polimi.ingsw.gc14, package: it.polimi.ingsw.gc14.Network.NetworkEvents, class: ReconnectPlayer">
<meta name="generator" content="javadoc/ClassWriter">
<link rel="stylesheet" type="text/css" href="../../../../../../../resource-files/jquery-ui.min.css">
<link rel="stylesheet" type="text/css" href="../../../../../../../resource-files/stylesheet.css">
<script type="text/javascript" src="../../../../../../../script-files/script.js"></script>
<script type="text/javascript" src="../../../../../../../script-files/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../../../../../script-files/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">const pathtoroot = "../../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="nav-content">
<div class="nav-menu-button"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button></div>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../../module-summary.html">Module</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
<li><a href="../../../../../../../search.html">Search</a></li>
<li><a href="../../../../../../../help-doc.html#class">Help</a></li>
</ul>
</div>
</div>
<div class="sub-nav">
<div class="nav-content">
<ol class="sub-nav-list">
<li><a href="../../../../../../module-summary.html">it.polimi.ingsw.gc14</a></li>
<li><a href="package-summary.html">it.polimi.ingsw.gc14.Network.NetworkEvents</a></li>
<li><a href="ReconnectPlayer.html" class="current-selection">ReconnectPlayer</a></li>
</ol>
<div class="nav-list-search"><input type="text" id="search-input" disabled placeholder="Search documentation (type /)" aria-label="Search in documentation" autocomplete="off" spellcheck="false"><input type="reset" id="reset-search" disabled value="Reset"></div>
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="main-grid">
<nav role="navigation" class="toc" aria-label="Table of contents">
<div class="toc-header">Contents&nbsp;<input type="text" class="filter-input" disabled placeholder="Filter contents (type .)" aria-label="Filter table of contents" autocomplete="off" spellcheck="false"><input type="reset" class="reset-filter" disabled tabindex="-1" value="Reset"></div>
<ol class="toc-list" tabindex="-1">
<li><a href="#" tabindex="0">Description</a></li>
<li><a href="#field-summary" tabindex="0">Field Summary</a></li>
<li><a href="#constructor-summary" tabindex="0">Constructor Summary</a></li>
<li><a href="#method-summary" tabindex="0">Method Summary</a></li>
<li><a href="#constructor-detail" tabindex="0">Constructor Details</a>
<ol class="toc-list">
<li><a href="#%3Cinit%3E(java.lang.String)" tabindex="0">ReconnectPlayer(String)</a></li>
</ol>
</li>
<li><a href="#method-detail" tabindex="0">Method Details</a>
<ol class="toc-list">
<li><a href="#enrichWithGameState(it.polimi.ingsw.gc14.Model.Game,java.util.ArrayList)" tabindex="0">enrichWithGameState(Game, ArrayList)</a></li>
<li><a href="#apply(it.polimi.ingsw.gc14.Controller.GameController)" tabindex="0">apply(GameController)</a></li>
<li><a href="#apply(it.polimi.ingsw.gc14.Model.MiniModel)" tabindex="0">apply(MiniModel)</a></li>
</ol>
</li>
</ol>
<button class="hide-sidebar"><span>Hide sidebar&nbsp;</span><img src="../../../../../../../resource-files/left.svg" alt="Hide sidebar"></button><button class="show-sidebar"><img src="../../../../../../../resource-files/right.svg" alt="Show sidebar"><span>&nbsp;Show sidebar</span></button></nav>
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<h1 title="Class ReconnectPlayer" class="title">Class ReconnectPlayer</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
<div class="inheritance"><a href="../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">it.polimi.ingsw.gc14.Network.NetworkEvent</a>
<div class="inheritance">it.polimi.ingsw.gc14.Network.NetworkEvents.ReconnectPlayer</div>
</div>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>All Implemented Interfaces:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
</dl>
<hr>
<div class="horizontal-scroll">
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">ReconnectPlayer</span>
<span class="extends-implements">extends <a href="../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a></span></div>
<div class="block">Network event used to notify that a player has reconnected to the game.</div>
<dl class="notes">
<dt>See Also:</dt>
<dd>
<ul class="tag-list">
<li><a href="../../../../../../../serialized-form.html#it.polimi.ingsw.gc14.Network.NetworkEvents.ReconnectPlayer">Serialized Form</a></li>
</ul>
</dd>
</dl>
</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- =========== FIELD SUMMARY =========== -->
<li>
<section class="field-summary" id="field-summary">
<h2>Field Summary</h2>
<div class="inherited-list">
<h3 id="fields-inherited-from-class-it.polimi.ingsw.gc14.Network.NetworkEvent">Fields inherited from class&nbsp;<a href="../NetworkEvent.html#field-summary" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a></h3>
<code><a href="../NetworkEvent.html#currentState">currentState</a>, <a href="../NetworkEvent.html#disconnectedPlayers">disconnectedPlayers</a>, <a href="../NetworkEvent.html#errorType">errorType</a>, <a href="../NetworkEvent.html#eventType">eventType</a>, <a href="../NetworkEvent.html#isError">isError</a>, <a href="../NetworkEvent.html#orderLogicCard">orderLogicCard</a>, <a href="../NetworkEvent.html#playerList">playerList</a>, <a href="../NetworkEvent.html#slotPlayerMap">slotPlayerMap</a>, <a href="../NetworkEvent.html#username">username</a></code></div>
</section>
</li>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>Constructor Summary</h2>
<div class="caption"><span>Constructors</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.String)" class="member-name-link">ReconnectPlayer</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;username)</code></div>
<div class="col-last even-row-color">
<div class="block">Constructs a reconnection event for the specified player.</div>
</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#apply(it.polimi.ingsw.gc14.Controller.GameController)" class="member-name-link">apply</a><wbr>(<a href="../../Controller/GameController.html" title="class in it.polimi.ingsw.gc14.Controller">GameController</a>&nbsp;gameController)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Applies the reconnection event to the server-side game controller.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#apply(it.polimi.ingsw.gc14.Model.MiniModel)" class="member-name-link">apply</a><wbr>(<a href="../../Model/MiniModel.html" title="class in it.polimi.ingsw.gc14.Model">MiniModel</a>&nbsp;miniModel)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Applies the reconnection update to the client-side mini model.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#enrichWithGameState(it.polimi.ingsw.gc14.Model.Game,java.util.ArrayList)" class="member-name-link">enrichWithGameState</a><wbr>(<a href="../../Model/Game.html" title="class in it.polimi.ingsw.gc14.Model">Game</a>&nbsp;game,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/ArrayList.html" title="class or interface in java.util" class="external-link">ArrayList</a>&lt;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;disconnectedUsernames)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Populates this event with the current game state so clients can
update their local model after receiving it.</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-it.polimi.ingsw.gc14.Network.NetworkEvent">Methods inherited from class&nbsp;<a href="../NetworkEvent.html#method-summary" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a></h3>
<code><a href="../NetworkEvent.html#getErrorType()" title="getErrorType()">getErrorType</a>, <a href="../NetworkEvent.html#getEventType()" title="getEventType()">getEventType</a>, <a href="../NetworkEvent.html#getUsername()" title="getUsername()">getUsername</a>, <a href="../NetworkEvent.html#isError()" title="isError()">isError</a>, <a href="../NetworkEvent.html#setData(java.util.Map,it.polimi.ingsw.gc14.Model.OrderLogicCard,it.polimi.ingsw.gc14.Model.GamePackage.CurrentState,java.util.List)" title="setData(Map, OrderLogicCard, CurrentState, List)">setData</a>, <a href="../NetworkEvent.html#setErrorType(it.polimi.ingsw.gc14.ErrorType)" title="setErrorType(ErrorType)">setErrorType</a>, <a href="../NetworkEvent.html#setIsError(boolean)" title="setIsError(boolean)">setIsError</a>, <a href="../NetworkEvent.html#toString()" title="toString()">toString</a></code></div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#method-summary" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;(java.lang.String)">
<h3>ReconnectPlayer</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">ReconnectPlayer</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;username)</span></div>
<div class="block">Constructs a reconnection event for the specified player.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>username</code> - the username of the player who reconnected.</dd>
</dl>
</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="enrichWithGameState(it.polimi.ingsw.gc14.Model.Game,java.util.ArrayList)">
<h3>enrichWithGameState</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">enrichWithGameState</span><wbr><span class="parameters">(<a href="../../Model/Game.html" title="class in it.polimi.ingsw.gc14.Model">Game</a>&nbsp;game,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/ArrayList.html" title="class or interface in java.util" class="external-link">ArrayList</a>&lt;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;disconnectedUsernames)</span></div>
<div class="block"><span class="description-from-type-label">Description copied from class:&nbsp;<code><a href="../NetworkEvent.html#enrichWithGameState(it.polimi.ingsw.gc14.Model.Game,java.util.ArrayList)">NetworkEvent</a></code></span></div>
<div class="block">Populates this event with the current game state so clients can
update their local model after receiving it.
Subclasses that carry extra state (available totems, etc.) override
this method and call <code>super</code> first.</div>
<dl class="notes">
<dt>Overrides:</dt>
<dd><code><a href="../NetworkEvent.html#enrichWithGameState(it.polimi.ingsw.gc14.Model.Game,java.util.ArrayList)">enrichWithGameState</a></code>&nbsp;in class&nbsp;<code><a href="../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a></code></dd>
<dt>Parameters:</dt>
<dd><code>game</code> - the current game model.</dd>
<dd><code>disconnectedUsernames</code> - usernames of currently disconnected players.</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="apply(it.polimi.ingsw.gc14.Controller.GameController)">
<h3>apply</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">apply</span><wbr><span class="parameters">(<a href="../../Controller/GameController.html" title="class in it.polimi.ingsw.gc14.Controller">GameController</a>&nbsp;gameController)</span></div>
<div class="block">Applies the reconnection event to the server-side game controller.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../NetworkEvent.html#apply(it.polimi.ingsw.gc14.Controller.GameController)">apply</a></code>&nbsp;in class&nbsp;<code><a href="../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a></code></dd>
<dt>Parameters:</dt>
<dd><code>gameController</code> - the game controller on which to apply the event.</dd>
<dt>Returns:</dt>
<dd><code>true</code> if the player reconnection is handled successfully,
<code>false</code> otherwise.</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="apply(it.polimi.ingsw.gc14.Model.MiniModel)">
<h3>apply</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">apply</span><wbr><span class="parameters">(<a href="../../Model/MiniModel.html" title="class in it.polimi.ingsw.gc14.Model">MiniModel</a>&nbsp;miniModel)</span></div>
<div class="block">Applies the reconnection update to the client-side mini model.
<p>If the event does not represent an error, the player data,
turn order, current game state, and slot assignments are updated.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../NetworkEvent.html#apply(it.polimi.ingsw.gc14.Model.MiniModel)">apply</a></code>&nbsp;in class&nbsp;<code><a href="../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a></code></dd>
<dt>Parameters:</dt>
<dd><code>miniModel</code> - the mini model on which to apply the event.</dd>
</dl>
</div>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</body>
</html>
@@ -0,0 +1,237 @@
<!DOCTYPE HTML>
<html lang="it">
<head>
<!-- Generated by javadoc (25) on Fri Jun 19 23:05:23 CEST 2026 -->
<title>SkipTurn</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-06-19">
<meta name="description" content="declaration: module: it.polimi.ingsw.gc14, package: it.polimi.ingsw.gc14.Network.NetworkEvents, class: SkipTurn">
<meta name="generator" content="javadoc/ClassWriter">
<link rel="stylesheet" type="text/css" href="../../../../../../../resource-files/jquery-ui.min.css">
<link rel="stylesheet" type="text/css" href="../../../../../../../resource-files/stylesheet.css">
<script type="text/javascript" src="../../../../../../../script-files/script.js"></script>
<script type="text/javascript" src="../../../../../../../script-files/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../../../../../script-files/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">const pathtoroot = "../../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="nav-content">
<div class="nav-menu-button"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button></div>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../../module-summary.html">Module</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
<li><a href="../../../../../../../search.html">Search</a></li>
<li><a href="../../../../../../../help-doc.html#class">Help</a></li>
</ul>
</div>
</div>
<div class="sub-nav">
<div class="nav-content">
<ol class="sub-nav-list">
<li><a href="../../../../../../module-summary.html">it.polimi.ingsw.gc14</a></li>
<li><a href="package-summary.html">it.polimi.ingsw.gc14.Network.NetworkEvents</a></li>
<li><a href="SkipTurn.html" class="current-selection">SkipTurn</a></li>
</ol>
<div class="nav-list-search"><input type="text" id="search-input" disabled placeholder="Search documentation (type /)" aria-label="Search in documentation" autocomplete="off" spellcheck="false"><input type="reset" id="reset-search" disabled value="Reset"></div>
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="main-grid">
<nav role="navigation" class="toc" aria-label="Table of contents">
<div class="toc-header">Contents&nbsp;<input type="text" class="filter-input" disabled placeholder="Filter contents (type .)" aria-label="Filter table of contents" autocomplete="off" spellcheck="false"><input type="reset" class="reset-filter" disabled tabindex="-1" value="Reset"></div>
<ol class="toc-list" tabindex="-1">
<li><a href="#" tabindex="0">Description</a></li>
<li><a href="#field-summary" tabindex="0">Field Summary</a></li>
<li><a href="#constructor-summary" tabindex="0">Constructor Summary</a></li>
<li><a href="#method-summary" tabindex="0">Method Summary</a></li>
<li><a href="#constructor-detail" tabindex="0">Constructor Details</a>
<ol class="toc-list">
<li><a href="#%3Cinit%3E(java.lang.String)" tabindex="0">SkipTurn(String)</a></li>
</ol>
</li>
<li><a href="#method-detail" tabindex="0">Method Details</a>
<ol class="toc-list">
<li><a href="#apply(it.polimi.ingsw.gc14.Controller.GameController)" tabindex="0">apply(GameController)</a></li>
<li><a href="#apply(it.polimi.ingsw.gc14.Model.MiniModel)" tabindex="0">apply(MiniModel)</a></li>
</ol>
</li>
</ol>
<button class="hide-sidebar"><span>Hide sidebar&nbsp;</span><img src="../../../../../../../resource-files/left.svg" alt="Hide sidebar"></button><button class="show-sidebar"><img src="../../../../../../../resource-files/right.svg" alt="Show sidebar"><span>&nbsp;Show sidebar</span></button></nav>
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<h1 title="Class SkipTurn" class="title">Class SkipTurn</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
<div class="inheritance"><a href="../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">it.polimi.ingsw.gc14.Network.NetworkEvent</a>
<div class="inheritance">it.polimi.ingsw.gc14.Network.NetworkEvents.SkipTurn</div>
</div>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>All Implemented Interfaces:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
</dl>
<hr>
<div class="horizontal-scroll">
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">SkipTurn</span>
<span class="extends-implements">extends <a href="../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a></span></div>
<div class="block">Network event used to skip the current player's optional card action.</div>
<dl class="notes">
<dt>See Also:</dt>
<dd>
<ul class="tag-list">
<li><a href="../../../../../../../serialized-form.html#it.polimi.ingsw.gc14.Network.NetworkEvents.SkipTurn">Serialized Form</a></li>
</ul>
</dd>
</dl>
</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- =========== FIELD SUMMARY =========== -->
<li>
<section class="field-summary" id="field-summary">
<h2>Field Summary</h2>
<div class="inherited-list">
<h3 id="fields-inherited-from-class-it.polimi.ingsw.gc14.Network.NetworkEvent">Fields inherited from class&nbsp;<a href="../NetworkEvent.html#field-summary" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a></h3>
<code><a href="../NetworkEvent.html#currentState">currentState</a>, <a href="../NetworkEvent.html#disconnectedPlayers">disconnectedPlayers</a>, <a href="../NetworkEvent.html#errorType">errorType</a>, <a href="../NetworkEvent.html#eventType">eventType</a>, <a href="../NetworkEvent.html#isError">isError</a>, <a href="../NetworkEvent.html#orderLogicCard">orderLogicCard</a>, <a href="../NetworkEvent.html#playerList">playerList</a>, <a href="../NetworkEvent.html#slotPlayerMap">slotPlayerMap</a>, <a href="../NetworkEvent.html#username">username</a></code></div>
</section>
</li>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>Constructor Summary</h2>
<div class="caption"><span>Constructors</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.String)" class="member-name-link">SkipTurn</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;username)</code></div>
<div class="col-last even-row-color">
<div class="block">Class constructor.</div>
</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#apply(it.polimi.ingsw.gc14.Controller.GameController)" class="member-name-link">apply</a><wbr>(<a href="../../Controller/GameController.html" title="class in it.polimi.ingsw.gc14.Controller">GameController</a>&nbsp;gameController)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Applies this event to the specified server-side game controller.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#apply(it.polimi.ingsw.gc14.Model.MiniModel)" class="member-name-link">apply</a><wbr>(<a href="../../Model/MiniModel.html" title="class in it.polimi.ingsw.gc14.Model">MiniModel</a>&nbsp;miniModel)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Applies this event to the client-side mini model, updating players,
turn order, game state, and slot map after a skip turn action.</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-it.polimi.ingsw.gc14.Network.NetworkEvent">Methods inherited from class&nbsp;<a href="../NetworkEvent.html#method-summary" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a></h3>
<code><a href="../NetworkEvent.html#enrichWithGameState(it.polimi.ingsw.gc14.Model.Game,java.util.ArrayList)" title="enrichWithGameState(Game, ArrayList)">enrichWithGameState</a>, <a href="../NetworkEvent.html#getErrorType()" title="getErrorType()">getErrorType</a>, <a href="../NetworkEvent.html#getEventType()" title="getEventType()">getEventType</a>, <a href="../NetworkEvent.html#getUsername()" title="getUsername()">getUsername</a>, <a href="../NetworkEvent.html#isError()" title="isError()">isError</a>, <a href="../NetworkEvent.html#setData(java.util.Map,it.polimi.ingsw.gc14.Model.OrderLogicCard,it.polimi.ingsw.gc14.Model.GamePackage.CurrentState,java.util.List)" title="setData(Map, OrderLogicCard, CurrentState, List)">setData</a>, <a href="../NetworkEvent.html#setErrorType(it.polimi.ingsw.gc14.ErrorType)" title="setErrorType(ErrorType)">setErrorType</a>, <a href="../NetworkEvent.html#setIsError(boolean)" title="setIsError(boolean)">setIsError</a>, <a href="../NetworkEvent.html#toString()" title="toString()">toString</a></code></div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#method-summary" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;(java.lang.String)">
<h3>SkipTurn</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">SkipTurn</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;username)</span></div>
<div class="block">Class constructor.
Initializes all the attributes.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>username</code> - the name of the player requesting the event</dd>
</dl>
</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="apply(it.polimi.ingsw.gc14.Controller.GameController)">
<h3>apply</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">apply</span><wbr><span class="parameters">(<a href="../../Controller/GameController.html" title="class in it.polimi.ingsw.gc14.Controller">GameController</a>&nbsp;gameController)</span></div>
<div class="block"><span class="description-from-type-label">Description copied from class:&nbsp;<code><a href="../NetworkEvent.html#apply(it.polimi.ingsw.gc14.Controller.GameController)">NetworkEvent</a></code></span></div>
<div class="block">Applies this event to the specified server-side game controller.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../NetworkEvent.html#apply(it.polimi.ingsw.gc14.Controller.GameController)">apply</a></code>&nbsp;in class&nbsp;<code><a href="../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a></code></dd>
<dt>Parameters:</dt>
<dd><code>gameController</code> - the Game Controller on which to apply the event</dd>
<dt>Returns:</dt>
<dd>true if the player could skipTheTurn, false otherwise</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="apply(it.polimi.ingsw.gc14.Model.MiniModel)">
<h3>apply</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">apply</span><wbr><span class="parameters">(<a href="../../Model/MiniModel.html" title="class in it.polimi.ingsw.gc14.Model">MiniModel</a>&nbsp;miniModel)</span></div>
<div class="block">Applies this event to the client-side mini model, updating players,
turn order, game state, and slot map after a skip turn action.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../NetworkEvent.html#apply(it.polimi.ingsw.gc14.Model.MiniModel)">apply</a></code>&nbsp;in class&nbsp;<code><a href="../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a></code></dd>
<dt>Parameters:</dt>
<dd><code>miniModel</code> - the client-side model to update.</dd>
</dl>
</div>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</body>
</html>
@@ -0,0 +1,273 @@
<!DOCTYPE HTML>
<html lang="it">
<head>
<!-- Generated by javadoc (25) on Fri Jun 19 23:05:23 CEST 2026 -->
<title>SlotChoice</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-06-19">
<meta name="description" content="declaration: module: it.polimi.ingsw.gc14, package: it.polimi.ingsw.gc14.Network.NetworkEvents, class: SlotChoice">
<meta name="generator" content="javadoc/ClassWriter">
<link rel="stylesheet" type="text/css" href="../../../../../../../resource-files/jquery-ui.min.css">
<link rel="stylesheet" type="text/css" href="../../../../../../../resource-files/stylesheet.css">
<script type="text/javascript" src="../../../../../../../script-files/script.js"></script>
<script type="text/javascript" src="../../../../../../../script-files/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../../../../../script-files/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">const pathtoroot = "../../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="nav-content">
<div class="nav-menu-button"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button></div>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../../module-summary.html">Module</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
<li><a href="../../../../../../../search.html">Search</a></li>
<li><a href="../../../../../../../help-doc.html#class">Help</a></li>
</ul>
</div>
</div>
<div class="sub-nav">
<div class="nav-content">
<ol class="sub-nav-list">
<li><a href="../../../../../../module-summary.html">it.polimi.ingsw.gc14</a></li>
<li><a href="package-summary.html">it.polimi.ingsw.gc14.Network.NetworkEvents</a></li>
<li><a href="SlotChoice.html" class="current-selection">SlotChoice</a></li>
</ol>
<div class="nav-list-search"><input type="text" id="search-input" disabled placeholder="Search documentation (type /)" aria-label="Search in documentation" autocomplete="off" spellcheck="false"><input type="reset" id="reset-search" disabled value="Reset"></div>
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="main-grid">
<nav role="navigation" class="toc" aria-label="Table of contents">
<div class="toc-header">Contents&nbsp;<input type="text" class="filter-input" disabled placeholder="Filter contents (type .)" aria-label="Filter table of contents" autocomplete="off" spellcheck="false"><input type="reset" class="reset-filter" disabled tabindex="-1" value="Reset"></div>
<ol class="toc-list" tabindex="-1">
<li><a href="#" tabindex="0">Description</a></li>
<li><a href="#field-summary" tabindex="0">Field Summary</a></li>
<li><a href="#constructor-summary" tabindex="0">Constructor Summary</a></li>
<li><a href="#method-summary" tabindex="0">Method Summary</a></li>
<li><a href="#field-detail" tabindex="0">Field Details</a>
<ol class="toc-list">
<li><a href="#pos" tabindex="0">pos</a></li>
</ol>
</li>
<li><a href="#constructor-detail" tabindex="0">Constructor Details</a>
<ol class="toc-list">
<li><a href="#%3Cinit%3E(java.lang.String,int)" tabindex="0">SlotChoice(String, int)</a></li>
</ol>
</li>
<li><a href="#method-detail" tabindex="0">Method Details</a>
<ol class="toc-list">
<li><a href="#apply(it.polimi.ingsw.gc14.Controller.GameController)" tabindex="0">apply(GameController)</a></li>
<li><a href="#apply(it.polimi.ingsw.gc14.Model.MiniModel)" tabindex="0">apply(MiniModel)</a></li>
</ol>
</li>
</ol>
<button class="hide-sidebar"><span>Hide sidebar&nbsp;</span><img src="../../../../../../../resource-files/left.svg" alt="Hide sidebar"></button><button class="show-sidebar"><img src="../../../../../../../resource-files/right.svg" alt="Show sidebar"><span>&nbsp;Show sidebar</span></button></nav>
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<h1 title="Class SlotChoice" class="title">Class SlotChoice</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
<div class="inheritance"><a href="../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">it.polimi.ingsw.gc14.Network.NetworkEvent</a>
<div class="inheritance">it.polimi.ingsw.gc14.Network.NetworkEvents.SlotChoice</div>
</div>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>All Implemented Interfaces:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
</dl>
<hr>
<div class="horizontal-scroll">
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">SlotChoice</span>
<span class="extends-implements">extends <a href="../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a></span></div>
<div class="block">NetworkEvent to select a slot where to place the player totem.</div>
<dl class="notes">
<dt>See Also:</dt>
<dd>
<ul class="tag-list">
<li><a href="../../../../../../../serialized-form.html#it.polimi.ingsw.gc14.Network.NetworkEvents.SlotChoice">Serialized Form</a></li>
</ul>
</dd>
</dl>
</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- =========== FIELD SUMMARY =========== -->
<li>
<section class="field-summary" id="field-summary">
<h2>Field Summary</h2>
<div class="caption"><span>Fields</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Field</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>private final int</code></div>
<div class="col-second even-row-color"><code><a href="#pos" class="member-name-link">pos</a></code></div>
<div class="col-last even-row-color">
<div class="block">Index of the selected slot.</div>
</div>
</div>
<div class="inherited-list">
<h3 id="fields-inherited-from-class-it.polimi.ingsw.gc14.Network.NetworkEvent">Fields inherited from class&nbsp;<a href="../NetworkEvent.html#field-summary" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a></h3>
<code><a href="../NetworkEvent.html#currentState">currentState</a>, <a href="../NetworkEvent.html#disconnectedPlayers">disconnectedPlayers</a>, <a href="../NetworkEvent.html#errorType">errorType</a>, <a href="../NetworkEvent.html#eventType">eventType</a>, <a href="../NetworkEvent.html#isError">isError</a>, <a href="../NetworkEvent.html#orderLogicCard">orderLogicCard</a>, <a href="../NetworkEvent.html#playerList">playerList</a>, <a href="../NetworkEvent.html#slotPlayerMap">slotPlayerMap</a>, <a href="../NetworkEvent.html#username">username</a></code></div>
</section>
</li>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>Constructor Summary</h2>
<div class="caption"><span>Constructors</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.String,int)" class="member-name-link">SlotChoice</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;username,
int&nbsp;pos)</code></div>
<div class="col-last even-row-color">
<div class="block">Class constructor.</div>
</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#apply(it.polimi.ingsw.gc14.Controller.GameController)" class="member-name-link">apply</a><wbr>(<a href="../../Controller/GameController.html" title="class in it.polimi.ingsw.gc14.Controller">GameController</a>&nbsp;gameController)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Applies this event to the specified server-side game controller.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#apply(it.polimi.ingsw.gc14.Model.MiniModel)" class="member-name-link">apply</a><wbr>(<a href="../../Model/MiniModel.html" title="class in it.polimi.ingsw.gc14.Model">MiniModel</a>&nbsp;miniModel)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Applies this event to the client-side mini model, updating players,
turn order, game state, and slot map after a slot selection.</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-it.polimi.ingsw.gc14.Network.NetworkEvent">Methods inherited from class&nbsp;<a href="../NetworkEvent.html#method-summary" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a></h3>
<code><a href="../NetworkEvent.html#enrichWithGameState(it.polimi.ingsw.gc14.Model.Game,java.util.ArrayList)" title="enrichWithGameState(Game, ArrayList)">enrichWithGameState</a>, <a href="../NetworkEvent.html#getErrorType()" title="getErrorType()">getErrorType</a>, <a href="../NetworkEvent.html#getEventType()" title="getEventType()">getEventType</a>, <a href="../NetworkEvent.html#getUsername()" title="getUsername()">getUsername</a>, <a href="../NetworkEvent.html#isError()" title="isError()">isError</a>, <a href="../NetworkEvent.html#setData(java.util.Map,it.polimi.ingsw.gc14.Model.OrderLogicCard,it.polimi.ingsw.gc14.Model.GamePackage.CurrentState,java.util.List)" title="setData(Map, OrderLogicCard, CurrentState, List)">setData</a>, <a href="../NetworkEvent.html#setErrorType(it.polimi.ingsw.gc14.ErrorType)" title="setErrorType(ErrorType)">setErrorType</a>, <a href="../NetworkEvent.html#setIsError(boolean)" title="setIsError(boolean)">setIsError</a>, <a href="../NetworkEvent.html#toString()" title="toString()">toString</a></code></div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#method-summary" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ FIELD DETAIL =========== -->
<li>
<section class="field-details" id="field-detail">
<h2>Field Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="pos">
<h3>pos</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">pos</span></div>
<div class="block">Index of the selected slot.</div>
</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;(java.lang.String,int)">
<h3>SlotChoice</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">SlotChoice</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;username,
int&nbsp;pos)</span></div>
<div class="block">Class constructor.
Initializes all the attributes.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>username</code> - the name of the player requesting the event</dd>
<dd><code>pos</code> - the index of the selected slot</dd>
</dl>
</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="apply(it.polimi.ingsw.gc14.Controller.GameController)">
<h3>apply</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">apply</span><wbr><span class="parameters">(<a href="../../Controller/GameController.html" title="class in it.polimi.ingsw.gc14.Controller">GameController</a>&nbsp;gameController)</span></div>
<div class="block"><span class="description-from-type-label">Description copied from class:&nbsp;<code><a href="../NetworkEvent.html#apply(it.polimi.ingsw.gc14.Controller.GameController)">NetworkEvent</a></code></span></div>
<div class="block">Applies this event to the specified server-side game controller.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../NetworkEvent.html#apply(it.polimi.ingsw.gc14.Controller.GameController)">apply</a></code>&nbsp;in class&nbsp;<code><a href="../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a></code></dd>
<dt>Parameters:</dt>
<dd><code>gameController</code> - the game controller on which to apply the event.</dd>
<dt>Returns:</dt>
<dd><code>true</code> if the slot choice is handled successfully, <code>false</code> otherwise.</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="apply(it.polimi.ingsw.gc14.Model.MiniModel)">
<h3>apply</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">apply</span><wbr><span class="parameters">(<a href="../../Model/MiniModel.html" title="class in it.polimi.ingsw.gc14.Model">MiniModel</a>&nbsp;miniModel)</span></div>
<div class="block">Applies this event to the client-side mini model, updating players,
turn order, game state, and slot map after a slot selection.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../NetworkEvent.html#apply(it.polimi.ingsw.gc14.Model.MiniModel)">apply</a></code>&nbsp;in class&nbsp;<code><a href="../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a></code></dd>
<dt>Parameters:</dt>
<dd><code>miniModel</code> - the client-side model to update.</dd>
</dl>
</div>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</body>
</html>
@@ -0,0 +1,319 @@
<!DOCTYPE HTML>
<html lang="it">
<head>
<!-- Generated by javadoc (25) on Fri Jun 19 23:05:23 CEST 2026 -->
<title>TotemChoice</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-06-19">
<meta name="description" content="declaration: module: it.polimi.ingsw.gc14, package: it.polimi.ingsw.gc14.Network.NetworkEvents, class: TotemChoice">
<meta name="generator" content="javadoc/ClassWriter">
<link rel="stylesheet" type="text/css" href="../../../../../../../resource-files/jquery-ui.min.css">
<link rel="stylesheet" type="text/css" href="../../../../../../../resource-files/stylesheet.css">
<script type="text/javascript" src="../../../../../../../script-files/script.js"></script>
<script type="text/javascript" src="../../../../../../../script-files/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../../../../../script-files/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">const pathtoroot = "../../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="nav-content">
<div class="nav-menu-button"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button></div>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../../module-summary.html">Module</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
<li><a href="../../../../../../../search.html">Search</a></li>
<li><a href="../../../../../../../help-doc.html#class">Help</a></li>
</ul>
</div>
</div>
<div class="sub-nav">
<div class="nav-content">
<ol class="sub-nav-list">
<li><a href="../../../../../../module-summary.html">it.polimi.ingsw.gc14</a></li>
<li><a href="package-summary.html">it.polimi.ingsw.gc14.Network.NetworkEvents</a></li>
<li><a href="TotemChoice.html" class="current-selection">TotemChoice</a></li>
</ol>
<div class="nav-list-search"><input type="text" id="search-input" disabled placeholder="Search documentation (type /)" aria-label="Search in documentation" autocomplete="off" spellcheck="false"><input type="reset" id="reset-search" disabled value="Reset"></div>
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="main-grid">
<nav role="navigation" class="toc" aria-label="Table of contents">
<div class="toc-header">Contents&nbsp;<input type="text" class="filter-input" disabled placeholder="Filter contents (type .)" aria-label="Filter table of contents" autocomplete="off" spellcheck="false"><input type="reset" class="reset-filter" disabled tabindex="-1" value="Reset"></div>
<ol class="toc-list" tabindex="-1">
<li><a href="#" tabindex="0">Description</a></li>
<li><a href="#field-summary" tabindex="0">Field Summary</a></li>
<li><a href="#constructor-summary" tabindex="0">Constructor Summary</a></li>
<li><a href="#method-summary" tabindex="0">Method Summary</a></li>
<li><a href="#field-detail" tabindex="0">Field Details</a>
<ol class="toc-list">
<li><a href="#totem" tabindex="0">totem</a></li>
<li><a href="#availableTotems" tabindex="0">availableTotems</a></li>
</ol>
</li>
<li><a href="#constructor-detail" tabindex="0">Constructor Details</a>
<ol class="toc-list">
<li><a href="#%3Cinit%3E(java.lang.String,java.lang.String)" tabindex="0">TotemChoice(String, String)</a></li>
</ol>
</li>
<li><a href="#method-detail" tabindex="0">Method Details</a>
<ol class="toc-list">
<li><a href="#enrichWithGameState(it.polimi.ingsw.gc14.Model.Game,java.util.ArrayList)" tabindex="0">enrichWithGameState(Game, ArrayList)</a></li>
<li><a href="#apply(it.polimi.ingsw.gc14.Controller.GameController)" tabindex="0">apply(GameController)</a></li>
<li><a href="#apply(it.polimi.ingsw.gc14.Model.MiniModel)" tabindex="0">apply(MiniModel)</a></li>
</ol>
</li>
</ol>
<button class="hide-sidebar"><span>Hide sidebar&nbsp;</span><img src="../../../../../../../resource-files/left.svg" alt="Hide sidebar"></button><button class="show-sidebar"><img src="../../../../../../../resource-files/right.svg" alt="Show sidebar"><span>&nbsp;Show sidebar</span></button></nav>
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<h1 title="Class TotemChoice" class="title">Class TotemChoice</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
<div class="inheritance"><a href="../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">it.polimi.ingsw.gc14.Network.NetworkEvent</a>
<div class="inheritance">it.polimi.ingsw.gc14.Network.NetworkEvents.TotemChoice</div>
</div>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>All Implemented Interfaces:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
</dl>
<hr>
<div class="horizontal-scroll">
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">TotemChoice</span>
<span class="extends-implements">extends <a href="../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a>
implements <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></span></div>
<div class="block">Network event used to handle a player's totem choice.</div>
<dl class="notes">
<dt>See Also:</dt>
<dd>
<ul class="tag-list">
<li><a href="../../../../../../../serialized-form.html#it.polimi.ingsw.gc14.Network.NetworkEvents.TotemChoice">Serialized Form</a></li>
</ul>
</dd>
</dl>
</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- =========== FIELD SUMMARY =========== -->
<li>
<section class="field-summary" id="field-summary">
<h2>Field Summary</h2>
<div class="caption"><span>Fields</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Field</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>private <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a><wbr>&lt;<a href="../../Model/Totems.html" title="enum class in it.polimi.ingsw.gc14.Model">Totems</a>&gt;</code></div>
<div class="col-second even-row-color"><code><a href="#availableTotems" class="member-name-link">availableTotems</a></code></div>
<div class="col-last even-row-color">
<div class="block">List of totems still available after the choice has been processed.</div>
</div>
<div class="col-first odd-row-color"><code>private final <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
<div class="col-second odd-row-color"><code><a href="#totem" class="member-name-link">totem</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Name of the totem selected by the player.</div>
</div>
</div>
<div class="inherited-list">
<h3 id="fields-inherited-from-class-it.polimi.ingsw.gc14.Network.NetworkEvent">Fields inherited from class&nbsp;<a href="../NetworkEvent.html#field-summary" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a></h3>
<code><a href="../NetworkEvent.html#currentState">currentState</a>, <a href="../NetworkEvent.html#disconnectedPlayers">disconnectedPlayers</a>, <a href="../NetworkEvent.html#errorType">errorType</a>, <a href="../NetworkEvent.html#eventType">eventType</a>, <a href="../NetworkEvent.html#isError">isError</a>, <a href="../NetworkEvent.html#orderLogicCard">orderLogicCard</a>, <a href="../NetworkEvent.html#playerList">playerList</a>, <a href="../NetworkEvent.html#slotPlayerMap">slotPlayerMap</a>, <a href="../NetworkEvent.html#username">username</a></code></div>
</section>
</li>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>Constructor Summary</h2>
<div class="caption"><span>Constructors</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.String,java.lang.String)" class="member-name-link">TotemChoice</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;username,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;totem)</code></div>
<div class="col-last even-row-color">
<div class="block">Constructs a totem choice event for the specified player.</div>
</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#apply(it.polimi.ingsw.gc14.Controller.GameController)" class="member-name-link">apply</a><wbr>(<a href="../../Controller/GameController.html" title="class in it.polimi.ingsw.gc14.Controller">GameController</a>&nbsp;gameController)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Applies the totem choice event to the server-side game controller.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#apply(it.polimi.ingsw.gc14.Model.MiniModel)" class="member-name-link">apply</a><wbr>(<a href="../../Model/MiniModel.html" title="class in it.polimi.ingsw.gc14.Model">MiniModel</a>&nbsp;miniModel)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Applies the totem choice update to the client-side mini model.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#enrichWithGameState(it.polimi.ingsw.gc14.Model.Game,java.util.ArrayList)" class="member-name-link">enrichWithGameState</a><wbr>(<a href="../../Model/Game.html" title="class in it.polimi.ingsw.gc14.Model">Game</a>&nbsp;game,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/ArrayList.html" title="class or interface in java.util" class="external-link">ArrayList</a>&lt;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;disconnectedUsernames)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Populates this event with the current game state so clients can
update their local model after receiving it.</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-it.polimi.ingsw.gc14.Network.NetworkEvent">Methods inherited from class&nbsp;<a href="../NetworkEvent.html#method-summary" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a></h3>
<code><a href="../NetworkEvent.html#getErrorType()" title="getErrorType()">getErrorType</a>, <a href="../NetworkEvent.html#getEventType()" title="getEventType()">getEventType</a>, <a href="../NetworkEvent.html#getUsername()" title="getUsername()">getUsername</a>, <a href="../NetworkEvent.html#isError()" title="isError()">isError</a>, <a href="../NetworkEvent.html#setData(java.util.Map,it.polimi.ingsw.gc14.Model.OrderLogicCard,it.polimi.ingsw.gc14.Model.GamePackage.CurrentState,java.util.List)" title="setData(Map, OrderLogicCard, CurrentState, List)">setData</a>, <a href="../NetworkEvent.html#setErrorType(it.polimi.ingsw.gc14.ErrorType)" title="setErrorType(ErrorType)">setErrorType</a>, <a href="../NetworkEvent.html#setIsError(boolean)" title="setIsError(boolean)">setIsError</a>, <a href="../NetworkEvent.html#toString()" title="toString()">toString</a></code></div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#method-summary" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ FIELD DETAIL =========== -->
<li>
<section class="field-details" id="field-detail">
<h2>Field Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="totem">
<h3>totem</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">totem</span></div>
<div class="block">Name of the totem selected by the player.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="availableTotems">
<h3>availableTotems</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../../Model/Totems.html" title="enum class in it.polimi.ingsw.gc14.Model">Totems</a>&gt;</span>&nbsp;<span class="element-name">availableTotems</span></div>
<div class="block">List of totems still available after the choice has been processed.</div>
</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;(java.lang.String,java.lang.String)">
<h3>TotemChoice</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">TotemChoice</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;username,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;totem)</span></div>
<div class="block">Constructs a totem choice event for the specified player.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>username</code> - the username of the player making the choice.</dd>
<dd><code>totem</code> - the name of the selected totem.</dd>
</dl>
</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="enrichWithGameState(it.polimi.ingsw.gc14.Model.Game,java.util.ArrayList)">
<h3>enrichWithGameState</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">enrichWithGameState</span><wbr><span class="parameters">(<a href="../../Model/Game.html" title="class in it.polimi.ingsw.gc14.Model">Game</a>&nbsp;game,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/ArrayList.html" title="class or interface in java.util" class="external-link">ArrayList</a>&lt;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;disconnectedUsernames)</span></div>
<div class="block"><span class="description-from-type-label">Description copied from class:&nbsp;<code><a href="../NetworkEvent.html#enrichWithGameState(it.polimi.ingsw.gc14.Model.Game,java.util.ArrayList)">NetworkEvent</a></code></span></div>
<div class="block">Populates this event with the current game state so clients can
update their local model after receiving it.
Subclasses that carry extra state (available totems, etc.) override
this method and call <code>super</code> first.</div>
<dl class="notes">
<dt>Overrides:</dt>
<dd><code><a href="../NetworkEvent.html#enrichWithGameState(it.polimi.ingsw.gc14.Model.Game,java.util.ArrayList)">enrichWithGameState</a></code>&nbsp;in class&nbsp;<code><a href="../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a></code></dd>
<dt>Parameters:</dt>
<dd><code>game</code> - the current game model.</dd>
<dd><code>disconnectedUsernames</code> - usernames of currently disconnected players.</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="apply(it.polimi.ingsw.gc14.Controller.GameController)">
<h3>apply</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">apply</span><wbr><span class="parameters">(<a href="../../Controller/GameController.html" title="class in it.polimi.ingsw.gc14.Controller">GameController</a>&nbsp;gameController)</span></div>
<div class="block">Applies the totem choice event to the server-side game controller.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../NetworkEvent.html#apply(it.polimi.ingsw.gc14.Controller.GameController)">apply</a></code>&nbsp;in class&nbsp;<code><a href="../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a></code></dd>
<dt>Parameters:</dt>
<dd><code>gameController</code> - the game controller on which to apply the event.</dd>
<dt>Returns:</dt>
<dd><code>true</code> if the totem choice is handled successfully,
<code>false</code> otherwise.</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="apply(it.polimi.ingsw.gc14.Model.MiniModel)">
<h3>apply</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">apply</span><wbr><span class="parameters">(<a href="../../Model/MiniModel.html" title="class in it.polimi.ingsw.gc14.Model">MiniModel</a>&nbsp;miniModel)</span></div>
<div class="block">Applies the totem choice update to the client-side mini model.
<p>If the event does not represent an error, the player data,
turn order, current game state, slot assignments, and available
totems are updated.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../NetworkEvent.html#apply(it.polimi.ingsw.gc14.Model.MiniModel)">apply</a></code>&nbsp;in class&nbsp;<code><a href="../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a></code></dd>
<dt>Parameters:</dt>
<dd><code>miniModel</code> - the mini model on which to apply the event.</dd>
</dl>
</div>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</body>
</html>
@@ -0,0 +1,144 @@
<!DOCTYPE HTML>
<html lang="it">
<head>
<!-- Generated by javadoc (25) on Fri Jun 19 23:05:23 CEST 2026 -->
<title>it.polimi.ingsw.gc14.Network.NetworkEvents</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-06-19">
<meta name="description" content="declaration: module: it.polimi.ingsw.gc14, package: it.polimi.ingsw.gc14.Network.NetworkEvents">
<meta name="generator" content="javadoc/PackageWriter">
<link rel="stylesheet" type="text/css" href="../../../../../../../resource-files/jquery-ui.min.css">
<link rel="stylesheet" type="text/css" href="../../../../../../../resource-files/stylesheet.css">
<script type="text/javascript" src="../../../../../../../script-files/script.js"></script>
<script type="text/javascript" src="../../../../../../../script-files/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../../../../../script-files/jquery-ui.min.js"></script>
</head>
<body class="package-declaration-page">
<script type="text/javascript">const pathtoroot = "../../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="nav-content">
<div class="nav-menu-button"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button></div>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../../module-summary.html">Module</a></li>
<li class="nav-bar-cell1-rev">Package</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
<li><a href="../../../../../../../search.html">Search</a></li>
<li><a href="../../../../../../../help-doc.html#package">Help</a></li>
</ul>
</div>
</div>
<div class="sub-nav">
<div class="nav-content">
<ol class="sub-nav-list">
<li><a href="../../../../../../module-summary.html">it.polimi.ingsw.gc14</a></li>
<li><a href="package-summary.html" class="current-selection">it.polimi.ingsw.gc14.Network.NetworkEvents</a></li>
</ol>
<div class="nav-list-search"><input type="text" id="search-input" disabled placeholder="Search documentation (type /)" aria-label="Search in documentation" autocomplete="off" spellcheck="false"><input type="reset" id="reset-search" disabled value="Reset"></div>
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="main-grid">
<nav role="navigation" class="toc" aria-label="Table of contents">
<div class="toc-header">Contents</div>
<ol class="toc-list" tabindex="-1">
<li><a href="#" tabindex="0">Description</a></li>
<li><a href="#related-package-summary" tabindex="0">Related Packages</a></li>
<li><a href="#class-summary" tabindex="0">Classes and Interfaces</a></li>
</ol>
<button class="hide-sidebar"><span>Hide sidebar&nbsp;</span><img src="../../../../../../../resource-files/left.svg" alt="Hide sidebar"></button><button class="show-sidebar"><img src="../../../../../../../resource-files/right.svg" alt="Show sidebar"><span>&nbsp;Show sidebar</span></button></nav>
<main role="main">
<div class="header">
<h1 title="Package it.polimi.ingsw.gc14.Network.NetworkEvents" class="title">Package it.polimi.ingsw.gc14.Network.NetworkEvents</h1>
</div>
<hr>
<div class="horizontal-scroll">
<div class="package-signature">package <span class="element-name">it.polimi.ingsw.gc14.Network.NetworkEvents</span></div>
</div>
<section class="summary">
<ul class="summary-list">
<li>
<div id="related-package-summary">
<div class="caption"><span>Related Packages</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Package</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><a href="../package-summary.html">it.polimi.ingsw.gc14.Network</a></div>
<div class="col-last even-row-color">&nbsp;</div>
</div>
</div>
</li>
<li>
<div id="class-summary">
<div class="caption"><span>Classes</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Class</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="AddPlayer.html" title="class in it.polimi.ingsw.gc14.Network.NetworkEvents">AddPlayer</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">Network event used to register a new player in the lobby.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="ApplyNextRound.html" title="class in it.polimi.ingsw.gc14.Network.NetworkEvents">ApplyNextRound</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<div class="block">Network event that transitions all clients to the next round.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="DisconnectedPlayer.html" title="class in it.polimi.ingsw.gc14.Network.NetworkEvents">DisconnectedPlayer</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">Network event used to notify all clients that a player has disconnected.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="DrawLowerBuildingCard.html" title="class in it.polimi.ingsw.gc14.Network.NetworkEvents">DrawLowerBuildingCard</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<div class="block">NetworkEvent to draw a building card from the lower card list.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="DrawLowerTribeCard.html" title="class in it.polimi.ingsw.gc14.Network.NetworkEvents">DrawLowerTribeCard</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">NetworkEvent to draw a tribe card from the lower card list.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="DrawUpperBuildingCard.html" title="class in it.polimi.ingsw.gc14.Network.NetworkEvents">DrawUpperBuildingCard</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<div class="block">NetworkEvent to draw a building card from the upper card list.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="DrawUpperTribeCard.html" title="class in it.polimi.ingsw.gc14.Network.NetworkEvents">DrawUpperTribeCard</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">NetworkEvent to draw a tribe card from the upper card list.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="EndedGame.html" title="class in it.polimi.ingsw.gc14.Network.NetworkEvents">EndedGame</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<div class="block">Network event that signals the end of the game and delivers the final standings.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="ReconnectPlayer.html" title="class in it.polimi.ingsw.gc14.Network.NetworkEvents">ReconnectPlayer</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">Network event used to notify that a player has reconnected to the game.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="SkipTurn.html" title="class in it.polimi.ingsw.gc14.Network.NetworkEvents">SkipTurn</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<div class="block">Network event used to skip the current player's optional card action.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="SlotChoice.html" title="class in it.polimi.ingsw.gc14.Network.NetworkEvents">SlotChoice</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">NetworkEvent to select a slot where to place the player totem.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="TotemChoice.html" title="class in it.polimi.ingsw.gc14.Network.NetworkEvents">TotemChoice</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<div class="block">Network event used to handle a player's totem choice.</div>
</div>
</div>
</div>
</li>
</ul>
</section>
</main>
</div>
</body>
</html>
@@ -0,0 +1,89 @@
<!DOCTYPE HTML>
<html lang="it">
<head>
<!-- Generated by javadoc (25) on Fri Jun 19 23:05:23 CEST 2026 -->
<title>it.polimi.ingsw.gc14.Network.NetworkEvents Class Hierarchy</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-06-19">
<meta name="description" content="tree: module: it.polimi.ingsw.gc14, package: it.polimi.ingsw.gc14.Network.NetworkEvents">
<meta name="generator" content="javadoc/PackageTreeWriter">
<link rel="stylesheet" type="text/css" href="../../../../../../../resource-files/jquery-ui.min.css">
<link rel="stylesheet" type="text/css" href="../../../../../../../resource-files/stylesheet.css">
<script type="text/javascript" src="../../../../../../../script-files/script.js"></script>
<script type="text/javascript" src="../../../../../../../script-files/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../../../../../script-files/jquery-ui.min.js"></script>
</head>
<body class="package-tree-page">
<script type="text/javascript">const pathtoroot = "../../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="nav-content">
<div class="nav-menu-button"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button></div>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../../module-summary.html">Module</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Tree</li>
<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
<li><a href="../../../../../../../search.html">Search</a></li>
<li><a href="../../../../../../../help-doc.html#tree">Help</a></li>
</ul>
</div>
</div>
<div class="sub-nav">
<div class="nav-content">
<ol class="sub-nav-list">
<li><a href="../../../../../../module-summary.html">it.polimi.ingsw.gc14</a></li>
<li><a href="package-summary.html" class="current-selection">it.polimi.ingsw.gc14.Network.NetworkEvents</a></li>
</ol>
<div class="nav-list-search"><input type="text" id="search-input" disabled placeholder="Search documentation (type /)" aria-label="Search in documentation" autocomplete="off" spellcheck="false"><input type="reset" id="reset-search" disabled value="Reset"></div>
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="main-grid">
<main role="main">
<div class="header">
<h1 class="title">Hierarchy For Package it.polimi.ingsw.gc14.Network.NetworkEvents</h1>
</div>
<span class="package-hierarchy-label">Package Hierarchies:</span>
<ul class="horizontal contents-list">
<li><a href="../../../../../../../overview-tree.html">All Packages</a></li>
</ul>
<section class="hierarchy">
<h2 title="Class Hierarchy">Class Hierarchy</h2>
<ul>
<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
<ul>
<li class="circle">it.polimi.ingsw.gc14.Network.<a href="../NetworkEvent.html" class="type-name-link" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a> (implements java.io.<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)
<ul>
<li class="circle">it.polimi.ingsw.gc14.Network.NetworkEvents.<a href="AddPlayer.html" class="type-name-link" title="class in it.polimi.ingsw.gc14.Network.NetworkEvents">AddPlayer</a></li>
<li class="circle">it.polimi.ingsw.gc14.Network.NetworkEvents.<a href="ApplyNextRound.html" class="type-name-link" title="class in it.polimi.ingsw.gc14.Network.NetworkEvents">ApplyNextRound</a></li>
<li class="circle">it.polimi.ingsw.gc14.Network.NetworkEvents.<a href="DisconnectedPlayer.html" class="type-name-link" title="class in it.polimi.ingsw.gc14.Network.NetworkEvents">DisconnectedPlayer</a></li>
<li class="circle">it.polimi.ingsw.gc14.Network.NetworkEvents.<a href="DrawLowerBuildingCard.html" class="type-name-link" title="class in it.polimi.ingsw.gc14.Network.NetworkEvents">DrawLowerBuildingCard</a></li>
<li class="circle">it.polimi.ingsw.gc14.Network.NetworkEvents.<a href="DrawLowerTribeCard.html" class="type-name-link" title="class in it.polimi.ingsw.gc14.Network.NetworkEvents">DrawLowerTribeCard</a></li>
<li class="circle">it.polimi.ingsw.gc14.Network.NetworkEvents.<a href="DrawUpperBuildingCard.html" class="type-name-link" title="class in it.polimi.ingsw.gc14.Network.NetworkEvents">DrawUpperBuildingCard</a></li>
<li class="circle">it.polimi.ingsw.gc14.Network.NetworkEvents.<a href="DrawUpperTribeCard.html" class="type-name-link" title="class in it.polimi.ingsw.gc14.Network.NetworkEvents">DrawUpperTribeCard</a></li>
<li class="circle">it.polimi.ingsw.gc14.Network.NetworkEvents.<a href="EndedGame.html" class="type-name-link" title="class in it.polimi.ingsw.gc14.Network.NetworkEvents">EndedGame</a></li>
<li class="circle">it.polimi.ingsw.gc14.Network.NetworkEvents.<a href="ReconnectPlayer.html" class="type-name-link" title="class in it.polimi.ingsw.gc14.Network.NetworkEvents">ReconnectPlayer</a></li>
<li class="circle">it.polimi.ingsw.gc14.Network.NetworkEvents.<a href="SkipTurn.html" class="type-name-link" title="class in it.polimi.ingsw.gc14.Network.NetworkEvents">SkipTurn</a></li>
<li class="circle">it.polimi.ingsw.gc14.Network.NetworkEvents.<a href="SlotChoice.html" class="type-name-link" title="class in it.polimi.ingsw.gc14.Network.NetworkEvents">SlotChoice</a></li>
<li class="circle">it.polimi.ingsw.gc14.Network.NetworkEvents.<a href="TotemChoice.html" class="type-name-link" title="class in it.polimi.ingsw.gc14.Network.NetworkEvents">TotemChoice</a> (implements java.io.<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)</li>
</ul>
</li>
</ul>
</li>
</ul>
</section>
</main>
</div>
</body>
</html>
@@ -0,0 +1,288 @@
<!DOCTYPE HTML>
<html lang="it">
<head>
<!-- Generated by javadoc (25) on Fri Jun 19 23:05:23 CEST 2026 -->
<title>ClientCallbackImpl</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-06-19">
<meta name="description" content="declaration: module: it.polimi.ingsw.gc14, package: it.polimi.ingsw.gc14.Network.RMI.Client, class: ClientCallbackImpl">
<meta name="generator" content="javadoc/ClassWriter">
<link rel="stylesheet" type="text/css" href="../../../../../../../../resource-files/jquery-ui.min.css">
<link rel="stylesheet" type="text/css" href="../../../../../../../../resource-files/stylesheet.css">
<script type="text/javascript" src="../../../../../../../../script-files/script.js"></script>
<script type="text/javascript" src="../../../../../../../../script-files/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../../../../../../script-files/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">const pathtoroot = "../../../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="nav-content">
<div class="nav-menu-button"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button></div>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../../../module-summary.html">Module</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../../../index-files/index-1.html">Index</a></li>
<li><a href="../../../../../../../../search.html">Search</a></li>
<li><a href="../../../../../../../../help-doc.html#class">Help</a></li>
</ul>
</div>
</div>
<div class="sub-nav">
<div class="nav-content">
<ol class="sub-nav-list">
<li><a href="../../../../../../../module-summary.html">it.polimi.ingsw.gc14</a></li>
<li><a href="package-summary.html">it.polimi.ingsw.gc14.Network.RMI.Client</a></li>
<li><a href="ClientCallbackImpl.html" class="current-selection">ClientCallbackImpl</a></li>
</ol>
<div class="nav-list-search"><input type="text" id="search-input" disabled placeholder="Search documentation (type /)" aria-label="Search in documentation" autocomplete="off" spellcheck="false"><input type="reset" id="reset-search" disabled value="Reset"></div>
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="main-grid">
<nav role="navigation" class="toc" aria-label="Table of contents">
<div class="toc-header">Contents&nbsp;<input type="text" class="filter-input" disabled placeholder="Filter contents (type .)" aria-label="Filter table of contents" autocomplete="off" spellcheck="false"><input type="reset" class="reset-filter" disabled tabindex="-1" value="Reset"></div>
<ol class="toc-list" tabindex="-1">
<li><a href="#" tabindex="0">Description</a></li>
<li><a href="#field-summary" tabindex="0">Field Summary</a></li>
<li><a href="#constructor-summary" tabindex="0">Constructor Summary</a></li>
<li><a href="#method-summary" tabindex="0">Method Summary</a></li>
<li><a href="#field-detail" tabindex="0">Field Details</a>
<ol class="toc-list">
<li><a href="#clientController" tabindex="0">clientController</a></li>
</ol>
</li>
<li><a href="#constructor-detail" tabindex="0">Constructor Details</a>
<ol class="toc-list">
<li><a href="#%3Cinit%3E(it.polimi.ingsw.gc14.Controller.ClientController)" tabindex="0">ClientCallbackImpl(ClientController)</a></li>
</ol>
</li>
<li><a href="#method-detail" tabindex="0">Method Details</a>
<ol class="toc-list">
<li><a href="#onGameInit(it.polimi.ingsw.gc14.Model.MiniModel)" tabindex="0">onGameInit(MiniModel)</a></li>
<li><a href="#onAction(it.polimi.ingsw.gc14.Network.NetworkEvent)" tabindex="0">onAction(NetworkEvent)</a></li>
</ol>
</li>
</ol>
<button class="hide-sidebar"><span>Hide sidebar&nbsp;</span><img src="../../../../../../../../resource-files/left.svg" alt="Hide sidebar"></button><button class="show-sidebar"><img src="../../../../../../../../resource-files/right.svg" alt="Show sidebar"><span>&nbsp;Show sidebar</span></button></nav>
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<h1 title="Class ClientCallbackImpl" class="title">Class ClientCallbackImpl</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/server/RemoteObject.html" title="class or interface in java.rmi.server" class="external-link">java.rmi.server.RemoteObject</a>
<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/server/RemoteServer.html" title="class or interface in java.rmi.server" class="external-link">java.rmi.server.RemoteServer</a>
<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/server/UnicastRemoteObject.html" title="class or interface in java.rmi.server" class="external-link">java.rmi.server.UnicastRemoteObject</a>
<div class="inheritance">it.polimi.ingsw.gc14.Network.RMI.Client.ClientCallbackImpl</div>
</div>
</div>
</div>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>All Implemented Interfaces:</dt>
<dd><code><a href="../Common/IClientCallback.html" title="interface in it.polimi.ingsw.gc14.Network.RMI.Common">IClientCallback</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/Remote.html" title="class or interface in java.rmi" class="external-link">Remote</a></code></dd>
</dl>
<hr>
<div class="horizontal-scroll">
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">ClientCallbackImpl</span>
<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/server/UnicastRemoteObject.html" title="class or interface in java.rmi.server" class="external-link">UnicastRemoteObject</a>
implements <a href="../Common/IClientCallback.html" title="interface in it.polimi.ingsw.gc14.Network.RMI.Common">IClientCallback</a></span></div>
<div class="block">RMI client callback implementation of <a href="../Common/IClientCallback.html" title="interface in it.polimi.ingsw.gc14.Network.RMI.Common"><code>IClientCallback</code></a>.
Receives notifications from the server and updates the client game model.</div>
<dl class="notes">
<dt>See Also:</dt>
<dd>
<ul class="tag-list">
<li><a href="../../../../../../../../serialized-form.html#it.polimi.ingsw.gc14.Network.RMI.Client.ClientCallbackImpl">Serialized Form</a></li>
</ul>
</dd>
</dl>
</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- =========== FIELD SUMMARY =========== -->
<li>
<section class="field-summary" id="field-summary">
<h2>Field Summary</h2>
<div class="caption"><span>Fields</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Field</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>private final <a href="../../../Controller/ClientController.html" title="class in it.polimi.ingsw.gc14.Controller">ClientController</a></code></div>
<div class="col-second even-row-color"><code><a href="#clientController" class="member-name-link">clientController</a></code></div>
<div class="col-last even-row-color">
<div class="block">The client controller used to apply events and update the model</div>
</div>
</div>
<div class="inherited-list">
<h3 id="fields-inherited-from-class-java.rmi.server.RemoteObject">Fields inherited from class&nbsp;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/server/RemoteObject.html#field-summary" title="class or interface in java.rmi.server" class="external-link">RemoteObject</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/server/RemoteObject.html#ref" title="class or interface in java.rmi.server" class="external-link">ref</a></code></div>
</section>
</li>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>Constructor Summary</h2>
<div class="caption"><span>Constructors</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(it.polimi.ingsw.gc14.Controller.ClientController)" class="member-name-link">ClientCallbackImpl</a><wbr>(<a href="../../../Controller/ClientController.html" title="class in it.polimi.ingsw.gc14.Controller">ClientController</a>&nbsp;clientController)</code></div>
<div class="col-last even-row-color">
<div class="block">Class constructor.</div>
</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#onAction(it.polimi.ingsw.gc14.Network.NetworkEvent)" class="member-name-link">onAction</a><wbr>(<a href="../../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a>&nbsp;event)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Called by the server when an action has been accepted.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#onGameInit(it.polimi.ingsw.gc14.Model.MiniModel)" class="member-name-link">onGameInit</a><wbr>(<a href="../../../Model/MiniModel.html" title="class in it.polimi.ingsw.gc14.Model">MiniModel</a>&nbsp;model)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Called by the server when the game is initialized.</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.rmi.server.UnicastRemoteObject">Methods inherited from class&nbsp;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/server/UnicastRemoteObject.html#method-summary" title="class or interface in java.rmi.server" class="external-link">UnicastRemoteObject</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/server/UnicastRemoteObject.html#clone()" title="class or interface in java.rmi.server" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/server/UnicastRemoteObject.html#exportObject(java.rmi.Remote)" title="class or interface in java.rmi.server" class="external-link">exportObject</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/server/UnicastRemoteObject.html#exportObject(java.rmi.Remote,int)" title="class or interface in java.rmi.server" class="external-link">exportObject</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/server/UnicastRemoteObject.html#exportObject(java.rmi.Remote,int,java.io.ObjectInputFilter)" title="class or interface in java.rmi.server" class="external-link">exportObject</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/server/UnicastRemoteObject.html#exportObject(java.rmi.Remote,int,java.rmi.server.RMIClientSocketFactory,java.rmi.server.RMIServerSocketFactory)" title="class or interface in java.rmi.server" class="external-link">exportObject</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/server/UnicastRemoteObject.html#exportObject(java.rmi.Remote,int,java.rmi.server.RMIClientSocketFactory,java.rmi.server.RMIServerSocketFactory,java.io.ObjectInputFilter)" title="class or interface in java.rmi.server" class="external-link">exportObject</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/server/UnicastRemoteObject.html#unexportObject(java.rmi.Remote,boolean)" title="class or interface in java.rmi.server" class="external-link">unexportObject</a></code></div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.rmi.server.RemoteServer">Methods inherited from class&nbsp;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/server/RemoteServer.html#method-summary" title="class or interface in java.rmi.server" class="external-link">RemoteServer</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/server/RemoteServer.html#getClientHost()" title="class or interface in java.rmi.server" class="external-link">getClientHost</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/server/RemoteServer.html#getLog()" title="class or interface in java.rmi.server" class="external-link">getLog</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/server/RemoteServer.html#setLog(java.io.OutputStream)" title="class or interface in java.rmi.server" class="external-link">setLog</a></code></div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.rmi.server.RemoteObject">Methods inherited from class&nbsp;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/server/RemoteObject.html#method-summary" title="class or interface in java.rmi.server" class="external-link">RemoteObject</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/server/RemoteObject.html#equals(java.lang.Object)" title="class or interface in java.rmi.server" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/server/RemoteObject.html#getRef()" title="class or interface in java.rmi.server" class="external-link">getRef</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/server/RemoteObject.html#hashCode()" title="class or interface in java.rmi.server" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/server/RemoteObject.html#toString()" title="class or interface in java.rmi.server" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/server/RemoteObject.html#toStub(java.rmi.Remote)" title="class or interface in java.rmi.server" class="external-link">toStub</a></code></div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#method-summary" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ FIELD DETAIL =========== -->
<li>
<section class="field-details" id="field-detail">
<h2>Field Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="clientController">
<h3>clientController</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type"><a href="../../../Controller/ClientController.html" title="class in it.polimi.ingsw.gc14.Controller">ClientController</a></span>&nbsp;<span class="element-name">clientController</span></div>
<div class="block">The client controller used to apply events and update the model</div>
</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;(it.polimi.ingsw.gc14.Controller.ClientController)">
<h3>ClientCallbackImpl</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">ClientCallbackImpl</span><wbr><span class="parameters">(<a href="../../../Controller/ClientController.html" title="class in it.polimi.ingsw.gc14.Controller">ClientController</a>&nbsp;clientController)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a></span></div>
<div class="block">Class constructor.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>clientController</code> - the client controller</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a></code> - if any RMI error occurs</dd>
</dl>
</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="onGameInit(it.polimi.ingsw.gc14.Model.MiniModel)">
<h3>onGameInit</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">onGameInit</span><wbr><span class="parameters">(<a href="../../../Model/MiniModel.html" title="class in it.polimi.ingsw.gc14.Model">MiniModel</a>&nbsp;model)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a></span></div>
<div class="block">Called by the server when the game is initialized.
Sets the client game model in the <a href="../../../Controller/ClientController.html" title="class in it.polimi.ingsw.gc14.Controller"><code>ClientController</code></a>.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../Common/IClientCallback.html#onGameInit(it.polimi.ingsw.gc14.Model.MiniModel)">onGameInit</a></code>&nbsp;in interface&nbsp;<code><a href="../Common/IClientCallback.html" title="interface in it.polimi.ingsw.gc14.Network.RMI.Common">IClientCallback</a></code></dd>
<dt>Parameters:</dt>
<dd><code>model</code> - the initialized <a href="../../../Model/Game.html" title="class in it.polimi.ingsw.gc14.Model"><code>Game</code></a> model</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a></code> - if any RMI error occurs</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="onAction(it.polimi.ingsw.gc14.Network.NetworkEvent)">
<h3>onAction</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">onAction</span><wbr><span class="parameters">(<a href="../../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a>&nbsp;event)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a></span></div>
<div class="block">Called by the server when an action has been accepted.
If the event contains an error, it is printed to the console.
Otherwise, the event is applied to the local model.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../Common/IClientCallback.html#onAction(it.polimi.ingsw.gc14.Network.NetworkEvent)">onAction</a></code>&nbsp;in interface&nbsp;<code><a href="../Common/IClientCallback.html" title="interface in it.polimi.ingsw.gc14.Network.RMI.Common">IClientCallback</a></code></dd>
<dt>Parameters:</dt>
<dd><code>event</code> - the <a href="../../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network"><code>NetworkEvent</code></a> sent by the server</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a></code> - if any RMI error occurs</dd>
</dl>
</div>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</body>
</html>
@@ -0,0 +1,596 @@
<!DOCTYPE HTML>
<html lang="it">
<head>
<!-- Generated by javadoc (25) on Fri Jun 19 23:05:23 CEST 2026 -->
<title>RMIClient</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-06-19">
<meta name="description" content="declaration: module: it.polimi.ingsw.gc14, package: it.polimi.ingsw.gc14.Network.RMI.Client, class: RMIClient">
<meta name="generator" content="javadoc/ClassWriter">
<link rel="stylesheet" type="text/css" href="../../../../../../../../resource-files/jquery-ui.min.css">
<link rel="stylesheet" type="text/css" href="../../../../../../../../resource-files/stylesheet.css">
<script type="text/javascript" src="../../../../../../../../script-files/script.js"></script>
<script type="text/javascript" src="../../../../../../../../script-files/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../../../../../../script-files/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">const pathtoroot = "../../../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="nav-content">
<div class="nav-menu-button"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button></div>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../../../module-summary.html">Module</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../../../index-files/index-1.html">Index</a></li>
<li><a href="../../../../../../../../search.html">Search</a></li>
<li><a href="../../../../../../../../help-doc.html#class">Help</a></li>
</ul>
</div>
</div>
<div class="sub-nav">
<div class="nav-content">
<ol class="sub-nav-list">
<li><a href="../../../../../../../module-summary.html">it.polimi.ingsw.gc14</a></li>
<li><a href="package-summary.html">it.polimi.ingsw.gc14.Network.RMI.Client</a></li>
<li><a href="RMIClient.html" class="current-selection">RMIClient</a></li>
</ol>
<div class="nav-list-search"><input type="text" id="search-input" disabled placeholder="Search documentation (type /)" aria-label="Search in documentation" autocomplete="off" spellcheck="false"><input type="reset" id="reset-search" disabled value="Reset"></div>
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="main-grid">
<nav role="navigation" class="toc" aria-label="Table of contents">
<div class="toc-header">Contents&nbsp;<input type="text" class="filter-input" disabled placeholder="Filter contents (type .)" aria-label="Filter table of contents" autocomplete="off" spellcheck="false"><input type="reset" class="reset-filter" disabled tabindex="-1" value="Reset"></div>
<ol class="toc-list" tabindex="-1">
<li><a href="#" tabindex="0">Description</a></li>
<li><a href="#field-summary" tabindex="0">Field Summary</a></li>
<li><a href="#constructor-summary" tabindex="0">Constructor Summary</a></li>
<li><a href="#method-summary" tabindex="0">Method Summary</a></li>
<li><a href="#field-detail" tabindex="0">Field Details</a>
<ol class="toc-list">
<li><a href="#host" tabindex="0">host</a></li>
<li><a href="#port" tabindex="0">port</a></li>
<li><a href="#stub" tabindex="0">stub</a></li>
<li><a href="#controller" tabindex="0">controller</a></li>
<li><a href="#myIp" tabindex="0">myIp</a></li>
<li><a href="#username" tabindex="0">username</a></li>
<li><a href="#running" tabindex="0">running</a></li>
<li><a href="#pingSender" tabindex="0">pingSender</a></li>
<li><a href="#executor" tabindex="0">executor</a></li>
</ol>
</li>
<li><a href="#constructor-detail" tabindex="0">Constructor Details</a>
<ol class="toc-list">
<li><a href="#%3Cinit%3E(it.polimi.ingsw.gc14.Controller.ClientController,java.lang.String,int,java.lang.String)" tabindex="0">RMIClient(ClientController, String, int, String)</a></li>
</ol>
</li>
<li><a href="#method-detail" tabindex="0">Method Details</a>
<ol class="toc-list">
<li><a href="#connect(java.lang.String,int)" tabindex="0">connect(String, int)</a></li>
<li><a href="#startHeartbeat()" tabindex="0">startHeartbeat()</a></li>
<li><a href="#disconnect()" tabindex="0">disconnect()</a></li>
<li><a href="#drawUpperTribeCard(java.lang.String,int)" tabindex="0">drawUpperTribeCard(String, int)</a></li>
<li><a href="#drawLowerTribeCard(java.lang.String,int)" tabindex="0">drawLowerTribeCard(String, int)</a></li>
<li><a href="#drawUpperBuildingCard(java.lang.String,int)" tabindex="0">drawUpperBuildingCard(String, int)</a></li>
<li><a href="#drawLowerBuildingCard(java.lang.String,int)" tabindex="0">drawLowerBuildingCard(String, int)</a></li>
<li><a href="#skipTurn(java.lang.String)" tabindex="0">skipTurn(String)</a></li>
<li><a href="#slotChoice(java.lang.String,int)" tabindex="0">slotChoice(String, int)</a></li>
<li><a href="#totemChoice(java.lang.String,java.lang.String)" tabindex="0">totemChoice(String, String)</a></li>
<li><a href="#notifyDisconnection()" tabindex="0">notifyDisconnection()</a></li>
</ol>
</li>
</ol>
<button class="hide-sidebar"><span>Hide sidebar&nbsp;</span><img src="../../../../../../../../resource-files/left.svg" alt="Hide sidebar"></button><button class="show-sidebar"><img src="../../../../../../../../resource-files/right.svg" alt="Show sidebar"><span>&nbsp;Show sidebar</span></button></nav>
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<h1 title="Class RMIClient" class="title">Class RMIClient</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
<div class="inheritance">it.polimi.ingsw.gc14.Network.RMI.Client.RMIClient</div>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>All Implemented Interfaces:</dt>
<dd><code><a href="../../IClient.html" title="interface in it.polimi.ingsw.gc14.Network">IClient</a></code></dd>
</dl>
<hr>
<div class="horizontal-scroll">
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">RMIClient</span>
<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>
implements <a href="../../IClient.html" title="interface in it.polimi.ingsw.gc14.Network">IClient</a></span></div>
<div class="block">Client RMI. Uses the methods exposed by the server RMI.</div>
</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- =========== FIELD SUMMARY =========== -->
<li>
<section class="field-summary" id="field-summary">
<h2>Field Summary</h2>
<div class="caption"><span>Fields</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Field</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>private final <a href="../../../Controller/ClientController.html" title="class in it.polimi.ingsw.gc14.Controller">ClientController</a></code></div>
<div class="col-second even-row-color"><code><a href="#controller" class="member-name-link">controller</a></code></div>
<div class="col-last even-row-color">
<div class="block">Client-side controller that receives and applies incoming game events.</div>
</div>
<div class="col-first odd-row-color"><code>private <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/concurrent/ExecutorService.html" title="class or interface in java.util.concurrent" class="external-link">ExecutorService</a></code></div>
<div class="col-second odd-row-color"><code><a href="#executor" class="member-name-link">executor</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Future executor used for timer Running</div>
</div>
<div class="col-first even-row-color"><code>private final <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
<div class="col-second even-row-color"><code><a href="#host" class="member-name-link">host</a></code></div>
<div class="col-last even-row-color">
<div class="block">Hostname or IP address of the RMI server.</div>
</div>
<div class="col-first odd-row-color"><code>private final <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
<div class="col-second odd-row-color"><code><a href="#myIp" class="member-name-link">myIp</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Local IP address advertised to the RMI runtime so callbacks are routed correctly.</div>
</div>
<div class="col-first even-row-color"><code>private <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/concurrent/ScheduledExecutorService.html" title="class or interface in java.util.concurrent" class="external-link">ScheduledExecutorService</a></code></div>
<div class="col-second even-row-color"><code><a href="#pingSender" class="member-name-link">pingSender</a></code></div>
<div class="col-last even-row-color">
<div class="block">Scheduler that fires ping() every <a href="../../NetworkConfig.html#KEEPALIVE_INTERVAL_MS">3000L</a> ms.</div>
</div>
<div class="col-first odd-row-color"><code>private final int</code></div>
<div class="col-second odd-row-color"><code><a href="#port" class="member-name-link">port</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Port of the RMI registry.</div>
</div>
<div class="col-first even-row-color"><code>private boolean</code></div>
<div class="col-second even-row-color"><code><a href="#running" class="member-name-link">running</a></code></div>
<div class="col-last even-row-color">
<div class="block"><code>true</code> while the heartbeat loop is active; set to <code>false</code> on disconnect.</div>
</div>
<div class="col-first odd-row-color"><code>private <a href="../Common/IGameServer.html" title="interface in it.polimi.ingsw.gc14.Network.RMI.Common">IGameServer</a></code></div>
<div class="col-second odd-row-color"><code><a href="#stub" class="member-name-link">stub</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Remote stub obtained from the RMI registry after a successful connection.</div>
</div>
<div class="col-first even-row-color"><code>private <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
<div class="col-second even-row-color"><code><a href="#username" class="member-name-link">username</a></code></div>
<div class="col-last even-row-color">
<div class="block">Username of the currently connected player; set during <a href="#connect(java.lang.String,int)"><code>connect(String, int)</code></a>.</div>
</div>
</div>
</section>
</li>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>Constructor Summary</h2>
<div class="caption"><span>Constructors</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(it.polimi.ingsw.gc14.Controller.ClientController,java.lang.String,int,java.lang.String)" class="member-name-link">RMIClient</a><wbr>(<a href="../../../Controller/ClientController.html" title="class in it.polimi.ingsw.gc14.Controller">ClientController</a>&nbsp;controller,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;host,
int&nbsp;port,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;myIp)</code></div>
<div class="col-last even-row-color">
<div class="block">Constructs an RMI client and initializes its connection parameters.</div>
</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="../../../ErrorType.html" title="enum class in it.polimi.ingsw.gc14">ErrorType</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#connect(java.lang.String,int)" class="member-name-link">connect</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;username,
int&nbsp;proposedNPlayers)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Connects to the RMI server and starts the heartbeat loop.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>private void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#disconnect()" class="member-name-link">disconnect</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Tears down the connection.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#drawLowerBuildingCard(java.lang.String,int)" class="member-name-link">drawLowerBuildingCard</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername,
int&nbsp;pos)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Requests to draw a building card from the lower list.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#drawLowerTribeCard(java.lang.String,int)" class="member-name-link">drawLowerTribeCard</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername,
int&nbsp;pos)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Requests to draw a tribe card from the lower list.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#drawUpperBuildingCard(java.lang.String,int)" class="member-name-link">drawUpperBuildingCard</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername,
int&nbsp;pos)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Requests to draw a building card from the upper list.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#drawUpperTribeCard(java.lang.String,int)" class="member-name-link">drawUpperTribeCard</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername,
int&nbsp;pos)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Requests to draw a tribe card from the upper list.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#notifyDisconnection()" class="member-name-link">notifyDisconnection</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Notifies the server of a voluntary disconnection via RMI, then stops
the keep-alive scheduler.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#skipTurn(java.lang.String)" class="member-name-link">skipTurn</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Requests to skip the turn.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#slotChoice(java.lang.String,int)" class="member-name-link">slotChoice</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername,
int&nbsp;pos)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Used to perform the slot choice action for the specified player at the specified position.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>private void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#startHeartbeat()" class="member-name-link">startHeartbeat</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Starts sending periodic pings to the server.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#totemChoice(java.lang.String,java.lang.String)" class="member-name-link">totemChoice</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;totem)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Sends a totem choice to the server for the specified player via RMI.</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#method-summary" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ FIELD DETAIL =========== -->
<li>
<section class="field-details" id="field-detail">
<h2>Field Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="host">
<h3>host</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">host</span></div>
<div class="block">Hostname or IP address of the RMI server.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="port">
<h3>port</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">port</span></div>
<div class="block">Port of the RMI registry.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="stub">
<h3>stub</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type"><a href="../Common/IGameServer.html" title="interface in it.polimi.ingsw.gc14.Network.RMI.Common">IGameServer</a></span>&nbsp;<span class="element-name">stub</span></div>
<div class="block">Remote stub obtained from the RMI registry after a successful connection.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="controller">
<h3>controller</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type"><a href="../../../Controller/ClientController.html" title="class in it.polimi.ingsw.gc14.Controller">ClientController</a></span>&nbsp;<span class="element-name">controller</span></div>
<div class="block">Client-side controller that receives and applies incoming game events.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="myIp">
<h3>myIp</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">myIp</span></div>
<div class="block">Local IP address advertised to the RMI runtime so callbacks are routed correctly.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="username">
<h3>username</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">username</span></div>
<div class="block">Username of the currently connected player; set during <a href="#connect(java.lang.String,int)"><code>connect(String, int)</code></a>.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="running">
<h3>running</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private volatile</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">running</span></div>
<div class="block"><code>true</code> while the heartbeat loop is active; set to <code>false</code> on disconnect.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="pingSender">
<h3>pingSender</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/concurrent/ScheduledExecutorService.html" title="class or interface in java.util.concurrent" class="external-link">ScheduledExecutorService</a></span>&nbsp;<span class="element-name">pingSender</span></div>
<div class="block">Scheduler that fires ping() every <a href="../../NetworkConfig.html#KEEPALIVE_INTERVAL_MS">3000L</a> ms.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="executor">
<h3>executor</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/concurrent/ExecutorService.html" title="class or interface in java.util.concurrent" class="external-link">ExecutorService</a></span>&nbsp;<span class="element-name">executor</span></div>
<div class="block">Future executor used for timer Running</div>
</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;(it.polimi.ingsw.gc14.Controller.ClientController,java.lang.String,int,java.lang.String)">
<h3>RMIClient</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">RMIClient</span><wbr><span class="parameters">(<a href="../../../Controller/ClientController.html" title="class in it.polimi.ingsw.gc14.Controller">ClientController</a>&nbsp;controller,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;host,
int&nbsp;port,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;myIp)</span></div>
<div class="block">Constructs an RMI client and initializes its connection parameters.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>controller</code> - the client controller associated with this RMI client.</dd>
<dd><code>host</code> - the hostname or IP address of the RMI server.</dd>
<dd><code>port</code> - the port used to connect to the RMI registry.</dd>
<dd><code>myIp</code> - the IP address of the client.</dd>
</dl>
</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="connect(java.lang.String,int)">
<h3>connect</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../../../ErrorType.html" title="enum class in it.polimi.ingsw.gc14">ErrorType</a></span>&nbsp;<span class="element-name">connect</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;username,
int&nbsp;proposedNPlayers)</span></div>
<div class="block">Connects to the RMI server and starts the heartbeat loop.
<p>Mirrors <code>TCPClient.connect()</code>: after a successful join the
heartbeat channel is opened (here: a scheduler is started instead of
opening a second socket).</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../../IClient.html#connect(java.lang.String,int)">connect</a></code>&nbsp;in interface&nbsp;<code><a href="../../IClient.html" title="interface in it.polimi.ingsw.gc14.Network">IClient</a></code></dd>
<dt>Parameters:</dt>
<dd><code>username</code> - the username chosen by the player.</dd>
<dd><code>proposedNPlayers</code> - the desired number of players proposed by this client.</dd>
<dt>Returns:</dt>
<dd><code>true</code> if the connection is established successfully,
<code>false</code> otherwise.</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="startHeartbeat()">
<h3>startHeartbeat</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">startHeartbeat</span>()</div>
<div class="block">Starts sending periodic pings to the server.
<p>Mirrors the <code>ScheduledExecutorService</code> in
<code>TCPClient.heartbeatLoop()</code> that writes <code>PING</code> every 3 s.
On <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link"><code>RemoteException</code></a> the server is considered gone and
<a href="#disconnect()"><code>disconnect()</code></a> is called — mirrors the behavior on
<code>SocketTimeoutException</code> / <code>IOException</code> in the TCP version.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="disconnect()">
<h3>disconnect</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">disconnect</span>()</div>
<div class="block">Tears down the connection.
Mirrors <code>TCPClient.disconnect()</code>: stops the heartbeat and notifies
the view.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="drawUpperTribeCard(java.lang.String,int)">
<h3>drawUpperTribeCard</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">drawUpperTribeCard</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername,
int&nbsp;pos)</span></div>
<div class="block">Requests to draw a tribe card from the upper list.
Creates a NetworkEvent and sends it through the network client.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../../IClient.html#drawUpperTribeCard(java.lang.String,int)">drawUpperTribeCard</a></code>&nbsp;in interface&nbsp;<code><a href="../../IClient.html" title="interface in it.polimi.ingsw.gc14.Network">IClient</a></code></dd>
<dt>Parameters:</dt>
<dd><code>playerUsername</code> - the name of the player performing the action</dd>
<dd><code>pos</code> - the index of the card to draw</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="drawLowerTribeCard(java.lang.String,int)">
<h3>drawLowerTribeCard</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">drawLowerTribeCard</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername,
int&nbsp;pos)</span></div>
<div class="block">Requests to draw a tribe card from the lower list.
Creates a NetworkEvent and sends it through the network client.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../../IClient.html#drawLowerTribeCard(java.lang.String,int)">drawLowerTribeCard</a></code>&nbsp;in interface&nbsp;<code><a href="../../IClient.html" title="interface in it.polimi.ingsw.gc14.Network">IClient</a></code></dd>
<dt>Parameters:</dt>
<dd><code>playerUsername</code> - the name of the player performing the action</dd>
<dd><code>pos</code> - the index of the card to draw</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="drawUpperBuildingCard(java.lang.String,int)">
<h3>drawUpperBuildingCard</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">drawUpperBuildingCard</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername,
int&nbsp;pos)</span></div>
<div class="block">Requests to draw a building card from the upper list.
Creates a NetworkEvent and sends it through the network client.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../../IClient.html#drawUpperBuildingCard(java.lang.String,int)">drawUpperBuildingCard</a></code>&nbsp;in interface&nbsp;<code><a href="../../IClient.html" title="interface in it.polimi.ingsw.gc14.Network">IClient</a></code></dd>
<dt>Parameters:</dt>
<dd><code>playerUsername</code> - the name of the player performing the action</dd>
<dd><code>pos</code> - the index of the card to draw</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="drawLowerBuildingCard(java.lang.String,int)">
<h3>drawLowerBuildingCard</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">drawLowerBuildingCard</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername,
int&nbsp;pos)</span></div>
<div class="block">Requests to draw a building card from the lower list.
Creates a NetworkEvent and sends it through the network client.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../../IClient.html#drawLowerBuildingCard(java.lang.String,int)">drawLowerBuildingCard</a></code>&nbsp;in interface&nbsp;<code><a href="../../IClient.html" title="interface in it.polimi.ingsw.gc14.Network">IClient</a></code></dd>
<dt>Parameters:</dt>
<dd><code>playerUsername</code> - the name of the player performing the action</dd>
<dd><code>pos</code> - the index of the card to draw</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="skipTurn(java.lang.String)">
<h3>skipTurn</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">skipTurn</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername)</span></div>
<div class="block">Requests to skip the turn.
This action is available only when the player cannot draw any tribe card, but still can buy some buildings.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../../IClient.html#skipTurn(java.lang.String)">skipTurn</a></code>&nbsp;in interface&nbsp;<code><a href="../../IClient.html" title="interface in it.polimi.ingsw.gc14.Network">IClient</a></code></dd>
<dt>Parameters:</dt>
<dd><code>playerUsername</code> - the name of the player performing the action</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="slotChoice(java.lang.String,int)">
<h3>slotChoice</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">slotChoice</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername,
int&nbsp;pos)</span></div>
<div class="block">Used to perform the slot choice action for the specified player at the specified position.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../../IClient.html#slotChoice(java.lang.String,int)">slotChoice</a></code>&nbsp;in interface&nbsp;<code><a href="../../IClient.html" title="interface in it.polimi.ingsw.gc14.Network">IClient</a></code></dd>
<dt>Parameters:</dt>
<dd><code>playerUsername</code> - the name of the player performing the action</dd>
<dd><code>pos</code> - the index of the selected slot</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="totemChoice(java.lang.String,java.lang.String)">
<h3>totemChoice</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">totemChoice</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;totem)</span></div>
<div class="block">Sends a totem choice to the server for the specified player via RMI.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../../IClient.html#totemChoice(java.lang.String,java.lang.String)">totemChoice</a></code>&nbsp;in interface&nbsp;<code><a href="../../IClient.html" title="interface in it.polimi.ingsw.gc14.Network">IClient</a></code></dd>
<dt>Parameters:</dt>
<dd><code>playerUsername</code> - the username of the player choosing the totem.</dd>
<dd><code>totem</code> - the name of the chosen totem.</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="notifyDisconnection()">
<h3>notifyDisconnection</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">notifyDisconnection</span>()</div>
<div class="block">Notifies the server of a voluntary disconnection via RMI, then stops
the keep-alive scheduler.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../../IClient.html#notifyDisconnection()">notifyDisconnection</a></code>&nbsp;in interface&nbsp;<code><a href="../../IClient.html" title="interface in it.polimi.ingsw.gc14.Network">IClient</a></code></dd>
</dl>
</div>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</body>
</html>
@@ -0,0 +1,92 @@
<!DOCTYPE HTML>
<html lang="it">
<head>
<!-- Generated by javadoc (25) on Fri Jun 19 23:05:23 CEST 2026 -->
<title>it.polimi.ingsw.gc14.Network.RMI.Client</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-06-19">
<meta name="description" content="declaration: module: it.polimi.ingsw.gc14, package: it.polimi.ingsw.gc14.Network.RMI.Client">
<meta name="generator" content="javadoc/PackageWriter">
<link rel="stylesheet" type="text/css" href="../../../../../../../../resource-files/jquery-ui.min.css">
<link rel="stylesheet" type="text/css" href="../../../../../../../../resource-files/stylesheet.css">
<script type="text/javascript" src="../../../../../../../../script-files/script.js"></script>
<script type="text/javascript" src="../../../../../../../../script-files/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../../../../../../script-files/jquery-ui.min.js"></script>
</head>
<body class="package-declaration-page">
<script type="text/javascript">const pathtoroot = "../../../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="nav-content">
<div class="nav-menu-button"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button></div>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../../../module-summary.html">Module</a></li>
<li class="nav-bar-cell1-rev">Package</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../../../index-files/index-1.html">Index</a></li>
<li><a href="../../../../../../../../search.html">Search</a></li>
<li><a href="../../../../../../../../help-doc.html#package">Help</a></li>
</ul>
</div>
</div>
<div class="sub-nav">
<div class="nav-content">
<ol class="sub-nav-list">
<li><a href="../../../../../../../module-summary.html">it.polimi.ingsw.gc14</a></li>
<li><a href="package-summary.html" class="current-selection">it.polimi.ingsw.gc14.Network.RMI.Client</a></li>
</ol>
<div class="nav-list-search"><input type="text" id="search-input" disabled placeholder="Search documentation (type /)" aria-label="Search in documentation" autocomplete="off" spellcheck="false"><input type="reset" id="reset-search" disabled value="Reset"></div>
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="main-grid">
<nav role="navigation" class="toc" aria-label="Table of contents">
<div class="toc-header">Contents</div>
<ol class="toc-list" tabindex="-1">
<li><a href="#" tabindex="0">Description</a></li>
<li><a href="#class-summary" tabindex="0">Classes and Interfaces</a></li>
</ol>
<button class="hide-sidebar"><span>Hide sidebar&nbsp;</span><img src="../../../../../../../../resource-files/left.svg" alt="Hide sidebar"></button><button class="show-sidebar"><img src="../../../../../../../../resource-files/right.svg" alt="Show sidebar"><span>&nbsp;Show sidebar</span></button></nav>
<main role="main">
<div class="header">
<h1 title="Package it.polimi.ingsw.gc14.Network.RMI.Client" class="title">Package it.polimi.ingsw.gc14.Network.RMI.Client</h1>
</div>
<hr>
<div class="horizontal-scroll">
<div class="package-signature">package <span class="element-name">it.polimi.ingsw.gc14.Network.RMI.Client</span></div>
</div>
<section class="summary">
<ul class="summary-list">
<li>
<div id="class-summary">
<div class="caption"><span>Classes</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Class</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="ClientCallbackImpl.html" title="class in it.polimi.ingsw.gc14.Network.RMI.Client">ClientCallbackImpl</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">RMI client callback implementation of <a href="../Common/IClientCallback.html" title="interface in it.polimi.ingsw.gc14.Network.RMI.Common"><code>IClientCallback</code></a>.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="RMIClient.html" title="class in it.polimi.ingsw.gc14.Network.RMI.Client">RMIClient</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<div class="block">Client RMI.</div>
</div>
</div>
</div>
</li>
</ul>
</section>
</main>
</div>
</body>
</html>
@@ -0,0 +1,87 @@
<!DOCTYPE HTML>
<html lang="it">
<head>
<!-- Generated by javadoc (25) on Fri Jun 19 23:05:23 CEST 2026 -->
<title>it.polimi.ingsw.gc14.Network.RMI.Client Class Hierarchy</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-06-19">
<meta name="description" content="tree: module: it.polimi.ingsw.gc14, package: it.polimi.ingsw.gc14.Network.RMI.Client">
<meta name="generator" content="javadoc/PackageTreeWriter">
<link rel="stylesheet" type="text/css" href="../../../../../../../../resource-files/jquery-ui.min.css">
<link rel="stylesheet" type="text/css" href="../../../../../../../../resource-files/stylesheet.css">
<script type="text/javascript" src="../../../../../../../../script-files/script.js"></script>
<script type="text/javascript" src="../../../../../../../../script-files/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../../../../../../script-files/jquery-ui.min.js"></script>
</head>
<body class="package-tree-page">
<script type="text/javascript">const pathtoroot = "../../../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="nav-content">
<div class="nav-menu-button"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button></div>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../../../module-summary.html">Module</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Tree</li>
<li><a href="../../../../../../../../index-files/index-1.html">Index</a></li>
<li><a href="../../../../../../../../search.html">Search</a></li>
<li><a href="../../../../../../../../help-doc.html#tree">Help</a></li>
</ul>
</div>
</div>
<div class="sub-nav">
<div class="nav-content">
<ol class="sub-nav-list">
<li><a href="../../../../../../../module-summary.html">it.polimi.ingsw.gc14</a></li>
<li><a href="package-summary.html" class="current-selection">it.polimi.ingsw.gc14.Network.RMI.Client</a></li>
</ol>
<div class="nav-list-search"><input type="text" id="search-input" disabled placeholder="Search documentation (type /)" aria-label="Search in documentation" autocomplete="off" spellcheck="false"><input type="reset" id="reset-search" disabled value="Reset"></div>
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="main-grid">
<main role="main">
<div class="header">
<h1 class="title">Hierarchy For Package it.polimi.ingsw.gc14.Network.RMI.Client</h1>
</div>
<span class="package-hierarchy-label">Package Hierarchies:</span>
<ul class="horizontal contents-list">
<li><a href="../../../../../../../../overview-tree.html">All Packages</a></li>
</ul>
<section class="hierarchy">
<h2 title="Class Hierarchy">Class Hierarchy</h2>
<ul>
<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
<ul>
<li class="circle">java.rmi.server.<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/server/RemoteObject.html" class="type-name-link external-link" title="class or interface in java.rmi.server">RemoteObject</a> (implements java.rmi.<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/Remote.html" title="class or interface in java.rmi" class="external-link">Remote</a>, java.io.<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)
<ul>
<li class="circle">java.rmi.server.<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/server/RemoteServer.html" class="type-name-link external-link" title="class or interface in java.rmi.server">RemoteServer</a>
<ul>
<li class="circle">java.rmi.server.<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/server/UnicastRemoteObject.html" class="type-name-link external-link" title="class or interface in java.rmi.server">UnicastRemoteObject</a>
<ul>
<li class="circle">it.polimi.ingsw.gc14.Network.RMI.Client.<a href="ClientCallbackImpl.html" class="type-name-link" title="class in it.polimi.ingsw.gc14.Network.RMI.Client">ClientCallbackImpl</a> (implements it.polimi.ingsw.gc14.Network.RMI.Common.<a href="../Common/IClientCallback.html" title="interface in it.polimi.ingsw.gc14.Network.RMI.Common">IClientCallback</a>)</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li class="circle">it.polimi.ingsw.gc14.Network.RMI.Client.<a href="RMIClient.html" class="type-name-link" title="class in it.polimi.ingsw.gc14.Network.RMI.Client">RMIClient</a> (implements it.polimi.ingsw.gc14.Network.<a href="../../IClient.html" title="interface in it.polimi.ingsw.gc14.Network">IClient</a>)</li>
</ul>
</li>
</ul>
</section>
</main>
</div>
</body>
</html>
@@ -0,0 +1,170 @@
<!DOCTYPE HTML>
<html lang="it">
<head>
<!-- Generated by javadoc (25) on Fri Jun 19 23:05:23 CEST 2026 -->
<title>IClientCallback</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-06-19">
<meta name="description" content="declaration: module: it.polimi.ingsw.gc14, package: it.polimi.ingsw.gc14.Network.RMI.Common, interface: IClientCallback">
<meta name="generator" content="javadoc/ClassWriter">
<link rel="stylesheet" type="text/css" href="../../../../../../../../resource-files/jquery-ui.min.css">
<link rel="stylesheet" type="text/css" href="../../../../../../../../resource-files/stylesheet.css">
<script type="text/javascript" src="../../../../../../../../script-files/script.js"></script>
<script type="text/javascript" src="../../../../../../../../script-files/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../../../../../../script-files/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">const pathtoroot = "../../../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="nav-content">
<div class="nav-menu-button"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button></div>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../../../module-summary.html">Module</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../../../index-files/index-1.html">Index</a></li>
<li><a href="../../../../../../../../search.html">Search</a></li>
<li><a href="../../../../../../../../help-doc.html#class">Help</a></li>
</ul>
</div>
</div>
<div class="sub-nav">
<div class="nav-content">
<ol class="sub-nav-list">
<li><a href="../../../../../../../module-summary.html">it.polimi.ingsw.gc14</a></li>
<li><a href="package-summary.html">it.polimi.ingsw.gc14.Network.RMI.Common</a></li>
<li><a href="IClientCallback.html" class="current-selection">IClientCallback</a></li>
</ol>
<div class="nav-list-search"><input type="text" id="search-input" disabled placeholder="Search documentation (type /)" aria-label="Search in documentation" autocomplete="off" spellcheck="false"><input type="reset" id="reset-search" disabled value="Reset"></div>
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="main-grid">
<nav role="navigation" class="toc" aria-label="Table of contents">
<div class="toc-header">Contents&nbsp;<input type="text" class="filter-input" disabled placeholder="Filter contents (type .)" aria-label="Filter table of contents" autocomplete="off" spellcheck="false"><input type="reset" class="reset-filter" disabled tabindex="-1" value="Reset"></div>
<ol class="toc-list" tabindex="-1">
<li><a href="#" tabindex="0">Description</a></li>
<li><a href="#method-summary" tabindex="0">Method Summary</a></li>
<li><a href="#method-detail" tabindex="0">Method Details</a>
<ol class="toc-list">
<li><a href="#onGameInit(it.polimi.ingsw.gc14.Model.MiniModel)" tabindex="0">onGameInit(MiniModel)</a></li>
<li><a href="#onAction(it.polimi.ingsw.gc14.Network.NetworkEvent)" tabindex="0">onAction(NetworkEvent)</a></li>
</ol>
</li>
</ol>
<button class="hide-sidebar"><span>Hide sidebar&nbsp;</span><img src="../../../../../../../../resource-files/left.svg" alt="Hide sidebar"></button><button class="show-sidebar"><img src="../../../../../../../../resource-files/right.svg" alt="Show sidebar"><span>&nbsp;Show sidebar</span></button></nav>
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<h1 title="Interface IClientCallback" class="title">Interface IClientCallback</h1>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>All Superinterfaces:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/Remote.html" title="class or interface in java.rmi" class="external-link">Remote</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
</dl>
<dl class="notes">
<dt>All Known Implementing Classes:</dt>
<dd><code><a href="../Client/ClientCallbackImpl.html" title="class in it.polimi.ingsw.gc14.Network.RMI.Client">ClientCallbackImpl</a></code></dd>
</dl>
<hr>
<div class="horizontal-scroll">
<div class="type-signature"><span class="modifiers">public interface </span><span class="element-name type-name-label">IClientCallback</span><span class="extends-implements">
extends <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/Remote.html" title="class or interface in java.rmi" class="external-link">Remote</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></span></div>
<div class="block">Callback interface used by the server to notify an RMI client about
game updates and incoming network actions.
<p>Implementations of this interface are remotely accessible and
serializable.</div>
</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab3" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab3', 3)" class="table-tab">Abstract Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#onAction(it.polimi.ingsw.gc14.Network.NetworkEvent)" class="member-name-link">onAction</a><wbr>(<a href="../../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a>&nbsp;action)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Notifies the client about a network action to process.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#onGameInit(it.polimi.ingsw.gc14.Model.MiniModel)" class="member-name-link">onGameInit</a><wbr>(<a href="../../../Model/MiniModel.html" title="class in it.polimi.ingsw.gc14.Model">MiniModel</a>&nbsp;miniModel)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Notifies the client that the game model has been initialized or updated.</div>
</div>
</div>
</div>
</div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="onGameInit(it.polimi.ingsw.gc14.Model.MiniModel)">
<h3>onGameInit</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">onGameInit</span><wbr><span class="parameters">(<a href="../../../Model/MiniModel.html" title="class in it.polimi.ingsw.gc14.Model">MiniModel</a>&nbsp;miniModel)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a></span></div>
<div class="block">Notifies the client that the game model has been initialized or updated.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>miniModel</code> - the current mini model of the game.</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a></code> - if an RMI communication error occurs.</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="onAction(it.polimi.ingsw.gc14.Network.NetworkEvent)">
<h3>onAction</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">onAction</span><wbr><span class="parameters">(<a href="../../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a>&nbsp;action)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a></span></div>
<div class="block">Notifies the client about a network action to process.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>action</code> - the network event received from the server.</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a></code> - if an RMI communication error occurs.</dd>
</dl>
</div>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</body>
</html>
@@ -0,0 +1,376 @@
<!DOCTYPE HTML>
<html lang="it">
<head>
<!-- Generated by javadoc (25) on Fri Jun 19 23:05:23 CEST 2026 -->
<title>IGameServer</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-06-19">
<meta name="description" content="declaration: module: it.polimi.ingsw.gc14, package: it.polimi.ingsw.gc14.Network.RMI.Common, interface: IGameServer">
<meta name="generator" content="javadoc/ClassWriter">
<link rel="stylesheet" type="text/css" href="../../../../../../../../resource-files/jquery-ui.min.css">
<link rel="stylesheet" type="text/css" href="../../../../../../../../resource-files/stylesheet.css">
<script type="text/javascript" src="../../../../../../../../script-files/script.js"></script>
<script type="text/javascript" src="../../../../../../../../script-files/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../../../../../../script-files/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">const pathtoroot = "../../../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="nav-content">
<div class="nav-menu-button"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button></div>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../../../module-summary.html">Module</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../../../index-files/index-1.html">Index</a></li>
<li><a href="../../../../../../../../search.html">Search</a></li>
<li><a href="../../../../../../../../help-doc.html#class">Help</a></li>
</ul>
</div>
</div>
<div class="sub-nav">
<div class="nav-content">
<ol class="sub-nav-list">
<li><a href="../../../../../../../module-summary.html">it.polimi.ingsw.gc14</a></li>
<li><a href="package-summary.html">it.polimi.ingsw.gc14.Network.RMI.Common</a></li>
<li><a href="IGameServer.html" class="current-selection">IGameServer</a></li>
</ol>
<div class="nav-list-search"><input type="text" id="search-input" disabled placeholder="Search documentation (type /)" aria-label="Search in documentation" autocomplete="off" spellcheck="false"><input type="reset" id="reset-search" disabled value="Reset"></div>
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="main-grid">
<nav role="navigation" class="toc" aria-label="Table of contents">
<div class="toc-header">Contents&nbsp;<input type="text" class="filter-input" disabled placeholder="Filter contents (type .)" aria-label="Filter table of contents" autocomplete="off" spellcheck="false"><input type="reset" class="reset-filter" disabled tabindex="-1" value="Reset"></div>
<ol class="toc-list" tabindex="-1">
<li><a href="#" tabindex="0">Description</a></li>
<li><a href="#method-summary" tabindex="0">Method Summary</a></li>
<li><a href="#method-detail" tabindex="0">Method Details</a>
<ol class="toc-list">
<li><a href="#joinGame(java.lang.String,int,it.polimi.ingsw.gc14.Network.RMI.Common.IClientCallback)" tabindex="0">joinGame(String, int, IClientCallback)</a></li>
<li><a href="#drawUpperTribeCard(java.lang.String,int)" tabindex="0">drawUpperTribeCard(String, int)</a></li>
<li><a href="#drawLowerTribeCard(java.lang.String,int)" tabindex="0">drawLowerTribeCard(String, int)</a></li>
<li><a href="#drawUpperBuildingCard(java.lang.String,int)" tabindex="0">drawUpperBuildingCard(String, int)</a></li>
<li><a href="#drawLowerBuildingCard(java.lang.String,int)" tabindex="0">drawLowerBuildingCard(String, int)</a></li>
<li><a href="#skipTurn(java.lang.String)" tabindex="0">skipTurn(String)</a></li>
<li><a href="#slotChoice(java.lang.String,int)" tabindex="0">slotChoice(String, int)</a></li>
<li><a href="#totemChoice(java.lang.String,java.lang.String)" tabindex="0">totemChoice(String, String)</a></li>
<li><a href="#ping(java.lang.String)" tabindex="0">ping(String)</a></li>
<li><a href="#disconnectPlayer(java.lang.String)" tabindex="0">disconnectPlayer(String)</a></li>
</ol>
</li>
</ol>
<button class="hide-sidebar"><span>Hide sidebar&nbsp;</span><img src="../../../../../../../../resource-files/left.svg" alt="Hide sidebar"></button><button class="show-sidebar"><img src="../../../../../../../../resource-files/right.svg" alt="Show sidebar"><span>&nbsp;Show sidebar</span></button></nav>
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<h1 title="Interface IGameServer" class="title">Interface IGameServer</h1>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>All Superinterfaces:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/Remote.html" title="class or interface in java.rmi" class="external-link">Remote</a></code></dd>
</dl>
<dl class="notes">
<dt>All Known Implementing Classes:</dt>
<dd><code><a href="../Server/RMIServer.html" title="class in it.polimi.ingsw.gc14.Network.RMI.Server">RMIServer</a></code></dd>
</dl>
<hr>
<div class="horizontal-scroll">
<div class="type-signature"><span class="modifiers">public interface </span><span class="element-name type-name-label">IGameServer</span><span class="extends-implements">
extends <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/Remote.html" title="class or interface in java.rmi" class="external-link">Remote</a></span></div>
<div class="block">Remote interface used by RMI clients to interact with the game server.</div>
</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab3" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab3', 3)" class="table-tab">Abstract Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#disconnectPlayer(java.lang.String)" class="member-name-link">disconnectPlayer</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;username)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Notifies the server of a voluntary disconnection for the specified player.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#drawLowerBuildingCard(java.lang.String,int)" class="member-name-link">drawLowerBuildingCard</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername,
int&nbsp;pos)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Requests to draw a building card from the lower building card list.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#drawLowerTribeCard(java.lang.String,int)" class="member-name-link">drawLowerTribeCard</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername,
int&nbsp;pos)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Requests to draw a tribe card from the lower tribe card list.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#drawUpperBuildingCard(java.lang.String,int)" class="member-name-link">drawUpperBuildingCard</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername,
int&nbsp;pos)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Requests to draw a building card from the upper building card list.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#drawUpperTribeCard(java.lang.String,int)" class="member-name-link">drawUpperTribeCard</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername,
int&nbsp;pos)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Requests to draw a tribe card from the upper tribe card list.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="../../../ErrorType.html" title="enum class in it.polimi.ingsw.gc14">ErrorType</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#joinGame(java.lang.String,int,it.polimi.ingsw.gc14.Network.RMI.Common.IClientCallback)" class="member-name-link">joinGame</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;username,
int&nbsp;preferredInt,
<a href="IClientCallback.html" title="interface in it.polimi.ingsw.gc14.Network.RMI.Common">IClientCallback</a>&nbsp;callback)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Adds a player to the game and registers the callback used by the server
to notify the corresponding RMI client.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#ping(java.lang.String)" class="member-name-link">ping</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;username)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Heartbeat method called periodically by the client to signal
that it is still connected.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#skipTurn(java.lang.String)" class="member-name-link">skipTurn</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Requests to skip the current player's optional action.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#slotChoice(java.lang.String,int)" class="member-name-link">slotChoice</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername,
int&nbsp;pos)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Requests to assign the specified player to a slot.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#totemChoice(java.lang.String,java.lang.String)" class="member-name-link">totemChoice</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;totems)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Requests to assign the selected totem to the specified player.</div>
</div>
</div>
</div>
</div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="joinGame(java.lang.String,int,it.polimi.ingsw.gc14.Network.RMI.Common.IClientCallback)">
<h3>joinGame</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="return-type"><a href="../../../ErrorType.html" title="enum class in it.polimi.ingsw.gc14">ErrorType</a></span>&nbsp;<span class="element-name">joinGame</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;username,
int&nbsp;preferredInt,
<a href="IClientCallback.html" title="interface in it.polimi.ingsw.gc14.Network.RMI.Common">IClientCallback</a>&nbsp;callback)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a></span></div>
<div class="block">Adds a player to the game and registers the callback used by the server
to notify the corresponding RMI client.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>username</code> - the username chosen by the player.</dd>
<dd><code>preferredInt</code> - the desired number of players proposed by this client.</dd>
<dd><code>callback</code> - the remote callback associated with the client.</dd>
<dt>Returns:</dt>
<dd><code>null</code> if the player joins successfully;
an <a href="../../../ErrorType.html" title="enum class in it.polimi.ingsw.gc14"><code>ErrorType</code></a> value describing the rejection otherwise.</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a></code> - if an RMI communication error occurs.</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="drawUpperTribeCard(java.lang.String,int)">
<h3>drawUpperTribeCard</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">drawUpperTribeCard</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername,
int&nbsp;pos)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a></span></div>
<div class="block">Requests to draw a tribe card from the upper tribe card list.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>playerUsername</code> - the username of the player performing the action.</dd>
<dd><code>pos</code> - the position of the selected card.</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a></code> - if an RMI communication error occurs.</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="drawLowerTribeCard(java.lang.String,int)">
<h3>drawLowerTribeCard</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">drawLowerTribeCard</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername,
int&nbsp;pos)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a></span></div>
<div class="block">Requests to draw a tribe card from the lower tribe card list.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>playerUsername</code> - the username of the player performing the action.</dd>
<dd><code>pos</code> - the position of the selected card.</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a></code> - if an RMI communication error occurs.</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="drawUpperBuildingCard(java.lang.String,int)">
<h3>drawUpperBuildingCard</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">drawUpperBuildingCard</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername,
int&nbsp;pos)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a></span></div>
<div class="block">Requests to draw a building card from the upper building card list.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>playerUsername</code> - the username of the player performing the action.</dd>
<dd><code>pos</code> - the position of the selected card.</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a></code> - if an RMI communication error occurs.</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="drawLowerBuildingCard(java.lang.String,int)">
<h3>drawLowerBuildingCard</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">drawLowerBuildingCard</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername,
int&nbsp;pos)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a></span></div>
<div class="block">Requests to draw a building card from the lower building card list.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>playerUsername</code> - the username of the player performing the action.</dd>
<dd><code>pos</code> - the position of the selected card.</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a></code> - if an RMI communication error occurs.</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="skipTurn(java.lang.String)">
<h3>skipTurn</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">skipTurn</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a></span></div>
<div class="block">Requests to skip the current player's optional action.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>playerUsername</code> - the username of the player skipping the action.</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a></code> - if an RMI communication error occurs.</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="slotChoice(java.lang.String,int)">
<h3>slotChoice</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">slotChoice</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername,
int&nbsp;pos)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a></span></div>
<div class="block">Requests to assign the specified player to a slot.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>playerUsername</code> - the username of the player making the slot choice.</dd>
<dd><code>pos</code> - the position of the selected slot.</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a></code> - if an RMI communication error occurs.</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="totemChoice(java.lang.String,java.lang.String)">
<h3>totemChoice</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">totemChoice</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;totems)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a></span></div>
<div class="block">Requests to assign the selected totem to the specified player.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>playerUsername</code> - the username of the player making the totem choice.</dd>
<dd><code>totems</code> - the name of the selected totem.</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a></code> - if an RMI communication error occurs.</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="ping(java.lang.String)">
<h3>ping</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">ping</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;username)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a></span></div>
<div class="block">Heartbeat method called periodically by the client to signal
that it is still connected.
<p>This method mirrors the PING/PONG mechanism used in the TCP
heartbeat channel.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>username</code> - the username of the client sending the heartbeat ping.</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a></code> - if an RMI communication error occurs.</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="disconnectPlayer(java.lang.String)">
<h3>disconnectPlayer</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">disconnectPlayer</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;username)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a></span></div>
<div class="block">Notifies the server of a voluntary disconnection for the specified player.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>username</code> - the username of the player disconnecting.</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a></code> - if an RMI communication error occurs.</dd>
</dl>
</div>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</body>
</html>
@@ -0,0 +1,93 @@
<!DOCTYPE HTML>
<html lang="it">
<head>
<!-- Generated by javadoc (25) on Fri Jun 19 23:05:23 CEST 2026 -->
<title>it.polimi.ingsw.gc14.Network.RMI.Common</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-06-19">
<meta name="description" content="declaration: module: it.polimi.ingsw.gc14, package: it.polimi.ingsw.gc14.Network.RMI.Common">
<meta name="generator" content="javadoc/PackageWriter">
<link rel="stylesheet" type="text/css" href="../../../../../../../../resource-files/jquery-ui.min.css">
<link rel="stylesheet" type="text/css" href="../../../../../../../../resource-files/stylesheet.css">
<script type="text/javascript" src="../../../../../../../../script-files/script.js"></script>
<script type="text/javascript" src="../../../../../../../../script-files/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../../../../../../script-files/jquery-ui.min.js"></script>
</head>
<body class="package-declaration-page">
<script type="text/javascript">const pathtoroot = "../../../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="nav-content">
<div class="nav-menu-button"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button></div>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../../../module-summary.html">Module</a></li>
<li class="nav-bar-cell1-rev">Package</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../../../index-files/index-1.html">Index</a></li>
<li><a href="../../../../../../../../search.html">Search</a></li>
<li><a href="../../../../../../../../help-doc.html#package">Help</a></li>
</ul>
</div>
</div>
<div class="sub-nav">
<div class="nav-content">
<ol class="sub-nav-list">
<li><a href="../../../../../../../module-summary.html">it.polimi.ingsw.gc14</a></li>
<li><a href="package-summary.html" class="current-selection">it.polimi.ingsw.gc14.Network.RMI.Common</a></li>
</ol>
<div class="nav-list-search"><input type="text" id="search-input" disabled placeholder="Search documentation (type /)" aria-label="Search in documentation" autocomplete="off" spellcheck="false"><input type="reset" id="reset-search" disabled value="Reset"></div>
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="main-grid">
<nav role="navigation" class="toc" aria-label="Table of contents">
<div class="toc-header">Contents</div>
<ol class="toc-list" tabindex="-1">
<li><a href="#" tabindex="0">Description</a></li>
<li><a href="#class-summary" tabindex="0">Classes and Interfaces</a></li>
</ol>
<button class="hide-sidebar"><span>Hide sidebar&nbsp;</span><img src="../../../../../../../../resource-files/left.svg" alt="Hide sidebar"></button><button class="show-sidebar"><img src="../../../../../../../../resource-files/right.svg" alt="Show sidebar"><span>&nbsp;Show sidebar</span></button></nav>
<main role="main">
<div class="header">
<h1 title="Package it.polimi.ingsw.gc14.Network.RMI.Common" class="title">Package it.polimi.ingsw.gc14.Network.RMI.Common</h1>
</div>
<hr>
<div class="horizontal-scroll">
<div class="package-signature">package <span class="element-name">it.polimi.ingsw.gc14.Network.RMI.Common</span></div>
</div>
<section class="summary">
<ul class="summary-list">
<li>
<div id="class-summary">
<div class="caption"><span>Interfaces</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Class</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color class-summary class-summary-tab1"><a href="IClientCallback.html" title="interface in it.polimi.ingsw.gc14.Network.RMI.Common">IClientCallback</a></div>
<div class="col-last even-row-color class-summary class-summary-tab1">
<div class="block">Callback interface used by the server to notify an RMI client about
game updates and incoming network actions.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="IGameServer.html" title="interface in it.polimi.ingsw.gc14.Network.RMI.Common">IGameServer</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Remote interface used by RMI clients to interact with the game server.</div>
</div>
</div>
</div>
</li>
</ul>
</section>
</main>
</div>
</body>
</html>
@@ -0,0 +1,80 @@
<!DOCTYPE HTML>
<html lang="it">
<head>
<!-- Generated by javadoc (25) on Fri Jun 19 23:05:23 CEST 2026 -->
<title>it.polimi.ingsw.gc14.Network.RMI.Common Class Hierarchy</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-06-19">
<meta name="description" content="tree: module: it.polimi.ingsw.gc14, package: it.polimi.ingsw.gc14.Network.RMI.Common">
<meta name="generator" content="javadoc/PackageTreeWriter">
<link rel="stylesheet" type="text/css" href="../../../../../../../../resource-files/jquery-ui.min.css">
<link rel="stylesheet" type="text/css" href="../../../../../../../../resource-files/stylesheet.css">
<script type="text/javascript" src="../../../../../../../../script-files/script.js"></script>
<script type="text/javascript" src="../../../../../../../../script-files/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../../../../../../script-files/jquery-ui.min.js"></script>
</head>
<body class="package-tree-page">
<script type="text/javascript">const pathtoroot = "../../../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="nav-content">
<div class="nav-menu-button"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button></div>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../../../module-summary.html">Module</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Tree</li>
<li><a href="../../../../../../../../index-files/index-1.html">Index</a></li>
<li><a href="../../../../../../../../search.html">Search</a></li>
<li><a href="../../../../../../../../help-doc.html#tree">Help</a></li>
</ul>
</div>
</div>
<div class="sub-nav">
<div class="nav-content">
<ol class="sub-nav-list">
<li><a href="../../../../../../../module-summary.html">it.polimi.ingsw.gc14</a></li>
<li><a href="package-summary.html" class="current-selection">it.polimi.ingsw.gc14.Network.RMI.Common</a></li>
</ol>
<div class="nav-list-search"><input type="text" id="search-input" disabled placeholder="Search documentation (type /)" aria-label="Search in documentation" autocomplete="off" spellcheck="false"><input type="reset" id="reset-search" disabled value="Reset"></div>
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="main-grid">
<main role="main">
<div class="header">
<h1 class="title">Hierarchy For Package it.polimi.ingsw.gc14.Network.RMI.Common</h1>
</div>
<span class="package-hierarchy-label">Package Hierarchies:</span>
<ul class="horizontal contents-list">
<li><a href="../../../../../../../../overview-tree.html">All Packages</a></li>
</ul>
<section class="hierarchy">
<h2 title="Interface Hierarchy">Interface Hierarchy</h2>
<ul>
<li class="circle">java.rmi.<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/Remote.html" class="type-name-link external-link" title="class or interface in java.rmi">Remote</a>
<ul>
<li class="circle">it.polimi.ingsw.gc14.Network.RMI.Common.<a href="IClientCallback.html" class="type-name-link" title="interface in it.polimi.ingsw.gc14.Network.RMI.Common">IClientCallback</a> (also extends java.io.<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)</li>
<li class="circle">it.polimi.ingsw.gc14.Network.RMI.Common.<a href="IGameServer.html" class="type-name-link" title="interface in it.polimi.ingsw.gc14.Network.RMI.Common">IGameServer</a></li>
</ul>
</li>
<li class="circle">java.io.<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/Serializable.html" class="type-name-link external-link" title="class or interface in java.io">Serializable</a>
<ul>
<li class="circle">it.polimi.ingsw.gc14.Network.RMI.Common.<a href="IClientCallback.html" class="type-name-link" title="interface in it.polimi.ingsw.gc14.Network.RMI.Common">IClientCallback</a> (also extends java.rmi.<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/Remote.html" title="class or interface in java.rmi" class="external-link">Remote</a>)</li>
</ul>
</li>
</ul>
</section>
</main>
</div>
</body>
</html>
@@ -0,0 +1,365 @@
<!DOCTYPE HTML>
<html lang="it">
<head>
<!-- Generated by javadoc (25) on Fri Jun 19 23:05:23 CEST 2026 -->
<title>RMIHeartbeat</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-06-19">
<meta name="description" content="declaration: module: it.polimi.ingsw.gc14, package: it.polimi.ingsw.gc14.Network.RMI.Server, class: RMIHeartbeat">
<meta name="generator" content="javadoc/ClassWriter">
<link rel="stylesheet" type="text/css" href="../../../../../../../../resource-files/jquery-ui.min.css">
<link rel="stylesheet" type="text/css" href="../../../../../../../../resource-files/stylesheet.css">
<script type="text/javascript" src="../../../../../../../../script-files/script.js"></script>
<script type="text/javascript" src="../../../../../../../../script-files/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../../../../../../script-files/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">const pathtoroot = "../../../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="nav-content">
<div class="nav-menu-button"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button></div>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../../../module-summary.html">Module</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../../../index-files/index-1.html">Index</a></li>
<li><a href="../../../../../../../../search.html">Search</a></li>
<li><a href="../../../../../../../../help-doc.html#class">Help</a></li>
</ul>
</div>
</div>
<div class="sub-nav">
<div class="nav-content">
<ol class="sub-nav-list">
<li><a href="../../../../../../../module-summary.html">it.polimi.ingsw.gc14</a></li>
<li><a href="package-summary.html">it.polimi.ingsw.gc14.Network.RMI.Server</a></li>
<li><a href="RMIHeartbeat.html" class="current-selection">RMIHeartbeat</a></li>
</ol>
<div class="nav-list-search"><input type="text" id="search-input" disabled placeholder="Search documentation (type /)" aria-label="Search in documentation" autocomplete="off" spellcheck="false"><input type="reset" id="reset-search" disabled value="Reset"></div>
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="main-grid">
<nav role="navigation" class="toc" aria-label="Table of contents">
<div class="toc-header">Contents&nbsp;<input type="text" class="filter-input" disabled placeholder="Filter contents (type .)" aria-label="Filter table of contents" autocomplete="off" spellcheck="false"><input type="reset" class="reset-filter" disabled tabindex="-1" value="Reset"></div>
<ol class="toc-list" tabindex="-1">
<li><a href="#" tabindex="0">Description</a></li>
<li><a href="#field-summary" tabindex="0">Field Summary</a></li>
<li><a href="#constructor-summary" tabindex="0">Constructor Summary</a></li>
<li><a href="#method-summary" tabindex="0">Method Summary</a></li>
<li><a href="#field-detail" tabindex="0">Field Details</a>
<ol class="toc-list">
<li><a href="#username" tabindex="0">username</a></li>
<li><a href="#playerList" tabindex="0">playerList</a></li>
<li><a href="#clients" tabindex="0">clients</a></li>
<li><a href="#actionQueue" tabindex="0">actionQueue</a></li>
<li><a href="#lastPingTime" tabindex="0">lastPingTime</a></li>
<li><a href="#running" tabindex="0">running</a></li>
<li><a href="#watchdog" tabindex="0">watchdog</a></li>
</ol>
</li>
<li><a href="#constructor-detail" tabindex="0">Constructor Details</a>
<ol class="toc-list">
<li><a href="#%3Cinit%3E(java.lang.String,it.polimi.ingsw.gc14.LimitedMap,java.util.Map,java.util.concurrent.BlockingQueue)" tabindex="0">RMIHeartbeat(String, LimitedMap, Map, BlockingQueue)</a></li>
</ol>
</li>
<li><a href="#method-detail" tabindex="0">Method Details</a>
<ol class="toc-list">
<li><a href="#start()" tabindex="0">start()</a></li>
<li><a href="#receivePing()" tabindex="0">receivePing()</a></li>
<li><a href="#disconnect()" tabindex="0">disconnect()</a></li>
</ol>
</li>
</ol>
<button class="hide-sidebar"><span>Hide sidebar&nbsp;</span><img src="../../../../../../../../resource-files/left.svg" alt="Hide sidebar"></button><button class="show-sidebar"><img src="../../../../../../../../resource-files/right.svg" alt="Show sidebar"><span>&nbsp;Show sidebar</span></button></nav>
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<h1 title="Class RMIHeartbeat" class="title">Class RMIHeartbeat</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
<div class="inheritance">it.polimi.ingsw.gc14.Network.RMI.Server.RMIHeartbeat</div>
</div>
<section class="class-description" id="class-description">
<hr>
<div class="horizontal-scroll">
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">RMIHeartbeat</span>
<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
<div class="block">Server-side heartbeat watchdog for a single RMI client.
<p>Mirrors <code>HeartbeatHandler</code> used in the TCP stack, but adapted for RMI:
instead of reading raw bytes from a dedicated socket, it relies on <a href="#receivePing()"><code>receivePing()</code></a>
being called by <a href="RMIServer.html#ping(java.lang.String)"><code>RMIServer.ping(String)</code></a> every time the client sends a ping.
<p>If no ping is received within <a href="../../NetworkConfig.html#SILENCE_THRESHOLD_MS">5000L</a> ms, the player is
considered disconnected and <a href="#disconnect()"><code>disconnect()</code></a> is invoked, which:
<ul>
<li>stops the watchdog;</li>
<li>marks the player as offline in <code>playerList</code>;</li>
<li>removes the callback from <code>clients</code>;</li>
<li>adds a <a href="../../NetworkEvents/DisconnectedPlayer.html" title="class in it.polimi.ingsw.gc14.Network.NetworkEvents"><code>DisconnectedPlayer</code></a> event to the action queue.</li>
</ul></div>
</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- =========== FIELD SUMMARY =========== -->
<li>
<section class="field-summary" id="field-summary">
<h2>Field Summary</h2>
<div class="caption"><span>Fields</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Field</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>private final <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/concurrent/BlockingQueue.html" title="class or interface in java.util.concurrent" class="external-link">BlockingQueue</a><wbr>&lt;<a href="../../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a>&gt;</code></div>
<div class="col-second even-row-color"><code><a href="#actionQueue" class="member-name-link">actionQueue</a></code></div>
<div class="col-last even-row-color">
<div class="block">Shared event queue; a <a href="../../NetworkEvents/DisconnectedPlayer.html" title="class in it.polimi.ingsw.gc14.Network.NetworkEvents"><code>DisconnectedPlayer</code></a> event is posted here on timeout.</div>
</div>
<div class="col-first odd-row-color"><code>private final <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a><wbr>&lt;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>, <a href="../Common/IClientCallback.html" title="interface in it.polimi.ingsw.gc14.Network.RMI.Common">IClientCallback</a>&gt;</code></div>
<div class="col-second odd-row-color"><code><a href="#clients" class="member-name-link">clients</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Registry of active RMI callbacks; the entry for this player is removed on disconnect.</div>
</div>
<div class="col-first even-row-color"><code>private long</code></div>
<div class="col-second even-row-color"><code><a href="#lastPingTime" class="member-name-link">lastPingTime</a></code></div>
<div class="col-last even-row-color">
<div class="block">Last time a ping was received from this client.</div>
</div>
<div class="col-first odd-row-color"><code>private final <a href="../../../LimitedMap.html" title="class in it.polimi.ingsw.gc14">LimitedMap</a><wbr>&lt;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Boolean.html" title="class or interface in java.lang" class="external-link">Boolean</a>&gt;</code></div>
<div class="col-second odd-row-color"><code><a href="#playerList" class="member-name-link">playerList</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Shared map used to mark the player as offline on timeout.</div>
</div>
<div class="col-first even-row-color"><code>private boolean</code></div>
<div class="col-second even-row-color"><code><a href="#running" class="member-name-link">running</a></code></div>
<div class="col-last even-row-color">
<div class="block"><code>true</code> while the watchdog is running; set to <code>false</code> on first disconnect.</div>
</div>
<div class="col-first odd-row-color"><code>private <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
<div class="col-second odd-row-color"><code><a href="#username" class="member-name-link">username</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Username of the client monitored by this watchdog.</div>
</div>
<div class="col-first even-row-color"><code>private final <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/concurrent/ScheduledExecutorService.html" title="class or interface in java.util.concurrent" class="external-link">ScheduledExecutorService</a></code></div>
<div class="col-second even-row-color"><code><a href="#watchdog" class="member-name-link">watchdog</a></code></div>
<div class="col-last even-row-color">
<div class="block">Single-thread executor that periodically checks whether the silence threshold has been exceeded.</div>
</div>
</div>
</section>
</li>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>Constructor Summary</h2>
<div class="caption"><span>Constructors</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.String,it.polimi.ingsw.gc14.LimitedMap,java.util.Map,java.util.concurrent.BlockingQueue)" class="member-name-link">RMIHeartbeat</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;username,
<a href="../../../LimitedMap.html" title="class in it.polimi.ingsw.gc14">LimitedMap</a>&lt;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Boolean.html" title="class or interface in java.lang" class="external-link">Boolean</a>&gt;&nbsp;playerList,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>, <a href="../Common/IClientCallback.html" title="interface in it.polimi.ingsw.gc14.Network.RMI.Common">IClientCallback</a>&gt;&nbsp;clients,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/concurrent/BlockingQueue.html" title="class or interface in java.util.concurrent" class="external-link">BlockingQueue</a>&lt;<a href="../../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a>&gt;&nbsp;actionQueue)</code></div>
<div class="col-last even-row-color">
<div class="block">Constructs an RMI heartbeat handler for the specified client.</div>
</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#disconnect()" class="member-name-link">disconnect</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Disconnects the monitored RMI client.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#receivePing()" class="member-name-link">receivePing</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Called by <a href="RMIServer.html#ping(java.lang.String)"><code>RMIServer.ping(String)</code></a> each time the client pings.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#start()" class="member-name-link">start</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Called by <a href="RMIServer.html" title="class in it.polimi.ingsw.gc14.Network.RMI.Server"><code>RMIServer</code></a> whenever it starts tracking this player.</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#method-summary" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ FIELD DETAIL =========== -->
<li>
<section class="field-details" id="field-detail">
<h2>Field Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="username">
<h3>username</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">username</span></div>
<div class="block">Username of the client monitored by this watchdog.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="playerList">
<h3>playerList</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type"><a href="../../../LimitedMap.html" title="class in it.polimi.ingsw.gc14">LimitedMap</a>&lt;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Boolean.html" title="class or interface in java.lang" class="external-link">Boolean</a>&gt;</span>&nbsp;<span class="element-name">playerList</span></div>
<div class="block">Shared map used to mark the player as offline on timeout.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="clients">
<h3>clients</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>, <a href="../Common/IClientCallback.html" title="interface in it.polimi.ingsw.gc14.Network.RMI.Common">IClientCallback</a>&gt;</span>&nbsp;<span class="element-name">clients</span></div>
<div class="block">Registry of active RMI callbacks; the entry for this player is removed on disconnect.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="actionQueue">
<h3>actionQueue</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/concurrent/BlockingQueue.html" title="class or interface in java.util.concurrent" class="external-link">BlockingQueue</a>&lt;<a href="../../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a>&gt;</span>&nbsp;<span class="element-name">actionQueue</span></div>
<div class="block">Shared event queue; a <a href="../../NetworkEvents/DisconnectedPlayer.html" title="class in it.polimi.ingsw.gc14.Network.NetworkEvents"><code>DisconnectedPlayer</code></a> event is posted here on timeout.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="lastPingTime">
<h3>lastPingTime</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private volatile</span>&nbsp;<span class="return-type">long</span>&nbsp;<span class="element-name">lastPingTime</span></div>
<div class="block">Last time a ping was received from this client.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="running">
<h3>running</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private volatile</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">running</span></div>
<div class="block"><code>true</code> while the watchdog is running; set to <code>false</code> on first disconnect.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="watchdog">
<h3>watchdog</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/concurrent/ScheduledExecutorService.html" title="class or interface in java.util.concurrent" class="external-link">ScheduledExecutorService</a></span>&nbsp;<span class="element-name">watchdog</span></div>
<div class="block">Single-thread executor that periodically checks whether the silence threshold has been exceeded.</div>
</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;(java.lang.String,it.polimi.ingsw.gc14.LimitedMap,java.util.Map,java.util.concurrent.BlockingQueue)">
<h3>RMIHeartbeat</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">RMIHeartbeat</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;username,
<a href="../../../LimitedMap.html" title="class in it.polimi.ingsw.gc14">LimitedMap</a>&lt;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Boolean.html" title="class or interface in java.lang" class="external-link">Boolean</a>&gt;&nbsp;playerList,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>, <a href="../Common/IClientCallback.html" title="interface in it.polimi.ingsw.gc14.Network.RMI.Common">IClientCallback</a>&gt;&nbsp;clients,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/concurrent/BlockingQueue.html" title="class or interface in java.util.concurrent" class="external-link">BlockingQueue</a>&lt;<a href="../../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a>&gt;&nbsp;actionQueue)</span></div>
<div class="block">Constructs an RMI heartbeat handler for the specified client.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>username</code> - the username of the client monitored by the heartbeat.</dd>
<dd><code>playerList</code> - the map storing the connection status of the players.</dd>
<dd><code>clients</code> - the collection of currently registered RMI clients.</dd>
<dd><code>actionQueue</code> - the queue containing network events to be processed.</dd>
</dl>
</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="start()">
<h3>start</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">start</span>()</div>
<div class="block">Called by <a href="RMIServer.html" title="class in it.polimi.ingsw.gc14.Network.RMI.Server"><code>RMIServer</code></a> whenever it starts tracking this player.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="receivePing()">
<h3>receivePing</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">receivePing</span>()</div>
<div class="block">Called by <a href="RMIServer.html#ping(java.lang.String)"><code>RMIServer.ping(String)</code></a> each time the client pings.
Resets the silence timer — mirrors writing <code>lastReceivedTime</code> in
<code>HeartbeatHandler</code>.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="disconnect()">
<h3>disconnect</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">disconnect</span>()</div>
<div class="block">Disconnects the monitored RMI client.
<p>The heartbeat handler is stopped, the player is marked as offline,
the associated RMI callback is removed, and a disconnection event is
added to the action queue for server-side processing.</div>
</div>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</body>
</html>
@@ -0,0 +1,704 @@
<!DOCTYPE HTML>
<html lang="it">
<head>
<!-- Generated by javadoc (25) on Fri Jun 19 23:05:23 CEST 2026 -->
<title>RMIServer</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-06-19">
<meta name="description" content="declaration: module: it.polimi.ingsw.gc14, package: it.polimi.ingsw.gc14.Network.RMI.Server, class: RMIServer">
<meta name="generator" content="javadoc/ClassWriter">
<link rel="stylesheet" type="text/css" href="../../../../../../../../resource-files/jquery-ui.min.css">
<link rel="stylesheet" type="text/css" href="../../../../../../../../resource-files/stylesheet.css">
<script type="text/javascript" src="../../../../../../../../script-files/script.js"></script>
<script type="text/javascript" src="../../../../../../../../script-files/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../../../../../../script-files/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">const pathtoroot = "../../../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="nav-content">
<div class="nav-menu-button"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button></div>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../../../module-summary.html">Module</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../../../index-files/index-1.html">Index</a></li>
<li><a href="../../../../../../../../search.html">Search</a></li>
<li><a href="../../../../../../../../help-doc.html#class">Help</a></li>
</ul>
</div>
</div>
<div class="sub-nav">
<div class="nav-content">
<ol class="sub-nav-list">
<li><a href="../../../../../../../module-summary.html">it.polimi.ingsw.gc14</a></li>
<li><a href="package-summary.html">it.polimi.ingsw.gc14.Network.RMI.Server</a></li>
<li><a href="RMIServer.html" class="current-selection">RMIServer</a></li>
</ol>
<div class="nav-list-search"><input type="text" id="search-input" disabled placeholder="Search documentation (type /)" aria-label="Search in documentation" autocomplete="off" spellcheck="false"><input type="reset" id="reset-search" disabled value="Reset"></div>
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="main-grid">
<nav role="navigation" class="toc" aria-label="Table of contents">
<div class="toc-header">Contents&nbsp;<input type="text" class="filter-input" disabled placeholder="Filter contents (type .)" aria-label="Filter table of contents" autocomplete="off" spellcheck="false"><input type="reset" class="reset-filter" disabled tabindex="-1" value="Reset"></div>
<ol class="toc-list" tabindex="-1">
<li><a href="#" tabindex="0">Description</a></li>
<li><a href="#field-summary" tabindex="0">Field Summary</a></li>
<li><a href="#constructor-summary" tabindex="0">Constructor Summary</a></li>
<li><a href="#method-summary" tabindex="0">Method Summary</a></li>
<li><a href="#field-detail" tabindex="0">Field Details</a>
<ol class="toc-list">
<li><a href="#host" tabindex="0">host</a></li>
<li><a href="#controller" tabindex="0">controller</a></li>
<li><a href="#nPort" tabindex="0">nPort</a></li>
<li><a href="#clients" tabindex="0">clients</a></li>
<li><a href="#watchdogs" tabindex="0">watchdogs</a></li>
<li><a href="#actionQueue" tabindex="0">actionQueue</a></li>
<li><a href="#playerList" tabindex="0">playerList</a></li>
</ol>
</li>
<li><a href="#constructor-detail" tabindex="0">Constructor Details</a>
<ol class="toc-list">
<li><a href="#%3Cinit%3E(it.polimi.ingsw.gc14.Controller.GameController,int,java.util.concurrent.BlockingQueue,it.polimi.ingsw.gc14.LimitedMap,java.lang.String)" tabindex="0">RMIServer(GameController, int, BlockingQueue, LimitedMap, String)</a></li>
</ol>
</li>
<li><a href="#method-detail" tabindex="0">Method Details</a>
<ol class="toc-list">
<li><a href="#joinGame(java.lang.String,int,it.polimi.ingsw.gc14.Network.RMI.Common.IClientCallback)" tabindex="0">joinGame(String, int, IClientCallback)</a></li>
<li><a href="#ping(java.lang.String)" tabindex="0">ping(String)</a></li>
<li><a href="#notifyAll(it.polimi.ingsw.gc14.Network.NetworkEvent)" tabindex="0">notifyAll(NetworkEvent)</a></li>
<li><a href="#notifyAll(it.polimi.ingsw.gc14.Model.MiniModel)" tabindex="0">notifyAll(MiniModel)</a></li>
<li><a href="#drawUpperTribeCard(java.lang.String,int)" tabindex="0">drawUpperTribeCard(String, int)</a></li>
<li><a href="#drawLowerTribeCard(java.lang.String,int)" tabindex="0">drawLowerTribeCard(String, int)</a></li>
<li><a href="#drawUpperBuildingCard(java.lang.String,int)" tabindex="0">drawUpperBuildingCard(String, int)</a></li>
<li><a href="#drawLowerBuildingCard(java.lang.String,int)" tabindex="0">drawLowerBuildingCard(String, int)</a></li>
<li><a href="#skipTurn(java.lang.String)" tabindex="0">skipTurn(String)</a></li>
<li><a href="#slotChoice(java.lang.String,int)" tabindex="0">slotChoice(String, int)</a></li>
<li><a href="#totemChoice(java.lang.String,java.lang.String)" tabindex="0">totemChoice(String, String)</a></li>
<li><a href="#start()" tabindex="0">start()</a></li>
<li><a href="#startWatchdog(java.lang.String)" tabindex="0">startWatchdog(String)</a></li>
<li><a href="#disconnectPlayer(java.lang.String)" tabindex="0">disconnectPlayer(String)</a></li>
<li><a href="#disconnectedUsernames(it.polimi.ingsw.gc14.Model.Game)" tabindex="0">disconnectedUsernames(Game)</a></li>
</ol>
</li>
</ol>
<button class="hide-sidebar"><span>Hide sidebar&nbsp;</span><img src="../../../../../../../../resource-files/left.svg" alt="Hide sidebar"></button><button class="show-sidebar"><img src="../../../../../../../../resource-files/right.svg" alt="Show sidebar"><span>&nbsp;Show sidebar</span></button></nav>
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<h1 title="Class RMIServer" class="title">Class RMIServer</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/server/RemoteObject.html" title="class or interface in java.rmi.server" class="external-link">java.rmi.server.RemoteObject</a>
<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/server/RemoteServer.html" title="class or interface in java.rmi.server" class="external-link">java.rmi.server.RemoteServer</a>
<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/server/UnicastRemoteObject.html" title="class or interface in java.rmi.server" class="external-link">java.rmi.server.UnicastRemoteObject</a>
<div class="inheritance">it.polimi.ingsw.gc14.Network.RMI.Server.RMIServer</div>
</div>
</div>
</div>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>All Implemented Interfaces:</dt>
<dd><code><a href="../Common/IGameServer.html" title="interface in it.polimi.ingsw.gc14.Network.RMI.Common">IGameServer</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/Remote.html" title="class or interface in java.rmi" class="external-link">Remote</a></code></dd>
</dl>
<hr>
<div class="horizontal-scroll">
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">RMIServer</span>
<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/server/UnicastRemoteObject.html" title="class or interface in java.rmi.server" class="external-link">UnicastRemoteObject</a>
implements <a href="../Common/IGameServer.html" title="interface in it.polimi.ingsw.gc14.Network.RMI.Common">IGameServer</a></span></div>
<div class="block">RMI server responsible for handling remote client connections,
receiving player actions, and propagating game updates.
<p>The server manages player registration, reconnection handling,
heartbeat monitoring, and the forwarding of client requests to the
shared network event queue.</div>
<dl class="notes">
<dt>See Also:</dt>
<dd>
<ul class="tag-list">
<li><a href="../../../../../../../../serialized-form.html#it.polimi.ingsw.gc14.Network.RMI.Server.RMIServer">Serialized Form</a></li>
</ul>
</dd>
</dl>
</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- =========== FIELD SUMMARY =========== -->
<li>
<section class="field-summary" id="field-summary">
<h2>Field Summary</h2>
<div class="caption"><span>Fields</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Field</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>private final <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/concurrent/BlockingQueue.html" title="class or interface in java.util.concurrent" class="external-link">BlockingQueue</a><wbr>&lt;<a href="../../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a>&gt;</code></div>
<div class="col-second even-row-color"><code><a href="#actionQueue" class="member-name-link">actionQueue</a></code></div>
<div class="col-last even-row-color">
<div class="block">Shared queue to which player actions are added for sequential processing.</div>
</div>
<div class="col-first odd-row-color"><code>private final <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a><wbr>&lt;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>, <a href="../Common/IClientCallback.html" title="interface in it.polimi.ingsw.gc14.Network.RMI.Common">IClientCallback</a>&gt;</code></div>
<div class="col-second odd-row-color"><code><a href="#clients" class="member-name-link">clients</a></code></div>
<div class="col-last odd-row-color">
<div class="block">username → callback</div>
</div>
<div class="col-first even-row-color"><code>private final <a href="../../../Controller/GameController.html" title="class in it.polimi.ingsw.gc14.Controller">GameController</a></code></div>
<div class="col-second even-row-color"><code><a href="#controller" class="member-name-link">controller</a></code></div>
<div class="col-last even-row-color">
<div class="block">Server-side game controller; all model access is synchronized on this object.</div>
</div>
<div class="col-first odd-row-color"><code>private final <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
<div class="col-second odd-row-color"><code><a href="#host" class="member-name-link">host</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Hostname or IP address exposed by the RMI runtime (<code>java.rmi.server.hostname</code>).</div>
</div>
<div class="col-first even-row-color"><code>private final int</code></div>
<div class="col-second even-row-color"><code><a href="#nPort" class="member-name-link">nPort</a></code></div>
<div class="col-last even-row-color">
<div class="block">Port on which the RMI registry is bound.</div>
</div>
<div class="col-first odd-row-color"><code>private final <a href="../../../LimitedMap.html" title="class in it.polimi.ingsw.gc14">LimitedMap</a><wbr>&lt;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Boolean.html" title="class or interface in java.lang" class="external-link">Boolean</a>&gt;</code></div>
<div class="col-second odd-row-color"><code><a href="#playerList" class="member-name-link">playerList</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Shared map tracking each player's connection status (<code>true</code> = online).</div>
</div>
<div class="col-first even-row-color"><code>private final <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a><wbr>&lt;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>, <a href="RMIHeartbeat.html" title="class in it.polimi.ingsw.gc14.Network.RMI.Server">RMIHeartbeat</a>&gt;</code></div>
<div class="col-second even-row-color"><code><a href="#watchdogs" class="member-name-link">watchdogs</a></code></div>
<div class="col-last even-row-color">
<div class="block">username → watchdog.</div>
</div>
</div>
<div class="inherited-list">
<h3 id="fields-inherited-from-class-java.rmi.server.RemoteObject">Fields inherited from class&nbsp;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/server/RemoteObject.html#field-summary" title="class or interface in java.rmi.server" class="external-link">RemoteObject</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/server/RemoteObject.html#ref" title="class or interface in java.rmi.server" class="external-link">ref</a></code></div>
</section>
</li>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>Constructor Summary</h2>
<div class="caption"><span>Constructors</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(it.polimi.ingsw.gc14.Controller.GameController,int,java.util.concurrent.BlockingQueue,it.polimi.ingsw.gc14.LimitedMap,java.lang.String)" class="member-name-link">RMIServer</a><wbr>(<a href="../../../Controller/GameController.html" title="class in it.polimi.ingsw.gc14.Controller">GameController</a>&nbsp;controller,
int&nbsp;nPort,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/concurrent/BlockingQueue.html" title="class or interface in java.util.concurrent" class="external-link">BlockingQueue</a>&lt;<a href="../../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a>&gt;&nbsp;actionQueue,
<a href="../../../LimitedMap.html" title="class in it.polimi.ingsw.gc14">LimitedMap</a>&lt;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Boolean.html" title="class or interface in java.lang" class="external-link">Boolean</a>&gt;&nbsp;playerList,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;host)</code></div>
<div class="col-last even-row-color">
<div class="block">Constructs an RMI server with the required game and network components.</div>
</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>private static <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/ArrayList.html" title="class or interface in java.util" class="external-link">ArrayList</a><wbr>&lt;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#disconnectedUsernames(it.polimi.ingsw.gc14.Model.Game)" class="member-name-link">disconnectedUsernames</a><wbr>(<a href="../../../Model/Game.html" title="class in it.polimi.ingsw.gc14.Model">Game</a>&nbsp;game)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Returns usernames of players currently marked as disconnected in the given game.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#disconnectPlayer(java.lang.String)" class="member-name-link">disconnectPlayer</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;username)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Triggers a voluntary disconnection for the specified player
by stopping their heartbeat watchdog.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#drawLowerBuildingCard(java.lang.String,int)" class="member-name-link">drawLowerBuildingCard</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername,
int&nbsp;pos)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Requests to draw a building card from the lower list.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#drawLowerTribeCard(java.lang.String,int)" class="member-name-link">drawLowerTribeCard</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername,
int&nbsp;pos)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Requests to draw a tribe card from the lower list.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#drawUpperBuildingCard(java.lang.String,int)" class="member-name-link">drawUpperBuildingCard</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername,
int&nbsp;pos)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Requests to draw a building card from the upper list.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#drawUpperTribeCard(java.lang.String,int)" class="member-name-link">drawUpperTribeCard</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername,
int&nbsp;pos)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Requests to draw a tribe card from the upper list.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="../../../ErrorType.html" title="enum class in it.polimi.ingsw.gc14">ErrorType</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#joinGame(java.lang.String,int,it.polimi.ingsw.gc14.Network.RMI.Common.IClientCallback)" class="member-name-link">joinGame</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;username,
int&nbsp;preferredInt,
<a href="../Common/IClientCallback.html" title="interface in it.polimi.ingsw.gc14.Network.RMI.Common">IClientCallback</a>&nbsp;callback)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Adds a player to the game and registers the callback used by the server
to notify the corresponding RMI client.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#notifyAll(it.polimi.ingsw.gc14.Model.MiniModel)" class="member-name-link">notifyAll</a><wbr>(<a href="../../../Model/MiniModel.html" title="class in it.polimi.ingsw.gc14.Model">MiniModel</a>&nbsp;model)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Notifies all connected RMI clients of a new game model.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#notifyAll(it.polimi.ingsw.gc14.Network.NetworkEvent)" class="member-name-link">notifyAll</a><wbr>(<a href="../../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a>&nbsp;action)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Notifies connected RMI clients of a new network event.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#ping(java.lang.String)" class="member-name-link">ping</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;username)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Receives a heartbeat ping from the client.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#skipTurn(java.lang.String)" class="member-name-link">skipTurn</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Requests to skip the turn.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#slotChoice(java.lang.String,int)" class="member-name-link">slotChoice</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername,
int&nbsp;pos)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Used to perform the slot choice action for the specified player at the specified position.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#start()" class="member-name-link">start</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Starts the RMI server and binds it to the configured registry.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>private void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#startWatchdog(java.lang.String)" class="member-name-link">startWatchdog</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;username)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Creates and starts an <a href="RMIHeartbeat.html" title="class in it.polimi.ingsw.gc14.Network.RMI.Server"><code>RMIHeartbeat</code></a> for the specified player.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#totemChoice(java.lang.String,java.lang.String)" class="member-name-link">totemChoice</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;totems)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Enqueues a totem choice event for the specified player.</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.rmi.server.UnicastRemoteObject">Methods inherited from class&nbsp;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/server/UnicastRemoteObject.html#method-summary" title="class or interface in java.rmi.server" class="external-link">UnicastRemoteObject</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/server/UnicastRemoteObject.html#clone()" title="class or interface in java.rmi.server" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/server/UnicastRemoteObject.html#exportObject(java.rmi.Remote)" title="class or interface in java.rmi.server" class="external-link">exportObject</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/server/UnicastRemoteObject.html#exportObject(java.rmi.Remote,int)" title="class or interface in java.rmi.server" class="external-link">exportObject</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/server/UnicastRemoteObject.html#exportObject(java.rmi.Remote,int,java.io.ObjectInputFilter)" title="class or interface in java.rmi.server" class="external-link">exportObject</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/server/UnicastRemoteObject.html#exportObject(java.rmi.Remote,int,java.rmi.server.RMIClientSocketFactory,java.rmi.server.RMIServerSocketFactory)" title="class or interface in java.rmi.server" class="external-link">exportObject</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/server/UnicastRemoteObject.html#exportObject(java.rmi.Remote,int,java.rmi.server.RMIClientSocketFactory,java.rmi.server.RMIServerSocketFactory,java.io.ObjectInputFilter)" title="class or interface in java.rmi.server" class="external-link">exportObject</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/server/UnicastRemoteObject.html#unexportObject(java.rmi.Remote,boolean)" title="class or interface in java.rmi.server" class="external-link">unexportObject</a></code></div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.rmi.server.RemoteServer">Methods inherited from class&nbsp;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/server/RemoteServer.html#method-summary" title="class or interface in java.rmi.server" class="external-link">RemoteServer</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/server/RemoteServer.html#getClientHost()" title="class or interface in java.rmi.server" class="external-link">getClientHost</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/server/RemoteServer.html#getLog()" title="class or interface in java.rmi.server" class="external-link">getLog</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/server/RemoteServer.html#setLog(java.io.OutputStream)" title="class or interface in java.rmi.server" class="external-link">setLog</a></code></div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.rmi.server.RemoteObject">Methods inherited from class&nbsp;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/server/RemoteObject.html#method-summary" title="class or interface in java.rmi.server" class="external-link">RemoteObject</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/server/RemoteObject.html#equals(java.lang.Object)" title="class or interface in java.rmi.server" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/server/RemoteObject.html#getRef()" title="class or interface in java.rmi.server" class="external-link">getRef</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/server/RemoteObject.html#hashCode()" title="class or interface in java.rmi.server" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/server/RemoteObject.html#toString()" title="class or interface in java.rmi.server" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/server/RemoteObject.html#toStub(java.rmi.Remote)" title="class or interface in java.rmi.server" class="external-link">toStub</a></code></div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#method-summary" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ FIELD DETAIL =========== -->
<li>
<section class="field-details" id="field-detail">
<h2>Field Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="host">
<h3>host</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">host</span></div>
<div class="block">Hostname or IP address exposed by the RMI runtime (<code>java.rmi.server.hostname</code>).</div>
</div>
</section>
</li>
<li>
<section class="detail" id="controller">
<h3>controller</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type"><a href="../../../Controller/GameController.html" title="class in it.polimi.ingsw.gc14.Controller">GameController</a></span>&nbsp;<span class="element-name">controller</span></div>
<div class="block">Server-side game controller; all model access is synchronized on this object.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="nPort">
<h3>nPort</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">nPort</span></div>
<div class="block">Port on which the RMI registry is bound.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="clients">
<h3>clients</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>, <a href="../Common/IClientCallback.html" title="interface in it.polimi.ingsw.gc14.Network.RMI.Common">IClientCallback</a>&gt;</span>&nbsp;<span class="element-name">clients</span></div>
<div class="block">username → callback</div>
</div>
</section>
</li>
<li>
<section class="detail" id="watchdogs">
<h3>watchdogs</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>, <a href="RMIHeartbeat.html" title="class in it.polimi.ingsw.gc14.Network.RMI.Server">RMIHeartbeat</a>&gt;</span>&nbsp;<span class="element-name">watchdogs</span></div>
<div class="block">username → watchdog.
One watchdog per connected player, mirrors <code>pendingHeartbeat</code> / per-socket
HeartbeatHandler in the TCP stack.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="actionQueue">
<h3>actionQueue</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/concurrent/BlockingQueue.html" title="class or interface in java.util.concurrent" class="external-link">BlockingQueue</a>&lt;<a href="../../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a>&gt;</span>&nbsp;<span class="element-name">actionQueue</span></div>
<div class="block">Shared queue to which player actions are added for sequential processing.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="playerList">
<h3>playerList</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type"><a href="../../../LimitedMap.html" title="class in it.polimi.ingsw.gc14">LimitedMap</a>&lt;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Boolean.html" title="class or interface in java.lang" class="external-link">Boolean</a>&gt;</span>&nbsp;<span class="element-name">playerList</span></div>
<div class="block">Shared map tracking each player's connection status (<code>true</code> = online).</div>
</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;(it.polimi.ingsw.gc14.Controller.GameController,int,java.util.concurrent.BlockingQueue,it.polimi.ingsw.gc14.LimitedMap,java.lang.String)">
<h3>RMIServer</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">RMIServer</span><wbr><span class="parameters">(<a href="../../../Controller/GameController.html" title="class in it.polimi.ingsw.gc14.Controller">GameController</a>&nbsp;controller,
int&nbsp;nPort,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/concurrent/BlockingQueue.html" title="class or interface in java.util.concurrent" class="external-link">BlockingQueue</a>&lt;<a href="../../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a>&gt;&nbsp;actionQueue,
<a href="../../../LimitedMap.html" title="class in it.polimi.ingsw.gc14">LimitedMap</a>&lt;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Boolean.html" title="class or interface in java.lang" class="external-link">Boolean</a>&gt;&nbsp;playerList,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;host)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a></span></div>
<div class="block">Constructs an RMI server with the required game and network components.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>controller</code> - the game controller used to manage the game logic.</dd>
<dd><code>nPort</code> - the port used by the RMI registry.</dd>
<dd><code>actionQueue</code> - the queue containing incoming network events.</dd>
<dd><code>playerList</code> - the map storing the connection status of the players.</dd>
<dd><code>host</code> - the hostname or IP address exposed by the RMI server.</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a></code> - if the remote object cannot be exported.</dd>
</dl>
</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="joinGame(java.lang.String,int,it.polimi.ingsw.gc14.Network.RMI.Common.IClientCallback)">
<h3>joinGame</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../../../ErrorType.html" title="enum class in it.polimi.ingsw.gc14">ErrorType</a></span>&nbsp;<span class="element-name">joinGame</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;username,
int&nbsp;preferredInt,
<a href="../Common/IClientCallback.html" title="interface in it.polimi.ingsw.gc14.Network.RMI.Common">IClientCallback</a>&nbsp;callback)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a></span></div>
<div class="block">Adds a player to the game and registers the callback used by the server
to notify the corresponding RMI client.
<p>After a successful join an <a href="RMIHeartbeat.html" title="class in it.polimi.ingsw.gc14.Network.RMI.Server"><code>RMIHeartbeat</code></a> watchdog is created and
started for the new player — mirrors creating a <code>HeartbeatHandler</code> in
<code>TCPServer.acceptHeartbeat()</code>.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../Common/IGameServer.html#joinGame(java.lang.String,int,it.polimi.ingsw.gc14.Network.RMI.Common.IClientCallback)">joinGame</a></code>&nbsp;in interface&nbsp;<code><a href="../Common/IGameServer.html" title="interface in it.polimi.ingsw.gc14.Network.RMI.Common">IGameServer</a></code></dd>
<dt>Parameters:</dt>
<dd><code>username</code> - the username chosen by the player.</dd>
<dd><code>preferredInt</code> - the desired number of players proposed by this client.</dd>
<dd><code>callback</code> - the remote callback associated with the client.</dd>
<dt>Returns:</dt>
<dd><code>null</code> on success; an <a href="../../../ErrorType.html" title="enum class in it.polimi.ingsw.gc14"><code>ErrorType</code></a> value on rejection.</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a></code> - if an RMI communication error occurs.</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="ping(java.lang.String)">
<h3>ping</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">ping</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;username)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a></span></div>
<div class="block">Receives a heartbeat ping from the client.
Mirrors the server reading <code>PING</code> and replying <code>PONG</code> in
<code>HeartbeatHandler.run()</code>.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../Common/IGameServer.html#ping(java.lang.String)">ping</a></code>&nbsp;in interface&nbsp;<code><a href="../Common/IGameServer.html" title="interface in it.polimi.ingsw.gc14.Network.RMI.Common">IGameServer</a></code></dd>
<dt>Parameters:</dt>
<dd><code>username</code> - the username of the pinging client.</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a></code> - if an RMI communication error occurs.</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="notifyAll(it.polimi.ingsw.gc14.Network.NetworkEvent)">
<h3>notifyAll</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">notifyAll</span><wbr><span class="parameters">(<a href="../../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a>&nbsp;action)</span></div>
<div class="block">Notifies connected RMI clients of a new network event.
<p>If the event does not represent an error, it is sent to all registered clients.
If it represents an error, it is sent only to the client that requested the action.
Communication errors are logged without interrupting the notification process.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>action</code> - the network event to send to the clients.</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="notifyAll(it.polimi.ingsw.gc14.Model.MiniModel)">
<h3>notifyAll</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">notifyAll</span><wbr><span class="parameters">(<a href="../../../Model/MiniModel.html" title="class in it.polimi.ingsw.gc14.Model">MiniModel</a>&nbsp;model)</span></div>
<div class="block">Notifies all connected RMI clients of a new game model.
<p>The updated mini model is sent to each registered client callback.
If a communication error occurs for a client, the exception is logged
without interrupting the notification of the remaining clients.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>model</code> - the updated mini model to send to the connected clients.</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="drawUpperTribeCard(java.lang.String,int)">
<h3>drawUpperTribeCard</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">drawUpperTribeCard</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername,
int&nbsp;pos)</span></div>
<div class="block">Requests to draw a tribe card from the upper list.
Creates a NetworkEvent and sends it through the network client.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../Common/IGameServer.html#drawUpperTribeCard(java.lang.String,int)">drawUpperTribeCard</a></code>&nbsp;in interface&nbsp;<code><a href="../Common/IGameServer.html" title="interface in it.polimi.ingsw.gc14.Network.RMI.Common">IGameServer</a></code></dd>
<dt>Parameters:</dt>
<dd><code>playerUsername</code> - the name of the player performing the action</dd>
<dd><code>pos</code> - the index of the card to draw</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="drawLowerTribeCard(java.lang.String,int)">
<h3>drawLowerTribeCard</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">drawLowerTribeCard</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername,
int&nbsp;pos)</span></div>
<div class="block">Requests to draw a tribe card from the lower list.
Creates a NetworkEvent and sends it through the network client.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../Common/IGameServer.html#drawLowerTribeCard(java.lang.String,int)">drawLowerTribeCard</a></code>&nbsp;in interface&nbsp;<code><a href="../Common/IGameServer.html" title="interface in it.polimi.ingsw.gc14.Network.RMI.Common">IGameServer</a></code></dd>
<dt>Parameters:</dt>
<dd><code>playerUsername</code> - the name of the player performing the action</dd>
<dd><code>pos</code> - the index of the card to draw</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="drawUpperBuildingCard(java.lang.String,int)">
<h3>drawUpperBuildingCard</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">drawUpperBuildingCard</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername,
int&nbsp;pos)</span></div>
<div class="block">Requests to draw a building card from the upper list.
Creates a NetworkEvent and sends it through the network client.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../Common/IGameServer.html#drawUpperBuildingCard(java.lang.String,int)">drawUpperBuildingCard</a></code>&nbsp;in interface&nbsp;<code><a href="../Common/IGameServer.html" title="interface in it.polimi.ingsw.gc14.Network.RMI.Common">IGameServer</a></code></dd>
<dt>Parameters:</dt>
<dd><code>playerUsername</code> - the name of the player performing the action</dd>
<dd><code>pos</code> - the index of the card to draw</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="drawLowerBuildingCard(java.lang.String,int)">
<h3>drawLowerBuildingCard</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">drawLowerBuildingCard</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername,
int&nbsp;pos)</span></div>
<div class="block">Requests to draw a building card from the lower list.
Creates a NetworkEvent and sends it through the network client.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../Common/IGameServer.html#drawLowerBuildingCard(java.lang.String,int)">drawLowerBuildingCard</a></code>&nbsp;in interface&nbsp;<code><a href="../Common/IGameServer.html" title="interface in it.polimi.ingsw.gc14.Network.RMI.Common">IGameServer</a></code></dd>
<dt>Parameters:</dt>
<dd><code>playerUsername</code> - the name of the player performing the action</dd>
<dd><code>pos</code> - the index of the card to draw</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="skipTurn(java.lang.String)">
<h3>skipTurn</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">skipTurn</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername)</span></div>
<div class="block">Requests to skip the turn.
This action is available only when the player cannot draw any tribe card, but still can buy some buildings.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../Common/IGameServer.html#skipTurn(java.lang.String)">skipTurn</a></code>&nbsp;in interface&nbsp;<code><a href="../Common/IGameServer.html" title="interface in it.polimi.ingsw.gc14.Network.RMI.Common">IGameServer</a></code></dd>
<dt>Parameters:</dt>
<dd><code>playerUsername</code> - the name of the player performing the action</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="slotChoice(java.lang.String,int)">
<h3>slotChoice</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">slotChoice</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername,
int&nbsp;pos)</span></div>
<div class="block">Used to perform the slot choice action for the specified player at the specified position.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../Common/IGameServer.html#slotChoice(java.lang.String,int)">slotChoice</a></code>&nbsp;in interface&nbsp;<code><a href="../Common/IGameServer.html" title="interface in it.polimi.ingsw.gc14.Network.RMI.Common">IGameServer</a></code></dd>
<dt>Parameters:</dt>
<dd><code>playerUsername</code> - the name of the player performing the action</dd>
<dd><code>pos</code> - the index of the selected slot</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="totemChoice(java.lang.String,java.lang.String)">
<h3>totemChoice</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">totemChoice</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;totems)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a></span></div>
<div class="block">Enqueues a totem choice event for the specified player.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../Common/IGameServer.html#totemChoice(java.lang.String,java.lang.String)">totemChoice</a></code>&nbsp;in interface&nbsp;<code><a href="../Common/IGameServer.html" title="interface in it.polimi.ingsw.gc14.Network.RMI.Common">IGameServer</a></code></dd>
<dt>Parameters:</dt>
<dd><code>playerUsername</code> - the username of the player choosing the totem.</dd>
<dd><code>totems</code> - the name of the chosen totem.</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a></code> - if the RMI call fails.</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="start()">
<h3>start</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">start</span>()</div>
<div class="block">Starts the RMI server and binds it to the configured registry.
<p>The method configures the server hostname, creates the RMI registry
on the specified port, and registers this server instance under the
<code>RMIGameServer</code> name.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="startWatchdog(java.lang.String)">
<h3>startWatchdog</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">startWatchdog</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;username)</span></div>
<div class="block">Creates and starts an <a href="RMIHeartbeat.html" title="class in it.polimi.ingsw.gc14.Network.RMI.Server"><code>RMIHeartbeat</code></a> for the specified player.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>username</code> - the username of the player monitored by the heartbeat watchdog.</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="disconnectPlayer(java.lang.String)">
<h3>disconnectPlayer</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">disconnectPlayer</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;username)</span></div>
<div class="block">Triggers a voluntary disconnection for the specified player
by stopping their heartbeat watchdog.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../Common/IGameServer.html#disconnectPlayer(java.lang.String)">disconnectPlayer</a></code>&nbsp;in interface&nbsp;<code><a href="../Common/IGameServer.html" title="interface in it.polimi.ingsw.gc14.Network.RMI.Common">IGameServer</a></code></dd>
<dt>Parameters:</dt>
<dd><code>username</code> - the username of the player to disconnect.</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="disconnectedUsernames(it.polimi.ingsw.gc14.Model.Game)">
<h3>disconnectedUsernames</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private static</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/ArrayList.html" title="class or interface in java.util" class="external-link">ArrayList</a>&lt;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</span>&nbsp;<span class="element-name">disconnectedUsernames</span><wbr><span class="parameters">(<a href="../../../Model/Game.html" title="class in it.polimi.ingsw.gc14.Model">Game</a>&nbsp;game)</span></div>
<div class="block">Returns usernames of players currently marked as disconnected in the given game.</div>
</div>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</body>
</html>
@@ -0,0 +1,93 @@
<!DOCTYPE HTML>
<html lang="it">
<head>
<!-- Generated by javadoc (25) on Fri Jun 19 23:05:23 CEST 2026 -->
<title>it.polimi.ingsw.gc14.Network.RMI.Server</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-06-19">
<meta name="description" content="declaration: module: it.polimi.ingsw.gc14, package: it.polimi.ingsw.gc14.Network.RMI.Server">
<meta name="generator" content="javadoc/PackageWriter">
<link rel="stylesheet" type="text/css" href="../../../../../../../../resource-files/jquery-ui.min.css">
<link rel="stylesheet" type="text/css" href="../../../../../../../../resource-files/stylesheet.css">
<script type="text/javascript" src="../../../../../../../../script-files/script.js"></script>
<script type="text/javascript" src="../../../../../../../../script-files/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../../../../../../script-files/jquery-ui.min.js"></script>
</head>
<body class="package-declaration-page">
<script type="text/javascript">const pathtoroot = "../../../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="nav-content">
<div class="nav-menu-button"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button></div>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../../../module-summary.html">Module</a></li>
<li class="nav-bar-cell1-rev">Package</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../../../index-files/index-1.html">Index</a></li>
<li><a href="../../../../../../../../search.html">Search</a></li>
<li><a href="../../../../../../../../help-doc.html#package">Help</a></li>
</ul>
</div>
</div>
<div class="sub-nav">
<div class="nav-content">
<ol class="sub-nav-list">
<li><a href="../../../../../../../module-summary.html">it.polimi.ingsw.gc14</a></li>
<li><a href="package-summary.html" class="current-selection">it.polimi.ingsw.gc14.Network.RMI.Server</a></li>
</ol>
<div class="nav-list-search"><input type="text" id="search-input" disabled placeholder="Search documentation (type /)" aria-label="Search in documentation" autocomplete="off" spellcheck="false"><input type="reset" id="reset-search" disabled value="Reset"></div>
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="main-grid">
<nav role="navigation" class="toc" aria-label="Table of contents">
<div class="toc-header">Contents</div>
<ol class="toc-list" tabindex="-1">
<li><a href="#" tabindex="0">Description</a></li>
<li><a href="#class-summary" tabindex="0">Classes and Interfaces</a></li>
</ol>
<button class="hide-sidebar"><span>Hide sidebar&nbsp;</span><img src="../../../../../../../../resource-files/left.svg" alt="Hide sidebar"></button><button class="show-sidebar"><img src="../../../../../../../../resource-files/right.svg" alt="Show sidebar"><span>&nbsp;Show sidebar</span></button></nav>
<main role="main">
<div class="header">
<h1 title="Package it.polimi.ingsw.gc14.Network.RMI.Server" class="title">Package it.polimi.ingsw.gc14.Network.RMI.Server</h1>
</div>
<hr>
<div class="horizontal-scroll">
<div class="package-signature">package <span class="element-name">it.polimi.ingsw.gc14.Network.RMI.Server</span></div>
</div>
<section class="summary">
<ul class="summary-list">
<li>
<div id="class-summary">
<div class="caption"><span>Classes</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Class</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="RMIHeartbeat.html" title="class in it.polimi.ingsw.gc14.Network.RMI.Server">RMIHeartbeat</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">Server-side heartbeat watchdog for a single RMI client.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="RMIServer.html" title="class in it.polimi.ingsw.gc14.Network.RMI.Server">RMIServer</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<div class="block">RMI server responsible for handling remote client connections,
receiving player actions, and propagating game updates.</div>
</div>
</div>
</div>
</li>
</ul>
</section>
</main>
</div>
</body>
</html>
@@ -0,0 +1,87 @@
<!DOCTYPE HTML>
<html lang="it">
<head>
<!-- Generated by javadoc (25) on Fri Jun 19 23:05:23 CEST 2026 -->
<title>it.polimi.ingsw.gc14.Network.RMI.Server Class Hierarchy</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-06-19">
<meta name="description" content="tree: module: it.polimi.ingsw.gc14, package: it.polimi.ingsw.gc14.Network.RMI.Server">
<meta name="generator" content="javadoc/PackageTreeWriter">
<link rel="stylesheet" type="text/css" href="../../../../../../../../resource-files/jquery-ui.min.css">
<link rel="stylesheet" type="text/css" href="../../../../../../../../resource-files/stylesheet.css">
<script type="text/javascript" src="../../../../../../../../script-files/script.js"></script>
<script type="text/javascript" src="../../../../../../../../script-files/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../../../../../../script-files/jquery-ui.min.js"></script>
</head>
<body class="package-tree-page">
<script type="text/javascript">const pathtoroot = "../../../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="nav-content">
<div class="nav-menu-button"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button></div>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../../../module-summary.html">Module</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Tree</li>
<li><a href="../../../../../../../../index-files/index-1.html">Index</a></li>
<li><a href="../../../../../../../../search.html">Search</a></li>
<li><a href="../../../../../../../../help-doc.html#tree">Help</a></li>
</ul>
</div>
</div>
<div class="sub-nav">
<div class="nav-content">
<ol class="sub-nav-list">
<li><a href="../../../../../../../module-summary.html">it.polimi.ingsw.gc14</a></li>
<li><a href="package-summary.html" class="current-selection">it.polimi.ingsw.gc14.Network.RMI.Server</a></li>
</ol>
<div class="nav-list-search"><input type="text" id="search-input" disabled placeholder="Search documentation (type /)" aria-label="Search in documentation" autocomplete="off" spellcheck="false"><input type="reset" id="reset-search" disabled value="Reset"></div>
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="main-grid">
<main role="main">
<div class="header">
<h1 class="title">Hierarchy For Package it.polimi.ingsw.gc14.Network.RMI.Server</h1>
</div>
<span class="package-hierarchy-label">Package Hierarchies:</span>
<ul class="horizontal contents-list">
<li><a href="../../../../../../../../overview-tree.html">All Packages</a></li>
</ul>
<section class="hierarchy">
<h2 title="Class Hierarchy">Class Hierarchy</h2>
<ul>
<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
<ul>
<li class="circle">java.rmi.server.<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/server/RemoteObject.html" class="type-name-link external-link" title="class or interface in java.rmi.server">RemoteObject</a> (implements java.rmi.<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/Remote.html" title="class or interface in java.rmi" class="external-link">Remote</a>, java.io.<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)
<ul>
<li class="circle">java.rmi.server.<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/server/RemoteServer.html" class="type-name-link external-link" title="class or interface in java.rmi.server">RemoteServer</a>
<ul>
<li class="circle">java.rmi.server.<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/server/UnicastRemoteObject.html" class="type-name-link external-link" title="class or interface in java.rmi.server">UnicastRemoteObject</a>
<ul>
<li class="circle">it.polimi.ingsw.gc14.Network.RMI.Server.<a href="RMIServer.html" class="type-name-link" title="class in it.polimi.ingsw.gc14.Network.RMI.Server">RMIServer</a> (implements it.polimi.ingsw.gc14.Network.RMI.Common.<a href="../Common/IGameServer.html" title="interface in it.polimi.ingsw.gc14.Network.RMI.Common">IGameServer</a>)</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li class="circle">it.polimi.ingsw.gc14.Network.RMI.Server.<a href="RMIHeartbeat.html" class="type-name-link" title="class in it.polimi.ingsw.gc14.Network.RMI.Server">RMIHeartbeat</a></li>
</ul>
</li>
</ul>
</section>
</main>
</div>
</body>
</html>
@@ -0,0 +1,700 @@
<!DOCTYPE HTML>
<html lang="it">
<head>
<!-- Generated by javadoc (25) on Fri Jun 19 23:05:23 CEST 2026 -->
<title>TCPClient</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-06-19">
<meta name="description" content="declaration: module: it.polimi.ingsw.gc14, package: it.polimi.ingsw.gc14.Network.TCP.Client, class: TCPClient">
<meta name="generator" content="javadoc/ClassWriter">
<link rel="stylesheet" type="text/css" href="../../../../../../../../resource-files/jquery-ui.min.css">
<link rel="stylesheet" type="text/css" href="../../../../../../../../resource-files/stylesheet.css">
<script type="text/javascript" src="../../../../../../../../script-files/script.js"></script>
<script type="text/javascript" src="../../../../../../../../script-files/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../../../../../../script-files/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">const pathtoroot = "../../../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="nav-content">
<div class="nav-menu-button"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button></div>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../../../module-summary.html">Module</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../../../index-files/index-1.html">Index</a></li>
<li><a href="../../../../../../../../search.html">Search</a></li>
<li><a href="../../../../../../../../help-doc.html#class">Help</a></li>
</ul>
</div>
</div>
<div class="sub-nav">
<div class="nav-content">
<ol class="sub-nav-list">
<li><a href="../../../../../../../module-summary.html">it.polimi.ingsw.gc14</a></li>
<li><a href="package-summary.html">it.polimi.ingsw.gc14.Network.TCP.Client</a></li>
<li><a href="TCPClient.html" class="current-selection">TCPClient</a></li>
</ol>
<div class="nav-list-search"><input type="text" id="search-input" disabled placeholder="Search documentation (type /)" aria-label="Search in documentation" autocomplete="off" spellcheck="false"><input type="reset" id="reset-search" disabled value="Reset"></div>
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="main-grid">
<nav role="navigation" class="toc" aria-label="Table of contents">
<div class="toc-header">Contents&nbsp;<input type="text" class="filter-input" disabled placeholder="Filter contents (type .)" aria-label="Filter table of contents" autocomplete="off" spellcheck="false"><input type="reset" class="reset-filter" disabled tabindex="-1" value="Reset"></div>
<ol class="toc-list" tabindex="-1">
<li><a href="#" tabindex="0">Description</a></li>
<li><a href="#field-summary" tabindex="0">Field Summary</a></li>
<li><a href="#constructor-summary" tabindex="0">Constructor Summary</a></li>
<li><a href="#method-summary" tabindex="0">Method Summary</a></li>
<li><a href="#field-detail" tabindex="0">Field Details</a>
<ol class="toc-list">
<li><a href="#PING" tabindex="0">PING</a></li>
<li><a href="#PONG" tabindex="0">PONG</a></li>
<li><a href="#communicationSocket" tabindex="0">communicationSocket</a></li>
<li><a href="#socketReceive" tabindex="0">socketReceive</a></li>
<li><a href="#socketSend" tabindex="0">socketSend</a></li>
<li><a href="#controller" tabindex="0">controller</a></li>
<li><a href="#hostname" tabindex="0">hostname</a></li>
<li><a href="#running" tabindex="0">running</a></li>
<li><a href="#mainPort" tabindex="0">mainPort</a></li>
<li><a href="#heartbeatPort" tabindex="0">heartbeatPort</a></li>
<li><a href="#heartbeatSocket" tabindex="0">heartbeatSocket</a></li>
<li><a href="#heartbeatOut" tabindex="0">heartbeatOut</a></li>
<li><a href="#heartbeatIn" tabindex="0">heartbeatIn</a></li>
</ol>
</li>
<li><a href="#constructor-detail" tabindex="0">Constructor Details</a>
<ol class="toc-list">
<li><a href="#%3Cinit%3E(it.polimi.ingsw.gc14.Controller.ClientController,java.lang.String,int,int)" tabindex="0">TCPClient(ClientController, String, int, int)</a></li>
</ol>
</li>
<li><a href="#method-detail" tabindex="0">Method Details</a>
<ol class="toc-list">
<li><a href="#connect(java.lang.String,int)" tabindex="0">connect(String, int)</a></li>
<li><a href="#heartbeatLoop()" tabindex="0">heartbeatLoop()</a></li>
<li><a href="#disconnect()" tabindex="0">disconnect()</a></li>
<li><a href="#receiveMessage()" tabindex="0">receiveMessage()</a></li>
<li><a href="#drawUpperTribeCard(java.lang.String,int)" tabindex="0">drawUpperTribeCard(String, int)</a></li>
<li><a href="#drawLowerTribeCard(java.lang.String,int)" tabindex="0">drawLowerTribeCard(String, int)</a></li>
<li><a href="#drawUpperBuildingCard(java.lang.String,int)" tabindex="0">drawUpperBuildingCard(String, int)</a></li>
<li><a href="#drawLowerBuildingCard(java.lang.String,int)" tabindex="0">drawLowerBuildingCard(String, int)</a></li>
<li><a href="#skipTurn(java.lang.String)" tabindex="0">skipTurn(String)</a></li>
<li><a href="#slotChoice(java.lang.String,int)" tabindex="0">slotChoice(String, int)</a></li>
<li><a href="#doEvent(it.polimi.ingsw.gc14.Network.NetworkEvent)" tabindex="0">doEvent(NetworkEvent)</a></li>
<li><a href="#totemChoice(java.lang.String,java.lang.String)" tabindex="0">totemChoice(String, String)</a></li>
<li><a href="#notifyDisconnection()" tabindex="0">notifyDisconnection()</a></li>
</ol>
</li>
</ol>
<button class="hide-sidebar"><span>Hide sidebar&nbsp;</span><img src="../../../../../../../../resource-files/left.svg" alt="Hide sidebar"></button><button class="show-sidebar"><img src="../../../../../../../../resource-files/right.svg" alt="Show sidebar"><span>&nbsp;Show sidebar</span></button></nav>
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<h1 title="Class TCPClient" class="title">Class TCPClient</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
<div class="inheritance">it.polimi.ingsw.gc14.Network.TCP.Client.TCPClient</div>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>All Implemented Interfaces:</dt>
<dd><code><a href="../../IClient.html" title="interface in it.polimi.ingsw.gc14.Network">IClient</a></code></dd>
</dl>
<hr>
<div class="horizontal-scroll">
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">TCPClient</span>
<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>
implements <a href="../../IClient.html" title="interface in it.polimi.ingsw.gc14.Network">IClient</a></span></div>
<div class="block">Client TCP. Sends and receives messages with the TCP server.</div>
</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- =========== FIELD SUMMARY =========== -->
<li>
<section class="field-summary" id="field-summary">
<h2>Field Summary</h2>
<div class="caption"><span>Fields</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Field</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>private <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/net/Socket.html" title="class or interface in java.net" class="external-link">Socket</a></code></div>
<div class="col-second even-row-color"><code><a href="#communicationSocket" class="member-name-link">communicationSocket</a></code></div>
<div class="col-last even-row-color">
<div class="block">Socket TCP</div>
</div>
<div class="col-first odd-row-color"><code>private final <a href="../../../Controller/ClientController.html" title="class in it.polimi.ingsw.gc14.Controller">ClientController</a></code></div>
<div class="col-second odd-row-color"><code><a href="#controller" class="member-name-link">controller</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Client game's controller</div>
</div>
<div class="col-first even-row-color"><code>private <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/InputStream.html" title="class or interface in java.io" class="external-link">InputStream</a></code></div>
<div class="col-second even-row-color"><code><a href="#heartbeatIn" class="member-name-link">heartbeatIn</a></code></div>
<div class="col-last even-row-color">
<div class="block">Input stream of <a href="#heartbeatSocket"><code>heartbeatSocket</code></a>, used to read <a href="#PONG"><code>PONG</code></a> bytes.</div>
</div>
<div class="col-first odd-row-color"><code>private <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/OutputStream.html" title="class or interface in java.io" class="external-link">OutputStream</a></code></div>
<div class="col-second odd-row-color"><code><a href="#heartbeatOut" class="member-name-link">heartbeatOut</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Output stream of <a href="#heartbeatSocket"><code>heartbeatSocket</code></a>, used to write <a href="#PING"><code>PING</code></a> bytes.</div>
</div>
<div class="col-first even-row-color"><code>private final int</code></div>
<div class="col-second even-row-color"><code><a href="#heartbeatPort" class="member-name-link">heartbeatPort</a></code></div>
<div class="col-last even-row-color">
<div class="block">TCP port dedicated to heartbeat communication.</div>
</div>
<div class="col-first odd-row-color"><code>private <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/net/Socket.html" title="class or interface in java.net" class="external-link">Socket</a></code></div>
<div class="col-second odd-row-color"><code><a href="#heartbeatSocket" class="member-name-link">heartbeatSocket</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Socket used exclusively for heartbeat ping/pong exchange.</div>
</div>
<div class="col-first even-row-color"><code>private final <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
<div class="col-second even-row-color"><code><a href="#hostname" class="member-name-link">hostname</a></code></div>
<div class="col-last even-row-color">
<div class="block">IP address of the server to connect to</div>
</div>
<div class="col-first odd-row-color"><code>private final int</code></div>
<div class="col-second odd-row-color"><code><a href="#mainPort" class="member-name-link">mainPort</a></code></div>
<div class="col-last odd-row-color">
<div class="block">TCP port</div>
</div>
<div class="col-first even-row-color"><code>private static final int</code></div>
<div class="col-second even-row-color"><code><a href="#PING" class="member-name-link">PING</a></code></div>
<div class="col-last even-row-color">
<div class="block">Byte value sent by the client to signal it is still alive.</div>
</div>
<div class="col-first odd-row-color"><code>private static final int</code></div>
<div class="col-second odd-row-color"><code><a href="#PONG" class="member-name-link">PONG</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Byte value expected from the server in response to a <a href="#PING"><code>PING</code></a>.</div>
</div>
<div class="col-first even-row-color"><code>private boolean</code></div>
<div class="col-second even-row-color"><code><a href="#running" class="member-name-link">running</a></code></div>
<div class="col-last even-row-color">
<div class="block"><code>true</code> while the connection is active; set to <code>false</code> on disconnect.</div>
</div>
<div class="col-first odd-row-color"><code>private <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/ObjectInputStream.html" title="class or interface in java.io" class="external-link">ObjectInputStream</a></code></div>
<div class="col-second odd-row-color"><code><a href="#socketReceive" class="member-name-link">socketReceive</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Input stream used receive objects from the server</div>
</div>
<div class="col-first even-row-color"><code>private <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/ObjectOutputStream.html" title="class or interface in java.io" class="external-link">ObjectOutputStream</a></code></div>
<div class="col-second even-row-color"><code><a href="#socketSend" class="member-name-link">socketSend</a></code></div>
<div class="col-last even-row-color">
<div class="block">Output stream used to send objects to the server</div>
</div>
</div>
</section>
</li>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>Constructor Summary</h2>
<div class="caption"><span>Constructors</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(it.polimi.ingsw.gc14.Controller.ClientController,java.lang.String,int,int)" class="member-name-link">TCPClient</a><wbr>(<a href="../../../Controller/ClientController.html" title="class in it.polimi.ingsw.gc14.Controller">ClientController</a>&nbsp;controller,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;hostname,
int&nbsp;mainPort,
int&nbsp;heartbeatPort)</code></div>
<div class="col-last even-row-color">
<div class="block">Constructs a TCP client and initializes its connection parameters.</div>
</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="../../../ErrorType.html" title="enum class in it.polimi.ingsw.gc14">ErrorType</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#connect(java.lang.String,int)" class="member-name-link">connect</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;user,
int&nbsp;proposedNPlayers)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Starts the TCP connection with the server.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>private void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#disconnect()" class="member-name-link">disconnect</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Disconnects the player and cleans model and controller</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>private void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#doEvent(it.polimi.ingsw.gc14.Network.NetworkEvent)" class="member-name-link">doEvent</a><wbr>(<a href="../../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a>&nbsp;event)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Sends a <a href="../../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network"><code>NetworkEvent</code></a> to the server.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#drawLowerBuildingCard(java.lang.String,int)" class="member-name-link">drawLowerBuildingCard</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername,
int&nbsp;pos)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Requests to draw a building card from the lower list.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#drawLowerTribeCard(java.lang.String,int)" class="member-name-link">drawLowerTribeCard</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername,
int&nbsp;pos)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Requests to draw a tribe card from the lower list.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#drawUpperBuildingCard(java.lang.String,int)" class="member-name-link">drawUpperBuildingCard</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername,
int&nbsp;pos)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Requests to draw a building card from the upper list.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#drawUpperTribeCard(java.lang.String,int)" class="member-name-link">drawUpperTribeCard</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername,
int&nbsp;pos)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Requests to draw a tribe card from the upper list.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>private void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#heartbeatLoop()" class="member-name-link">heartbeatLoop</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Sends a <a href="#PING"><code>PING</code></a> byte to the server every 3 seconds and waits for a <a href="#PONG"><code>PONG</code></a> reply.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#notifyDisconnection()" class="member-name-link">notifyDisconnection</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Notifies the server of a voluntary disconnection by sending a sentinel value
on the heartbeat channel, then closes the connection.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>private void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#receiveMessage()" class="member-name-link">receiveMessage</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Listens continuously for incoming objects from the server</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#skipTurn(java.lang.String)" class="member-name-link">skipTurn</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Requests to skip drawing turn.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#slotChoice(java.lang.String,int)" class="member-name-link">slotChoice</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername,
int&nbsp;pos)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Used to perform the slot choice action for the specified player at the specified position.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#totemChoice(java.lang.String,java.lang.String)" class="member-name-link">totemChoice</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;totems)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Sends a totem choice event to the server for the specified player.</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#method-summary" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ FIELD DETAIL =========== -->
<li>
<section class="field-details" id="field-detail">
<h2>Field Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="PING">
<h3>PING</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private static final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">PING</span></div>
<div class="block">Byte value sent by the client to signal it is still alive.</div>
<dl class="notes">
<dt>See Also:</dt>
<dd>
<ul class="tag-list">
<li><a href="../../../../../../../../constant-values.html#it.polimi.ingsw.gc14.Network.TCP.Client.TCPClient.PING">Constant Field Values</a></li>
</ul>
</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="PONG">
<h3>PONG</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private static final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">PONG</span></div>
<div class="block">Byte value expected from the server in response to a <a href="#PING"><code>PING</code></a>.</div>
<dl class="notes">
<dt>See Also:</dt>
<dd>
<ul class="tag-list">
<li><a href="../../../../../../../../constant-values.html#it.polimi.ingsw.gc14.Network.TCP.Client.TCPClient.PONG">Constant Field Values</a></li>
</ul>
</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="communicationSocket">
<h3>communicationSocket</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/net/Socket.html" title="class or interface in java.net" class="external-link">Socket</a></span>&nbsp;<span class="element-name">communicationSocket</span></div>
<div class="block">Socket TCP</div>
</div>
</section>
</li>
<li>
<section class="detail" id="socketReceive">
<h3>socketReceive</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/ObjectInputStream.html" title="class or interface in java.io" class="external-link">ObjectInputStream</a></span>&nbsp;<span class="element-name">socketReceive</span></div>
<div class="block">Input stream used receive objects from the server</div>
</div>
</section>
</li>
<li>
<section class="detail" id="socketSend">
<h3>socketSend</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/ObjectOutputStream.html" title="class or interface in java.io" class="external-link">ObjectOutputStream</a></span>&nbsp;<span class="element-name">socketSend</span></div>
<div class="block">Output stream used to send objects to the server</div>
</div>
</section>
</li>
<li>
<section class="detail" id="controller">
<h3>controller</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type"><a href="../../../Controller/ClientController.html" title="class in it.polimi.ingsw.gc14.Controller">ClientController</a></span>&nbsp;<span class="element-name">controller</span></div>
<div class="block">Client game's controller</div>
</div>
</section>
</li>
<li>
<section class="detail" id="hostname">
<h3>hostname</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">hostname</span></div>
<div class="block">IP address of the server to connect to</div>
</div>
</section>
</li>
<li>
<section class="detail" id="running">
<h3>running</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">running</span></div>
<div class="block"><code>true</code> while the connection is active; set to <code>false</code> on disconnect.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="mainPort">
<h3>mainPort</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">mainPort</span></div>
<div class="block">TCP port</div>
</div>
</section>
</li>
<li>
<section class="detail" id="heartbeatPort">
<h3>heartbeatPort</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">heartbeatPort</span></div>
<div class="block">TCP port dedicated to heartbeat communication.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="heartbeatSocket">
<h3>heartbeatSocket</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/net/Socket.html" title="class or interface in java.net" class="external-link">Socket</a></span>&nbsp;<span class="element-name">heartbeatSocket</span></div>
<div class="block">Socket used exclusively for heartbeat ping/pong exchange.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="heartbeatOut">
<h3>heartbeatOut</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/OutputStream.html" title="class or interface in java.io" class="external-link">OutputStream</a></span>&nbsp;<span class="element-name">heartbeatOut</span></div>
<div class="block">Output stream of <a href="#heartbeatSocket"><code>heartbeatSocket</code></a>, used to write <a href="#PING"><code>PING</code></a> bytes.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="heartbeatIn">
<h3>heartbeatIn</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/InputStream.html" title="class or interface in java.io" class="external-link">InputStream</a></span>&nbsp;<span class="element-name">heartbeatIn</span></div>
<div class="block">Input stream of <a href="#heartbeatSocket"><code>heartbeatSocket</code></a>, used to read <a href="#PONG"><code>PONG</code></a> bytes.</div>
</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;(it.polimi.ingsw.gc14.Controller.ClientController,java.lang.String,int,int)">
<h3>TCPClient</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">TCPClient</span><wbr><span class="parameters">(<a href="../../../Controller/ClientController.html" title="class in it.polimi.ingsw.gc14.Controller">ClientController</a>&nbsp;controller,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;hostname,
int&nbsp;mainPort,
int&nbsp;heartbeatPort)</span></div>
<div class="block">Constructs a TCP client and initializes its connection parameters.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>controller</code> - the client controller.</dd>
<dd><code>hostname</code> - the IP address or hostname of the server.</dd>
<dd><code>mainPort</code> - the main TCP port of the server.</dd>
<dd><code>heartbeatPort</code> - the TCP port used for heartbeat communication.</dd>
</dl>
</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="connect(java.lang.String,int)">
<h3>connect</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../../../ErrorType.html" title="enum class in it.polimi.ingsw.gc14">ErrorType</a></span>&nbsp;<span class="element-name">connect</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;user,
int&nbsp;proposedNPlayers)</span></div>
<div class="block">Starts the TCP connection with the server.
Sends an <a href="../../NetworkEvents/AddPlayer.html" title="class in it.polimi.ingsw.gc14.Network.NetworkEvents"><code>AddPlayer</code></a> event, if the server responds with <code>-1</code>, the connection is refused and the method returns <code>false</code>.
Otherwise, a listener thread is started.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../../IClient.html#connect(java.lang.String,int)">connect</a></code>&nbsp;in interface&nbsp;<code><a href="../../IClient.html" title="interface in it.polimi.ingsw.gc14.Network">IClient</a></code></dd>
<dt>Parameters:</dt>
<dd><code>user</code> - The username of the player</dd>
<dd><code>proposedNPlayers</code> - The desired number of players for the game</dd>
<dt>Returns:</dt>
<dd>null if the connection is successful, GENERIC_ERROR otherwise.</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="heartbeatLoop()">
<h3>heartbeatLoop</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">heartbeatLoop</span>()</div>
<div class="block">Sends a <a href="#PING"><code>PING</code></a> byte to the server every 3 seconds and waits for a <a href="#PONG"><code>PONG</code></a> reply.
If no reply arrives within <a href="../../NetworkConfig.html#SILENCE_THRESHOLD_MS">5000L</a> ms, the server is
considered unreachable and <a href="#disconnect()"><code>disconnect()</code></a> is called.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="disconnect()">
<h3>disconnect</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">disconnect</span>()</div>
<div class="block">Disconnects the player and cleans model and controller</div>
</div>
</section>
</li>
<li>
<section class="detail" id="receiveMessage()">
<h3>receiveMessage</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">receiveMessage</span>()</div>
<div class="block">Listens continuously for incoming objects from the server.
- If the received object is a <a href="../../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network"><code>NetworkEvent</code></a> flagged as an error, it is printed.
- If the received object is a valid <a href="../../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network"><code>NetworkEvent</code></a>, it is applied to the game controller.
- If the received object is a <a href="../../../Model/MiniModel.html" title="class in it.polimi.ingsw.gc14.Model"><code>MiniModel</code></a>, the controller's model is set.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="drawUpperTribeCard(java.lang.String,int)">
<h3>drawUpperTribeCard</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">drawUpperTribeCard</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername,
int&nbsp;pos)</span></div>
<div class="block">Requests to draw a tribe card from the upper list.
Creates a NetworkEvent and sends it through the network client.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../../IClient.html#drawUpperTribeCard(java.lang.String,int)">drawUpperTribeCard</a></code>&nbsp;in interface&nbsp;<code><a href="../../IClient.html" title="interface in it.polimi.ingsw.gc14.Network">IClient</a></code></dd>
<dt>Parameters:</dt>
<dd><code>playerUsername</code> - the name of the player performing the action</dd>
<dd><code>pos</code> - the index of the card to draw</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="drawLowerTribeCard(java.lang.String,int)">
<h3>drawLowerTribeCard</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">drawLowerTribeCard</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername,
int&nbsp;pos)</span></div>
<div class="block">Requests to draw a tribe card from the lower list.
Creates a NetworkEvent and sends it through the network client.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../../IClient.html#drawLowerTribeCard(java.lang.String,int)">drawLowerTribeCard</a></code>&nbsp;in interface&nbsp;<code><a href="../../IClient.html" title="interface in it.polimi.ingsw.gc14.Network">IClient</a></code></dd>
<dt>Parameters:</dt>
<dd><code>playerUsername</code> - the name of the player performing the action</dd>
<dd><code>pos</code> - the index of the card to draw</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="drawUpperBuildingCard(java.lang.String,int)">
<h3>drawUpperBuildingCard</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">drawUpperBuildingCard</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername,
int&nbsp;pos)</span></div>
<div class="block">Requests to draw a building card from the upper list.
Creates a NetworkEvent and sends it through the network client.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../../IClient.html#drawUpperBuildingCard(java.lang.String,int)">drawUpperBuildingCard</a></code>&nbsp;in interface&nbsp;<code><a href="../../IClient.html" title="interface in it.polimi.ingsw.gc14.Network">IClient</a></code></dd>
<dt>Parameters:</dt>
<dd><code>playerUsername</code> - the name of the player performing the action</dd>
<dd><code>pos</code> - the index of the card to draw</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="drawLowerBuildingCard(java.lang.String,int)">
<h3>drawLowerBuildingCard</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">drawLowerBuildingCard</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername,
int&nbsp;pos)</span></div>
<div class="block">Requests to draw a building card from the lower list.
Creates a NetworkEvent and sends it through the network client.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../../IClient.html#drawLowerBuildingCard(java.lang.String,int)">drawLowerBuildingCard</a></code>&nbsp;in interface&nbsp;<code><a href="../../IClient.html" title="interface in it.polimi.ingsw.gc14.Network">IClient</a></code></dd>
<dt>Parameters:</dt>
<dd><code>playerUsername</code> - the name of the player performing the action</dd>
<dd><code>pos</code> - the index of the card to draw</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="skipTurn(java.lang.String)">
<h3>skipTurn</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">skipTurn</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername)</span></div>
<div class="block">Requests to skip drawing turn.
This action is available only when the player cannot draw any tribe card, but still can buy some buildings.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../../IClient.html#skipTurn(java.lang.String)">skipTurn</a></code>&nbsp;in interface&nbsp;<code><a href="../../IClient.html" title="interface in it.polimi.ingsw.gc14.Network">IClient</a></code></dd>
<dt>Parameters:</dt>
<dd><code>playerUsername</code> - the name of the player performing the action</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="slotChoice(java.lang.String,int)">
<h3>slotChoice</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">slotChoice</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername,
int&nbsp;pos)</span></div>
<div class="block">Used to perform the slot choice action for the specified player at the specified position.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../../IClient.html#slotChoice(java.lang.String,int)">slotChoice</a></code>&nbsp;in interface&nbsp;<code><a href="../../IClient.html" title="interface in it.polimi.ingsw.gc14.Network">IClient</a></code></dd>
<dt>Parameters:</dt>
<dd><code>playerUsername</code> - the name of the player performing the action</dd>
<dd><code>pos</code> - the index of the selected slot</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="doEvent(it.polimi.ingsw.gc14.Network.NetworkEvent)">
<h3>doEvent</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">doEvent</span><wbr><span class="parameters">(<a href="../../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a>&nbsp;event)</span></div>
<div class="block">Sends a <a href="../../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network"><code>NetworkEvent</code></a> to the server.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>event</code> - The NetworkEvent to send.</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="totemChoice(java.lang.String,java.lang.String)">
<h3>totemChoice</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">totemChoice</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerUsername,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;totems)</span></div>
<div class="block">Sends a totem choice event to the server for the specified player.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../../IClient.html#totemChoice(java.lang.String,java.lang.String)">totemChoice</a></code>&nbsp;in interface&nbsp;<code><a href="../../IClient.html" title="interface in it.polimi.ingsw.gc14.Network">IClient</a></code></dd>
<dt>Parameters:</dt>
<dd><code>playerUsername</code> - the username of the player choosing the totem.</dd>
<dd><code>totems</code> - the name of the chosen totem.</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="notifyDisconnection()">
<h3>notifyDisconnection</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">notifyDisconnection</span>()</div>
<div class="block">Notifies the server of a voluntary disconnection by sending a sentinel value
on the heartbeat channel, then closes the connection.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../../IClient.html#notifyDisconnection()">notifyDisconnection</a></code>&nbsp;in interface&nbsp;<code><a href="../../IClient.html" title="interface in it.polimi.ingsw.gc14.Network">IClient</a></code></dd>
</dl>
</div>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</body>
</html>
@@ -0,0 +1,88 @@
<!DOCTYPE HTML>
<html lang="it">
<head>
<!-- Generated by javadoc (25) on Fri Jun 19 23:05:23 CEST 2026 -->
<title>it.polimi.ingsw.gc14.Network.TCP.Client</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-06-19">
<meta name="description" content="declaration: module: it.polimi.ingsw.gc14, package: it.polimi.ingsw.gc14.Network.TCP.Client">
<meta name="generator" content="javadoc/PackageWriter">
<link rel="stylesheet" type="text/css" href="../../../../../../../../resource-files/jquery-ui.min.css">
<link rel="stylesheet" type="text/css" href="../../../../../../../../resource-files/stylesheet.css">
<script type="text/javascript" src="../../../../../../../../script-files/script.js"></script>
<script type="text/javascript" src="../../../../../../../../script-files/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../../../../../../script-files/jquery-ui.min.js"></script>
</head>
<body class="package-declaration-page">
<script type="text/javascript">const pathtoroot = "../../../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="nav-content">
<div class="nav-menu-button"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button></div>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../../../module-summary.html">Module</a></li>
<li class="nav-bar-cell1-rev">Package</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../../../index-files/index-1.html">Index</a></li>
<li><a href="../../../../../../../../search.html">Search</a></li>
<li><a href="../../../../../../../../help-doc.html#package">Help</a></li>
</ul>
</div>
</div>
<div class="sub-nav">
<div class="nav-content">
<ol class="sub-nav-list">
<li><a href="../../../../../../../module-summary.html">it.polimi.ingsw.gc14</a></li>
<li><a href="package-summary.html" class="current-selection">it.polimi.ingsw.gc14.Network.TCP.Client</a></li>
</ol>
<div class="nav-list-search"><input type="text" id="search-input" disabled placeholder="Search documentation (type /)" aria-label="Search in documentation" autocomplete="off" spellcheck="false"><input type="reset" id="reset-search" disabled value="Reset"></div>
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="main-grid">
<nav role="navigation" class="toc" aria-label="Table of contents">
<div class="toc-header">Contents</div>
<ol class="toc-list" tabindex="-1">
<li><a href="#" tabindex="0">Description</a></li>
<li><a href="#class-summary" tabindex="0">Classes and Interfaces</a></li>
</ol>
<button class="hide-sidebar"><span>Hide sidebar&nbsp;</span><img src="../../../../../../../../resource-files/left.svg" alt="Hide sidebar"></button><button class="show-sidebar"><img src="../../../../../../../../resource-files/right.svg" alt="Show sidebar"><span>&nbsp;Show sidebar</span></button></nav>
<main role="main">
<div class="header">
<h1 title="Package it.polimi.ingsw.gc14.Network.TCP.Client" class="title">Package it.polimi.ingsw.gc14.Network.TCP.Client</h1>
</div>
<hr>
<div class="horizontal-scroll">
<div class="package-signature">package <span class="element-name">it.polimi.ingsw.gc14.Network.TCP.Client</span></div>
</div>
<section class="summary">
<ul class="summary-list">
<li>
<div id="class-summary">
<div class="caption"><span>Classes</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Class</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="TCPClient.html" title="class in it.polimi.ingsw.gc14.Network.TCP.Client">TCPClient</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">Client TCP.</div>
</div>
</div>
</div>
</li>
</ul>
</section>
</main>
</div>
</body>
</html>
@@ -0,0 +1,74 @@
<!DOCTYPE HTML>
<html lang="it">
<head>
<!-- Generated by javadoc (25) on Fri Jun 19 23:05:23 CEST 2026 -->
<title>it.polimi.ingsw.gc14.Network.TCP.Client Class Hierarchy</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-06-19">
<meta name="description" content="tree: module: it.polimi.ingsw.gc14, package: it.polimi.ingsw.gc14.Network.TCP.Client">
<meta name="generator" content="javadoc/PackageTreeWriter">
<link rel="stylesheet" type="text/css" href="../../../../../../../../resource-files/jquery-ui.min.css">
<link rel="stylesheet" type="text/css" href="../../../../../../../../resource-files/stylesheet.css">
<script type="text/javascript" src="../../../../../../../../script-files/script.js"></script>
<script type="text/javascript" src="../../../../../../../../script-files/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../../../../../../script-files/jquery-ui.min.js"></script>
</head>
<body class="package-tree-page">
<script type="text/javascript">const pathtoroot = "../../../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="nav-content">
<div class="nav-menu-button"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button></div>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../../../module-summary.html">Module</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Tree</li>
<li><a href="../../../../../../../../index-files/index-1.html">Index</a></li>
<li><a href="../../../../../../../../search.html">Search</a></li>
<li><a href="../../../../../../../../help-doc.html#tree">Help</a></li>
</ul>
</div>
</div>
<div class="sub-nav">
<div class="nav-content">
<ol class="sub-nav-list">
<li><a href="../../../../../../../module-summary.html">it.polimi.ingsw.gc14</a></li>
<li><a href="package-summary.html" class="current-selection">it.polimi.ingsw.gc14.Network.TCP.Client</a></li>
</ol>
<div class="nav-list-search"><input type="text" id="search-input" disabled placeholder="Search documentation (type /)" aria-label="Search in documentation" autocomplete="off" spellcheck="false"><input type="reset" id="reset-search" disabled value="Reset"></div>
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="main-grid">
<main role="main">
<div class="header">
<h1 class="title">Hierarchy For Package it.polimi.ingsw.gc14.Network.TCP.Client</h1>
</div>
<span class="package-hierarchy-label">Package Hierarchies:</span>
<ul class="horizontal contents-list">
<li><a href="../../../../../../../../overview-tree.html">All Packages</a></li>
</ul>
<section class="hierarchy">
<h2 title="Class Hierarchy">Class Hierarchy</h2>
<ul>
<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
<ul>
<li class="circle">it.polimi.ingsw.gc14.Network.TCP.Client.<a href="TCPClient.html" class="type-name-link" title="class in it.polimi.ingsw.gc14.Network.TCP.Client">TCPClient</a> (implements it.polimi.ingsw.gc14.Network.<a href="../../IClient.html" title="interface in it.polimi.ingsw.gc14.Network">IClient</a>)</li>
</ul>
</li>
</ul>
</section>
</main>
</div>
</body>
</html>
@@ -0,0 +1,430 @@
<!DOCTYPE HTML>
<html lang="it">
<head>
<!-- Generated by javadoc (25) on Fri Jun 19 23:05:23 CEST 2026 -->
<title>ClientHandler</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-06-19">
<meta name="description" content="declaration: module: it.polimi.ingsw.gc14, package: it.polimi.ingsw.gc14.Network.TCP.Server, class: ClientHandler">
<meta name="generator" content="javadoc/ClassWriter">
<link rel="stylesheet" type="text/css" href="../../../../../../../../resource-files/jquery-ui.min.css">
<link rel="stylesheet" type="text/css" href="../../../../../../../../resource-files/stylesheet.css">
<script type="text/javascript" src="../../../../../../../../script-files/script.js"></script>
<script type="text/javascript" src="../../../../../../../../script-files/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../../../../../../script-files/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">const pathtoroot = "../../../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="nav-content">
<div class="nav-menu-button"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button></div>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../../../module-summary.html">Module</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../../../index-files/index-1.html">Index</a></li>
<li><a href="../../../../../../../../search.html">Search</a></li>
<li><a href="../../../../../../../../help-doc.html#class">Help</a></li>
</ul>
</div>
</div>
<div class="sub-nav">
<div class="nav-content">
<ol class="sub-nav-list">
<li><a href="../../../../../../../module-summary.html">it.polimi.ingsw.gc14</a></li>
<li><a href="package-summary.html">it.polimi.ingsw.gc14.Network.TCP.Server</a></li>
<li><a href="ClientHandler.html" class="current-selection">ClientHandler</a></li>
</ol>
<div class="nav-list-search"><input type="text" id="search-input" disabled placeholder="Search documentation (type /)" aria-label="Search in documentation" autocomplete="off" spellcheck="false"><input type="reset" id="reset-search" disabled value="Reset"></div>
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="main-grid">
<nav role="navigation" class="toc" aria-label="Table of contents">
<div class="toc-header">Contents&nbsp;<input type="text" class="filter-input" disabled placeholder="Filter contents (type .)" aria-label="Filter table of contents" autocomplete="off" spellcheck="false"><input type="reset" class="reset-filter" disabled tabindex="-1" value="Reset"></div>
<ol class="toc-list" tabindex="-1">
<li><a href="#" tabindex="0">Description</a></li>
<li><a href="#field-summary" tabindex="0">Field Summary</a></li>
<li><a href="#constructor-summary" tabindex="0">Constructor Summary</a></li>
<li><a href="#method-summary" tabindex="0">Method Summary</a></li>
<li><a href="#field-detail" tabindex="0">Field Details</a>
<ol class="toc-list">
<li><a href="#username" tabindex="0">username</a></li>
<li><a href="#running" tabindex="0">running</a></li>
<li><a href="#clientSocket" tabindex="0">clientSocket</a></li>
<li><a href="#in" tabindex="0">in</a></li>
<li><a href="#out" tabindex="0">out</a></li>
<li><a href="#clientHandlers" tabindex="0">clientHandlers</a></li>
<li><a href="#limitedMap" tabindex="0">limitedMap</a></li>
<li><a href="#actionQueue" tabindex="0">actionQueue</a></li>
</ol>
</li>
<li><a href="#constructor-detail" tabindex="0">Constructor Details</a>
<ol class="toc-list">
<li><a href="#%3Cinit%3E(java.lang.String,java.net.Socket,java.io.ObjectOutputStream,java.io.ObjectInputStream,java.util.List,it.polimi.ingsw.gc14.LimitedMap,java.util.concurrent.BlockingQueue)" tabindex="0">ClientHandler(String, Socket, ObjectOutputStream, ObjectInputStream, List, LimitedMap, BlockingQueue)</a></li>
</ol>
</li>
<li><a href="#method-detail" tabindex="0">Method Details</a>
<ol class="toc-list">
<li><a href="#getUsername()" tabindex="0">getUsername()</a></li>
<li><a href="#run()" tabindex="0">run()</a></li>
<li><a href="#notifyEvent(it.polimi.ingsw.gc14.Network.NetworkEvent)" tabindex="0">notifyEvent(NetworkEvent)</a></li>
<li><a href="#notifyMiniModel(it.polimi.ingsw.gc14.Model.MiniModel)" tabindex="0">notifyMiniModel(MiniModel)</a></li>
<li><a href="#disconnect()" tabindex="0">disconnect()</a></li>
</ol>
</li>
</ol>
<button class="hide-sidebar"><span>Hide sidebar&nbsp;</span><img src="../../../../../../../../resource-files/left.svg" alt="Hide sidebar"></button><button class="show-sidebar"><img src="../../../../../../../../resource-files/right.svg" alt="Show sidebar"><span>&nbsp;Show sidebar</span></button></nav>
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<h1 title="Class ClientHandler" class="title">Class ClientHandler</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
<div class="inheritance">it.polimi.ingsw.gc14.Network.TCP.Server.ClientHandler</div>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>All Implemented Interfaces:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Runnable.html" title="class or interface in java.lang" class="external-link">Runnable</a></code></dd>
</dl>
<hr>
<div class="horizontal-scroll">
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">ClientHandler</span>
<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>
implements <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Runnable.html" title="class or interface in java.lang" class="external-link">Runnable</a></span></div>
<div class="block">Handles the TCP connection with a single client.
Each instance runs on a dedicated thread and is responsible for receiving <a href="../../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network"><code>NetworkEvent</code></a> from its client and adding them
to the <a href="#actionQueue"><code>actionQueue</code></a>.
It is also responsible to send events and game model updates back to the client.</div>
</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- =========== FIELD SUMMARY =========== -->
<li>
<section class="field-summary" id="field-summary">
<h2>Field Summary</h2>
<div class="caption"><span>Fields</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Field</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>private final <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/concurrent/BlockingQueue.html" title="class or interface in java.util.concurrent" class="external-link">BlockingQueue</a><wbr>&lt;<a href="../../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a>&gt;</code></div>
<div class="col-second even-row-color"><code><a href="#actionQueue" class="member-name-link">actionQueue</a></code></div>
<div class="col-last even-row-color">
<div class="block">Queue containing the events to be applied to the game model</div>
</div>
<div class="col-first odd-row-color"><code>private final <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a><wbr>&lt;<a href="ClientHandler.html" title="class in it.polimi.ingsw.gc14.Network.TCP.Server">ClientHandler</a>&gt;</code></div>
<div class="col-second odd-row-color"><code><a href="#clientHandlers" class="member-name-link">clientHandlers</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Shared list of all client handlers.</div>
</div>
<div class="col-first even-row-color"><code>private final <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/net/Socket.html" title="class or interface in java.net" class="external-link">Socket</a></code></div>
<div class="col-second even-row-color"><code><a href="#clientSocket" class="member-name-link">clientSocket</a></code></div>
<div class="col-last even-row-color">
<div class="block">The TCP socket</div>
</div>
<div class="col-first odd-row-color"><code>private final <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/ObjectInputStream.html" title="class or interface in java.io" class="external-link">ObjectInputStream</a></code></div>
<div class="col-second odd-row-color"><code><a href="#in" class="member-name-link">in</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Input stream used to receive objects from the client</div>
</div>
<div class="col-first even-row-color"><code>private final <a href="../../../LimitedMap.html" title="class in it.polimi.ingsw.gc14">LimitedMap</a><wbr>&lt;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Boolean.html" title="class or interface in java.lang" class="external-link">Boolean</a>&gt;</code></div>
<div class="col-second even-row-color"><code><a href="#limitedMap" class="member-name-link">limitedMap</a></code></div>
<div class="col-last even-row-color">
<div class="block">Maps each connected player's username to their connection state (true = connected).</div>
</div>
<div class="col-first odd-row-color"><code>private final <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/ObjectOutputStream.html" title="class or interface in java.io" class="external-link">ObjectOutputStream</a></code></div>
<div class="col-second odd-row-color"><code><a href="#out" class="member-name-link">out</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Output stream used to send objects to the client</div>
</div>
<div class="col-first even-row-color"><code>private boolean</code></div>
<div class="col-second even-row-color"><code><a href="#running" class="member-name-link">running</a></code></div>
<div class="col-last even-row-color">
<div class="block"><code>true</code> while the handler is actively reading from the socket; set to <code>false</code> on disconnect.</div>
</div>
<div class="col-first odd-row-color"><code>private final <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
<div class="col-second odd-row-color"><code><a href="#username" class="member-name-link">username</a></code></div>
<div class="col-last odd-row-color">
<div class="block">The username of the connected client on this handler</div>
</div>
</div>
</section>
</li>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>Constructor Summary</h2>
<div class="caption"><span>Constructors</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.String,java.net.Socket,java.io.ObjectOutputStream,java.io.ObjectInputStream,java.util.List,it.polimi.ingsw.gc14.LimitedMap,java.util.concurrent.BlockingQueue)" class="member-name-link">ClientHandler</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;username,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/net/Socket.html" title="class or interface in java.net" class="external-link">Socket</a>&nbsp;clientSocket,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/ObjectOutputStream.html" title="class or interface in java.io" class="external-link">ObjectOutputStream</a>&nbsp;out,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/ObjectInputStream.html" title="class or interface in java.io" class="external-link">ObjectInputStream</a>&nbsp;in,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="ClientHandler.html" title="class in it.polimi.ingsw.gc14.Network.TCP.Server">ClientHandler</a>&gt;&nbsp;clientHandlers,
<a href="../../../LimitedMap.html" title="class in it.polimi.ingsw.gc14">LimitedMap</a>&lt;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Boolean.html" title="class or interface in java.lang" class="external-link">Boolean</a>&gt;&nbsp;playersMap,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/concurrent/BlockingQueue.html" title="class or interface in java.util.concurrent" class="external-link">BlockingQueue</a>&lt;<a href="../../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a>&gt;&nbsp;actionQueue)</code></div>
<div class="col-last even-row-color">
<div class="block">Class constructor that initializes the attributes.</div>
</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#disconnect()" class="member-name-link">disconnect</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Disconnects the client from the server.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getUsername()" class="member-name-link">getUsername</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns the username associated with this client.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#notifyEvent(it.polimi.ingsw.gc14.Network.NetworkEvent)" class="member-name-link">notifyEvent</a><wbr>(<a href="../../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a>&nbsp;event)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Sends a <a href="../../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network"><code>NetworkEvent</code></a> to the client.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#notifyMiniModel(it.polimi.ingsw.gc14.Model.MiniModel)" class="member-name-link">notifyMiniModel</a><wbr>(<a href="../../../Model/MiniModel.html" title="class in it.polimi.ingsw.gc14.Model">MiniModel</a>&nbsp;game)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Sends the current game model to this client.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#run()" class="member-name-link">run</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Listens for incoming <a href="../../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network"><code>NetworkEvent</code></a>s from the client and adds them to the <a href="#actionQueue"><code>actionQueue</code></a>.</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#method-summary" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ FIELD DETAIL =========== -->
<li>
<section class="field-details" id="field-detail">
<h2>Field Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="username">
<h3>username</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">username</span></div>
<div class="block">The username of the connected client on this handler</div>
</div>
</section>
</li>
<li>
<section class="detail" id="running">
<h3>running</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private volatile</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">running</span></div>
<div class="block"><code>true</code> while the handler is actively reading from the socket; set to <code>false</code> on disconnect.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="clientSocket">
<h3>clientSocket</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/net/Socket.html" title="class or interface in java.net" class="external-link">Socket</a></span>&nbsp;<span class="element-name">clientSocket</span></div>
<div class="block">The TCP socket</div>
</div>
</section>
</li>
<li>
<section class="detail" id="in">
<h3>in</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/ObjectInputStream.html" title="class or interface in java.io" class="external-link">ObjectInputStream</a></span>&nbsp;<span class="element-name">in</span></div>
<div class="block">Input stream used to receive objects from the client</div>
</div>
</section>
</li>
<li>
<section class="detail" id="out">
<h3>out</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/ObjectOutputStream.html" title="class or interface in java.io" class="external-link">ObjectOutputStream</a></span>&nbsp;<span class="element-name">out</span></div>
<div class="block">Output stream used to send objects to the client</div>
</div>
</section>
</li>
<li>
<section class="detail" id="clientHandlers">
<h3>clientHandlers</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="ClientHandler.html" title="class in it.polimi.ingsw.gc14.Network.TCP.Server">ClientHandler</a>&gt;</span>&nbsp;<span class="element-name">clientHandlers</span></div>
<div class="block">Shared list of all client handlers.
This handler removes itself from the list when disconnected.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="limitedMap">
<h3>limitedMap</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type"><a href="../../../LimitedMap.html" title="class in it.polimi.ingsw.gc14">LimitedMap</a>&lt;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Boolean.html" title="class or interface in java.lang" class="external-link">Boolean</a>&gt;</span>&nbsp;<span class="element-name">limitedMap</span></div>
<div class="block">Maps each connected player's username to their connection state (true = connected).</div>
</div>
</section>
</li>
<li>
<section class="detail" id="actionQueue">
<h3>actionQueue</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/concurrent/BlockingQueue.html" title="class or interface in java.util.concurrent" class="external-link">BlockingQueue</a>&lt;<a href="../../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a>&gt;</span>&nbsp;<span class="element-name">actionQueue</span></div>
<div class="block">Queue containing the events to be applied to the game model</div>
</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;(java.lang.String,java.net.Socket,java.io.ObjectOutputStream,java.io.ObjectInputStream,java.util.List,it.polimi.ingsw.gc14.LimitedMap,java.util.concurrent.BlockingQueue)">
<h3>ClientHandler</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">ClientHandler</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;username,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/net/Socket.html" title="class or interface in java.net" class="external-link">Socket</a>&nbsp;clientSocket,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/ObjectOutputStream.html" title="class or interface in java.io" class="external-link">ObjectOutputStream</a>&nbsp;out,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/ObjectInputStream.html" title="class or interface in java.io" class="external-link">ObjectInputStream</a>&nbsp;in,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="ClientHandler.html" title="class in it.polimi.ingsw.gc14.Network.TCP.Server">ClientHandler</a>&gt;&nbsp;clientHandlers,
<a href="../../../LimitedMap.html" title="class in it.polimi.ingsw.gc14">LimitedMap</a>&lt;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Boolean.html" title="class or interface in java.lang" class="external-link">Boolean</a>&gt;&nbsp;playersMap,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/concurrent/BlockingQueue.html" title="class or interface in java.util.concurrent" class="external-link">BlockingQueue</a>&lt;<a href="../../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a>&gt;&nbsp;actionQueue)</span></div>
<div class="block">Class constructor that initializes the attributes.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>username</code> - the username associated with the client.</dd>
<dd><code>clientSocket</code> - the socket representing the client's TCP connection.</dd>
<dd><code>out</code> - the output stream used to send data to the client.</dd>
<dd><code>in</code> - the input stream used to receive data from the client.</dd>
<dd><code>clientHandlers</code> - the shared list of all active client handlers.</dd>
<dd><code>playersMap</code> - the shared map containing the connected players.</dd>
<dd><code>actionQueue</code> - the queue containing incoming events.</dd>
</dl>
</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="getUsername()">
<h3>getUsername</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">getUsername</span>()</div>
<div class="block">Returns the username associated with this client.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>the username associated with this client.</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="run()">
<h3>run</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">run</span>()</div>
<div class="block">Listens for incoming <a href="../../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network"><code>NetworkEvent</code></a>s from the client and adds them to the <a href="#actionQueue"><code>actionQueue</code></a>.
Upon disconnection, this handler removes itself from <a href="#clientHandlers"><code>clientHandlers</code></a>.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Runnable.html#run()" title="class or interface in java.lang" class="external-link">run</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Runnable.html" title="class or interface in java.lang" class="external-link">Runnable</a></code></dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="notifyEvent(it.polimi.ingsw.gc14.Network.NetworkEvent)">
<h3>notifyEvent</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">notifyEvent</span><wbr><span class="parameters">(<a href="../../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a>&nbsp;event)</span></div>
<div class="block">Sends a <a href="../../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network"><code>NetworkEvent</code></a> to the client.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>event</code> - The network event to send to the client.</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="notifyMiniModel(it.polimi.ingsw.gc14.Model.MiniModel)">
<h3>notifyMiniModel</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">notifyMiniModel</span><wbr><span class="parameters">(<a href="../../../Model/MiniModel.html" title="class in it.polimi.ingsw.gc14.Model">MiniModel</a>&nbsp;game)</span></div>
<div class="block">Sends the current game model to this client.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>game</code> - The current state of the game to send to the client.</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="disconnect()">
<h3>disconnect</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">disconnect</span>()</div>
<div class="block">Disconnects the client from the server.
<p>The client handler is stopped and removed from the list of active handlers.
The player is marked as disconnected, a <a href="../../NetworkEvents/DisconnectedPlayer.html" title="class in it.polimi.ingsw.gc14.Network.NetworkEvents"><code>DisconnectedPlayer</code></a> event is
added to the action queue, and the associated socket is closed.</div>
</div>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</body>
</html>
@@ -0,0 +1,432 @@
<!DOCTYPE HTML>
<html lang="it">
<head>
<!-- Generated by javadoc (25) on Fri Jun 19 23:05:23 CEST 2026 -->
<title>HeartbeatHandler</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-06-19">
<meta name="description" content="declaration: module: it.polimi.ingsw.gc14, package: it.polimi.ingsw.gc14.Network.TCP.Server, class: HeartbeatHandler">
<meta name="generator" content="javadoc/ClassWriter">
<link rel="stylesheet" type="text/css" href="../../../../../../../../resource-files/jquery-ui.min.css">
<link rel="stylesheet" type="text/css" href="../../../../../../../../resource-files/stylesheet.css">
<script type="text/javascript" src="../../../../../../../../script-files/script.js"></script>
<script type="text/javascript" src="../../../../../../../../script-files/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../../../../../../script-files/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">const pathtoroot = "../../../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="nav-content">
<div class="nav-menu-button"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button></div>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../../../module-summary.html">Module</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../../../index-files/index-1.html">Index</a></li>
<li><a href="../../../../../../../../search.html">Search</a></li>
<li><a href="../../../../../../../../help-doc.html#class">Help</a></li>
</ul>
</div>
</div>
<div class="sub-nav">
<div class="nav-content">
<ol class="sub-nav-list">
<li><a href="../../../../../../../module-summary.html">it.polimi.ingsw.gc14</a></li>
<li><a href="package-summary.html">it.polimi.ingsw.gc14.Network.TCP.Server</a></li>
<li><a href="HeartbeatHandler.html" class="current-selection">HeartbeatHandler</a></li>
</ol>
<div class="nav-list-search"><input type="text" id="search-input" disabled placeholder="Search documentation (type /)" aria-label="Search in documentation" autocomplete="off" spellcheck="false"><input type="reset" id="reset-search" disabled value="Reset"></div>
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="main-grid">
<nav role="navigation" class="toc" aria-label="Table of contents">
<div class="toc-header">Contents&nbsp;<input type="text" class="filter-input" disabled placeholder="Filter contents (type .)" aria-label="Filter table of contents" autocomplete="off" spellcheck="false"><input type="reset" class="reset-filter" disabled tabindex="-1" value="Reset"></div>
<ol class="toc-list" tabindex="-1">
<li><a href="#" tabindex="0">Description</a></li>
<li><a href="#field-summary" tabindex="0">Field Summary</a></li>
<li><a href="#constructor-summary" tabindex="0">Constructor Summary</a></li>
<li><a href="#method-summary" tabindex="0">Method Summary</a></li>
<li><a href="#field-detail" tabindex="0">Field Details</a>
<ol class="toc-list">
<li><a href="#username" tabindex="0">username</a></li>
<li><a href="#socket" tabindex="0">socket</a></li>
<li><a href="#in" tabindex="0">in</a></li>
<li><a href="#out" tabindex="0">out</a></li>
<li><a href="#PING" tabindex="0">PING</a></li>
<li><a href="#PONG" tabindex="0">PONG</a></li>
<li><a href="#mainHandler" tabindex="0">mainHandler</a></li>
<li><a href="#lastReceivedTime" tabindex="0">lastReceivedTime</a></li>
<li><a href="#running" tabindex="0">running</a></li>
<li><a href="#watchdog" tabindex="0">watchdog</a></li>
</ol>
</li>
<li><a href="#constructor-detail" tabindex="0">Constructor Details</a>
<ol class="toc-list">
<li><a href="#%3Cinit%3E(java.lang.String,java.net.Socket,it.polimi.ingsw.gc14.Network.TCP.Server.ClientHandler)" tabindex="0">HeartbeatHandler(String, Socket, ClientHandler)</a></li>
</ol>
</li>
<li><a href="#method-detail" tabindex="0">Method Details</a>
<ol class="toc-list">
<li><a href="#run()" tabindex="0">run()</a></li>
<li><a href="#startWatchdog()" tabindex="0">startWatchdog()</a></li>
<li><a href="#disconnect()" tabindex="0">disconnect()</a></li>
</ol>
</li>
</ol>
<button class="hide-sidebar"><span>Hide sidebar&nbsp;</span><img src="../../../../../../../../resource-files/left.svg" alt="Hide sidebar"></button><button class="show-sidebar"><img src="../../../../../../../../resource-files/right.svg" alt="Show sidebar"><span>&nbsp;Show sidebar</span></button></nav>
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<h1 title="Class HeartbeatHandler" class="title">Class HeartbeatHandler</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
<div class="inheritance">it.polimi.ingsw.gc14.Network.TCP.Server.HeartbeatHandler</div>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>All Implemented Interfaces:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Runnable.html" title="class or interface in java.lang" class="external-link">Runnable</a></code></dd>
</dl>
<hr>
<div class="horizontal-scroll">
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">HeartbeatHandler</span>
<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>
implements <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Runnable.html" title="class or interface in java.lang" class="external-link">Runnable</a></span></div>
<div class="block">Handles the heartbeat communication associated with a TCP client.
<p>This component listens for heartbeat <code>PING</code> messages from the client,
replies with <code>PONG</code> messages, and periodically checks whether the client
has remained silent for too long. If a timeout or communication error occurs,
both the heartbeat connection and the main client connection are disconnected.</div>
</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- =========== FIELD SUMMARY =========== -->
<li>
<section class="field-summary" id="field-summary">
<h2>Field Summary</h2>
<div class="caption"><span>Fields</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Field</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>private final <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/InputStream.html" title="class or interface in java.io" class="external-link">InputStream</a></code></div>
<div class="col-second even-row-color"><code><a href="#in" class="member-name-link">in</a></code></div>
<div class="col-last even-row-color">
<div class="block">Input stream of <a href="#socket"><code>socket</code></a> used to receive <code>PING</code> bytes from the client.</div>
</div>
<div class="col-first odd-row-color"><code>private long</code></div>
<div class="col-second odd-row-color"><code><a href="#lastReceivedTime" class="member-name-link">lastReceivedTime</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Timestamp of the last received heartbeat message.</div>
</div>
<div class="col-first even-row-color"><code>private final <a href="ClientHandler.html" title="class in it.polimi.ingsw.gc14.Network.TCP.Server">ClientHandler</a></code></div>
<div class="col-second even-row-color"><code><a href="#mainHandler" class="member-name-link">mainHandler</a></code></div>
<div class="col-last even-row-color">
<div class="block">Main client handler associated with this heartbeat connection.</div>
</div>
<div class="col-first odd-row-color"><code>private final <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/OutputStream.html" title="class or interface in java.io" class="external-link">OutputStream</a></code></div>
<div class="col-second odd-row-color"><code><a href="#out" class="member-name-link">out</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Output stream of <a href="#socket"><code>socket</code></a> used to send <code>PONG</code> bytes back to the client.</div>
</div>
<div class="col-first even-row-color"><code>private static final int</code></div>
<div class="col-second even-row-color"><code><a href="#PING" class="member-name-link">PING</a></code></div>
<div class="col-last even-row-color">
<div class="block">Byte value representing a heartbeat ping message.</div>
</div>
<div class="col-first odd-row-color"><code>private static final int</code></div>
<div class="col-second odd-row-color"><code><a href="#PONG" class="member-name-link">PONG</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Byte value representing a heartbeat pong response.</div>
</div>
<div class="col-first even-row-color"><code>private boolean</code></div>
<div class="col-second even-row-color"><code><a href="#running" class="member-name-link">running</a></code></div>
<div class="col-last even-row-color">
<div class="block">Indicates whether the heartbeat handler is still active.</div>
</div>
<div class="col-first odd-row-color"><code>private final <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/net/Socket.html" title="class or interface in java.net" class="external-link">Socket</a></code></div>
<div class="col-second odd-row-color"><code><a href="#socket" class="member-name-link">socket</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Dedicated socket used solely for heartbeat ping/pong exchange.</div>
</div>
<div class="col-first even-row-color"><code>private final <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
<div class="col-second even-row-color"><code><a href="#username" class="member-name-link">username</a></code></div>
<div class="col-last even-row-color">
<div class="block">Username of the client associated with this heartbeat connection.</div>
</div>
<div class="col-first odd-row-color"><code>private final <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/concurrent/ScheduledExecutorService.html" title="class or interface in java.util.concurrent" class="external-link">ScheduledExecutorService</a></code></div>
<div class="col-second odd-row-color"><code><a href="#watchdog" class="member-name-link">watchdog</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Executor used to periodically check heartbeat timeouts.</div>
</div>
</div>
</section>
</li>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>Constructor Summary</h2>
<div class="caption"><span>Constructors</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.String,java.net.Socket,it.polimi.ingsw.gc14.Network.TCP.Server.ClientHandler)" class="member-name-link">HeartbeatHandler</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;username,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/net/Socket.html" title="class or interface in java.net" class="external-link">Socket</a>&nbsp;socket,
<a href="ClientHandler.html" title="class in it.polimi.ingsw.gc14.Network.TCP.Server">ClientHandler</a>&nbsp;mainHandler)</code></div>
<div class="col-last even-row-color">
<div class="block">Constructs a heartbeat handler for the specified client.</div>
</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>private void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#disconnect()" class="member-name-link">disconnect</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Disconnects the heartbeat channel and the associated main client connection.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#run()" class="member-name-link">run</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Starts the heartbeat listening loop.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>private void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#startWatchdog()" class="member-name-link">startWatchdog</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Starts the periodic watchdog task that detects heartbeat timeouts.</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#method-summary" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ FIELD DETAIL =========== -->
<li>
<section class="field-details" id="field-detail">
<h2>Field Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="username">
<h3>username</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">username</span></div>
<div class="block">Username of the client associated with this heartbeat connection.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="socket">
<h3>socket</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/net/Socket.html" title="class or interface in java.net" class="external-link">Socket</a></span>&nbsp;<span class="element-name">socket</span></div>
<div class="block">Dedicated socket used solely for heartbeat ping/pong exchange.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="in">
<h3>in</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/InputStream.html" title="class or interface in java.io" class="external-link">InputStream</a></span>&nbsp;<span class="element-name">in</span></div>
<div class="block">Input stream of <a href="#socket"><code>socket</code></a> used to receive <code>PING</code> bytes from the client.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="out">
<h3>out</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/OutputStream.html" title="class or interface in java.io" class="external-link">OutputStream</a></span>&nbsp;<span class="element-name">out</span></div>
<div class="block">Output stream of <a href="#socket"><code>socket</code></a> used to send <code>PONG</code> bytes back to the client.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="PING">
<h3>PING</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private static final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">PING</span></div>
<div class="block">Byte value representing a heartbeat ping message.</div>
<dl class="notes">
<dt>See Also:</dt>
<dd>
<ul class="tag-list">
<li><a href="../../../../../../../../constant-values.html#it.polimi.ingsw.gc14.Network.TCP.Server.HeartbeatHandler.PING">Constant Field Values</a></li>
</ul>
</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="PONG">
<h3>PONG</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private static final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">PONG</span></div>
<div class="block">Byte value representing a heartbeat pong response.</div>
<dl class="notes">
<dt>See Also:</dt>
<dd>
<ul class="tag-list">
<li><a href="../../../../../../../../constant-values.html#it.polimi.ingsw.gc14.Network.TCP.Server.HeartbeatHandler.PONG">Constant Field Values</a></li>
</ul>
</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="mainHandler">
<h3>mainHandler</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type"><a href="ClientHandler.html" title="class in it.polimi.ingsw.gc14.Network.TCP.Server">ClientHandler</a></span>&nbsp;<span class="element-name">mainHandler</span></div>
<div class="block">Main client handler associated with this heartbeat connection.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="lastReceivedTime">
<h3>lastReceivedTime</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private volatile</span>&nbsp;<span class="return-type">long</span>&nbsp;<span class="element-name">lastReceivedTime</span></div>
<div class="block">Timestamp of the last received heartbeat message.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="running">
<h3>running</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private volatile</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">running</span></div>
<div class="block">Indicates whether the heartbeat handler is still active.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="watchdog">
<h3>watchdog</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/concurrent/ScheduledExecutorService.html" title="class or interface in java.util.concurrent" class="external-link">ScheduledExecutorService</a></span>&nbsp;<span class="element-name">watchdog</span></div>
<div class="block">Executor used to periodically check heartbeat timeouts.</div>
</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;(java.lang.String,java.net.Socket,it.polimi.ingsw.gc14.Network.TCP.Server.ClientHandler)">
<h3>HeartbeatHandler</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">HeartbeatHandler</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;username,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/net/Socket.html" title="class or interface in java.net" class="external-link">Socket</a>&nbsp;socket,
<a href="ClientHandler.html" title="class in it.polimi.ingsw.gc14.Network.TCP.Server">ClientHandler</a>&nbsp;mainHandler)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
<div class="block">Constructs a heartbeat handler for the specified client.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>username</code> - the username of the connected client.</dd>
<dd><code>socket</code> - the socket dedicated to heartbeat communication.</dd>
<dd><code>mainHandler</code> - the main client handler associated with the same player.</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></code> - if the input or output stream cannot be obtained from the socket.</dd>
</dl>
</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="run()">
<h3>run</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">run</span>()</div>
<div class="block">Starts the heartbeat listening loop.
<p>The method activates the watchdog task, then waits for incoming heartbeat
messages. When a <code>PING</code> is received, the last-received timestamp is
updated and a <code>PONG</code> response is sent back to the client.
If the stream is closed or an I/O error occurs, the client is disconnected.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Runnable.html#run()" title="class or interface in java.lang" class="external-link">run</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Runnable.html" title="class or interface in java.lang" class="external-link">Runnable</a></code></dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="startWatchdog()">
<h3>startWatchdog</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">startWatchdog</span>()</div>
<div class="block">Starts the periodic watchdog task that detects heartbeat timeouts.
<p>If no heartbeat message is received within the configured silence threshold,
the associated client is disconnected.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="disconnect()">
<h3>disconnect</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">disconnect</span>()</div>
<div class="block">Disconnects the heartbeat channel and the associated main client connection.
<p>The handler is stopped, the watchdog task is terminated, the main
<a href="ClientHandler.html" title="class in it.polimi.ingsw.gc14.Network.TCP.Server"><code>ClientHandler</code></a> is disconnected, and the heartbeat socket is closed.</div>
</div>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</body>
</html>
@@ -0,0 +1,467 @@
<!DOCTYPE HTML>
<html lang="it">
<head>
<!-- Generated by javadoc (25) on Fri Jun 19 23:05:23 CEST 2026 -->
<title>TCPServer</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-06-19">
<meta name="description" content="declaration: module: it.polimi.ingsw.gc14, package: it.polimi.ingsw.gc14.Network.TCP.Server, class: TCPServer">
<meta name="generator" content="javadoc/ClassWriter">
<link rel="stylesheet" type="text/css" href="../../../../../../../../resource-files/jquery-ui.min.css">
<link rel="stylesheet" type="text/css" href="../../../../../../../../resource-files/stylesheet.css">
<script type="text/javascript" src="../../../../../../../../script-files/script.js"></script>
<script type="text/javascript" src="../../../../../../../../script-files/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../../../../../../script-files/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">const pathtoroot = "../../../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="nav-content">
<div class="nav-menu-button"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button></div>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../../../module-summary.html">Module</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../../../index-files/index-1.html">Index</a></li>
<li><a href="../../../../../../../../search.html">Search</a></li>
<li><a href="../../../../../../../../help-doc.html#class">Help</a></li>
</ul>
</div>
</div>
<div class="sub-nav">
<div class="nav-content">
<ol class="sub-nav-list">
<li><a href="../../../../../../../module-summary.html">it.polimi.ingsw.gc14</a></li>
<li><a href="package-summary.html">it.polimi.ingsw.gc14.Network.TCP.Server</a></li>
<li><a href="TCPServer.html" class="current-selection">TCPServer</a></li>
</ol>
<div class="nav-list-search"><input type="text" id="search-input" disabled placeholder="Search documentation (type /)" aria-label="Search in documentation" autocomplete="off" spellcheck="false"><input type="reset" id="reset-search" disabled value="Reset"></div>
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="main-grid">
<nav role="navigation" class="toc" aria-label="Table of contents">
<div class="toc-header">Contents&nbsp;<input type="text" class="filter-input" disabled placeholder="Filter contents (type .)" aria-label="Filter table of contents" autocomplete="off" spellcheck="false"><input type="reset" class="reset-filter" disabled tabindex="-1" value="Reset"></div>
<ol class="toc-list" tabindex="-1">
<li><a href="#" tabindex="0">Description</a></li>
<li><a href="#field-summary" tabindex="0">Field Summary</a></li>
<li><a href="#constructor-summary" tabindex="0">Constructor Summary</a></li>
<li><a href="#method-summary" tabindex="0">Method Summary</a></li>
<li><a href="#field-detail" tabindex="0">Field Details</a>
<ol class="toc-list">
<li><a href="#port" tabindex="0">port</a></li>
<li><a href="#heartbeatPort" tabindex="0">heartbeatPort</a></li>
<li><a href="#socketTCP" tabindex="0">socketTCP</a></li>
<li><a href="#heartbeatSocketTCP" tabindex="0">heartbeatSocketTCP</a></li>
<li><a href="#controller" tabindex="0">controller</a></li>
<li><a href="#actionQueue" tabindex="0">actionQueue</a></li>
<li><a href="#playerList" tabindex="0">playerList</a></li>
<li><a href="#clientHandlers" tabindex="0">clientHandlers</a></li>
<li><a href="#pendingHeartbeat" tabindex="0">pendingHeartbeat</a></li>
</ol>
</li>
<li><a href="#constructor-detail" tabindex="0">Constructor Details</a>
<ol class="toc-list">
<li><a href="#%3Cinit%3E(it.polimi.ingsw.gc14.Controller.GameController,int,int,java.util.concurrent.BlockingQueue,it.polimi.ingsw.gc14.LimitedMap)" tabindex="0">TCPServer(GameController, int, int, BlockingQueue, LimitedMap)</a></li>
</ol>
</li>
<li><a href="#method-detail" tabindex="0">Method Details</a>
<ol class="toc-list">
<li><a href="#start()" tabindex="0">start()</a></li>
<li><a href="#acceptHeartbeat()" tabindex="0">acceptHeartbeat()</a></li>
<li><a href="#notifyAll(it.polimi.ingsw.gc14.Network.NetworkEvent)" tabindex="0">notifyAll(NetworkEvent)</a></li>
<li><a href="#notifyAll(it.polimi.ingsw.gc14.Model.MiniModel)" tabindex="0">notifyAll(MiniModel)</a></li>
<li><a href="#createAndRegisterHandler(java.lang.String,java.net.Socket,java.io.ObjectOutputStream,java.io.ObjectInputStream)" tabindex="0">createAndRegisterHandler(String, Socket, ObjectOutputStream, ObjectInputStream)</a></li>
<li><a href="#disconnectedUsernames(it.polimi.ingsw.gc14.Model.Game)" tabindex="0">disconnectedUsernames(Game)</a></li>
</ol>
</li>
</ol>
<button class="hide-sidebar"><span>Hide sidebar&nbsp;</span><img src="../../../../../../../../resource-files/left.svg" alt="Hide sidebar"></button><button class="show-sidebar"><img src="../../../../../../../../resource-files/right.svg" alt="Show sidebar"><span>&nbsp;Show sidebar</span></button></nav>
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<h1 title="Class TCPServer" class="title">Class TCPServer</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
<div class="inheritance">it.polimi.ingsw.gc14.Network.TCP.Server.TCPServer</div>
</div>
<section class="class-description" id="class-description">
<hr>
<div class="horizontal-scroll">
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">TCPServer</span>
<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
<div class="block">TCP server responsible for accepting client connections,
handling player registration and reconnection, and sending
game updates to connected clients.
<p>The server also manages a dedicated heartbeat channel used
to detect disconnected clients and associate each heartbeat
connection with the corresponding <a href="ClientHandler.html" title="class in it.polimi.ingsw.gc14.Network.TCP.Server"><code>ClientHandler</code></a>.</div>
</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- =========== FIELD SUMMARY =========== -->
<li>
<section class="field-summary" id="field-summary">
<h2>Field Summary</h2>
<div class="caption"><span>Fields</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Field</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>private final <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/concurrent/BlockingQueue.html" title="class or interface in java.util.concurrent" class="external-link">BlockingQueue</a><wbr>&lt;<a href="../../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a>&gt;</code></div>
<div class="col-second even-row-color"><code><a href="#actionQueue" class="member-name-link">actionQueue</a></code></div>
<div class="col-last even-row-color">
<div class="block">Queue containing network events received from clients.</div>
</div>
<div class="col-first odd-row-color"><code>private final <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/concurrent/CopyOnWriteArrayList.html" title="class or interface in java.util.concurrent" class="external-link">CopyOnWriteArrayList</a><wbr>&lt;<a href="ClientHandler.html" title="class in it.polimi.ingsw.gc14.Network.TCP.Server">ClientHandler</a>&gt;</code></div>
<div class="col-second odd-row-color"><code><a href="#clientHandlers" class="member-name-link">clientHandlers</a></code></div>
<div class="col-last odd-row-color">
<div class="block">List of active TCP client handlers.</div>
</div>
<div class="col-first even-row-color"><code>private final <a href="../../../Controller/GameController.html" title="class in it.polimi.ingsw.gc14.Controller">GameController</a></code></div>
<div class="col-second even-row-color"><code><a href="#controller" class="member-name-link">controller</a></code></div>
<div class="col-last even-row-color">
<div class="block">Game controller used to manage the server-side game logic.</div>
</div>
<div class="col-first odd-row-color"><code>private final int</code></div>
<div class="col-second odd-row-color"><code><a href="#heartbeatPort" class="member-name-link">heartbeatPort</a></code></div>
<div class="col-last odd-row-color">
<div class="block">TCP port dedicated to heartbeat communication.</div>
</div>
<div class="col-first even-row-color"><code>private <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/net/ServerSocket.html" title="class or interface in java.net" class="external-link">ServerSocket</a></code></div>
<div class="col-second even-row-color"><code><a href="#heartbeatSocketTCP" class="member-name-link">heartbeatSocketTCP</a></code></div>
<div class="col-last even-row-color">
<div class="block">Server socket used to accept heartbeat connections.</div>
</div>
<div class="col-first odd-row-color"><code>private final <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a><wbr>&lt;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>, <a href="ClientHandler.html" title="class in it.polimi.ingsw.gc14.Network.TCP.Server">ClientHandler</a>&gt;</code></div>
<div class="col-second odd-row-color"><code><a href="#pendingHeartbeat" class="member-name-link">pendingHeartbeat</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Temporary map associating each username with the corresponding
<a href="ClientHandler.html" title="class in it.polimi.ingsw.gc14.Network.TCP.Server"><code>ClientHandler</code></a> waiting for its heartbeat connection.</div>
</div>
<div class="col-first even-row-color"><code>private final <a href="../../../LimitedMap.html" title="class in it.polimi.ingsw.gc14">LimitedMap</a><wbr>&lt;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Boolean.html" title="class or interface in java.lang" class="external-link">Boolean</a>&gt;</code></div>
<div class="col-second even-row-color"><code><a href="#playerList" class="member-name-link">playerList</a></code></div>
<div class="col-last even-row-color">
<div class="block">Map storing the online/offline status of connected players.</div>
</div>
<div class="col-first odd-row-color"><code>private final int</code></div>
<div class="col-second odd-row-color"><code><a href="#port" class="member-name-link">port</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Main TCP port used for standard client-server communication.</div>
</div>
<div class="col-first even-row-color"><code>private <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/net/ServerSocket.html" title="class or interface in java.net" class="external-link">ServerSocket</a></code></div>
<div class="col-second even-row-color"><code><a href="#socketTCP" class="member-name-link">socketTCP</a></code></div>
<div class="col-last even-row-color">
<div class="block">Main server socket used to accept client connections.</div>
</div>
</div>
</section>
</li>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>Constructor Summary</h2>
<div class="caption"><span>Constructors</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(it.polimi.ingsw.gc14.Controller.GameController,int,int,java.util.concurrent.BlockingQueue,it.polimi.ingsw.gc14.LimitedMap)" class="member-name-link">TCPServer</a><wbr>(<a href="../../../Controller/GameController.html" title="class in it.polimi.ingsw.gc14.Controller">GameController</a>&nbsp;controller,
int&nbsp;port,
int&nbsp;heartbeatPort,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/concurrent/BlockingQueue.html" title="class or interface in java.util.concurrent" class="external-link">BlockingQueue</a>&lt;<a href="../../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a>&gt;&nbsp;actionQueue,
<a href="../../../LimitedMap.html" title="class in it.polimi.ingsw.gc14">LimitedMap</a>&lt;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Boolean.html" title="class or interface in java.lang" class="external-link">Boolean</a>&gt;&nbsp;playerList)</code></div>
<div class="col-last even-row-color">
<div class="block">Constructs a TCP server with the required game and network components.</div>
</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>private void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#acceptHeartbeat()" class="member-name-link">acceptHeartbeat</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Accepts heartbeat connections and associates them with the correct client handler.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>private <a href="ClientHandler.html" title="class in it.polimi.ingsw.gc14.Network.TCP.Server">ClientHandler</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#createAndRegisterHandler(java.lang.String,java.net.Socket,java.io.ObjectOutputStream,java.io.ObjectInputStream)" class="member-name-link">createAndRegisterHandler</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;username,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/net/Socket.html" title="class or interface in java.net" class="external-link">Socket</a>&nbsp;socket,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/ObjectOutputStream.html" title="class or interface in java.io" class="external-link">ObjectOutputStream</a>&nbsp;out,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/ObjectInputStream.html" title="class or interface in java.io" class="external-link">ObjectInputStream</a>&nbsp;in)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Creates a <a href="ClientHandler.html" title="class in it.polimi.ingsw.gc14.Network.TCP.Server"><code>ClientHandler</code></a>, registers it in <code>pendingHeartbeat</code>
and <code>clientHandlers</code>, but does NOT start its thread — callers start
the thread after any extra setup (e.g. sending a model snapshot).</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>private static <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/ArrayList.html" title="class or interface in java.util" class="external-link">ArrayList</a><wbr>&lt;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#disconnectedUsernames(it.polimi.ingsw.gc14.Model.Game)" class="member-name-link">disconnectedUsernames</a><wbr>(<a href="../../../Model/Game.html" title="class in it.polimi.ingsw.gc14.Model">Game</a>&nbsp;game)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Returns usernames of players currently marked as disconnected in the given game.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#notifyAll(it.polimi.ingsw.gc14.Model.MiniModel)" class="member-name-link">notifyAll</a><wbr>(<a href="../../../Model/MiniModel.html" title="class in it.polimi.ingsw.gc14.Model">MiniModel</a>&nbsp;model)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Notifies all connected TCP clients of a new game model.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#notifyAll(it.polimi.ingsw.gc14.Network.NetworkEvent)" class="member-name-link">notifyAll</a><wbr>(<a href="../../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a>&nbsp;event)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Notifies connected TCP clients of a new network event.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#start()" class="member-name-link">start</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Starts the TCP server and begins accepting client connections.</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#method-summary" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ FIELD DETAIL =========== -->
<li>
<section class="field-details" id="field-detail">
<h2>Field Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="port">
<h3>port</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">port</span></div>
<div class="block">Main TCP port used for standard client-server communication.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="heartbeatPort">
<h3>heartbeatPort</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">heartbeatPort</span></div>
<div class="block">TCP port dedicated to heartbeat communication.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="socketTCP">
<h3>socketTCP</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/net/ServerSocket.html" title="class or interface in java.net" class="external-link">ServerSocket</a></span>&nbsp;<span class="element-name">socketTCP</span></div>
<div class="block">Main server socket used to accept client connections.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="heartbeatSocketTCP">
<h3>heartbeatSocketTCP</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/net/ServerSocket.html" title="class or interface in java.net" class="external-link">ServerSocket</a></span>&nbsp;<span class="element-name">heartbeatSocketTCP</span></div>
<div class="block">Server socket used to accept heartbeat connections.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="controller">
<h3>controller</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type"><a href="../../../Controller/GameController.html" title="class in it.polimi.ingsw.gc14.Controller">GameController</a></span>&nbsp;<span class="element-name">controller</span></div>
<div class="block">Game controller used to manage the server-side game logic.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="actionQueue">
<h3>actionQueue</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/concurrent/BlockingQueue.html" title="class or interface in java.util.concurrent" class="external-link">BlockingQueue</a>&lt;<a href="../../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a>&gt;</span>&nbsp;<span class="element-name">actionQueue</span></div>
<div class="block">Queue containing network events received from clients.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="playerList">
<h3>playerList</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type"><a href="../../../LimitedMap.html" title="class in it.polimi.ingsw.gc14">LimitedMap</a>&lt;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Boolean.html" title="class or interface in java.lang" class="external-link">Boolean</a>&gt;</span>&nbsp;<span class="element-name">playerList</span></div>
<div class="block">Map storing the online/offline status of connected players.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="clientHandlers">
<h3>clientHandlers</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/concurrent/CopyOnWriteArrayList.html" title="class or interface in java.util.concurrent" class="external-link">CopyOnWriteArrayList</a>&lt;<a href="ClientHandler.html" title="class in it.polimi.ingsw.gc14.Network.TCP.Server">ClientHandler</a>&gt;</span>&nbsp;<span class="element-name">clientHandlers</span></div>
<div class="block">List of active TCP client handlers.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="pendingHeartbeat">
<h3>pendingHeartbeat</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>, <a href="ClientHandler.html" title="class in it.polimi.ingsw.gc14.Network.TCP.Server">ClientHandler</a>&gt;</span>&nbsp;<span class="element-name">pendingHeartbeat</span></div>
<div class="block">Temporary map associating each username with the corresponding
<a href="ClientHandler.html" title="class in it.polimi.ingsw.gc14.Network.TCP.Server"><code>ClientHandler</code></a> waiting for its heartbeat connection.</div>
</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;(it.polimi.ingsw.gc14.Controller.GameController,int,int,java.util.concurrent.BlockingQueue,it.polimi.ingsw.gc14.LimitedMap)">
<h3>TCPServer</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">TCPServer</span><wbr><span class="parameters">(<a href="../../../Controller/GameController.html" title="class in it.polimi.ingsw.gc14.Controller">GameController</a>&nbsp;controller,
int&nbsp;port,
int&nbsp;heartbeatPort,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/concurrent/BlockingQueue.html" title="class or interface in java.util.concurrent" class="external-link">BlockingQueue</a>&lt;<a href="../../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a>&gt;&nbsp;actionQueue,
<a href="../../../LimitedMap.html" title="class in it.polimi.ingsw.gc14">LimitedMap</a>&lt;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Boolean.html" title="class or interface in java.lang" class="external-link">Boolean</a>&gt;&nbsp;playerList)</span></div>
<div class="block">Constructs a TCP server with the required game and network components.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>controller</code> - the game controller used to manage the game logic.</dd>
<dd><code>port</code> - the main TCP port used for client communication.</dd>
<dd><code>heartbeatPort</code> - the TCP port dedicated to heartbeat connections.</dd>
<dd><code>actionQueue</code> - the queue containing incoming network events.</dd>
<dd><code>playerList</code> - the map storing the connection status of the players.</dd>
</dl>
</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="start()">
<h3>start</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">start</span>()</div>
<div class="block">Starts the TCP server and begins accepting client connections.
<p>The method opens both the main TCP server socket and the dedicated
heartbeat server socket. It then starts a separate thread for heartbeat
connections and continuously waits for new players or reconnecting clients.
<p>When a new connection is received, the first event must be an
<a href="../../NetworkEvents/AddPlayer.html" title="class in it.polimi.ingsw.gc14.Network.NetworkEvents"><code>AddPlayer</code></a> request. Depending on the current server state,
the connection is handled either as a new player joining the game
or as a reconnection attempt.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="acceptHeartbeat()">
<h3>acceptHeartbeat</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">acceptHeartbeat</span>()</div>
<div class="block">Accepts heartbeat connections and associates them with the correct client handler.
<p>Each client immediately sends its username on the heartbeat channel.
The method uses that username to retrieve the pending <a href="ClientHandler.html" title="class in it.polimi.ingsw.gc14.Network.TCP.Server"><code>ClientHandler</code></a>
and starts a dedicated <a href="HeartbeatHandler.html" title="class in it.polimi.ingsw.gc14.Network.TCP.Server"><code>HeartbeatHandler</code></a>. If no pending handler is found,
the heartbeat socket is closed.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="notifyAll(it.polimi.ingsw.gc14.Network.NetworkEvent)">
<h3>notifyAll</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">notifyAll</span><wbr><span class="parameters">(<a href="../../NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a>&nbsp;event)</span></div>
<div class="block">Notifies connected TCP clients of a new network event.
<p>If the event does not represent an error, it is sent to all connected clients.
If it represents an error, it is sent only to the client that requested the action.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>event</code> - the network event to send to the clients.</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="notifyAll(it.polimi.ingsw.gc14.Model.MiniModel)">
<h3>notifyAll</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">notifyAll</span><wbr><span class="parameters">(<a href="../../../Model/MiniModel.html" title="class in it.polimi.ingsw.gc14.Model">MiniModel</a>&nbsp;model)</span></div>
<div class="block">Notifies all connected TCP clients of a new game model.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>model</code> - the updated mini model to send to the clients.</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="createAndRegisterHandler(java.lang.String,java.net.Socket,java.io.ObjectOutputStream,java.io.ObjectInputStream)">
<h3>createAndRegisterHandler</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type"><a href="ClientHandler.html" title="class in it.polimi.ingsw.gc14.Network.TCP.Server">ClientHandler</a></span>&nbsp;<span class="element-name">createAndRegisterHandler</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;username,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/net/Socket.html" title="class or interface in java.net" class="external-link">Socket</a>&nbsp;socket,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/ObjectOutputStream.html" title="class or interface in java.io" class="external-link">ObjectOutputStream</a>&nbsp;out,
<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/ObjectInputStream.html" title="class or interface in java.io" class="external-link">ObjectInputStream</a>&nbsp;in)</span></div>
<div class="block">Creates a <a href="ClientHandler.html" title="class in it.polimi.ingsw.gc14.Network.TCP.Server"><code>ClientHandler</code></a>, registers it in <code>pendingHeartbeat</code>
and <code>clientHandlers</code>, but does NOT start its thread — callers start
the thread after any extra setup (e.g. sending a model snapshot).</div>
</div>
</section>
</li>
<li>
<section class="detail" id="disconnectedUsernames(it.polimi.ingsw.gc14.Model.Game)">
<h3>disconnectedUsernames</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">private static</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/ArrayList.html" title="class or interface in java.util" class="external-link">ArrayList</a>&lt;<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</span>&nbsp;<span class="element-name">disconnectedUsernames</span><wbr><span class="parameters">(<a href="../../../Model/Game.html" title="class in it.polimi.ingsw.gc14.Model">Game</a>&nbsp;game)</span></div>
<div class="block">Returns usernames of players currently marked as disconnected in the given game.</div>
</div>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</body>
</html>
@@ -0,0 +1,98 @@
<!DOCTYPE HTML>
<html lang="it">
<head>
<!-- Generated by javadoc (25) on Fri Jun 19 23:05:23 CEST 2026 -->
<title>it.polimi.ingsw.gc14.Network.TCP.Server</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-06-19">
<meta name="description" content="declaration: module: it.polimi.ingsw.gc14, package: it.polimi.ingsw.gc14.Network.TCP.Server">
<meta name="generator" content="javadoc/PackageWriter">
<link rel="stylesheet" type="text/css" href="../../../../../../../../resource-files/jquery-ui.min.css">
<link rel="stylesheet" type="text/css" href="../../../../../../../../resource-files/stylesheet.css">
<script type="text/javascript" src="../../../../../../../../script-files/script.js"></script>
<script type="text/javascript" src="../../../../../../../../script-files/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../../../../../../script-files/jquery-ui.min.js"></script>
</head>
<body class="package-declaration-page">
<script type="text/javascript">const pathtoroot = "../../../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="nav-content">
<div class="nav-menu-button"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button></div>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../../../module-summary.html">Module</a></li>
<li class="nav-bar-cell1-rev">Package</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../../../index-files/index-1.html">Index</a></li>
<li><a href="../../../../../../../../search.html">Search</a></li>
<li><a href="../../../../../../../../help-doc.html#package">Help</a></li>
</ul>
</div>
</div>
<div class="sub-nav">
<div class="nav-content">
<ol class="sub-nav-list">
<li><a href="../../../../../../../module-summary.html">it.polimi.ingsw.gc14</a></li>
<li><a href="package-summary.html" class="current-selection">it.polimi.ingsw.gc14.Network.TCP.Server</a></li>
</ol>
<div class="nav-list-search"><input type="text" id="search-input" disabled placeholder="Search documentation (type /)" aria-label="Search in documentation" autocomplete="off" spellcheck="false"><input type="reset" id="reset-search" disabled value="Reset"></div>
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="main-grid">
<nav role="navigation" class="toc" aria-label="Table of contents">
<div class="toc-header">Contents</div>
<ol class="toc-list" tabindex="-1">
<li><a href="#" tabindex="0">Description</a></li>
<li><a href="#class-summary" tabindex="0">Classes and Interfaces</a></li>
</ol>
<button class="hide-sidebar"><span>Hide sidebar&nbsp;</span><img src="../../../../../../../../resource-files/left.svg" alt="Hide sidebar"></button><button class="show-sidebar"><img src="../../../../../../../../resource-files/right.svg" alt="Show sidebar"><span>&nbsp;Show sidebar</span></button></nav>
<main role="main">
<div class="header">
<h1 title="Package it.polimi.ingsw.gc14.Network.TCP.Server" class="title">Package it.polimi.ingsw.gc14.Network.TCP.Server</h1>
</div>
<hr>
<div class="horizontal-scroll">
<div class="package-signature">package <span class="element-name">it.polimi.ingsw.gc14.Network.TCP.Server</span></div>
</div>
<section class="summary">
<ul class="summary-list">
<li>
<div id="class-summary">
<div class="caption"><span>Classes</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Class</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="ClientHandler.html" title="class in it.polimi.ingsw.gc14.Network.TCP.Server">ClientHandler</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">Handles the TCP connection with a single client.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="HeartbeatHandler.html" title="class in it.polimi.ingsw.gc14.Network.TCP.Server">HeartbeatHandler</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<div class="block">Handles the heartbeat communication associated with a TCP client.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="TCPServer.html" title="class in it.polimi.ingsw.gc14.Network.TCP.Server">TCPServer</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">TCP server responsible for accepting client connections,
handling player registration and reconnection, and sending
game updates to connected clients.</div>
</div>
</div>
</div>
</li>
</ul>
</section>
</main>
</div>
</body>
</html>
@@ -0,0 +1,76 @@
<!DOCTYPE HTML>
<html lang="it">
<head>
<!-- Generated by javadoc (25) on Fri Jun 19 23:05:23 CEST 2026 -->
<title>it.polimi.ingsw.gc14.Network.TCP.Server Class Hierarchy</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-06-19">
<meta name="description" content="tree: module: it.polimi.ingsw.gc14, package: it.polimi.ingsw.gc14.Network.TCP.Server">
<meta name="generator" content="javadoc/PackageTreeWriter">
<link rel="stylesheet" type="text/css" href="../../../../../../../../resource-files/jquery-ui.min.css">
<link rel="stylesheet" type="text/css" href="../../../../../../../../resource-files/stylesheet.css">
<script type="text/javascript" src="../../../../../../../../script-files/script.js"></script>
<script type="text/javascript" src="../../../../../../../../script-files/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../../../../../../script-files/jquery-ui.min.js"></script>
</head>
<body class="package-tree-page">
<script type="text/javascript">const pathtoroot = "../../../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="nav-content">
<div class="nav-menu-button"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button></div>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../../../module-summary.html">Module</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Tree</li>
<li><a href="../../../../../../../../index-files/index-1.html">Index</a></li>
<li><a href="../../../../../../../../search.html">Search</a></li>
<li><a href="../../../../../../../../help-doc.html#tree">Help</a></li>
</ul>
</div>
</div>
<div class="sub-nav">
<div class="nav-content">
<ol class="sub-nav-list">
<li><a href="../../../../../../../module-summary.html">it.polimi.ingsw.gc14</a></li>
<li><a href="package-summary.html" class="current-selection">it.polimi.ingsw.gc14.Network.TCP.Server</a></li>
</ol>
<div class="nav-list-search"><input type="text" id="search-input" disabled placeholder="Search documentation (type /)" aria-label="Search in documentation" autocomplete="off" spellcheck="false"><input type="reset" id="reset-search" disabled value="Reset"></div>
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="main-grid">
<main role="main">
<div class="header">
<h1 class="title">Hierarchy For Package it.polimi.ingsw.gc14.Network.TCP.Server</h1>
</div>
<span class="package-hierarchy-label">Package Hierarchies:</span>
<ul class="horizontal contents-list">
<li><a href="../../../../../../../../overview-tree.html">All Packages</a></li>
</ul>
<section class="hierarchy">
<h2 title="Class Hierarchy">Class Hierarchy</h2>
<ul>
<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
<ul>
<li class="circle">it.polimi.ingsw.gc14.Network.TCP.Server.<a href="ClientHandler.html" class="type-name-link" title="class in it.polimi.ingsw.gc14.Network.TCP.Server">ClientHandler</a> (implements java.lang.<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Runnable.html" title="class or interface in java.lang" class="external-link">Runnable</a>)</li>
<li class="circle">it.polimi.ingsw.gc14.Network.TCP.Server.<a href="HeartbeatHandler.html" class="type-name-link" title="class in it.polimi.ingsw.gc14.Network.TCP.Server">HeartbeatHandler</a> (implements java.lang.<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Runnable.html" title="class or interface in java.lang" class="external-link">Runnable</a>)</li>
<li class="circle">it.polimi.ingsw.gc14.Network.TCP.Server.<a href="TCPServer.html" class="type-name-link" title="class in it.polimi.ingsw.gc14.Network.TCP.Server">TCPServer</a></li>
</ul>
</li>
</ul>
</section>
</main>
</div>
</body>
</html>
@@ -0,0 +1,131 @@
<!DOCTYPE HTML>
<html lang="it">
<head>
<!-- Generated by javadoc (25) on Fri Jun 19 23:05:23 CEST 2026 -->
<title>it.polimi.ingsw.gc14.Network</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-06-19">
<meta name="description" content="declaration: module: it.polimi.ingsw.gc14, package: it.polimi.ingsw.gc14.Network">
<meta name="generator" content="javadoc/PackageWriter">
<link rel="stylesheet" type="text/css" href="../../../../../../resource-files/jquery-ui.min.css">
<link rel="stylesheet" type="text/css" href="../../../../../../resource-files/stylesheet.css">
<script type="text/javascript" src="../../../../../../script-files/script.js"></script>
<script type="text/javascript" src="../../../../../../script-files/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../../../../script-files/jquery-ui.min.js"></script>
</head>
<body class="package-declaration-page">
<script type="text/javascript">const pathtoroot = "../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="nav-content">
<div class="nav-menu-button"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button></div>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../module-summary.html">Module</a></li>
<li class="nav-bar-cell1-rev">Package</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
<li><a href="../../../../../../search.html">Search</a></li>
<li><a href="../../../../../../help-doc.html#package">Help</a></li>
</ul>
</div>
</div>
<div class="sub-nav">
<div class="nav-content">
<ol class="sub-nav-list">
<li><a href="../../../../../module-summary.html">it.polimi.ingsw.gc14</a></li>
<li><a href="package-summary.html" class="current-selection">it.polimi.ingsw.gc14.Network</a></li>
</ol>
<div class="nav-list-search"><input type="text" id="search-input" disabled placeholder="Search documentation (type /)" aria-label="Search in documentation" autocomplete="off" spellcheck="false"><input type="reset" id="reset-search" disabled value="Reset"></div>
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="main-grid">
<nav role="navigation" class="toc" aria-label="Table of contents">
<div class="toc-header">Contents</div>
<ol class="toc-list" tabindex="-1">
<li><a href="#" tabindex="0">Description</a></li>
<li><a href="#related-package-summary" tabindex="0">Related Packages</a></li>
<li><a href="#class-summary" tabindex="0">Classes and Interfaces</a></li>
</ol>
<button class="hide-sidebar"><span>Hide sidebar&nbsp;</span><img src="../../../../../../resource-files/left.svg" alt="Hide sidebar"></button><button class="show-sidebar"><img src="../../../../../../resource-files/right.svg" alt="Show sidebar"><span>&nbsp;Show sidebar</span></button></nav>
<main role="main">
<div class="header">
<h1 title="Package it.polimi.ingsw.gc14.Network" class="title">Package it.polimi.ingsw.gc14.Network</h1>
</div>
<hr>
<div class="horizontal-scroll">
<div class="package-signature">package <span class="element-name">it.polimi.ingsw.gc14.Network</span></div>
</div>
<section class="summary">
<ul class="summary-list">
<li>
<div id="related-package-summary">
<div class="caption"><span>Related Packages</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Package</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><a href="../package-summary.html">it.polimi.ingsw.gc14</a></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><a href="NetworkEvents/package-summary.html">it.polimi.ingsw.gc14.Network.NetworkEvents</a></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><a href="../Controller/package-summary.html">it.polimi.ingsw.gc14.Controller</a></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><a href="../Model/package-summary.html">it.polimi.ingsw.gc14.Model</a></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><a href="../View/package-summary.html">it.polimi.ingsw.gc14.View</a></div>
<div class="col-last even-row-color">&nbsp;</div>
</div>
</div>
</li>
<li>
<div id="class-summary">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="class-summary-tab0" role="tab" aria-selected="true" aria-controls="class-summary.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary', 2)" class="active-table-tab">All Classes and Interfaces</button><button id="class-summary-tab1" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab1', 2)" class="table-tab">Interfaces</button><button id="class-summary-tab2" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab2', 2)" class="table-tab">Classes</button><button id="class-summary-tab3" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab3', 2)" class="table-tab">Enum Classes</button></div>
<div id="class-summary.tabpanel" role="tabpanel" aria-labelledby="class-summary-tab0">
<div class="summary-table two-column-summary">
<div class="table-header col-first">Class</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="CompositeClientBroadcaster.html" title="class in it.polimi.ingsw.gc14.Network">CompositeClientBroadcaster</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">Forwards every notification to both the RMI and the TCP transport layers.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab3"><a href="EventType.html" title="enum class in it.polimi.ingsw.gc14.Network">EventType</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab3">
<div class="block">Represents the different types of network events that can be sent between
client and server.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab1"><a href="IClient.html" title="interface in it.polimi.ingsw.gc14.Network">IClient</a></div>
<div class="col-last even-row-color class-summary class-summary-tab1">
<div class="block">Defines the operations that a client can request during the game.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="InterfaceResolver.html" title="class in it.polimi.ingsw.gc14.Network">InterfaceResolver</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<div class="block">Utility class for resolving the local network interface to use when connecting to a server.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="NetworkConfig.html" title="class in it.polimi.ingsw.gc14.Network">NetworkConfig</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">Shared network constants used by both server and client components.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="NetworkEvent.html" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<div class="block">Represents an event sent over the network.</div>
</div>
</div>
</div>
</div>
</li>
</ul>
</section>
</main>
</div>
</body>
</html>
@@ -0,0 +1,97 @@
<!DOCTYPE HTML>
<html lang="it">
<head>
<!-- Generated by javadoc (25) on Fri Jun 19 23:05:23 CEST 2026 -->
<title>it.polimi.ingsw.gc14.Network Class Hierarchy</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-06-19">
<meta name="description" content="tree: module: it.polimi.ingsw.gc14, package: it.polimi.ingsw.gc14.Network">
<meta name="generator" content="javadoc/PackageTreeWriter">
<link rel="stylesheet" type="text/css" href="../../../../../../resource-files/jquery-ui.min.css">
<link rel="stylesheet" type="text/css" href="../../../../../../resource-files/stylesheet.css">
<script type="text/javascript" src="../../../../../../script-files/script.js"></script>
<script type="text/javascript" src="../../../../../../script-files/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../../../../script-files/jquery-ui.min.js"></script>
</head>
<body class="package-tree-page">
<script type="text/javascript">const pathtoroot = "../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="nav-content">
<div class="nav-menu-button"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button></div>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../module-summary.html">Module</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Tree</li>
<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
<li><a href="../../../../../../search.html">Search</a></li>
<li><a href="../../../../../../help-doc.html#tree">Help</a></li>
</ul>
</div>
</div>
<div class="sub-nav">
<div class="nav-content">
<ol class="sub-nav-list">
<li><a href="../../../../../module-summary.html">it.polimi.ingsw.gc14</a></li>
<li><a href="package-summary.html" class="current-selection">it.polimi.ingsw.gc14.Network</a></li>
</ol>
<div class="nav-list-search"><input type="text" id="search-input" disabled placeholder="Search documentation (type /)" aria-label="Search in documentation" autocomplete="off" spellcheck="false"><input type="reset" id="reset-search" disabled value="Reset"></div>
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="main-grid">
<main role="main">
<div class="header">
<h1 class="title">Hierarchy For Package it.polimi.ingsw.gc14.Network</h1>
</div>
<span class="package-hierarchy-label">Package Hierarchies:</span>
<ul class="horizontal contents-list">
<li><a href="../../../../../../overview-tree.html">All Packages</a></li>
</ul>
<section class="hierarchy">
<h2 title="Class Hierarchy">Class Hierarchy</h2>
<ul>
<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
<ul>
<li class="circle">it.polimi.ingsw.gc14.Network.<a href="CompositeClientBroadcaster.html" class="type-name-link" title="class in it.polimi.ingsw.gc14.Network">CompositeClientBroadcaster</a></li>
<li class="circle">it.polimi.ingsw.gc14.Network.<a href="InterfaceResolver.html" class="type-name-link" title="class in it.polimi.ingsw.gc14.Network">InterfaceResolver</a></li>
<li class="circle">it.polimi.ingsw.gc14.Network.<a href="NetworkConfig.html" class="type-name-link" title="class in it.polimi.ingsw.gc14.Network">NetworkConfig</a></li>
<li class="circle">it.polimi.ingsw.gc14.Network.<a href="NetworkEvent.html" class="type-name-link" title="class in it.polimi.ingsw.gc14.Network">NetworkEvent</a> (implements java.io.<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)</li>
</ul>
</li>
</ul>
</section>
<section class="hierarchy">
<h2 title="Interface Hierarchy">Interface Hierarchy</h2>
<ul>
<li class="circle">it.polimi.ingsw.gc14.Network.<a href="IClient.html" class="type-name-link" title="interface in it.polimi.ingsw.gc14.Network">IClient</a></li>
</ul>
</section>
<section class="hierarchy">
<h2 title="Enum Class Hierarchy">Enum Class Hierarchy</h2>
<ul>
<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
<ul>
<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Enum.html" class="type-name-link external-link" title="class or interface in java.lang">Enum</a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Comparable.html" title="class or interface in java.lang" class="external-link">Comparable</a>&lt;T&gt;, java.lang.constant.<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/constant/Constable.html" title="class or interface in java.lang.constant" class="external-link">Constable</a>, java.io.<a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)
<ul>
<li class="circle">it.polimi.ingsw.gc14.Network.<a href="EventType.html" class="type-name-link" title="enum class in it.polimi.ingsw.gc14.Network">EventType</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</section>
</main>
</div>
</body>
</html>