TCP server responsible for accepting client connections,
+handling player registration and reconnection, and sending
+game updates to connected clients.
"ID 0 \u2014 Each time you complete a set of 6 different Character cards, take 5 \ud83c\udf56. (Sets completed before acquiring don\'t count.)\nID 1 \u2014 During the Sustenance Event, pay 1 less \ud83c\udf56 for each Artist/Inventor/Gatherer in your tribe.\nID 2 \u2014 During the Shamanic Ritual Event, you do not lose Prestige Points if you have fewer \u2b50 than all other players.\nID 3 \u2014 When you move your Totem to a Food-bonus space, take 1 extra \ud83c\udf56. If placed last, pay 1 \ud83c\udf56 normally (no effect).\nID 4 \u2014 Each time you obtain a pair of identical Inventors (same icon), take 3 \ud83c\udf56. (Pairs owned before don\'t count.)\nID 5 \u2014 During the Shamanic Ritual Event, your tribe has 3 additional \u2b50 icons.\nID 6 \u2014 During the Shamanic Ritual Event, if you have more \u2b50 than any other player, gain double Prestige. Ties still count.\nID 7 \u2014 During the Hunt Event, take 1 \ud83c\udf56 and gain 1 extra Prestige Point for each Hunter in your tribe.\nID 8 \u2014 At end of game, gain double the Prestige Points shown on Builder cards in your tribe.\nID 9 \u2014 During the Cave Paintings Event, take 1 \ud83c\udf56 for each Artist in your tribe.\nID 10 \u2014 At end of game, gain 6 Prestige Points for each complete set of 6 different Character cards.\nID 11 \u2014 At end of game, gain the indicated Prestige Points for each Character card of the indicated type.\nID 12 \u2014 After all Totems return to Turn Order (before End of Round), take 1 Character or 1 Building card from the top row (paying its cost).\nID 13 \u2014 At end of game, gain 25 Prestige Points."
"INVENTORS \u2014 At end of game, gain PP equal to (number of Inventors) \u00d7 (number of different Invention icons).\n There are 10 different Invention icons.\n\nGATHERERS \u2014 During Sustenance, each Gatherer gives a 3\ud83c\udf56 discount on what you owe.\n Note: you do not take any Food from Gatherers under any circumstances.\n\nSHAMANS \u2014 Each Shaman shows 1\u20133 \ud83c\udf1f icons. During Shamanic Ritual, majority = gain PP; minority = lose PP.\n\nBUILDERS \u2014 During the game, each Builder reduces the \ud83c\udf56 cost of every Building card by the amount\n shown in the top-right corner. At end of game, each Builder gives the PP shown in the bottom-left corner.\n\nARTISTS \u2014 During Cave Paintings, gain or lose PP based on Artist count (see \'details events\').\n At end of game, gain 10 PP for every 2 Artists in your tribe.\n\nHUNTERS \u2014 Adding a Hunter without the \ud83c\udf56 icon: nothing. Adding a Hunter WITH the \ud83c\udf56 icon:\n immediately take 1 \ud83c\udf56 for each Hunter in your tribe (with or without the icon).\n During Hunt Event, take \ud83c\udf56 and gain PP based on your Hunter count (see \'details events\')."
"SUSTENANCE \u2014 Pay 1 \ud83c\udf56 per Character (Buildings don\'t count). If you can\'t feed all Characters, lose the\n Prestige Points shown on the card for each one you couldn\'t feed. Each Gatherer gives a 3\ud83c\udf56 discount.\n You cannot choose to lose PP to avoid paying Food. Sustenance resolves last if multiple Events occur.\n\nHUNT \u2014 Take 1 \ud83c\udf56 and gain the Prestige Points shown on the card for each Hunter in your tribe.\n\nSHAMANIC RITUAL \u2014 Player with the most \ud83c\udf1f icons gains the Prestige Points on the card.\n Player with the fewest \ud83c\udf1f icons loses those Prestige Points. In case of a tie, all tied players gain/lose.\n\nCAVE PAINTINGS \u2014 If you have fewer Artists than the top-line threshold, lose the indicated Prestige Points.\n If you meet the bottom-line threshold, gain the indicated Prestige Points for each Artist in your tribe."
+Starting from the Overview page, you can browse the documentation using the links in each page, and in the navigation bar at the top of each page. The Index and Search box allow you to navigate to specific declarations and summary pages, including: All Packages, All Classes and Interfaces
+
+
Search
+
You can search for definitions of modules, packages, types, fields, methods, system properties and other terms defined in the API. These items can be searched using part or all of the name, optionally using "camelCase" abbreviations, or multiple search terms separated by whitespace. Some examples:
Documentation pages provide keyboard shortcuts to facilitate access to common navigation tasks.
+
+
Type
+/
+ to access the search input field in any page.
+
Type
+.
+ to access the filter input field in the sidebar of class pages.
+
Type
+Esc
+ to clear the input and release keyboard focus in any input field.
+
Type
+Tab
+/
+↓
+/
+↑
+ to select list items after entering a search term in a search or filter input field.
+
Type
+←
+/
+→
+ to switch between tabs in tabbed summary tables.
+
+
+
+
+
+
Kinds of Pages
+The following sections describe the different kinds of pages in this collection.
+
+
Module
+
Each module has a page that contains a list of its packages, dependencies on other modules, and services, with a summary for each. These pages may contain the following categories:
+
+
Packages
+
Modules
+
Services
+
+
+
+
Package
+
Each package has a page that contains a list of its classes and interfaces, with a summary for each. These pages may contain the following categories:
+
+
Interfaces
+
Classes
+
Enum Classes
+
Exception Classes
+
Annotation Interfaces
+
+
+
+
Class or Interface
+
Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a declaration and description, member summary tables, and detailed member descriptions. Entries in each of these sections are omitted if they are empty or not applicable.
+
+
Class Inheritance Diagram
+
Direct Subclasses
+
All Known Subinterfaces
+
All Known Implementing Classes
+
Class or Interface Declaration
+
Class or Interface Description
+
+
+
+
Nested Class Summary
+
Enum Constant Summary
+
Field Summary
+
Property Summary
+
Constructor Summary
+
Method Summary
+
Required Element Summary
+
Optional Element Summary
+
+
+
+
Enum Constant Details
+
Field Details
+
Property Details
+
Constructor Details
+
Method Details
+
Element Details
+
+
Note: Annotation interfaces have required and optional elements, but not methods. Only enum classes have enum constants. The components of a record class are displayed as part of the declaration of the record class. Properties are a feature of JavaFX.
+
The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.
+
+
+
Other Files
+
Packages and modules may contain pages with additional information related to the declarations nearby.
+
+
+
Tree (Class Hierarchy)
+
There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. Classes are organized by inheritance structure starting with java.lang.Object. Interfaces do not inherit from java.lang.Object.
+
+
When viewing the Overview page, clicking on TREE displays the hierarchy for all packages.
+
When viewing a particular package, class or interface page, clicking on TREE displays the hierarchy for only that package.
Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to those who implement rather than use the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See Also" section of the class description.
+
+
+
All Packages
+
The All Packages page contains an alphabetic index of all packages contained in the documentation.
+
+
+
All Classes and Interfaces
+
The All Classes and Interfaces page contains an alphabetic index of all classes and interfaces contained in the documentation, including annotation interfaces, enum classes, and record classes.
+
+
+
Index
+
The Index contains an alphabetic index of all classes, interfaces, constructors, methods, and fields in the documentation, as well as summary pages such as All Packages, All Classes and Interfaces.
+
+
+
+
+
Release Details
+
The details for each module, package, class or interface normally include the release in which the declaration was introduced.
+
When a member is added after the initial introduction of the enclosing class or interface, the details of the member include the release in which it was introduced.
+
+
+This help file applies to API documentation generated by the standard doclet.
+
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.
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.
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.
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.
Initializes all server components, wires them together, restores a saved
+game if available, and starts the event-processing loop and both network
+servers.
Determines what to broadcast after a successful event application:
+
+ If the round advanced, an ApplyNextRound event (with updated
+ card lists) replaces the original event.
+ If the game has ended, an EndedGame event is sent and the
+ save file is deleted.
+ Otherwise the original event is broadcast as-is.
+
TCP server responsible for accepting client connections,
+handling player registration and reconnection, and sending
+game updates to connected clients.
Advances the simulation by one frame: pre-warms on first call, spawns new particles,
+steps existing ones, removes dead ones, and updates their visual state.
Creates a ClientHandler, registers it in pendingHeartbeat
+and clientHandlers, but does NOT start its thread — callers start
+the thread after any extra setup (e.g. sending a model snapshot).
Requests to draw a tribe card from the upper list.
+
+
The request is forwarded to the network client; the server validates it.
+
+
Parameters:
+
pos - the index of the card to draw.
+
+
+
+
+
+
+
drawLowerTribeCard
+
+
publicvoiddrawLowerTribeCard(int pos)
+
Requests to draw a tribe card from the lower list.
+
+
The request is forwarded to the network client; the server validates it.
+
+
Parameters:
+
pos - the index of the card to draw.
+
+
+
+
+
+
+
drawUpperBuildingCard
+
+
publicvoiddrawUpperBuildingCard(int pos)
+
Requests to draw a building card from the upper list.
+
+
The request is forwarded to the network client; the server validates it.
+
+
Parameters:
+
pos - the index of the card to draw.
+
+
+
+
+
+
+
drawLowerBuildingCard
+
+
publicvoiddrawLowerBuildingCard(int pos)
+
Requests to draw a building card from the lower list.
+
+
The request is forwarded to the network client; the server validates it.
+
+
Parameters:
+
pos - the index of the card to draw.
+
+
+
+
+
+
+
skipTurn
+
+
publicvoidskipTurn()
+
Requests to skip the current turn.
+
+
The request is forwarded to the network client; the server validates it.
+
+
+
+
+
+
slotChoice
+
+
publicvoidslotChoice(int pos)
+
Requests the selection of a slot by the specified player.
+
+
The request is forwarded to the network client; the server validates it.
+
+
Parameters:
+
pos - the index of the selected slot.
+
+
+
+
+
+
+
totemChoice
+
+
publicvoidtotemChoice(int pos)
+
Handles the selection of a totem by the specified player.
+
+
If the specified player is not the current player, an error message
+is shown. Otherwise, the selected totem is retrieved from the available
+totems list and the choice is forwarded to the network client.
+
+
Parameters:
+
pos - the index of the selected totem in the available totems list.
+
+
+
+
+
+
+
disconnect
+
+
publicvoiddisconnect()
+
Notifies the server of a voluntary disconnection and closes the
+network client connection.
Returns the enum constant of this class with the specified name.
+The string must match exactly an identifier used to declare an
+enum constant in this class. (Extraneous whitespace characters are
+not permitted.)
+
+
Parameters:
+
name - the name of the enum constant to be returned.
Processes game events from the action queue and routes each one
+based on the current game state.
+
+
The three top-level states that determine routing are:
+
+
Inactive – no game model is present, or the game has ended.
+ Only disconnection cleanup is performed.
+
Suspended – a forfeit timer is running because exactly one
+ player remains online. Only reconnection events are accepted.
+
Active – normal gameplay; every event is applied, saved,
+ and broadcast.
+
+
+
This class is not thread-safe by itself: it relies on the caller
+(the game loop in ServerLauncher) to drive it from a single
+thread via doFirstEvent().
Determines what to broadcast after a successful event application:
+
+ If the round advanced, an ApplyNextRound event (with updated
+ card lists) replaces the original event.
+ If the game has ended, an EndedGame event is sent and the
+ save file is deleted.
+ Otherwise the original event is broadcast as-is.
+
Cancels the forfeit timer, clears the player list, and resets the model.
+Called when the last remaining player disconnects while the game is suspended.
public class LimitedMap<K,V>
+extends Object
+implements Map<K,V>
+
A ConcurrentHashMap-backed map with a configurable size limit and an associated action.
+When the number of elements reaches or exceeds the limit, the specified action is automatically triggered.
+This implementation is thread-safe for put; callers that need compound operations must synchronize externally.
+
+
+
+
+
+
+
+
Nested Class Summary
+
+
Nested classes/interfaces inherited from interface Map
Associates the specified value with the specified key in this map.
+If the map size reaches or exceeds the limit after the insertion, the configured action is triggered.
Returns the enum constant of this class with the specified name.
+The string must match exactly an identifier used to declare an
+enum constant in this class. (Extraneous whitespace characters are
+not permitted.)
+
+
Parameters:
+
name - the name of the enum constant to be returned.
Applies the effect of this building card to the specified player.
+
+
The effect grants 6 Prestige Points for each complete set of character
+cards owned by the player, where a complete set contains one card of each
+CharacterType.
Applies the effect of this building card to the specified player.
+The effect grants prestige points equal to the number of cards of the
+associated CharacterType owned by the player, multiplied by the prestige multiplier.
Represents a generic building card in the game.
+
+
A building card is a playable card with a price and a specific building
+effect. Concrete building cards extend this class to define their own
+behavior.
publicBuildingCard(int effectId,
+ int era,
+ int price,
+ int prestigeValue)
+ throws IllegalArgumentException
+
Creates a building card with the specified effect identifier, era, price,
+and prestige value.
+The effect type is determined from the given effect identifier.
+
+
Parameters:
+
effectId - the identifier of the effect associated with the building card.
+
era - the era of the building card.
+
price - the price of the building card.
+
prestigeValue - the prestige value of the building card.
+
Throws:
+
IllegalArgumentException - if the effect identifier is not valid,
+ if price <= 0, or if prestigeValue < 0
+
+
+
+
+
+
+
BuildingCard
+
+
publicBuildingCard(String idIMG,
+ int effectId,
+ int era,
+ int price,
+ int prestigeValue)
+ throws IllegalArgumentException
+
Creates a building card with the specified image id, effect identifier, era,
+price, and prestige value.
+
+
The effect type is determined from the given effect identifier.
+
+
Parameters:
+
idIMG - the image identifier of the building card.
+
effectId - the identifier of the effect associated with the building card.
+
era - the era of the building card.
+
price - the price of the building card.
+
prestigeValue - the prestige value of the building card.
+
Throws:
+
IllegalArgumentException - if the effect identifier is not valid,
+ if price <= 0, or if prestigeValue < 0.
+
+
+
+
+
+
+
+
+
+
+
Method Details
+
+
+
+
getPrice
+
+
publicintgetPrice()
+
Returns the price of this building card.
+
+
Returns:
+
the price of this building card.
+
+
+
+
+
+
+
getPrestigeValue
+
+
publicintgetPrestigeValue()
+
Returns the prestige value of this building card.
+
+
Returns:
+
the prestige value of this building card.
+
+
+
+
+
+
+
getEffectId
+
+
publicintgetEffectId()
+
Returns the identifier of the effect associated with this building card.
Attempts to buy this building card for the specified player.
+
+
The effective cost is reduced by the total reduction value provided
+by the player's Builder cards, without dropping below zero. The purchase
+succeeds only if the card has not already been bought and the player can
+pay the resulting amount of Food. If successful, the card is added to
+the player's building cards and marked as bought.
+
+
Parameters:
+
player - the player attempting to buy the building card.
+
Returns:
+
true if the building card is successfully bought,
+ false otherwise.
Abstract base class for all tribe cards.
+A TribeCard is a PlayableCard that may either be an event card
+or a non-event card, and may optionally specify a minimum number of players.
Returns the enum constant of this class with the specified name.
+The string must match exactly an identifier used to declare an
+enum constant in this class. (Extraneous whitespace characters are
+not permitted.)
+
+
Parameters:
+
name - the name of the enum constant to be returned.
Describes whether the Hunter Icon is present or not. Whenever an
+Hunter with an Hunter Icon is added to the tribe, 1 Food token is awarded for each Hunter in the tribe
+(with or without an icon).
+
+
+
+
+
+
+
+
+
+
Constructor Details
+
+
+
+
Hunter
+
+
publicHunter(int Era,
+ boolean icon)
+
Creates a Hunter character card with the specified era and icon value.
+
+
Parameters:
+
Era - the era of the Hunter card.
+
icon - the icon value of the Hunter card.
+
+
+
+
+
+
+
Hunter
+
+
publicHunter(int Era,
+ boolean icon,
+ int nMin)
+
Creates a Hunter character card with the specified era, icon value,
+and minimum number of players.
+
+
Parameters:
+
Era - the era of the Hunter card.
+
icon - the icon value of the Hunter card.
+
nMin - the minimum number of players required for the card.
+
+
+
+
+
+
+
Hunter
+
+
publicHunter(String idIMG,
+ int Era,
+ boolean icon)
+
Creates a Hunter character card with the specified image id, era and icon value.
+
+
Parameters:
+
idIMG - the image identifier of the Hunter card.
+
Era - the era of the Hunter card.
+
icon - the icon value of the Hunter card.
+
+
+
+
+
+
+
Hunter
+
+
publicHunter(String idIMG,
+ int Era,
+ boolean icon,
+ int nMin)
+
Creates a Hunter character card with the specified image id, era, icon value,
+and minimum number of players.
+
+
Parameters:
+
idIMG - the image identifier of the Hunter card.
+
Era - the era of the Hunter card.
+
icon - the icon value of the Hunter card.
+
nMin - the minimum number of players required for the card.
+
+
+
+
+
+
+
+
+
+
+
Method Details
+
+
+
+
getIcon
+
+
publicbooleangetIcon()
+
Returns whether this Hunter card has the icon.
+
+
Returns:
+
true if this Hunter card has the icon, false otherwise.
Inserts this Hunter card into the specified player's Hunter collection.
+
+
If this card has the Hunter icon, the player gains 1 food for each
+Hunter currently in their tribe. The method also applies any building
+effects triggered by character set completion.
The number of star Icons the card possesses.
+During the Shamanic Ritual Event, having the
+majority of these icons provides Prestige Points;
+having the minority, on the other hand, results in
+losing Prestige Points.
+
+
+
+
+
+
+
+
+
+
Constructor Details
+
+
+
+
Shaman
+
+
publicShaman(int Era,
+ int icon)
+
Creates a Shaman character card with the specified era and icon value.
+
+
Parameters:
+
Era - the era of the Shaman card.
+
icon - the icon value of the Shaman card.
+
+
+
+
+
+
+
Shaman
+
+
publicShaman(int Era,
+ int icon,
+ int nMin)
+
Creates a Shaman character card with the specified era, icon value,
+and minimum number of players.
+
+
Parameters:
+
Era - the era of the Shaman card.
+
icon - the icon value of the Shaman card.
+
nMin - the minimum number of players required for the card.
Returns the enum constant of this class with the specified name.
+The string must match exactly an identifier used to declare an
+enum constant in this class. (Extraneous whitespace characters are
+not permitted.)
+
+
Parameters:
+
name - the name of the enum constant to be returned.
Activates the CavePaintings event for the specified list of players.
+For each player, the number of Artist cards is computed together with the number
+of owned building cards having effect id equal to 9.
+The player gains Food equal to the number of such buildings multiplied by the number of Artist cards.
+If the player has fewer Artist cards than nLower, the player loses nPrestigeRem Prestige.
+Otherwise, the player gains Prestige equal to nPrestigeMul multiplied by the number of Artist cards.
Activates the event card "Hunt".
+Each player gains Food and Prestige Points for each Hunter in their tribe,
+multiplied by the respective multipliers (base food per hunter is 1).
+Buildings influence:
+ Building 7: adds 1 to both the food and prestige multiplier for each copy owned.
Activates the event card "Shamanic Ritual".
+The player with the most icons gains the Prestige Points indicated.
+The player with the fewest icons loses the Prestige Points indicated.
+In case of a tie, all players gain or lose the Prestige Points indicated.
+If all players have the same amount of icons, they all gain and lose Prestige Points.
+Buildings influence:
+ Building 2: if you have the lowest number of icons, you don't lose Prestige Points
+ Building 5: during the Shamanic Ritual, you gain 3 icons
+ Building 6: if you have more icons than any other player, you gain double of Prestige Points
Prints a string representation of this TribeCard. This specific variation is used in the Game's
+toString to print a more detailed version.
+Includes:
+
Activates the Sustenance event for the specified list of players.
+For each player, the required Food is computed from the total number of characters,
+reduced by the contribution of Gatherers and by any applicable character discounts
+granted by owned building cards with effect id equal to 1.
+If the resulting Food debt is positive, the player must pay it with available Food.
+If the player does not have enough Food, all remaining Food is removed and the player
+loses Prestige equal to the unpaid Food debt multiplied by prestigeDebt.
+This event is intended to be executed last among event effects.
Prints a string representation of this TribeCard. This specific variation is used in the Game's
+toString to print a more detailed version.
+Includes:
+
private static class DecksCreator.BuildingCardDefinition
+extends Object
+
Internal data class representing the raw definition of a building card as loaded from a JSON file.
+Contains the card identifier, effect ID, era, price, prestige value, and a list of additional parameters.
private static class DecksCreator.TribeCardDefinition
+extends Object
+
Internal data class representing the raw definition of a tribe card as loaded from a JSON file.
+Contains the card identifier, type, era, whether it is armed, whether it is an event card,
+and a list of additional parameters.
Utility class responsible for loading and creating decks of cards and slots for the game.
+Cards are loaded from JSON resource files and instantiated according to their type and parameters.
Instantiates a TribeCard from the given definition.
+Depending on whether the card is an event or a character, the appropriate subclass is created
+using the type and parameters specified in the definition.
Instantiates a BuildingCard from the given definition.
+The appropriate subclass is selected based on the effect ID specified in the definition.
+If no specific subclass matches the effect ID, a base BuildingCard is created.
Represents the main game model.
+A Game object stores the players, the current state of the match,
+the slot assignments, the board, and the logic required to manage the game flow.
Assigns the selected totem to the specified player during the totem choice phase.
+
+
The choice is accepted only if the game is currently in the
+GameStages.TOTEM_CHOICE stage, the player is the current one,
+and the selected totem is still available.
+
+
After a valid choice, the method advances to the next player in the queue.
+If all players have completed the selection, the game moves to the slot choice phase.
+Disconnected players are automatically assigned a random available totem.
+
+
Parameters:
+
player - the player making the totem choice.
+
totem - the selected totem.
+
Returns:
+
true if the choice is applied successfully, false otherwise.
Marks the specified player as disconnected and updates the game flow accordingly.
+
+
If the player disconnects during the waiting phase, they are removed from
+the player list and from the totem choice queue. If the disconnected player is
+the current one, the game advances to the next suitable player or, during the
+totem choice phase, handles the remaining selection flow automatically.
+
+
Parameters:
+
player - the player who disconnected.
+
Returns:
+
true if the disconnection is handled successfully,
+ false if the player was already marked as disconnected.
If the player reconnects during the slot choice phase, they are removed
+from the disconnected players map and reinserted into the order logic card
+when necessary.
+
+
Parameters:
+
player - the player who reconnected.
+
Returns:
+
true if the reconnection is handled successfully,
+ false if the player was not previously marked as disconnected.
+
+
+
+
+
+
+
clearDisconnected
+
+
publicvoidclearDisconnected()
+
Clears the collection of disconnected players.
+
+
+
+
+
+
getCurrentPlayerNumber
+
+
publicintgetCurrentPlayerNumber()
+
Returns the current number of players participating in the game.
Attempts to add the specified player to the game.
+The operation succeeds only if the configured number of players is not 0,
+the current game stage is WAITING, and the player is not already present.
+If the number of players reaches the configured maximum, the game is initialized.
+
+
Parameters:
+
player - the player to add to the game.
+
Returns:
+
true if the player is successfully added, false otherwise.
+
+
+
+
+
+
+
init
+
+
publicvoidinit()
+
Initializes the game after all required players have been added.
+The method creates the appropriate order logic card according to the number of players,
+selects the first current player, and updates the game stage to SLOT_CHOICE.
+
+
+
+
+
+
slotChoiceByIndex
+
+
publicbooleanslotChoiceByIndex(Player player,
+ int slotIndex)
+
Attempts to assign the slot at the specified index to the specified player.
+The operation succeeds only if the index is valid, the current game stage is SLOT_CHOICE,
+the specified player is the current player, and the selected slot is not already assigned.
+If the slot is successfully assigned, the next player setup is triggered.
+
+
Parameters:
+
player - the player performing the slot choice.
+
slotIndex - the index of the selected slot.
+
Returns:
+
true if the slot choice succeeds, false otherwise.
+
+
+
+
+
+
+
drawUpperTribeCardByIndex
+
+
publicbooleandrawUpperTribeCardByIndex(Player player,
+ int cardIndex)
+
Attempts to draw the upper tribe card at the specified index for the specified player.
+The operation succeeds only if the index is valid, the game stage is RESOLVING_ACTIONS,
+the specified player is the current player, at least one upper card draw is still available,
+and the selected tribe card is not an event card.
+If successful, the card is inserted into the player's collection, removed from the board,
+and the number of remaining upper draws is decremented.
+If both upper and lower draws become zero, the next player setup is triggered.
+
+
Parameters:
+
player - the player performing the draw.
+
cardIndex - the index of the upper tribe card to draw.
Skips the turn for the specified player when no drawable cards are available.
+The operation succeeds only if the current game stage is RESOLVING_ACTIONS,
+the specified player is the current player,
+and the player can't draw tribe card (i.e. all remaining lower tribe cards are event cards).
+
+
Parameters:
+
player - the player skipping the turn .
+
Returns:
+
true if the skip succeeds, false otherwise.
+
+
+
+
+
+
+
drawLowerTribeCardByIndex
+
+
publicbooleandrawLowerTribeCardByIndex(Player player,
+ int cardIndex)
+
Attempts to draw the lower tribe card at the specified index for the specified player.
+The operation succeeds only if the index is valid, the game stage is RESOLVING_ACTIONS,
+the specified player is the current player, at least one lower card draw is still available,
+and the selected tribe card is not an event card.
+If successful, the card is inserted into the player's collection, removed from the board,
+and the number of remaining lower draws is decremented.
+If both lower and upper draws become zero, the next player setup is triggered.
+
+
Parameters:
+
player - the player performing the draw.
+
cardIndex - the index of the lower tribe card to draw.
+
Returns:
+
true if the draw succeeds, false otherwise.
+
+
+
+
+
+
+
drawUpperBuildingCardByIndex
+
+
publicbooleandrawUpperBuildingCardByIndex(Player player,
+ int cardIndex)
+
Attempts to draw the upper building card at the specified index for the specified player.
+The operation succeeds only if the index is valid, the game stage is RESOLVING_ACTIONS,
+the specified player is the current player, at least one upper card draw is still available,
+and the selected building card can be bought by the player.
+If successful, the building card is removed from the board and the number of remaining upper draws is decremented.
+If both upper and lower draws become zero, the next player setup is triggered.
+
+
Parameters:
+
player - the player performing the draw.
+
cardIndex - the index of the upper building card to draw.
+
Returns:
+
true if the draw succeeds, false otherwise.
+
+
+
+
+
+
+
drawLowerBuildingCardByIndex
+
+
publicbooleandrawLowerBuildingCardByIndex(Player player,
+ int cardIndex)
+
Attempts to draw the lower building card at the specified index for the specified player.
+The operation succeeds only if the index is valid, the game stage is RESOLVING_ACTIONS,
+the specified player is the current player, at least one lower card draw is still available,
+and the selected building card can be bought by the player.
+If successful, the building card is removed from the board and the number of remaining lower draws is decremented.
+If both lower and upper draws become zero, the next player setup is triggered.
+
+
Parameters:
+
player - the player performing the draw.
+
cardIndex - the index of the lower building card to draw.
+
Returns:
+
true if the draw succeeds, false otherwise.
+
+
+
+
+
+
+
nextPlayerSetup
+
+
privatevoidnextPlayerSetup()
+
Prepares the next player and updates the game state according to the current game stage.
+If the current stage is SLOT_CHOICE, the next player is taken from the order logic card.
+If no player is available, the game stage is updated to RESOLVING_ACTIONS
+and the first assigned slot is selected.
+If the current stage is RESOLVING_ACTIONS, the current player is pushed back
+into the order logic card, the current slot is freed, and the next assigned slot is selected.
+If no assigned slots remain, the game stage is updated to OPTIONAL_CARD_EFFECT,
+the optional card queue is built from players owning building cards with effect id equal to 12,
+and the first player in that queue is selected.
+If no player is available for optional card resolution, the game stage is updated to
+RESOLVING_EVENT; then, if the round number is less than 10, the next round is prepared,
+otherwise event resolution is performed, the game stage is updated to ENDING,
+and the game is ended.
+If the current stage is OPTIONAL_CARD_EFFECT, the next player is taken from the optional card queue.
+If no player is available, the game stage is updated to RESOLVING_EVENT.
+
+
+
+
+
+
transitionToOptionalOrNextRound
+
+
privatevoidtransitionToOptionalOrNextRound()
+
Transitions the game to the optional card phase or directly to the next round.
+
+
Builds a queue of non-disconnected players who own Building 12 (optional card effect).
+If such players exist, the first one is set as the current player for their optional action.
+Otherwise, if the round counter is below 10, the next round begins and the game stage
+is set to GameStages.SLOT_CHOICE; if round 10 has been completed, the game ends.
+
+
+
+
+
+
hasDrawableUp
+
+
privatebooleanhasDrawableUp()
+
Checks whether there are any drawable upper tribe cards on the board,
+i.e. upper tribe cards that are not event cards.
+
+
Returns:
+
true if at least one non-event upper tribe card is available, false otherwise.
+
+
+
+
+
+
+
hasDrawableDown
+
+
privatebooleanhasDrawableDown()
+
Checks whether there are any drawable lower tribe cards on the board,
+i.e. lower tribe cards that are not event cards.
+
+
Returns:
+
true if at least one non-event lower tribe card is available, false otherwise.
+
+
+
+
+
+
+
eventResolution
+
+
privatevoideventResolution()
+
Resolves all pending event cards if the current game stage is RESOLVING_EVENT.
+All pending events are activated on the player list.
+Event cards of type SUSTENANCE are resolved after all other pending events.
+
+
+
+
+
+
nextRound
+
+
privatevoidnextRound()
+
Advances the game to the next round.
+The method first resolves pending events.
+If the current round is 10, the game stage is updated to ENDING and the game is ended.
+Otherwise, the era is updated if the board changes era, and the round number is incremented.
+
+
+
+
+
+
endGame
+
+
privatevoidendGame()
+
Ends the game by applying all final building effects owned by each player
+and updating the game stage to ENDED.
+
+
+
+
+
+
setNPlayer
+
+
publicbooleansetNPlayer(int nPlayers)
+
Sets the configured number of players for this game.
+The operation succeeds only if the current configured number of players is 0.
+
+
Parameters:
+
nPlayers - the new configured number of players.
+
Returns:
+
true if the number of players is updated, false otherwise.
+
+
+
+
+
+
+
endGameForfeit
+
+
publicvoidendGameForfeit()
+
Ends the game by forfeit and determines the final player standing.
+
+
The player who is still connected is declared the winner and placed
+in the first position of the final ranking. The remaining players are
+ordered by prestige value and, in case of a tie, by food value.
slotList contains the ordered list of slots (tiles). The slots changes based on the number of players.
+Each slot (tile) has special action as drawing from the upper/lower row or taking food.
The lower row of the tribe card. During the first round, there will be (num. of players + 1) character cards.
+During the following rounds, lower row will be emptied and populated with upper row's cards.
+When an Event card gets in the lower row, the event effect will be activated at the end of the round.
All building card lists grouped by era; index 0 = era 1, index 1 = era 2, etc.
+
+
+
+
+
+
nTotem
+
+
private finalintnTotem
+
Number of players
+
+
+
+
+
+
era
+
+
privateintera
+
Current era of the game
+
+
+
+
+
+
+
+
+
+
Constructor Details
+
+
+
+
Board
+
+
publicBoard(int nTotem)
+
Creates and initializes a new board:
+ - Generate the slotList using a method of DecksCreator.
+ - Generate the tribeDeck.
+ - Populate the lower list (if there is an event card, it's added to the upper list).
+ - Populate the upper list.
+ - Generate the buildingDeck using a method of DecksCreator.
Creates the tribeDeck. Loads the cards from each era, shuffle them, and then combine them in the final deck.
+In the end, two special events (Sustenance and ShamanicRitual) are added.
+
+
Parameters:
+
nPlayers - the number of players.
+
Returns:
+
a queue containing the cards in this order:
+ - Era 1.
+ - Era 2.
+ - Era 3.
+ - Special events.
Take the selected card from the lower building list of the board.
+
+
Parameters:
+
buildingCard - is the card to remove.
+
Returns:
+
true if succeed in removing the card.
+
+
+
+
+
+
+
nextRound
+
+
publicintnextRound()
+
Goes to the next round.
+ - Clear the lower tribe row.
+ - Moves the upper tribe row to the lower one.
+ - Populate the upper tribe row.
+
+
Returns:
+
the current era after moving to the next round.
+
+
+
+
+
+
+
nextEra
+
+
privatevoidnextEra()
+
Changes the era of the game:
+ - Increase the era attribute.
+ - Clear the lower building list and replace it with the upper building list.
+ - Repopulate the upper building list.
Represents the current state of the game.
+A CurrentState object stores the current player, slot, era, round,
+remaining upper and lower cards, and the current game stage.
Creates a new CurrentState object with default initial values.
+The initial player and slot are null, the era and round are set to 1,
+the number of upper and lower cards is set to 0, and the game stage is set to WAITING.
Updates the current player, slot, and available draws.
+If slot is null, both nUpper and nLower are reset to 0.
+Otherwise, they are set from the slot's values.
+
+
Parameters:
+
player - the new current player.
+
slot - the new current slot, or null when no slot is active.
Returns the enum constant of this class with the specified name.
+The string must match exactly an identifier used to declare an
+enum constant in this class. (Extraneous whitespace characters are
+not permitted.)
+
+
Parameters:
+
name - the name of the enum constant to be returned.
Lightweight representation of the game model shared with clients.
+
+
The mini model contains only the information required by the client-side
+view and controllers to render the current match state and process incoming
+network updates.
The list of OrderPlayer entries tracking turn order and played status.
+Protected so subclasses can read it for display purposes (e.g., Object.toString()).
Creates an order logic card with the specified list of players.
+
+
The input list is shuffled in place to establish a random initial turn order.
+This is intentional: the caller's list (typically Game.playersList) is
+reordered so that the game's canonical player sequence reflects the randomized order.
+
+
Parameters:
+
players - the list of players associated with this order logic card.
+ The list is mutated (shuffled) by this constructor.
Applies the building-related effect to the specified player.
+For each building card owned by the player with effect id equal to 3,
+the player gains 1 Food.
+
+
Parameters:
+
player - the player to whom the building effect is applied.
Removes value amount of Food from the Player.
+foodValue cannot go negative: returns false if
+value exceeds the current food and leaves the value unchanged.
+
+
Parameters:
+
value - The amount of Food to be removed. Should be non-negative.
+
Returns:
+
true if the Food is successfully removed, false otherwise.
Represents a slot with a specific identifier and associated values
+for upper cards, lower cards, food, and minimum number of players.
+The slot configuration depends on the specified slot identifier.
Creates a slot with the specified identifier.
+The slot values for Food, NLower, NUpper, and minimum number of players
+are determined by the given slot identifier.
Returns the string representation of this slot.
+The returned string includes the slot identifier, number of upper cards,
+number of lower cards, food value, and minimum number of players.
Returns the enum constant of this class with the specified name.
+The string must match exactly an identifier used to declare an
+enum constant in this class. (Extraneous whitespace characters are
+not permitted.)
+
+
Parameters:
+
name - the name of the enum constant to be returned.
Returns the enum constant of this class with the specified name.
+The string must match exactly an identifier used to declare an
+enum constant in this class. (Extraneous whitespace characters are
+not permitted.)
+
+
Parameters:
+
name - the name of the enum constant to be returned.
Returns the local IPv4 address that can reach the given server IP.
+
+
If the server is localhost, returns "127.0.0.1".
+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.
+
+
Parameters:
+
serverIp - the server IP address or hostname.
+
Returns:
+
the local IP address string to use for outbound connections.
+
Throws:
+
Exception - if no suitable interface can be determined.
public abstract class NetworkEvent
+extends Object
+implements Serializable
+
Represents an event sent over the network.
+
+
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 GameController
+or to the client-side MiniModel.
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 super first.
+
+
Parameters:
+
game - the current game model.
+
disconnectedUsernames - usernames of currently disconnected players.
Network event used to register a new player in the lobby.
+
+
The first player to join also proposes the desired number of players
+for the match. Subsequent joiners ignore proposedNPlayer if the
+game has already been created.
Network event that transitions all clients to the next round.
+
+
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; apply(GameController)
+always returns false.
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 super first.
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.
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.
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.
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.
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.
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.
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.
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.
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 super first.
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 super first.
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.
Constructs an RMI client and initializes its connection parameters.
+
+
Parameters:
+
controller - the client controller associated with this RMI client.
+
host - the hostname or IP address of the RMI server.
+
port - the port used to connect to the RMI registry.
+
myIp - the IP address of the client.
+
+
+
+
+
+
+
+
+
+
+
Method Details
+
+
+
+
connect
+
+
publicErrorTypeconnect(String username,
+ int proposedNPlayers)
+
Connects to the RMI server and starts the heartbeat loop.
+
+
Mirrors TCPClient.connect(): after a successful join the
+heartbeat channel is opened (here: a scheduler is started instead of
+opening a second socket).
proposedNPlayers - the desired number of players proposed by this client.
+
Returns:
+
true if the connection is established successfully,
+ false otherwise.
+
+
+
+
+
+
+
startHeartbeat
+
+
privatevoidstartHeartbeat()
+
Starts sending periodic pings to the server.
+
+
Mirrors the ScheduledExecutorService in
+TCPClient.heartbeatLoop() that writes PING every 3 s.
+On RemoteException the server is considered gone and
+disconnect() is called — mirrors the behavior on
+SocketTimeoutException / IOException in the TCP version.
+
+
+
+
+
+
disconnect
+
+
privatevoiddisconnect()
+
Tears down the connection.
+Mirrors TCPClient.disconnect(): stops the heartbeat and notifies
+the view.
+
+
+
+
+
+
drawUpperTribeCard
+
+
publicvoiddrawUpperTribeCard(String playerUsername,
+ int pos)
+
Requests to draw a tribe card from the upper list.
+Creates a NetworkEvent and sends it through the network client.
Server-side heartbeat watchdog for a single RMI client.
+
+
Mirrors HeartbeatHandler used in the TCP stack, but adapted for RMI:
+instead of reading raw bytes from a dedicated socket, it relies on receivePing()
+being called by RMIServer.ping(String) every time the client sends a ping.
+
+
If no ping is received within 5000L ms, the player is
+considered disconnected and disconnect() is invoked, which:
+
Constructs an RMI heartbeat handler for the specified client.
+
+
Parameters:
+
username - the username of the client monitored by the heartbeat.
+
playerList - the map storing the connection status of the players.
+
clients - the collection of currently registered RMI clients.
+
actionQueue - the queue containing network events to be processed.
+
+
+
+
+
+
+
+
+
+
+
Method Details
+
+
+
+
start
+
+
publicvoidstart()
+
Called by RMIServer whenever it starts tracking this player.
+
+
+
+
+
+
receivePing
+
+
publicvoidreceivePing()
+
Called by RMIServer.ping(String) each time the client pings.
+Resets the silence timer — mirrors writing lastReceivedTime in
+HeartbeatHandler.
+
+
+
+
+
+
disconnect
+
+
publicvoiddisconnect()
+
Disconnects the monitored RMI client.
+
+
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.
RMI server responsible for handling remote client connections,
+receiving player actions, and propagating game updates.
+
+
The server manages player registration, reconnection handling,
+heartbeat monitoring, and the forwarding of client requests to the
+shared network event queue.
Adds a player to the game and registers the callback used by the server
+to notify the corresponding RMI client.
+
+
After a successful join an RMIHeartbeat watchdog is created and
+started for the new player — mirrors creating a HeartbeatHandler in
+TCPServer.acceptHeartbeat().
Notifies connected RMI clients of a new network event.
+
+
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.
+
+
Parameters:
+
action - the network event to send to the clients.
Notifies all connected RMI clients of a new game model.
+
+
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.
+
+
Parameters:
+
model - the updated mini model to send to the connected clients.
+
+
+
+
+
+
+
drawUpperTribeCard
+
+
publicvoiddrawUpperTribeCard(String playerUsername,
+ int pos)
+
Requests to draw a tribe card from the upper list.
+Creates a NetworkEvent and sends it through the network client.
Starts the RMI server and binds it to the configured registry.
+
+
The method configures the server hostname, creates the RMI registry
+on the specified port, and registers this server instance under the
+RMIGameServer name.
Starts the TCP connection with the server.
+Sends an AddPlayer event, if the server responds with -1, the connection is refused and the method returns false.
+Otherwise, a listener thread is started.
proposedNPlayers - The desired number of players for the game
+
Returns:
+
null if the connection is successful, GENERIC_ERROR otherwise.
+
+
+
+
+
+
+
heartbeatLoop
+
+
privatevoidheartbeatLoop()
+
Sends a PING byte to the server every 3 seconds and waits for a PONG reply.
+If no reply arrives within 5000L ms, the server is
+considered unreachable and disconnect() is called.
+
+
+
+
+
+
disconnect
+
+
privatevoiddisconnect()
+
Disconnects the player and cleans model and controller
+
+
+
+
+
+
receiveMessage
+
+
privatevoidreceiveMessage()
+
Listens continuously for incoming objects from the server.
+ - If the received object is a NetworkEvent flagged as an error, it is printed.
+ - If the received object is a valid NetworkEvent, it is applied to the game controller.
+ - If the received object is a MiniModel, the controller's model is set.
+
+
+
+
+
+
drawUpperTribeCard
+
+
publicvoiddrawUpperTribeCard(String playerUsername,
+ int pos)
+
Requests to draw a tribe card from the upper list.
+Creates a NetworkEvent and sends it through the network client.
public class ClientHandler
+extends Object
+implements Runnable
+
Handles the TCP connection with a single client.
+Each instance runs on a dedicated thread and is responsible for receiving NetworkEvent from its client and adding them
+to the actionQueue.
+It is also responsible to send events and game model updates back to the client.
Listens for incoming NetworkEvents from the client and adds them to the actionQueue.
+Upon disconnection, this handler removes itself from clientHandlers.
game - The current state of the game to send to the client.
+
+
+
+
+
+
+
disconnect
+
+
publicvoiddisconnect()
+
Disconnects the client from the server.
+
+
The client handler is stopped and removed from the list of active handlers.
+The player is marked as disconnected, a DisconnectedPlayer event is
+added to the action queue, and the associated socket is closed.
public class HeartbeatHandler
+extends Object
+implements Runnable
+
Handles the heartbeat communication associated with a TCP client.
+
+
This component listens for heartbeat PING messages from the client,
+replies with PONG 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.
Constructs a heartbeat handler for the specified client.
+
+
Parameters:
+
username - the username of the connected client.
+
socket - the socket dedicated to heartbeat communication.
+
mainHandler - the main client handler associated with the same player.
+
Throws:
+
IOException - if the input or output stream cannot be obtained from the socket.
+
+
+
+
+
+
+
+
+
+
+
Method Details
+
+
+
+
run
+
+
publicvoidrun()
+
Starts the heartbeat listening loop.
+
+
The method activates the watchdog task, then waits for incoming heartbeat
+messages. When a PING is received, the last-received timestamp is
+updated and a PONG response is sent back to the client.
+If the stream is closed or an I/O error occurs, the client is disconnected.
TCP server responsible for accepting client connections,
+handling player registration and reconnection, and sending
+game updates to connected clients.
+
+
The server also manages a dedicated heartbeat channel used
+to detect disconnected clients and associate each heartbeat
+connection with the corresponding ClientHandler.
Creates a ClientHandler, registers it in pendingHeartbeat
+and clientHandlers, but does NOT start its thread — callers start
+the thread after any extra setup (e.g. sending a model snapshot).
Constructs a TCP server with the required game and network components.
+
+
Parameters:
+
controller - the game controller used to manage the game logic.
+
port - the main TCP port used for client communication.
+
heartbeatPort - the TCP port dedicated to heartbeat connections.
+
actionQueue - the queue containing incoming network events.
+
playerList - the map storing the connection status of the players.
+
+
+
+
+
+
+
+
+
+
+
Method Details
+
+
+
+
start
+
+
publicvoidstart()
+
Starts the TCP server and begins accepting client connections.
+
+
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.
+
+
When a new connection is received, the first event must be an
+AddPlayer request. Depending on the current server state,
+the connection is handled either as a new player joining the game
+or as a reconnection attempt.
+
+
+
+
+
+
acceptHeartbeat
+
+
privatevoidacceptHeartbeat()
+
Accepts heartbeat connections and associates them with the correct client handler.
+
+
Each client immediately sends its username on the heartbeat channel.
+The method uses that username to retrieve the pending ClientHandler
+and starts a dedicated HeartbeatHandler. If no pending handler is found,
+the heartbeat socket is closed.
Notifies connected TCP clients of a new network event.
+
+
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.
Creates a ClientHandler, registers it in pendingHeartbeat
+and clientHandlers, but does NOT start its thread — callers start
+the thread after any extra setup (e.g. sending a model snapshot).
TCP server responsible for accepting client connections,
+handling player registration and reconnection, and sending
+game updates to connected clients.
Handles persistence of the game model to and from disk.
+
+
The save file is stored at GameSaves/save.dat relative to the
+directory containing the running JAR. The anchor class passed to the
+constructor is used to resolve that directory at construction time.
+
+
All three operations (save(Game), load(), delete())
+are independent and safe to call in any order; missing files are treated
+as a normal condition (no save present) rather than an error.
Responsibilities of this class are intentionally limited to wiring:
+it creates all components, connects them together, restores a previously
+saved game if one exists, and starts the event-processing loop and the
+network servers.
+
+
All game-logic and event-routing decisions are delegated to
+GameEventProcessor; persistence is delegated to SaveManager.
+
+
The original ServerLauncher class is preserved and untouched.
+This class is a clean replacement that uses the new component structure.
Initializes all server components, wires them together, restores a saved
+game if available, and starts the event-processing loop and both network
+servers.
Initializes all server components, wires them together, restores a saved
+game if available, and starts the event-processing loop and both network
+servers.
The save is discarded if all but at most one player was offline at the
+time of the crash, since there would be nobody to resume the game with.
+Otherwise, the model is restored, the player-list limit is set, and each
+player who was offline at crash time is pre-populated as offline so the
+reconnection flow can handle them correctly.
+
+
Parameters:
+
gameController - the controller that will receive the restored model.
Lists active non-loopback IPv4 network interfaces and prompts the operator
+to choose one. If only one interface is available it is selected automatically.
+
+
Parameters:
+
scanner - the scanner used to read the operator's choice.
+
Returns:
+
the IPv4 address of the selected interface.
+
Throws:
+
Exception - if no valid network interface is available.
Advances the simulation by one frame: pre-warms on first call, spawns new particles,
+steps existing ones, removes dead ones, and updates their visual state.
Creates the particle system bound to the given scene.
+The internal overlay pane is transparent and mouse-transparent.
+
+
Parameters:
+
scene - the scene whose dimensions are used for particle positioning and fading.
+
+
+
+
+
+
+
+
+
+
+
Method Details
+
+
+
+
getPane
+
+
publicjavafx.scene.layout.PanegetPane()
+
Returns the transparent overlay pane that holds all particle nodes.
+
+
Returns:
+
the mouse-transparent Pane overlay.
+
+
+
+
+
+
+
start
+
+
publicvoidstart()
+
Starts the animation timer.
+
+
+
+
+
+
tick
+
+
privatevoidtick(long now)
+
Advances the simulation by one frame: pre-warms on first call, spawns new particles,
+steps existing ones, removes dead ones, and updates their visual state.
+
+
Parameters:
+
now - the current timestamp in nanoseconds from the animation timer.
General-purpose helper for building fixed-width ASCII/Unicode tables in a TUI.
+
+
A table is built by adding rows one at a time, then calling build()
+to obtain the fully rendered string. Column width is computed automatically
+from the widest cell across all rows.
+
+
Cell widths are measured in terminal columns, not Java char units:
+wide characters (emoji, CJK) count as 2 columns each.
+
+
Places two pre-rendered text blocks side by side, separated by a gap.
+Left-block lines are padded to a uniform display width so the right block
+always starts at the same column. Uses displayWidth(String) for measurement.
+
+
Parameters:
+
left - lines of the left block.
+
right - lines of the right block.
+
gap - number of space characters between the two blocks.
Returns the number of terminal columns required to display s.
+Wide characters (emoji, CJK, full-width) count as 2; all others as 1.
+
+
Parameters:
+
s - the string to measure; ANSI escape sequences are stripped before counting.
+
Returns:
+
the display width in terminal columns.
+
+
+
+
+
+
+
isWide
+
+
private staticbooleanisWide(int cp)
+
Returns true when cp is a wide (2-column) character.
+Covers CJK blocks, Hangul, full-width forms, and emoji (including
+the specific emoji used in this project: 🍖 U+1F357, ⭐ U+2B50).
Returns the enum constant of this class with the specified name.
+The string must match exactly an identifier used to declare an
+enum constant in this class. (Extraneous whitespace characters are
+not permitted.)
+
+
Parameters:
+
name - the name of the enum constant to be returned.
public class TUI
+extends Object
+implements IView
+
Text-based User Interface (TUI) implementation of IView.
+
+
Single render view: board + menu on top, all players' hands in a
+responsive grid below. Hands wrap to a new row when their combined width
+would exceed the terminal width.
+
+
All output goes through display(String), which uses
+LineReader.printAbove(String) when a JLine reader is set so that the
+readline prompt is correctly redrawn after background-thread renders.
Registers the active JLine LineReader.
+Once set, all output routes through LineReader.printAbove(String) so the
+prompt survives background-thread renders.
+
+
Parameters:
+
lineReader - the JLine reader to use for output; also provides the terminal reference.
+
+
+
+
+
+
+
render
+
+
publicvoidrender()
+
Default render: dispatches to the right view based on game stage.
Clears the terminal and displays content, horizontally centered.
+
+
When a JLine LineReader is registered, output is routed through
+LineReader.printAbove(String) which pauses readline, prints the content,
+and redraws the prompt — safe to call from any thread.
+Otherwise, ANSI codes are written directly to stdout.
Horizontally centers each line of content within the terminal width.
+Empty lines are left unpadded. Falls back to the original string when the
+terminal width is unknown.
+
+
diff --git a/deliverables/JAVADOC/legal/ADDITIONAL_LICENSE_INFO b/deliverables/JAVADOC/legal/ADDITIONAL_LICENSE_INFO
new file mode 100644
index 0000000..ff700cd
--- /dev/null
+++ b/deliverables/JAVADOC/legal/ADDITIONAL_LICENSE_INFO
@@ -0,0 +1,37 @@
+ ADDITIONAL INFORMATION ABOUT LICENSING
+
+Certain files distributed by Oracle America, Inc. and/or its affiliates are
+subject to the following clarification and special exception to the GPLv2,
+based on the GNU Project exception for its Classpath libraries, known as the
+GNU Classpath Exception.
+
+Note that Oracle includes multiple, independent programs in this software
+package. Some of those programs are provided under licenses deemed
+incompatible with the GPLv2 by the Free Software Foundation and others.
+For example, the package includes programs licensed under the Apache
+License, Version 2.0 and may include FreeType. Such programs are licensed
+to you under their original licenses.
+
+Oracle facilitates your further distribution of this package by adding the
+Classpath Exception to the necessary parts of its GPLv2 code, which permits
+you to use that code in combination with other independent modules not
+licensed under the GPLv2. However, note that this would not permit you to
+commingle code under an incompatible license with Oracle's GPLv2 licensed
+code by, for example, cutting and pasting such code into a file also
+containing Oracle's GPLv2 licensed code and then distributing the result.
+
+Additionally, if you were to remove the Classpath Exception from any of the
+files to which it applies and distribute the result, you would likely be
+required to license some or all of the other code in that distribution under
+the GPLv2 as well, and since the GPLv2 is incompatible with the license terms
+of some items included in the distribution by Oracle, removing the Classpath
+Exception could therefore effectively compromise your ability to further
+distribute the package.
+
+Failing to distribute notices associated with some files may also create
+unexpected legal consequences.
+
+Proceed with caution and we recommend that you obtain the advice of a lawyer
+skilled in open source matters before removing the Classpath Exception or
+making modifications to this package which may subsequently be redistributed
+and/or involve the use of third party software.
diff --git a/deliverables/JAVADOC/legal/ASSEMBLY_EXCEPTION b/deliverables/JAVADOC/legal/ASSEMBLY_EXCEPTION
new file mode 100644
index 0000000..4296666
--- /dev/null
+++ b/deliverables/JAVADOC/legal/ASSEMBLY_EXCEPTION
@@ -0,0 +1,27 @@
+
+OPENJDK ASSEMBLY EXCEPTION
+
+The OpenJDK source code made available by Oracle America, Inc. (Oracle) at
+openjdk.org ("OpenJDK Code") is distributed under the terms of the GNU
+General Public License version 2
+only ("GPL2"), with the following clarification and special exception.
+
+ Linking this OpenJDK Code statically or dynamically with other code
+ is making a combined work based on this library. Thus, the terms
+ and conditions of GPL2 cover the whole combination.
+
+ As a special exception, Oracle gives you permission to link this
+ OpenJDK Code with certain code licensed by Oracle as indicated at
+ https://openjdk.org/legal/exception-modules-2007-05-08.html
+ ("Designated Exception Modules") to produce an executable,
+ regardless of the license terms of the Designated Exception Modules,
+ and to copy and distribute the resulting executable under GPL2,
+ provided that the Designated Exception Modules continue to be
+ governed by the licenses under which they were offered by Oracle.
+
+As such, it allows licensees and sublicensees of Oracle's GPL2 OpenJDK Code
+to build an executable that includes those portions of necessary code that
+Oracle could not provide under GPL2 (or that Oracle has provided under GPL2
+with the Classpath exception). If you modify or add to the OpenJDK code,
+that new GPL2 code may still be combined with Designated Exception Modules
+if the new code is made subject to this exception by its copyright holder.
diff --git a/deliverables/JAVADOC/legal/LICENSE b/deliverables/JAVADOC/legal/LICENSE
new file mode 100644
index 0000000..8b400c7
--- /dev/null
+++ b/deliverables/JAVADOC/legal/LICENSE
@@ -0,0 +1,347 @@
+The GNU General Public License (GPL)
+
+Version 2, June 1991
+
+Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+Everyone is permitted to copy and distribute verbatim copies of this license
+document, but changing it is not allowed.
+
+Preamble
+
+The licenses for most software are designed to take away your freedom to share
+and change it. By contrast, the GNU General Public License is intended to
+guarantee your freedom to share and change free software--to make sure the
+software is free for all its users. This General Public License applies to
+most of the Free Software Foundation's software and to any other program whose
+authors commit to using it. (Some other Free Software Foundation software is
+covered by the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+When we speak of free software, we are referring to freedom, not price. Our
+General Public Licenses are designed to make sure that you have the freedom to
+distribute copies of free software (and charge for this service if you wish),
+that you receive source code or can get it if you want it, that you can change
+the software or use pieces of it in new free programs; and that you know you
+can do these things.
+
+To protect your rights, we need to make restrictions that forbid anyone to deny
+you these rights or to ask you to surrender the rights. These restrictions
+translate to certain responsibilities for you if you distribute copies of the
+software, or if you modify it.
+
+For example, if you distribute copies of such a program, whether gratis or for
+a fee, you must give the recipients all the rights that you have. You must
+make sure that they, too, receive or can get the source code. And you must
+show them these terms so they know their rights.
+
+We protect your rights with two steps: (1) copyright the software, and (2)
+offer you this license which gives you legal permission to copy, distribute
+and/or modify the software.
+
+Also, for each author's protection and ours, we want to make certain that
+everyone understands that there is no warranty for this free software. If the
+software is modified by someone else and passed on, we want its recipients to
+know that what they have is not the original, so that any problems introduced
+by others will not reflect on the original authors' reputations.
+
+Finally, any free program is threatened constantly by software patents. We
+wish to avoid the danger that redistributors of a free program will
+individually obtain patent licenses, in effect making the program proprietary.
+To prevent this, we have made it clear that any patent must be licensed for
+everyone's free use or not licensed at all.
+
+The precise terms and conditions for copying, distribution and modification
+follow.
+
+TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+0. This License applies to any program or other work which contains a notice
+placed by the copyright holder saying it may be distributed under the terms of
+this General Public License. The "Program", below, refers to any such program
+or work, and a "work based on the Program" means either the Program or any
+derivative work under copyright law: that is to say, a work containing the
+Program or a portion of it, either verbatim or with modifications and/or
+translated into another language. (Hereinafter, translation is included
+without limitation in the term "modification".) Each licensee is addressed as
+"you".
+
+Activities other than copying, distribution and modification are not covered by
+this License; they are outside its scope. The act of running the Program is
+not restricted, and the output from the Program is covered only if its contents
+constitute a work based on the Program (independent of having been made by
+running the Program). Whether that is true depends on what the Program does.
+
+1. You may copy and distribute verbatim copies of the Program's source code as
+you receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice and
+disclaimer of warranty; keep intact all the notices that refer to this License
+and to the absence of any warranty; and give any other recipients of the
+Program a copy of this License along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and you may
+at your option offer warranty protection in exchange for a fee.
+
+2. You may modify your copy or copies of the Program or any portion of it, thus
+forming a work based on the Program, and copy and distribute such modifications
+or work under the terms of Section 1 above, provided that you also meet all of
+these conditions:
+
+ a) You must cause the modified files to carry prominent notices stating
+ that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in whole or
+ in part contains or is derived from the Program or any part thereof, to be
+ licensed as a whole at no charge to all third parties under the terms of
+ this License.
+
+ c) If the modified program normally reads commands interactively when run,
+ you must cause it, when started running for such interactive use in the
+ most ordinary way, to print or display an announcement including an
+ appropriate copyright notice and a notice that there is no warranty (or
+ else, saying that you provide a warranty) and that users may redistribute
+ the program under these conditions, and telling the user how to view a copy
+ of this License. (Exception: if the Program itself is interactive but does
+ not normally print such an announcement, your work based on the Program is
+ not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If identifiable
+sections of that work are not derived from the Program, and can be reasonably
+considered independent and separate works in themselves, then this License, and
+its terms, do not apply to those sections when you distribute them as separate
+works. But when you distribute the same sections as part of a whole which is a
+work based on the Program, the distribution of the whole must be on the terms
+of this License, whose permissions for other licensees extend to the entire
+whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest your
+rights to work written entirely by you; rather, the intent is to exercise the
+right to control the distribution of derivative or collective works based on
+the Program.
+
+In addition, mere aggregation of another work not based on the Program with the
+Program (or with a work based on the Program) on a volume of a storage or
+distribution medium does not bring the other work under the scope of this
+License.
+
+3. You may copy and distribute the Program (or a work based on it, under
+Section 2) in object code or executable form under the terms of Sections 1 and
+2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable source
+ code, which must be distributed under the terms of Sections 1 and 2 above
+ on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three years, to
+ give any third party, for a charge no more than your cost of physically
+ performing source distribution, a complete machine-readable copy of the
+ corresponding source code, to be distributed under the terms of Sections 1
+ and 2 above on a medium customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer to
+ distribute corresponding source code. (This alternative is allowed only
+ for noncommercial distribution and only if you received the program in
+ object code or executable form with such an offer, in accord with
+ Subsection b above.)
+
+The source code for a work means the preferred form of the work for making
+modifications to it. For an executable work, complete source code means all
+the source code for all modules it contains, plus any associated interface
+definition files, plus the scripts used to control compilation and installation
+of the executable. However, as a special exception, the source code
+distributed need not include anything that is normally distributed (in either
+source or binary form) with the major components (compiler, kernel, and so on)
+of the operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the source
+code from the same place counts as distribution of the source code, even though
+third parties are not compelled to copy the source along with the object code.
+
+4. You may not copy, modify, sublicense, or distribute the Program except as
+expressly provided under this License. Any attempt otherwise to copy, modify,
+sublicense or distribute the Program is void, and will automatically terminate
+your rights under this License. However, parties who have received copies, or
+rights, from you under this License will not have their licenses terminated so
+long as such parties remain in full compliance.
+
+5. You are not required to accept this License, since you have not signed it.
+However, nothing else grants you permission to modify or distribute the Program
+or its derivative works. These actions are prohibited by law if you do not
+accept this License. Therefore, by modifying or distributing the Program (or
+any work based on the Program), you indicate your acceptance of this License to
+do so, and all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+6. Each time you redistribute the Program (or any work based on the Program),
+the recipient automatically receives a license from the original licensor to
+copy, distribute or modify the Program subject to these terms and conditions.
+You may not impose any further restrictions on the recipients' exercise of the
+rights granted herein. You are not responsible for enforcing compliance by
+third parties to this License.
+
+7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues), conditions
+are imposed on you (whether by court order, agreement or otherwise) that
+contradict the conditions of this License, they do not excuse you from the
+conditions of this License. If you cannot distribute so as to satisfy
+simultaneously your obligations under this License and any other pertinent
+obligations, then as a consequence you may not distribute the Program at all.
+For example, if a patent license would not permit royalty-free redistribution
+of the Program by all those who receive copies directly or indirectly through
+you, then the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply and
+the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any patents or
+other property right claims or to contest validity of any such claims; this
+section has the sole purpose of protecting the integrity of the free software
+distribution system, which is implemented by public license practices. Many
+people have made generous contributions to the wide range of software
+distributed through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing to
+distribute software through any other system and a licensee cannot impose that
+choice.
+
+This section is intended to make thoroughly clear what is believed to be a
+consequence of the rest of this License.
+
+8. If the distribution and/or use of the Program is restricted in certain
+countries either by patents or by copyrighted interfaces, the original
+copyright holder who places the Program under this License may add an explicit
+geographical distribution limitation excluding those countries, so that
+distribution is permitted only in or among countries not thus excluded. In
+such case, this License incorporates the limitation as if written in the body
+of this License.
+
+9. The Free Software Foundation may publish revised and/or new versions of the
+General Public License from time to time. Such new versions will be similar in
+spirit to the present version, but may differ in detail to address new problems
+or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any later
+version", you have the option of following the terms and conditions either of
+that version or of any later version published by the Free Software Foundation.
+If the Program does not specify a version number of this License, you may
+choose any version ever published by the Free Software Foundation.
+
+10. If you wish to incorporate parts of the Program into other free programs
+whose distribution conditions are different, write to the author to ask for
+permission. For software which is copyrighted by the Free Software Foundation,
+write to the Free Software Foundation; we sometimes make exceptions for this.
+Our decision will be guided by the two goals of preserving the free status of
+all derivatives of our free software and of promoting the sharing and reuse of
+software generally.
+
+NO WARRANTY
+
+11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR
+THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE
+STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE
+PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
+INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND
+PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE,
+YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL
+ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE
+PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
+INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA
+BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER
+OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+END OF TERMS AND CONDITIONS
+
+How to Apply These Terms to Your New Programs
+
+If you develop a new program, and you want it to be of the greatest possible
+use to the public, the best way to achieve this is to make it free software
+which everyone can redistribute and change under these terms.
+
+To do so, attach the following notices to the program. It is safest to attach
+them to the start of each source file to most effectively convey the exclusion
+of warranty; and each file should have at least the "copyright" line and a
+pointer to where the full notice is found.
+
+ One line to give the program's name and a brief idea of what it does.
+
+ Copyright (C)
+
+ This program is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by the Free
+ Software Foundation; either version 2 of the License, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this when it
+starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author Gnomovision comes
+ with ABSOLUTELY NO WARRANTY; for details type 'show w'. This is free
+ software, and you are welcome to redistribute it under certain conditions;
+ type 'show c' for details.
+
+The hypothetical commands 'show w' and 'show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may be
+called something other than 'show w' and 'show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your school,
+if any, to sign a "copyright disclaimer" for the program, if necessary. Here
+is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ 'Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ signature of Ty Coon, 1 April 1989
+
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General Public
+License instead of this License.
+
+
+"CLASSPATH" EXCEPTION TO THE GPL
+
+Certain source files distributed by Oracle America and/or its affiliates are
+subject to the following clarification and special exception to the GPL, but
+only where Oracle has expressly included in the particular source file's header
+the words "Oracle designates this particular file as subject to the "Classpath"
+exception as provided by Oracle in the LICENSE file that accompanied this code."
+
+ Linking this library statically or dynamically with other modules is making
+ a combined work based on this library. Thus, the terms and conditions of
+ the GNU General Public License cover the whole combination.
+
+ As a special exception, the copyright holders of this library give you
+ permission to link this library with independent modules to produce an
+ executable, regardless of the license terms of these independent modules,
+ and to copy and distribute the resulting executable under terms of your
+ choice, provided that you also meet, for each linked independent module,
+ the terms and conditions of the license of that module. An independent
+ module is a module which is not derived from or based on this library. If
+ you modify this library, you may extend this exception to your version of
+ the library, but you are not obligated to do so. If you do not wish to do
+ so, delete this exception statement from your version.
diff --git a/deliverables/JAVADOC/legal/dejavufonts.md b/deliverables/JAVADOC/legal/dejavufonts.md
new file mode 100644
index 0000000..8c9e3cf
--- /dev/null
+++ b/deliverables/JAVADOC/legal/dejavufonts.md
@@ -0,0 +1,191 @@
+## DejaVu fonts v2.37
+
+### DejaVu License
+
+Fonts are (c) Bitstream (see below). DejaVu changes are in public domain.
+Glyphs imported from Arev fonts are (c) Tavmjong Bah (see below)
+
+
+Bitstream Vera Fonts Copyright
+------------------------------
+
+Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is
+a trademark of Bitstream, Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of the fonts accompanying this license ("Fonts") and associated
+documentation files (the "Font Software"), to reproduce and distribute the
+Font Software, including without limitation the rights to use, copy, merge,
+publish, distribute, and/or sell copies of the Font Software, and to permit
+persons to whom the Font Software is furnished to do so, subject to the
+following conditions:
+
+The above copyright and trademark notices and this permission notice shall
+be included in all copies of one or more of the Font Software typefaces.
+
+The Font Software may be modified, altered, or added to, and in particular
+the designs of glyphs or characters in the Fonts may be modified and
+additional glyphs or characters may be added to the Fonts, only if the fonts
+are renamed to names not containing either the words "Bitstream" or the word
+"Vera".
+
+This License becomes null and void to the extent applicable to Fonts or Font
+Software that has been modified and is distributed under the "Bitstream
+Vera" names.
+
+The Font Software may be sold as part of a larger software package but no
+copy of one or more of the Font Software typefaces may be sold by itself.
+
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT,
+TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME
+FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING
+ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
+THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE
+FONT SOFTWARE.
+
+Except as contained in this notice, the names of Gnome, the Gnome
+Foundation, and Bitstream Inc., shall not be used in advertising or
+otherwise to promote the sale, use or other dealings in this Font Software
+without prior written authorization from the Gnome Foundation or Bitstream
+Inc., respectively. For further information, contact: fonts at gnome dot
+org.
+
+Arev Fonts Copyright
+------------------------------
+
+Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the fonts accompanying this license ("Fonts") and
+associated documentation files (the "Font Software"), to reproduce
+and distribute the modifications to the Bitstream Vera Font Software,
+including without limitation the rights to use, copy, merge, publish,
+distribute, and/or sell copies of the Font Software, and to permit
+persons to whom the Font Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright and trademark notices and this permission notice
+shall be included in all copies of one or more of the Font Software
+typefaces.
+
+The Font Software may be modified, altered, or added to, and in
+particular the designs of glyphs or characters in the Fonts may be
+modified and additional glyphs or characters may be added to the
+Fonts, only if the fonts are renamed to names not containing either
+the words "Tavmjong Bah" or the word "Arev".
+
+This License becomes null and void to the extent applicable to Fonts
+or Font Software that has been modified and is distributed under the
+"Tavmjong Bah Arev" names.
+
+The Font Software may be sold as part of a larger software package but
+no copy of one or more of the Font Software typefaces may be sold by
+itself.
+
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL
+TAVMJONG BAH BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.
+
+Except as contained in this notice, the name of Tavmjong Bah shall not
+be used in advertising or otherwise to promote the sale, use or other
+dealings in this Font Software without prior written authorization
+from Tavmjong Bah. For further information, contact: tavmjong @ free
+. fr.
+
+TeX Gyre DJV Math
+-----------------
+Fonts are (c) Bitstream (see below). DejaVu changes are in public domain.
+
+Math extensions done by B. Jackowski, P. Strzelczyk and P. Pianowski
+(on behalf of TeX users groups) are in public domain.
+
+Letters imported from Euler Fraktur from AMSfonts are (c) American
+Mathematical Society (see below).
+Bitstream Vera Fonts Copyright
+Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera
+is a trademark of Bitstream, Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of the fonts accompanying this license ("Fonts") and associated
+documentation
+files (the "Font Software"), to reproduce and distribute the Font Software,
+including without limitation the rights to use, copy, merge, publish,
+distribute,
+and/or sell copies of the Font Software, and to permit persons to whom
+the Font Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright and trademark notices and this permission notice
+shall be
+included in all copies of one or more of the Font Software typefaces.
+
+The Font Software may be modified, altered, or added to, and in particular
+the designs of glyphs or characters in the Fonts may be modified and
+additional
+glyphs or characters may be added to the Fonts, only if the fonts are
+renamed
+to names not containing either the words "Bitstream" or the word "Vera".
+
+This License becomes null and void to the extent applicable to Fonts or
+Font Software
+that has been modified and is distributed under the "Bitstream Vera"
+names.
+
+The Font Software may be sold as part of a larger software package but
+no copy
+of one or more of the Font Software typefaces may be sold by itself.
+
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT,
+TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME
+FOUNDATION
+BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL,
+SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN
+ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR
+INABILITY TO USE
+THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.
+Except as contained in this notice, the names of GNOME, the GNOME
+Foundation,
+and Bitstream Inc., shall not be used in advertising or otherwise to promote
+the sale, use or other dealings in this Font Software without prior written
+authorization from the GNOME Foundation or Bitstream Inc., respectively.
+For further information, contact: fonts at gnome dot org.
+
+AMSFonts (v. 2.2) copyright
+
+The PostScript Type 1 implementation of the AMSFonts produced by and
+previously distributed by Blue Sky Research and Y&Y, Inc. are now freely
+available for general use. This has been accomplished through the
+cooperation
+of a consortium of scientific publishers with Blue Sky Research and Y&Y.
+Members of this consortium include:
+
+Elsevier Science IBM Corporation Society for Industrial and Applied
+Mathematics (SIAM) Springer-Verlag American Mathematical Society (AMS)
+
+In order to assure the authenticity of these fonts, copyright will be
+held by
+the American Mathematical Society. This is not meant to restrict in any way
+the legitimate use of the fonts, such as (but not limited to) electronic
+distribution of documents containing these fonts, inclusion of these fonts
+into other public domain or commercial font collections or computer
+applications, use of the outline data to create derivative fonts and/or
+faces, etc. However, the AMS does require that the AMS copyright notice be
+removed from any derivative versions of the fonts which have been altered in
+any way. In addition, to ensure the fidelity of TeX documents using Computer
+Modern fonts, Professor Donald Knuth, creator of the Computer Modern faces,
+has requested that any alterations which yield different font metrics be
+given a different name.
+
+
diff --git a/deliverables/JAVADOC/legal/jquery.md b/deliverables/JAVADOC/legal/jquery.md
new file mode 100644
index 0000000..a763ec6
--- /dev/null
+++ b/deliverables/JAVADOC/legal/jquery.md
@@ -0,0 +1,26 @@
+## jQuery v3.7.1
+
+### jQuery License
+```
+jQuery v 3.7.1
+Copyright OpenJS Foundation and other contributors, https://openjsf.org/
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+```
diff --git a/deliverables/JAVADOC/legal/jqueryUI.md b/deliverables/JAVADOC/legal/jqueryUI.md
new file mode 100644
index 0000000..46bfbaa
--- /dev/null
+++ b/deliverables/JAVADOC/legal/jqueryUI.md
@@ -0,0 +1,49 @@
+## jQuery UI v1.14.1
+
+### jQuery UI License
+```
+Copyright OpenJS Foundation and other contributors, https://openjsf.org/
+
+This software consists of voluntary contributions made by many
+individuals. For exact contribution history, see the revision history
+available at https://github.com/jquery/jquery-ui
+
+The following license applies to all parts of this software except as
+documented below:
+
+====
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+====
+
+Copyright and related rights for sample code are waived via CC0. Sample
+code is defined as all source code contained within the demos directory.
+
+CC0: http://creativecommons.org/publicdomain/zero/1.0/
+
+====
+
+All files located in the node_modules and external directories are
+externally maintained libraries used by this software which have their
+own licenses; we recommend you read them, as their terms may differ from
+the terms above.
+
+```
diff --git a/deliverables/JAVADOC/member-search-index.js b/deliverables/JAVADOC/member-search-index.js
new file mode 100644
index 0000000..a5fae08
--- /dev/null
+++ b/deliverables/JAVADOC/member-search-index.js
@@ -0,0 +1 @@
+memberSearchIndex = [{"p":"it.polimi.ingsw.gc14","c":"GameEventProcessor","l":"abortGame()"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Server","c":"TCPServer","l":"acceptHeartbeat()"},{"p":"it.polimi.ingsw.gc14","c":"LimitedMap","l":"action","k":"1"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"LeaderboardFXMLController","l":"action","k":"1"},{"p":"it.polimi.ingsw.gc14","c":"GameEventProcessor","l":"actionQueue","k":"1"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Server","c":"RMIHeartbeat","l":"actionQueue","k":"1"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Server","c":"RMIServer","l":"actionQueue","k":"1"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Server","c":"ClientHandler","l":"actionQueue","k":"1"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Server","c":"TCPServer","l":"actionQueue","k":"1"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards","c":"EventCard","l":"activateEvent(ArrayList)","u":"activateEvent(java.util.ArrayList)"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Events","c":"CavePaintings","l":"activateEvent(ArrayList)","u":"activateEvent(java.util.ArrayList)"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Events","c":"Hunt","l":"activateEvent(ArrayList)","u":"activateEvent(java.util.ArrayList)"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Events","c":"ShamanicRitual","l":"activateEvent(ArrayList)","u":"activateEvent(java.util.ArrayList)"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Events","c":"Sustenance","l":"activateEvent(ArrayList)","u":"activateEvent(java.util.ArrayList)"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"LoginFXMLController","l":"activeProtocolPseudo","k":"1"},{"p":"it.polimi.ingsw.gc14.Network","c":"EventType","l":"ADD_PLAYER","k":"0"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"MainFXMLController","l":"addClip(ImageView)","u":"addClip(javafx.scene.image.ImageView)"},{"p":"it.polimi.ingsw.gc14.Model","c":"Player","l":"addFood(int)"},{"p":"it.polimi.ingsw.gc14.View.TUI","c":"AsciiTable","l":"addHeader(String...)","u":"addHeader(java.lang.String...)"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"LeaderboardFXMLController","l":"addHoverZoom(Node)","u":"addHoverZoom(javafx.scene.Node)"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"MainFXMLController","l":"addHoverZoom(Node)","u":"addHoverZoom(javafx.scene.Node)"},{"p":"it.polimi.ingsw.gc14.Model","c":"Game","l":"addPlayer(Player)","u":"addPlayer(it.polimi.ingsw.gc14.Model.Player)"},{"p":"it.polimi.ingsw.gc14.Controller","c":"GameController","l":"addPlayer(String)","u":"addPlayer(java.lang.String)"},{"p":"it.polimi.ingsw.gc14.Network.NetworkEvents","c":"AddPlayer","l":"AddPlayer(String, int)","u":"%3Cinit%3E(java.lang.String,int)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model","c":"Player","l":"addPrestige(int)"},{"p":"it.polimi.ingsw.gc14.View.TUI","c":"AsciiTable","l":"addRow(List)","u":"addRow(java.util.List)"},{"p":"it.polimi.ingsw.gc14.View.TUI","c":"AsciiTable","l":"addRow(String...)","u":"addRow(java.lang.String...)"},{"p":"it.polimi.ingsw.gc14.View.TUI","c":"AsciiTable","l":"addSeparator()"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"LeaderboardFXMLController","l":"addShadow(Node)","u":"addShadow(javafx.scene.Node)"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"MainFXMLController","l":"addShadow(Node)","u":"addShadow(javafx.scene.Node)"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"FireParticleSystem.Particle","l":"addTo(Pane)","u":"addTo(javafx.scene.layout.Pane)"},{"p":"it.polimi.ingsw.gc14.Network","c":"NetworkEvent","l":"apply(GameController)","u":"apply(it.polimi.ingsw.gc14.Controller.GameController)"},{"p":"it.polimi.ingsw.gc14.Network.NetworkEvents","c":"AddPlayer","l":"apply(GameController)","u":"apply(it.polimi.ingsw.gc14.Controller.GameController)"},{"p":"it.polimi.ingsw.gc14.Network.NetworkEvents","c":"ApplyNextRound","l":"apply(GameController)","u":"apply(it.polimi.ingsw.gc14.Controller.GameController)"},{"p":"it.polimi.ingsw.gc14.Network.NetworkEvents","c":"DisconnectedPlayer","l":"apply(GameController)","u":"apply(it.polimi.ingsw.gc14.Controller.GameController)"},{"p":"it.polimi.ingsw.gc14.Network.NetworkEvents","c":"DrawLowerBuildingCard","l":"apply(GameController)","u":"apply(it.polimi.ingsw.gc14.Controller.GameController)"},{"p":"it.polimi.ingsw.gc14.Network.NetworkEvents","c":"DrawLowerTribeCard","l":"apply(GameController)","u":"apply(it.polimi.ingsw.gc14.Controller.GameController)"},{"p":"it.polimi.ingsw.gc14.Network.NetworkEvents","c":"DrawUpperBuildingCard","l":"apply(GameController)","u":"apply(it.polimi.ingsw.gc14.Controller.GameController)"},{"p":"it.polimi.ingsw.gc14.Network.NetworkEvents","c":"DrawUpperTribeCard","l":"apply(GameController)","u":"apply(it.polimi.ingsw.gc14.Controller.GameController)"},{"p":"it.polimi.ingsw.gc14.Network.NetworkEvents","c":"EndedGame","l":"apply(GameController)","u":"apply(it.polimi.ingsw.gc14.Controller.GameController)"},{"p":"it.polimi.ingsw.gc14.Network.NetworkEvents","c":"ReconnectPlayer","l":"apply(GameController)","u":"apply(it.polimi.ingsw.gc14.Controller.GameController)"},{"p":"it.polimi.ingsw.gc14.Network.NetworkEvents","c":"SkipTurn","l":"apply(GameController)","u":"apply(it.polimi.ingsw.gc14.Controller.GameController)"},{"p":"it.polimi.ingsw.gc14.Network.NetworkEvents","c":"SlotChoice","l":"apply(GameController)","u":"apply(it.polimi.ingsw.gc14.Controller.GameController)"},{"p":"it.polimi.ingsw.gc14.Network.NetworkEvents","c":"TotemChoice","l":"apply(GameController)","u":"apply(it.polimi.ingsw.gc14.Controller.GameController)"},{"p":"it.polimi.ingsw.gc14.Network","c":"NetworkEvent","l":"apply(MiniModel)","u":"apply(it.polimi.ingsw.gc14.Model.MiniModel)"},{"p":"it.polimi.ingsw.gc14.Network.NetworkEvents","c":"AddPlayer","l":"apply(MiniModel)","u":"apply(it.polimi.ingsw.gc14.Model.MiniModel)"},{"p":"it.polimi.ingsw.gc14.Network.NetworkEvents","c":"ApplyNextRound","l":"apply(MiniModel)","u":"apply(it.polimi.ingsw.gc14.Model.MiniModel)"},{"p":"it.polimi.ingsw.gc14.Network.NetworkEvents","c":"DisconnectedPlayer","l":"apply(MiniModel)","u":"apply(it.polimi.ingsw.gc14.Model.MiniModel)"},{"p":"it.polimi.ingsw.gc14.Network.NetworkEvents","c":"DrawLowerBuildingCard","l":"apply(MiniModel)","u":"apply(it.polimi.ingsw.gc14.Model.MiniModel)"},{"p":"it.polimi.ingsw.gc14.Network.NetworkEvents","c":"DrawLowerTribeCard","l":"apply(MiniModel)","u":"apply(it.polimi.ingsw.gc14.Model.MiniModel)"},{"p":"it.polimi.ingsw.gc14.Network.NetworkEvents","c":"DrawUpperBuildingCard","l":"apply(MiniModel)","u":"apply(it.polimi.ingsw.gc14.Model.MiniModel)"},{"p":"it.polimi.ingsw.gc14.Network.NetworkEvents","c":"DrawUpperTribeCard","l":"apply(MiniModel)","u":"apply(it.polimi.ingsw.gc14.Model.MiniModel)"},{"p":"it.polimi.ingsw.gc14.Network.NetworkEvents","c":"EndedGame","l":"apply(MiniModel)","u":"apply(it.polimi.ingsw.gc14.Model.MiniModel)"},{"p":"it.polimi.ingsw.gc14.Network.NetworkEvents","c":"ReconnectPlayer","l":"apply(MiniModel)","u":"apply(it.polimi.ingsw.gc14.Model.MiniModel)"},{"p":"it.polimi.ingsw.gc14.Network.NetworkEvents","c":"SkipTurn","l":"apply(MiniModel)","u":"apply(it.polimi.ingsw.gc14.Model.MiniModel)"},{"p":"it.polimi.ingsw.gc14.Network.NetworkEvents","c":"SlotChoice","l":"apply(MiniModel)","u":"apply(it.polimi.ingsw.gc14.Model.MiniModel)"},{"p":"it.polimi.ingsw.gc14.Network.NetworkEvents","c":"TotemChoice","l":"apply(MiniModel)","u":"apply(it.polimi.ingsw.gc14.Model.MiniModel)"},{"p":"it.polimi.ingsw.gc14","c":"GameEventProcessor","l":"applyAndBroadcast(NetworkEvent)","u":"applyAndBroadcast(it.polimi.ingsw.gc14.Network.NetworkEvent)"},{"p":"it.polimi.ingsw.gc14.Model.Cards.Building.Effects","c":"Building0","l":"applyEffect(Player)","u":"applyEffect(it.polimi.ingsw.gc14.Model.Player)"},{"p":"it.polimi.ingsw.gc14.Model.Cards.Building.Effects","c":"Building10","l":"applyEffect(Player)","u":"applyEffect(it.polimi.ingsw.gc14.Model.Player)"},{"p":"it.polimi.ingsw.gc14.Model.Cards.Building.Effects","c":"Building11","l":"applyEffect(Player)","u":"applyEffect(it.polimi.ingsw.gc14.Model.Player)"},{"p":"it.polimi.ingsw.gc14.Model.Cards.Building.Effects","c":"Building13","l":"applyEffect(Player)","u":"applyEffect(it.polimi.ingsw.gc14.Model.Player)"},{"p":"it.polimi.ingsw.gc14.Model.Cards.Building.Effects","c":"Building4","l":"applyEffect(Player)","u":"applyEffect(it.polimi.ingsw.gc14.Model.Player)"},{"p":"it.polimi.ingsw.gc14.Model.Cards.Building.Effects","c":"Building8","l":"applyEffect(Player)","u":"applyEffect(it.polimi.ingsw.gc14.Model.Player)"},{"p":"it.polimi.ingsw.gc14.Model.Cards","c":"BuildingCard","l":"applyEffect(Player)","u":"applyEffect(it.polimi.ingsw.gc14.Model.Player)"},{"p":"it.polimi.ingsw.gc14.Network.NetworkEvents","c":"ApplyNextRound","l":"ApplyNextRound(Map, OrderLogicCard, CurrentState, List, ArrayList, ArrayList, ArrayList, ArrayList)","u":"%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)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model","c":"DecksCreator.TribeCardDefinition","l":"armed","k":"1"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards","c":"CharacterType","l":"ARTIST","k":"0"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters","c":"Artist","l":"Artist(int)","u":"%3Cinit%3E(int)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters","c":"Artist","l":"Artist(int, int)","u":"%3Cinit%3E(int,int)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters","c":"Artist","l":"Artist(String, int)","u":"%3Cinit%3E(java.lang.String,int)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters","c":"Artist","l":"Artist(String, int, int)","u":"%3Cinit%3E(java.lang.String,int,int)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model","c":"Player","l":"artists","k":"1"},{"p":"it.polimi.ingsw.gc14.View.TUI","c":"AsciiTable","l":"AsciiTable(BorderStyle, int)","u":"%3Cinit%3E(it.polimi.ingsw.gc14.View.TUI.BorderStyle,int)","k":"3"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"GUI","l":"autoReenterFullscreen","k":"1"},{"p":"it.polimi.ingsw.gc14.Model","c":"MiniModel","l":"availableTotems","k":"1"},{"p":"it.polimi.ingsw.gc14.Network.NetworkEvents","c":"DisconnectedPlayer","l":"availableTotems","k":"1"},{"p":"it.polimi.ingsw.gc14.Network.NetworkEvents","c":"TotemChoice","l":"availableTotems","k":"1"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"LoginFXMLController","l":"backgroundImage","k":"1"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"TotemFXMLController","l":"backgroundImage","k":"1"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Events","c":"Hunt","l":"BASE_FOOD_PER_HUNTER","k":"2"},{"p":"it.polimi.ingsw.gc14.View.TUI","c":"BorderStyle","l":"bl","k":"1"},{"p":"it.polimi.ingsw.gc14.View.TUI","c":"BorderStyle","l":"bl()"},{"p":"it.polimi.ingsw.gc14.Model","c":"Totems","l":"BLUE","k":"0"},{"p":"it.polimi.ingsw.gc14.Model","c":"Game","l":"board","k":"1"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"MainFXMLController","l":"board","k":"1"},{"p":"it.polimi.ingsw.gc14.Model.GamePackage","c":"Board","l":"Board(int)","u":"%3Cinit%3E(int)","k":"3"},{"p":"it.polimi.ingsw.gc14.View.TUI","c":"TUI","l":"boardStamp()"},{"p":"it.polimi.ingsw.gc14.View.TUI","c":"BorderStyle","l":"BorderStyle(String, String, String, String, String, String, String, String, String, String, String, String, String, String)","u":"%3Cinit%3E(java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model.Cards","c":"BuildingCard","l":"bought","k":"1"},{"p":"it.polimi.ingsw.gc14.View.TUI","c":"BorderStyle","l":"br","k":"1"},{"p":"it.polimi.ingsw.gc14.View.TUI","c":"BorderStyle","l":"br()"},{"p":"it.polimi.ingsw.gc14","c":"GameEventProcessor","l":"broadcaster","k":"1"},{"p":"it.polimi.ingsw.gc14","c":"GameEventProcessor","l":"broadcastResult(NetworkEvent, Game, int)","u":"broadcastResult(it.polimi.ingsw.gc14.Network.NetworkEvent,it.polimi.ingsw.gc14.Model.Game,int)"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"LoginFXMLController","l":"btnAccedi","k":"1"},{"p":"it.polimi.ingsw.gc14.View.TUI","c":"AsciiTable","l":"build()"},{"p":"it.polimi.ingsw.gc14.View.TUI","c":"TUI","l":"buildAllHandsContent()"},{"p":"it.polimi.ingsw.gc14.View.TUI","c":"TUI","l":"buildBoardContent()"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"TotemFXMLController","l":"buildCard(Totems, int, boolean)","u":"buildCard(it.polimi.ingsw.gc14.Model.Totems,int,boolean)"},{"p":"it.polimi.ingsw.gc14","c":"GameEventProcessor","l":"buildDisconnectedList(Game)","u":"buildDisconnectedList(it.polimi.ingsw.gc14.Model.Game)"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards","c":"CharacterType","l":"BUILDER","k":"0"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters","c":"Builder","l":"Builder(int, int, int)","u":"%3Cinit%3E(int,int,int)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters","c":"Builder","l":"Builder(int, int, int, int)","u":"%3Cinit%3E(int,int,int,int)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters","c":"Builder","l":"Builder(String, int, int, int)","u":"%3Cinit%3E(java.lang.String,int,int,int)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters","c":"Builder","l":"Builder(String, int, int, int, int)","u":"%3Cinit%3E(java.lang.String,int,int,int,int)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model","c":"Player","l":"builders","k":"1"},{"p":"it.polimi.ingsw.gc14","c":"ClientLauncherTUI","l":"buildGameReader()"},{"p":"it.polimi.ingsw.gc14","c":"ClientLauncherTUI","l":"BUILDING_DETAILS","k":"2"},{"p":"it.polimi.ingsw.gc14.Model.Cards.Building.Effects","c":"Building0","l":"Building0(int, int, int)","u":"%3Cinit%3E(int,int,int)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model.Cards.Building.Effects","c":"Building0","l":"Building0(String, int, int, int)","u":"%3Cinit%3E(java.lang.String,int,int,int)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model.Cards.Building.Effects","c":"Building1","l":"Building1(int, int, int, CharacterType)","u":"%3Cinit%3E(int,int,int,it.polimi.ingsw.gc14.Model.Cards.TribeCards.CharacterType)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model.Cards.Building.Effects","c":"Building1","l":"Building1(String, int, int, int, CharacterType)","u":"%3Cinit%3E(java.lang.String,int,int,int,it.polimi.ingsw.gc14.Model.Cards.TribeCards.CharacterType)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model.Cards.Building.Effects","c":"Building10","l":"Building10(int, int, int)","u":"%3Cinit%3E(int,int,int)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model.Cards.Building.Effects","c":"Building10","l":"Building10(String, int, int, int)","u":"%3Cinit%3E(java.lang.String,int,int,int)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model.Cards.Building.Effects","c":"Building11","l":"Building11(int, int, int, CharacterType, int)","u":"%3Cinit%3E(int,int,int,it.polimi.ingsw.gc14.Model.Cards.TribeCards.CharacterType,int)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model.Cards.Building.Effects","c":"Building11","l":"Building11(String, int, int, int, CharacterType, int)","u":"%3Cinit%3E(java.lang.String,int,int,int,it.polimi.ingsw.gc14.Model.Cards.TribeCards.CharacterType,int)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model.Cards.Building.Effects","c":"Building13","l":"Building13(int, int, int)","u":"%3Cinit%3E(int,int,int)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model.Cards.Building.Effects","c":"Building13","l":"Building13(String, int, int, int)","u":"%3Cinit%3E(java.lang.String,int,int,int)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model.Cards.Building.Effects","c":"Building4","l":"Building4(int, int, int)","u":"%3Cinit%3E(int,int,int)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model.Cards.Building.Effects","c":"Building4","l":"Building4(String, int, int, int)","u":"%3Cinit%3E(java.lang.String,int,int,int)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Events","c":"ShamanicRitual","l":"BUILDING5_BONUS_ICONS","k":"2"},{"p":"it.polimi.ingsw.gc14.Model.Cards.Building.Effects","c":"Building8","l":"Building8(int, int, int)","u":"%3Cinit%3E(int,int,int)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model.Cards.Building.Effects","c":"Building8","l":"Building8(String, int, int, int)","u":"%3Cinit%3E(java.lang.String,int,int,int)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model.Cards","c":"BuildingCard","l":"BuildingCard(int, int, int)","u":"%3Cinit%3E(int,int,int)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model.Cards","c":"BuildingCard","l":"BuildingCard(int, int, int, int)","u":"%3Cinit%3E(int,int,int,int)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model.Cards","c":"BuildingCard","l":"BuildingCard(String, int, int, int)","u":"%3Cinit%3E(java.lang.String,int,int,int)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model.Cards","c":"BuildingCard","l":"BuildingCard(String, int, int, int, int)","u":"%3Cinit%3E(java.lang.String,int,int,int,int)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model","c":"DecksCreator.BuildingCardDefinition","l":"BuildingCardDefinition()","u":"%3Cinit%3E()","k":"3"},{"p":"it.polimi.ingsw.gc14.Model","c":"Player","l":"buildingCards","k":"1"},{"p":"it.polimi.ingsw.gc14.Model.GamePackage","c":"Board","l":"buildingCardsAllEras","k":"1"},{"p":"it.polimi.ingsw.gc14.Model","c":"OrderLogicCard","l":"buildingEffect(Player)","u":"buildingEffect(it.polimi.ingsw.gc14.Model.Player)"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"MainFXMLController","l":"buildPlayerCard(Player)","u":"buildPlayerCard(it.polimi.ingsw.gc14.Model.Player)"},{"p":"it.polimi.ingsw.gc14","c":"ClientLauncherTUI","l":"buildPrompt()"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"MainFXMLController","l":"buildSidePanel()"},{"p":"it.polimi.ingsw.gc14.View.TUI","c":"TUI","l":"buildStandingContent()"},{"p":"it.polimi.ingsw.gc14.View.TUI","c":"TUI","l":"buildTotemsContent()"},{"p":"it.polimi.ingsw.gc14.Model.Cards.Building.Effects","c":"Building0","l":"buy(Player)","u":"buy(it.polimi.ingsw.gc14.Model.Player)"},{"p":"it.polimi.ingsw.gc14.Model.Cards.Building.Effects","c":"Building4","l":"buy(Player)","u":"buy(it.polimi.ingsw.gc14.Model.Player)"},{"p":"it.polimi.ingsw.gc14.Model.Cards","c":"BuildingCard","l":"buy(Player)","u":"buy(it.polimi.ingsw.gc14.Model.Player)"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"LoginFXMLController","l":"campoIP","k":"1"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"LoginFXMLController","l":"campoNome","k":"1"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"LoginFXMLController","l":"campoNumPlayers","k":"1"},{"p":"it.polimi.ingsw.gc14","c":"GameEventProcessor","l":"cancelForfeitTimerIfReconnect(NetworkEvent)","u":"cancelForfeitTimerIfReconnect(it.polimi.ingsw.gc14.Network.NetworkEvent)"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"TotemFXMLController","l":"capitalize(Totems)","u":"capitalize(it.polimi.ingsw.gc14.Model.Totems)"},{"p":"it.polimi.ingsw.gc14.Model.Cards.Building","c":"EffectType","l":"CARD_SET","k":"0"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards","c":"EventType","l":"CAVE_PAINTINGS","k":"0"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Events","c":"CavePaintings","l":"CavePaintings(int, int, int, int)","u":"%3Cinit%3E(int,int,int,int)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Events","c":"CavePaintings","l":"CavePaintings(String, int, int, int, int)","u":"%3Cinit%3E(java.lang.String,int,int,int,int)","k":"3"},{"p":"it.polimi.ingsw.gc14.View.TUI","c":"TUI","l":"center(String)","u":"center(java.lang.String)"},{"p":"it.polimi.ingsw.gc14","c":"ClientLauncherTUI","l":"CHARACTER_DETAILS","k":"2"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards","c":"Character","l":"Character(int, CharacterType)","u":"%3Cinit%3E(int,it.polimi.ingsw.gc14.Model.Cards.TribeCards.CharacterType)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards","c":"Character","l":"Character(int, CharacterType, int)","u":"%3Cinit%3E(int,it.polimi.ingsw.gc14.Model.Cards.TribeCards.CharacterType,int)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards","c":"Character","l":"Character(String, int, CharacterType)","u":"%3Cinit%3E(java.lang.String,int,it.polimi.ingsw.gc14.Model.Cards.TribeCards.CharacterType)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards","c":"Character","l":"Character(String, int, CharacterType, int)","u":"%3Cinit%3E(java.lang.String,int,it.polimi.ingsw.gc14.Model.Cards.TribeCards.CharacterType,int)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model.Cards.Building.Effects","c":"Building11","l":"characterType","k":"1"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards","c":"CharacterType","l":"CharacterType()","u":"%3Cinit%3E()","k":"3"},{"p":"it.polimi.ingsw.gc14","c":"ServerLauncher","l":"chooseNetworkInterface(Scanner)","u":"chooseNetworkInterface(java.util.Scanner)","k":"6"},{"p":"it.polimi.ingsw.gc14","c":"LimitedMap","l":"clear()"},{"p":"it.polimi.ingsw.gc14.Model","c":"Game","l":"clearDisconnected()"},{"p":"it.polimi.ingsw.gc14.Controller","c":"ClientController","l":"client","k":"1"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Client","c":"ClientCallbackImpl","l":"ClientCallbackImpl(ClientController)","u":"%3Cinit%3E(it.polimi.ingsw.gc14.Controller.ClientController)","k":"3"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Client","c":"ClientCallbackImpl","l":"clientController","k":"1"},{"p":"it.polimi.ingsw.gc14.Controller","c":"ClientController","l":"ClientController(IView)","u":"%3Cinit%3E(it.polimi.ingsw.gc14.View.IView)","k":"3"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Server","c":"ClientHandler","l":"ClientHandler(String, Socket, ObjectOutputStream, ObjectInputStream, List, LimitedMap, BlockingQueue)","u":"%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)","k":"3"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Server","c":"ClientHandler","l":"clientHandlers","k":"1"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Server","c":"TCPServer","l":"clientHandlers","k":"1"},{"p":"it.polimi.ingsw.gc14","c":"ClientLauncherGUI","l":"ClientLauncherGUI()","u":"%3Cinit%3E()","k":"3"},{"p":"it.polimi.ingsw.gc14","c":"ClientLauncherTUI","l":"ClientLauncherTUI()","u":"%3Cinit%3E()","k":"3"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Server","c":"RMIHeartbeat","l":"clients","k":"1"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Server","c":"RMIServer","l":"clients","k":"1"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Server","c":"ClientHandler","l":"clientSocket","k":"1"},{"p":"it.polimi.ingsw.gc14.Model.Cards.Building.Effects","c":"Building0","l":"clone()"},{"p":"it.polimi.ingsw.gc14.Model.Cards.Building.Effects","c":"Building1","l":"clone()"},{"p":"it.polimi.ingsw.gc14.Model.Cards.Building.Effects","c":"Building10","l":"clone()"},{"p":"it.polimi.ingsw.gc14.Model.Cards.Building.Effects","c":"Building11","l":"clone()"},{"p":"it.polimi.ingsw.gc14.Model.Cards.Building.Effects","c":"Building13","l":"clone()"},{"p":"it.polimi.ingsw.gc14.Model.Cards.Building.Effects","c":"Building4","l":"clone()"},{"p":"it.polimi.ingsw.gc14.Model.Cards.Building.Effects","c":"Building8","l":"clone()"},{"p":"it.polimi.ingsw.gc14.Model.Cards","c":"BuildingCard","l":"clone()"},{"p":"it.polimi.ingsw.gc14.Model.Cards","c":"TribeCard","l":"clone()"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards","c":"Character","l":"clone()"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters","c":"Artist","l":"clone()"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters","c":"Builder","l":"clone()"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters","c":"Gatherer","l":"clone()"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters","c":"Hunter","l":"clone()"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters","c":"Inventor","l":"clone()"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters","c":"Shaman","l":"clone()"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards","c":"EventCard","l":"clone()"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Events","c":"CavePaintings","l":"clone()"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Events","c":"Hunt","l":"clone()"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Events","c":"ShamanicRitual","l":"clone()"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Events","c":"Sustenance","l":"clone()"},{"p":"it.polimi.ingsw.gc14.View.TUI","c":"AsciiTable","l":"cols","k":"1"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Client","c":"TCPClient","l":"communicationSocket","k":"1"},{"p":"it.polimi.ingsw.gc14.Network","c":"CompositeClientBroadcaster","l":"CompositeClientBroadcaster(RMIServer, TCPServer)","u":"%3Cinit%3E(it.polimi.ingsw.gc14.Network.RMI.Server.RMIServer,it.polimi.ingsw.gc14.Network.TCP.Server.TCPServer)","k":"3"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"TotemFXMLController","l":"confirmButton","k":"1"},{"p":"it.polimi.ingsw.gc14.Network","c":"IClient","l":"connect(String, int)","u":"connect(java.lang.String,int)"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Client","c":"RMIClient","l":"connect(String, int)","u":"connect(java.lang.String,int)"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Client","c":"TCPClient","l":"connect(String, int)","u":"connect(java.lang.String,int)"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"LoginFXMLController","l":"connect(String, String, int, String)","u":"connect(java.lang.String,java.lang.String,int,java.lang.String)"},{"p":"it.polimi.ingsw.gc14.Model","c":"OrderLogicCard","l":"containsInQueue(Player)","u":"containsInQueue(it.polimi.ingsw.gc14.Model.Player)"},{"p":"it.polimi.ingsw.gc14","c":"LimitedMap","l":"containsKey(Object)","u":"containsKey(java.lang.Object)"},{"p":"it.polimi.ingsw.gc14","c":"LimitedMap","l":"containsValue(Object)","u":"containsValue(java.lang.Object)"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Client","c":"RMIClient","l":"controller","k":"1"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Server","c":"RMIServer","l":"controller","k":"1"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Client","c":"TCPClient","l":"controller","k":"1"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Server","c":"TCPServer","l":"controller","k":"1"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"GUI","l":"controller","k":"1"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"LeaderboardFXMLController","l":"controller","k":"1"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"LoginFXMLController","l":"controller","k":"1"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"MainFXMLController","l":"controller","k":"1"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"TotemFXMLController","l":"controller","k":"1"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"GUI","l":"controllerLeaderboard","k":"1"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"GUI","l":"controllerLogin","k":"1"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"GUI","l":"controllerMain","k":"1"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"GUI","l":"controllerTotem","k":"1"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"FireParticleSystem.Particle","l":"core","k":"1"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Server","c":"TCPServer","l":"createAndRegisterHandler(String, Socket, ObjectOutputStream, ObjectInputStream)","u":"createAndRegisterHandler(java.lang.String,java.net.Socket,java.io.ObjectOutputStream,java.io.ObjectInputStream)"},{"p":"it.polimi.ingsw.gc14.Model","c":"DecksCreator","l":"createCard(DecksCreator.BuildingCardDefinition)","u":"createCard(it.polimi.ingsw.gc14.Model.DecksCreator.BuildingCardDefinition)","k":"6"},{"p":"it.polimi.ingsw.gc14.Model","c":"DecksCreator","l":"createCard(DecksCreator.TribeCardDefinition)","u":"createCard(it.polimi.ingsw.gc14.Model.DecksCreator.TribeCardDefinition)","k":"6"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"MainFXMLController","l":"createCard(PlayableCard, boolean, boolean, Region)","u":"createCard(it.polimi.ingsw.gc14.Model.PlayableCard,boolean,boolean,javafx.scene.layout.Region)"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"MainFXMLController","l":"createCardPopup(PlayableCard, boolean, boolean)","u":"createCardPopup(it.polimi.ingsw.gc14.Model.PlayableCard,boolean,boolean)"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"MainFXMLController","l":"createOrder(String)","u":"createOrder(java.lang.String)"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"LeaderboardFXMLController","l":"createPlayerRow(int, Player)","u":"createPlayerRow(int,it.polimi.ingsw.gc14.Model.Player)"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"MainFXMLController","l":"createSlot(Slot, boolean, boolean)","u":"createSlot(it.polimi.ingsw.gc14.Model.Slot,boolean,boolean)"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"LeaderboardFXMLController","l":"createStatItem(String, String, double)","u":"createStatItem(java.lang.String,java.lang.String,double)"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"LeaderboardFXMLController","l":"createStatsBox(Player)","u":"createStatsBox(it.polimi.ingsw.gc14.Model.Player)"},{"p":"it.polimi.ingsw.gc14.Model","c":"Game","l":"currentState","k":"1"},{"p":"it.polimi.ingsw.gc14.Model","c":"MiniModel","l":"currentState","k":"1"},{"p":"it.polimi.ingsw.gc14.Network","c":"NetworkEvent","l":"currentState","k":"1"},{"p":"it.polimi.ingsw.gc14.Model.GamePackage","c":"CurrentState","l":"CurrentState()","u":"%3Cinit%3E()","k":"3"},{"p":"it.polimi.ingsw.gc14","c":"ClientLauncherTUI","l":"currentUsername","k":"1"},{"p":"it.polimi.ingsw.gc14.Model","c":"DecksCreator","l":"DecksCreator()","u":"%3Cinit%3E()","k":"3"},{"p":"it.polimi.ingsw.gc14","c":"SaveManager","l":"delete()"},{"p":"it.polimi.ingsw.gc14","c":"ErrorType","l":"description","k":"1"},{"p":"it.polimi.ingsw.gc14.Network","c":"EventType","l":"description","k":"1"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"MainFXMLController","l":"detailsBtn","k":"1"},{"p":"it.polimi.ingsw.gc14.Controller","c":"ClientController","l":"disconnect()"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Client","c":"RMIClient","l":"disconnect()"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Server","c":"RMIHeartbeat","l":"disconnect()"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Client","c":"TCPClient","l":"disconnect()"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Server","c":"ClientHandler","l":"disconnect()"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Server","c":"HeartbeatHandler","l":"disconnect()"},{"p":"it.polimi.ingsw.gc14.Network","c":"EventType","l":"DISCONNECTED_PLAYER","k":"0"},{"p":"it.polimi.ingsw.gc14.Model","c":"Game","l":"disconnectedPlayer(Player)","u":"disconnectedPlayer(it.polimi.ingsw.gc14.Model.Player)"},{"p":"it.polimi.ingsw.gc14.Controller","c":"GameController","l":"disconnectedPlayer(String)","u":"disconnectedPlayer(java.lang.String)"},{"p":"it.polimi.ingsw.gc14.Network.NetworkEvents","c":"DisconnectedPlayer","l":"DisconnectedPlayer(String)","u":"%3Cinit%3E(java.lang.String)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model","c":"Game","l":"disconnectedPlayers","k":"1"},{"p":"it.polimi.ingsw.gc14.Model","c":"MiniModel","l":"disconnectedPlayers","k":"1"},{"p":"it.polimi.ingsw.gc14.Network","c":"NetworkEvent","l":"disconnectedPlayers","k":"1"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Server","c":"RMIServer","l":"disconnectedUsernames(Game)","u":"disconnectedUsernames(it.polimi.ingsw.gc14.Model.Game)","k":"6"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Server","c":"TCPServer","l":"disconnectedUsernames(Game)","u":"disconnectedUsernames(it.polimi.ingsw.gc14.Model.Game)","k":"6"},{"p":"it.polimi.ingsw.gc14","c":"GameEventProcessor","l":"disconnectionTimer","k":"1"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Common","c":"IGameServer","l":"disconnectPlayer(String)","u":"disconnectPlayer(java.lang.String)"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Server","c":"RMIServer","l":"disconnectPlayer(String)","u":"disconnectPlayer(java.lang.String)"},{"p":"it.polimi.ingsw.gc14.View.TUI","c":"TUI","l":"display(String)","u":"display(java.lang.String)"},{"p":"it.polimi.ingsw.gc14.Model.GamePackage","c":"GameStages","l":"displayName","k":"1"},{"p":"it.polimi.ingsw.gc14.View.TUI","c":"AsciiTable","l":"displayWidth(String)","u":"displayWidth(java.lang.String)","k":"6"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Client","c":"TCPClient","l":"doEvent(NetworkEvent)","u":"doEvent(it.polimi.ingsw.gc14.Network.NetworkEvent)"},{"p":"it.polimi.ingsw.gc14","c":"GameEventProcessor","l":"doFirstEvent()"},{"p":"it.polimi.ingsw.gc14","c":"ClientLauncherTUI","l":"doLogin(ClientController)","u":"doLogin(it.polimi.ingsw.gc14.Controller.ClientController)"},{"p":"it.polimi.ingsw.gc14","c":"ClientLauncherTUI","l":"doLoginInner(ClientController, LineReader, LineReader)","u":"doLoginInner(it.polimi.ingsw.gc14.Controller.ClientController,org.jline.reader.LineReader,org.jline.reader.LineReader)"},{"p":"it.polimi.ingsw.gc14.Network","c":"EventType","l":"DRAW_LOWER_BUILD","k":"0"},{"p":"it.polimi.ingsw.gc14.Network","c":"EventType","l":"DRAW_LOWER_TRIBE","k":"0"},{"p":"it.polimi.ingsw.gc14.Network","c":"EventType","l":"DRAW_UPPER_BUILD","k":"0"},{"p":"it.polimi.ingsw.gc14.Network","c":"EventType","l":"DRAW_UPPER_TRIBE","k":"0"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"MainFXMLController","l":"drawLowerBuilding()"},{"p":"it.polimi.ingsw.gc14.Controller","c":"ClientController","l":"drawLowerBuildingCard(int)"},{"p":"it.polimi.ingsw.gc14.Controller","c":"GameController","l":"drawLowerBuildingCard(String, int)","u":"drawLowerBuildingCard(java.lang.String,int)"},{"p":"it.polimi.ingsw.gc14.Network","c":"IClient","l":"drawLowerBuildingCard(String, int)","u":"drawLowerBuildingCard(java.lang.String,int)"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Client","c":"RMIClient","l":"drawLowerBuildingCard(String, int)","u":"drawLowerBuildingCard(java.lang.String,int)"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Common","c":"IGameServer","l":"drawLowerBuildingCard(String, int)","u":"drawLowerBuildingCard(java.lang.String,int)"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Server","c":"RMIServer","l":"drawLowerBuildingCard(String, int)","u":"drawLowerBuildingCard(java.lang.String,int)"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Client","c":"TCPClient","l":"drawLowerBuildingCard(String, int)","u":"drawLowerBuildingCard(java.lang.String,int)"},{"p":"it.polimi.ingsw.gc14.Network.NetworkEvents","c":"DrawLowerBuildingCard","l":"DrawLowerBuildingCard(String, int)","u":"%3Cinit%3E(java.lang.String,int)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model","c":"Game","l":"drawLowerBuildingCardByIndex(Player, int)","u":"drawLowerBuildingCardByIndex(it.polimi.ingsw.gc14.Model.Player,int)"},{"p":"it.polimi.ingsw.gc14.Controller","c":"ClientController","l":"drawLowerTribeCard(int)"},{"p":"it.polimi.ingsw.gc14.Controller","c":"GameController","l":"drawLowerTribeCard(String, int)","u":"drawLowerTribeCard(java.lang.String,int)"},{"p":"it.polimi.ingsw.gc14.Network","c":"IClient","l":"drawLowerTribeCard(String, int)","u":"drawLowerTribeCard(java.lang.String,int)"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Client","c":"RMIClient","l":"drawLowerTribeCard(String, int)","u":"drawLowerTribeCard(java.lang.String,int)"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Common","c":"IGameServer","l":"drawLowerTribeCard(String, int)","u":"drawLowerTribeCard(java.lang.String,int)"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Server","c":"RMIServer","l":"drawLowerTribeCard(String, int)","u":"drawLowerTribeCard(java.lang.String,int)"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Client","c":"TCPClient","l":"drawLowerTribeCard(String, int)","u":"drawLowerTribeCard(java.lang.String,int)"},{"p":"it.polimi.ingsw.gc14.Network.NetworkEvents","c":"DrawLowerTribeCard","l":"DrawLowerTribeCard(String, int)","u":"%3Cinit%3E(java.lang.String,int)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model","c":"Game","l":"drawLowerTribeCardByIndex(Player, int)","u":"drawLowerTribeCardByIndex(it.polimi.ingsw.gc14.Model.Player,int)"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"MainFXMLController","l":"drawMyHandList(ArrayList)","u":"drawMyHandList(java.util.ArrayList)"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"MainFXMLController","l":"drawUpperBuilding()"},{"p":"it.polimi.ingsw.gc14.Controller","c":"ClientController","l":"drawUpperBuildingCard(int)"},{"p":"it.polimi.ingsw.gc14.Controller","c":"GameController","l":"drawUpperBuildingCard(String, int)","u":"drawUpperBuildingCard(java.lang.String,int)"},{"p":"it.polimi.ingsw.gc14.Network","c":"IClient","l":"drawUpperBuildingCard(String, int)","u":"drawUpperBuildingCard(java.lang.String,int)"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Client","c":"RMIClient","l":"drawUpperBuildingCard(String, int)","u":"drawUpperBuildingCard(java.lang.String,int)"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Common","c":"IGameServer","l":"drawUpperBuildingCard(String, int)","u":"drawUpperBuildingCard(java.lang.String,int)"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Server","c":"RMIServer","l":"drawUpperBuildingCard(String, int)","u":"drawUpperBuildingCard(java.lang.String,int)"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Client","c":"TCPClient","l":"drawUpperBuildingCard(String, int)","u":"drawUpperBuildingCard(java.lang.String,int)"},{"p":"it.polimi.ingsw.gc14.Network.NetworkEvents","c":"DrawUpperBuildingCard","l":"DrawUpperBuildingCard(String, int)","u":"%3Cinit%3E(java.lang.String,int)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model","c":"Game","l":"drawUpperBuildingCardByIndex(Player, int)","u":"drawUpperBuildingCardByIndex(it.polimi.ingsw.gc14.Model.Player,int)"},{"p":"it.polimi.ingsw.gc14.Controller","c":"ClientController","l":"drawUpperTribeCard(int)"},{"p":"it.polimi.ingsw.gc14.Controller","c":"GameController","l":"drawUpperTribeCard(String, int)","u":"drawUpperTribeCard(java.lang.String,int)"},{"p":"it.polimi.ingsw.gc14.Network","c":"IClient","l":"drawUpperTribeCard(String, int)","u":"drawUpperTribeCard(java.lang.String,int)"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Client","c":"RMIClient","l":"drawUpperTribeCard(String, int)","u":"drawUpperTribeCard(java.lang.String,int)"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Common","c":"IGameServer","l":"drawUpperTribeCard(String, int)","u":"drawUpperTribeCard(java.lang.String,int)"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Server","c":"RMIServer","l":"drawUpperTribeCard(String, int)","u":"drawUpperTribeCard(java.lang.String,int)"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Client","c":"TCPClient","l":"drawUpperTribeCard(String, int)","u":"drawUpperTribeCard(java.lang.String,int)"},{"p":"it.polimi.ingsw.gc14.Network.NetworkEvents","c":"DrawUpperTribeCard","l":"DrawUpperTribeCard(String, int)","u":"%3Cinit%3E(java.lang.String,int)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model","c":"Game","l":"drawUpperTribeCardByIndex(Player, int)","u":"drawUpperTribeCardByIndex(it.polimi.ingsw.gc14.Model.Player,int)"},{"p":"it.polimi.ingsw.gc14.Model","c":"OrderLogicCard","l":"effect(Player, int)","u":"effect(it.polimi.ingsw.gc14.Model.Player,int)"},{"p":"it.polimi.ingsw.gc14.Model.Orders","c":"Order2","l":"effect(Player, int)","u":"effect(it.polimi.ingsw.gc14.Model.Player,int)"},{"p":"it.polimi.ingsw.gc14.Model.Orders","c":"Order3","l":"effect(Player, int)","u":"effect(it.polimi.ingsw.gc14.Model.Player,int)"},{"p":"it.polimi.ingsw.gc14.Model.Orders","c":"Order4","l":"effect(Player, int)","u":"effect(it.polimi.ingsw.gc14.Model.Player,int)"},{"p":"it.polimi.ingsw.gc14.Model.Orders","c":"Order5","l":"effect(Player, int)","u":"effect(it.polimi.ingsw.gc14.Model.Player,int)"},{"p":"it.polimi.ingsw.gc14.Model.Cards","c":"BuildingCard","l":"effectId","k":"1"},{"p":"it.polimi.ingsw.gc14.Model","c":"DecksCreator.BuildingCardDefinition","l":"effectId","k":"1"},{"p":"it.polimi.ingsw.gc14.Model.Cards","c":"BuildingCard","l":"effectType","k":"1"},{"p":"it.polimi.ingsw.gc14.Model.Cards.Building","c":"EffectType","l":"EffectType()","u":"%3Cinit%3E()","k":"3"},{"p":"it.polimi.ingsw.gc14.Model.Cards","c":"BuildingCard","l":"effectTypeFromId(int)","k":"6"},{"p":"it.polimi.ingsw.gc14.Model.GamePackage","c":"GameStages","l":"ENDED","k":"0"},{"p":"it.polimi.ingsw.gc14.Network","c":"EventType","l":"ENDED_GAME","k":"0"},{"p":"it.polimi.ingsw.gc14.Network.NetworkEvents","c":"EndedGame","l":"EndedGame(Map, OrderLogicCard, CurrentState, ArrayList)","u":"%3Cinit%3E(java.util.Map,it.polimi.ingsw.gc14.Model.OrderLogicCard,it.polimi.ingsw.gc14.Model.GamePackage.CurrentState,java.util.ArrayList)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model","c":"Game","l":"endGame()"},{"p":"it.polimi.ingsw.gc14.Controller","c":"GameController","l":"endGameForfeit()"},{"p":"it.polimi.ingsw.gc14.Model","c":"Game","l":"endGameForfeit()"},{"p":"it.polimi.ingsw.gc14","c":"GameEventProcessor","l":"endGameForfeit(Game)","u":"endGameForfeit(it.polimi.ingsw.gc14.Model.Game)"},{"p":"it.polimi.ingsw.gc14.Model.GamePackage","c":"GameStages","l":"ENDING","k":"0"},{"p":"it.polimi.ingsw.gc14","c":"GameEventProcessor","l":"enrichEvent(NetworkEvent, Game)","u":"enrichEvent(it.polimi.ingsw.gc14.Network.NetworkEvent,it.polimi.ingsw.gc14.Model.Game)"},{"p":"it.polimi.ingsw.gc14.Network","c":"NetworkEvent","l":"enrichWithGameState(Game, ArrayList)","u":"enrichWithGameState(it.polimi.ingsw.gc14.Model.Game,java.util.ArrayList)"},{"p":"it.polimi.ingsw.gc14.Network.NetworkEvents","c":"DisconnectedPlayer","l":"enrichWithGameState(Game, ArrayList)","u":"enrichWithGameState(it.polimi.ingsw.gc14.Model.Game,java.util.ArrayList)"},{"p":"it.polimi.ingsw.gc14.Network.NetworkEvents","c":"ReconnectPlayer","l":"enrichWithGameState(Game, ArrayList)","u":"enrichWithGameState(it.polimi.ingsw.gc14.Model.Game,java.util.ArrayList)"},{"p":"it.polimi.ingsw.gc14.Network.NetworkEvents","c":"TotemChoice","l":"enrichWithGameState(Game, ArrayList)","u":"enrichWithGameState(it.polimi.ingsw.gc14.Model.Game,java.util.ArrayList)"},{"p":"it.polimi.ingsw.gc14","c":"LimitedMap","l":"entrySet()"},{"p":"it.polimi.ingsw.gc14.Model","c":"Player","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"it.polimi.ingsw.gc14.Model","c":"Slot","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"it.polimi.ingsw.gc14.Model","c":"DecksCreator.BuildingCardDefinition","l":"era","k":"1"},{"p":"it.polimi.ingsw.gc14.Model","c":"DecksCreator.TribeCardDefinition","l":"era","k":"1"},{"p":"it.polimi.ingsw.gc14.Model.GamePackage","c":"Board","l":"era","k":"1"},{"p":"it.polimi.ingsw.gc14.Model.GamePackage","c":"CurrentState","l":"era","k":"1"},{"p":"it.polimi.ingsw.gc14.Model","c":"PlayableCard","l":"era","k":"1"},{"p":"it.polimi.ingsw.gc14.Model.GamePackage","c":"CurrentState","l":"eraUpdate()"},{"p":"it.polimi.ingsw.gc14.Network","c":"NetworkEvent","l":"errorType","k":"1"},{"p":"it.polimi.ingsw.gc14","c":"ErrorType","l":"ErrorType(String)","u":"%3Cinit%3E(java.lang.String)","k":"3"},{"p":"it.polimi.ingsw.gc14","c":"ClientLauncherTUI","l":"EVENT_DETAILS","k":"2"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards","c":"EventCard","l":"EventCard(int, EventType)","u":"%3Cinit%3E(int,it.polimi.ingsw.gc14.Model.Cards.TribeCards.EventType)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards","c":"EventCard","l":"EventCard(String, int, EventType)","u":"%3Cinit%3E(java.lang.String,int,it.polimi.ingsw.gc14.Model.Cards.TribeCards.EventType)","k":"3"},{"p":"it.polimi.ingsw.gc14","c":"ServerLauncher","l":"eventProcessor","k":"1"},{"p":"it.polimi.ingsw.gc14.Model","c":"Game","l":"eventResolution()"},{"p":"it.polimi.ingsw.gc14.Network","c":"NetworkEvent","l":"eventType","k":"1"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards","c":"EventType","l":"EventType()","u":"%3Cinit%3E()","k":"3"},{"p":"it.polimi.ingsw.gc14.Network","c":"EventType","l":"EventType(String)","u":"%3Cinit%3E(java.lang.String)","k":"3"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Client","c":"RMIClient","l":"executor","k":"1"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"GUI","l":"fadeToScene(Scene)","u":"fadeToScene(javafx.scene.Scene)"},{"p":"it.polimi.ingsw.gc14","c":"SaveManager","l":"filePath","k":"1"},{"p":"it.polimi.ingsw.gc14.Model.Cards.Building","c":"EffectType","l":"FINAL","k":"0"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"FireParticleSystem","l":"FireParticleSystem(Scene)","u":"%3Cinit%3E(javafx.scene.Scene)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model","c":"Slot","l":"food","k":"1"},{"p":"it.polimi.ingsw.gc14.Model.Cards.Building.Effects","c":"Building0","l":"FOOD_PER_CHARACTER_SET","k":"2"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Events","c":"Sustenance","l":"FOOD_PER_GATHERER","k":"2"},{"p":"it.polimi.ingsw.gc14.Model.Cards.Building.Effects","c":"Building4","l":"FOOD_PER_INVENTOR_PAIR","k":"2"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"MainFXMLController","l":"foodLabels","k":"1"},{"p":"it.polimi.ingsw.gc14.Model","c":"Player","l":"foodValue","k":"1"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"LoginFXMLController","l":"formPanel","k":"1"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"FireParticleSystem","l":"FRAME_INTERVAL_NS","k":"2"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"TotemFXMLController","l":"frameStyle(boolean)"},{"p":"it.polimi.ingsw.gc14","c":"ErrorType","l":"GAME_ALREADY_STARTED","k":"0"},{"p":"it.polimi.ingsw.gc14.Model","c":"Game","l":"Game()","u":"%3Cinit%3E()","k":"3"},{"p":"it.polimi.ingsw.gc14.Model","c":"Game","l":"Game(int)","u":"%3Cinit%3E(int)","k":"3"},{"p":"it.polimi.ingsw.gc14","c":"GameEventProcessor","l":"gameController","k":"1"},{"p":"it.polimi.ingsw.gc14.Controller","c":"GameController","l":"GameController()","u":"%3Cinit%3E()","k":"3"},{"p":"it.polimi.ingsw.gc14.Controller","c":"GameController","l":"GameController(Game)","u":"%3Cinit%3E(it.polimi.ingsw.gc14.Model.Game)","k":"3"},{"p":"it.polimi.ingsw.gc14","c":"GameEventProcessor","l":"GameEventProcessor(BlockingQueue, GameController, LimitedMap, CompositeClientBroadcaster, SaveManager)","u":"%3Cinit%3E(java.util.concurrent.BlockingQueue,it.polimi.ingsw.gc14.Controller.GameController,it.polimi.ingsw.gc14.LimitedMap,it.polimi.ingsw.gc14.Network.CompositeClientBroadcaster,it.polimi.ingsw.gc14.SaveManager)","k":"3"},{"p":"it.polimi.ingsw.gc14","c":"ClientLauncherTUI","l":"gameReader","k":"1"},{"p":"it.polimi.ingsw.gc14.Model.GamePackage","c":"CurrentState","l":"gameStage","k":"1"},{"p":"it.polimi.ingsw.gc14.Model.GamePackage","c":"GameStages","l":"GameStages(String)","u":"%3Cinit%3E(java.lang.String)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model.GamePackage","c":"CurrentState","l":"gameStageUpdate(GameStages)","u":"gameStageUpdate(it.polimi.ingsw.gc14.Model.GamePackage.GameStages)"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards","c":"CharacterType","l":"GATHERER","k":"0"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters","c":"Gatherer","l":"Gatherer(int)","u":"%3Cinit%3E(int)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters","c":"Gatherer","l":"Gatherer(int, int)","u":"%3Cinit%3E(int,int)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters","c":"Gatherer","l":"Gatherer(String, int)","u":"%3Cinit%3E(java.lang.String,int)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters","c":"Gatherer","l":"Gatherer(String, int, int)","u":"%3Cinit%3E(java.lang.String,int,int)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model","c":"Player","l":"gatherers","k":"1"},{"p":"it.polimi.ingsw.gc14.Model.GamePackage","c":"Board","l":"generateTribeDeck(int)"},{"p":"it.polimi.ingsw.gc14","c":"ErrorType","l":"GENERIC_ERROR","k":"0"},{"p":"it.polimi.ingsw.gc14","c":"LimitedMap","l":"get(Object)","u":"get(java.lang.Object)"},{"p":"it.polimi.ingsw.gc14.Model","c":"Player","l":"getArtists()"},{"p":"it.polimi.ingsw.gc14.Model","c":"Game","l":"getAvailableTotems()"},{"p":"it.polimi.ingsw.gc14.Model","c":"Game","l":"getBoard()"},{"p":"it.polimi.ingsw.gc14.Model","c":"Player","l":"getBuilders()"},{"p":"it.polimi.ingsw.gc14.Model","c":"Player","l":"getBuildingCards()"},{"p":"it.polimi.ingsw.gc14.Controller","c":"ClientController","l":"getClient()"},{"p":"it.polimi.ingsw.gc14.Model.GamePackage","c":"CurrentState","l":"getCurrentPlayer()"},{"p":"it.polimi.ingsw.gc14.Model","c":"Game","l":"getCurrentPlayerNumber()"},{"p":"it.polimi.ingsw.gc14.Model","c":"Game","l":"getCurrentState()"},{"p":"it.polimi.ingsw.gc14.Model","c":"Game","l":"getDisconnectedPlayers()"},{"p":"it.polimi.ingsw.gc14.Model.Cards","c":"BuildingCard","l":"getEffectId()"},{"p":"it.polimi.ingsw.gc14.Model.Cards","c":"BuildingCard","l":"getEffectType()"},{"p":"it.polimi.ingsw.gc14.Model.GamePackage","c":"Board","l":"getEra()"},{"p":"it.polimi.ingsw.gc14.Model.GamePackage","c":"CurrentState","l":"getEra()"},{"p":"it.polimi.ingsw.gc14.Model","c":"PlayableCard","l":"getEra()"},{"p":"it.polimi.ingsw.gc14.Network","c":"NetworkEvent","l":"getErrorType()"},{"p":"it.polimi.ingsw.gc14.Network","c":"NetworkEvent","l":"getEventType()"},{"p":"it.polimi.ingsw.gc14.Model","c":"OrderLogicCard","l":"getFirst()"},{"p":"it.polimi.ingsw.gc14.Model","c":"Slot","l":"getFood()"},{"p":"it.polimi.ingsw.gc14.Model","c":"Player","l":"getFoodValue()"},{"p":"it.polimi.ingsw.gc14.Model.GamePackage","c":"CurrentState","l":"getGameStage()"},{"p":"it.polimi.ingsw.gc14.Model","c":"Player","l":"getGatherers()"},{"p":"it.polimi.ingsw.gc14.Model","c":"Player","l":"getHunters()"},{"p":"it.polimi.ingsw.gc14.Model.Cards.Building.Effects","c":"Building1","l":"getIcon()"},{"p":"it.polimi.ingsw.gc14.Model.Cards.Building.Effects","c":"Building11","l":"getIcon()"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters","c":"Hunter","l":"getIcon()"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters","c":"Inventor","l":"getIcon()"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters","c":"Shaman","l":"getIcon()"},{"p":"it.polimi.ingsw.gc14.Model","c":"PlayableCard","l":"getIdIMG()"},{"p":"it.polimi.ingsw.gc14.Model","c":"Player","l":"getInventors()"},{"p":"it.polimi.ingsw.gc14.Model","c":"Game","l":"getLowerListBuilding()"},{"p":"it.polimi.ingsw.gc14.Model.GamePackage","c":"Board","l":"getLowerListBuilding()"},{"p":"it.polimi.ingsw.gc14.Model.GamePackage","c":"Board","l":"getLowerListTribe()"},{"p":"it.polimi.ingsw.gc14.Model","c":"Game","l":"getLowerListTribeCards()"},{"p":"it.polimi.ingsw.gc14.Controller","c":"ClientController","l":"getMiniModel()"},{"p":"it.polimi.ingsw.gc14.Controller","c":"GameController","l":"getModel()"},{"p":"it.polimi.ingsw.gc14.Controller","c":"ClientController","l":"getMyUsername()"},{"p":"it.polimi.ingsw.gc14.Model.GamePackage","c":"CurrentState","l":"getNLower()"},{"p":"it.polimi.ingsw.gc14.Model","c":"Slot","l":"getNLower()"},{"p":"it.polimi.ingsw.gc14.Model.Cards","c":"TribeCard","l":"getNMin()"},{"p":"it.polimi.ingsw.gc14.Model","c":"Slot","l":"getNMinPlayer()"},{"p":"it.polimi.ingsw.gc14.Model","c":"Game","l":"getNPlayers()"},{"p":"it.polimi.ingsw.gc14.Model","c":"Player","l":"getNType(CharacterType)","u":"getNType(it.polimi.ingsw.gc14.Model.Cards.TribeCards.CharacterType)"},{"p":"it.polimi.ingsw.gc14.Model.GamePackage","c":"CurrentState","l":"getNUpper()"},{"p":"it.polimi.ingsw.gc14.Model","c":"Slot","l":"getNUpper()"},{"p":"it.polimi.ingsw.gc14.Model","c":"Game","l":"getOrderLogicCard()"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"FireParticleSystem","l":"getPane()"},{"p":"it.polimi.ingsw.gc14.Model.GamePackage","c":"Board","l":"getPendingEvents()"},{"p":"it.polimi.ingsw.gc14.Model.Orders","c":"OrderPlayer","l":"getPlayer()"},{"p":"it.polimi.ingsw.gc14.Model","c":"Game","l":"getPlayerByUsername(String)","u":"getPlayerByUsername(java.lang.String)"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"LeaderboardFXMLController","l":"getPlayerCards(String, String)","u":"getPlayerCards(java.lang.String,java.lang.String)"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"MainFXMLController","l":"getPlayerCards(String, String)","u":"getPlayerCards(java.lang.String,java.lang.String)"},{"p":"it.polimi.ingsw.gc14.Model","c":"OrderLogicCard","l":"getPlayerList()"},{"p":"it.polimi.ingsw.gc14.Model","c":"Game","l":"getPlayers()"},{"p":"it.polimi.ingsw.gc14.Model","c":"Game","l":"getPlayerStanding()"},{"p":"it.polimi.ingsw.gc14.Model","c":"OrderLogicCard","l":"getPosition(String)","u":"getPosition(java.lang.String)"},{"p":"it.polimi.ingsw.gc14.Model","c":"MiniModel","l":"getPositionByUsername(String)","u":"getPositionByUsername(java.lang.String)"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Events","c":"Sustenance","l":"getPrestigeDebt()"},{"p":"it.polimi.ingsw.gc14.Model.Cards.Building.Effects","c":"Building11","l":"getPrestigeMul()"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Events","c":"Hunt","l":"getPrestigeMultiplier()"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Events","c":"ShamanicRitual","l":"getPrestigeToAdd()"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Events","c":"ShamanicRitual","l":"getPrestigeToRemove()"},{"p":"it.polimi.ingsw.gc14.Model.Cards","c":"BuildingCard","l":"getPrestigeValue()"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters","c":"Builder","l":"getPrestigeValue()"},{"p":"it.polimi.ingsw.gc14.Model","c":"Player","l":"getPrestigeValue()"},{"p":"it.polimi.ingsw.gc14.Model.Cards","c":"BuildingCard","l":"getPrice()"},{"p":"it.polimi.ingsw.gc14.Network.NetworkEvents","c":"AddPlayer","l":"getProposedNPlayer()"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters","c":"Builder","l":"getReductionValue()"},{"p":"it.polimi.ingsw.gc14.Model.GamePackage","c":"CurrentState","l":"getRound()"},{"p":"it.polimi.ingsw.gc14.Model","c":"Player","l":"getShamans()"},{"p":"it.polimi.ingsw.gc14.Model.GamePackage","c":"CurrentState","l":"getSlot()"},{"p":"it.polimi.ingsw.gc14.Model","c":"Slot","l":"getSlotId()"},{"p":"it.polimi.ingsw.gc14.Model.GamePackage","c":"Board","l":"getSlotList()"},{"p":"it.polimi.ingsw.gc14.Model","c":"Game","l":"getSlotMap()"},{"p":"it.polimi.ingsw.gc14.Model","c":"Player","l":"getTotCharacters()"},{"p":"it.polimi.ingsw.gc14.Model","c":"Player","l":"getTotem()"},{"p":"it.polimi.ingsw.gc14.Model.GamePackage","c":"Board","l":"getTribeDeckSize()"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards","c":"Character","l":"getType()"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards","c":"EventCard","l":"getType()"},{"p":"it.polimi.ingsw.gc14.Model","c":"Game","l":"getUpperListBuilding()"},{"p":"it.polimi.ingsw.gc14.Model.GamePackage","c":"Board","l":"getUpperListBuilding()"},{"p":"it.polimi.ingsw.gc14.Model.GamePackage","c":"Board","l":"getUpperListTribe()"},{"p":"it.polimi.ingsw.gc14.Model","c":"Game","l":"getUpperListTribeCards()"},{"p":"it.polimi.ingsw.gc14.Network","c":"NetworkEvent","l":"getUsername()"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Server","c":"ClientHandler","l":"getUsername()"},{"p":"it.polimi.ingsw.gc14.Model","c":"Player","l":"getUserName()"},{"p":"it.polimi.ingsw.gc14.Controller","c":"ClientController","l":"getView()"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"FireParticleSystem.Particle","l":"glow","k":"1"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"GUI","l":"GUI()","u":"%3Cinit%3E()","k":"3"},{"p":"it.polimi.ingsw.gc14","c":"ClientLauncherGUI.GUIApp","l":"GUIApp()","u":"%3Cinit%3E()","k":"3"},{"p":"it.polimi.ingsw.gc14.View.TUI","c":"BorderStyle","l":"h","k":"1"},{"p":"it.polimi.ingsw.gc14.View.TUI","c":"BorderStyle","l":"h()"},{"p":"it.polimi.ingsw.gc14","c":"ClientLauncherTUI","l":"handleCommand(String, ClientController)","u":"handleCommand(java.lang.String,it.polimi.ingsw.gc14.Controller.ClientController)"},{"p":"it.polimi.ingsw.gc14","c":"ClientLauncherTUI","l":"handleDraw(String[], ClientController)","u":"handleDraw(java.lang.String[],it.polimi.ingsw.gc14.Controller.ClientController)"},{"p":"it.polimi.ingsw.gc14","c":"GameEventProcessor","l":"handleInactiveGame(NetworkEvent)","u":"handleInactiveGame(it.polimi.ingsw.gc14.Network.NetworkEvent)"},{"p":"it.polimi.ingsw.gc14","c":"ClientLauncherTUI","l":"handleRender()"},{"p":"it.polimi.ingsw.gc14","c":"GameEventProcessor","l":"handleSuspendedGame(NetworkEvent)","u":"handleSuspendedGame(it.polimi.ingsw.gc14.Network.NetworkEvent)"},{"p":"it.polimi.ingsw.gc14.Model","c":"Game","l":"hasDrawableDown()"},{"p":"it.polimi.ingsw.gc14.Model","c":"Game","l":"hasDrawableUp()"},{"p":"it.polimi.ingsw.gc14.Model","c":"Player","l":"hashCode()"},{"p":"it.polimi.ingsw.gc14.Model","c":"Slot","l":"hashCode()"},{"p":"it.polimi.ingsw.gc14.Network","c":"NetworkConfig","l":"HEARTBEAT_PORT","k":"2"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Server","c":"HeartbeatHandler","l":"HeartbeatHandler(String, Socket, ClientHandler)","u":"%3Cinit%3E(java.lang.String,java.net.Socket,it.polimi.ingsw.gc14.Network.TCP.Server.ClientHandler)","k":"3"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Client","c":"TCPClient","l":"heartbeatIn","k":"1"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Client","c":"TCPClient","l":"heartbeatLoop()"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Client","c":"TCPClient","l":"heartbeatOut","k":"1"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Client","c":"TCPClient","l":"heartbeatPort","k":"1"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Server","c":"TCPServer","l":"heartbeatPort","k":"1"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Client","c":"TCPClient","l":"heartbeatSocket","k":"1"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Server","c":"TCPServer","l":"heartbeatSocketTCP","k":"1"},{"p":"it.polimi.ingsw.gc14.View.TUI","c":"AsciiTable","l":"hline(String, String, String, int)","u":"hline(java.lang.String,java.lang.String,java.lang.String,int)"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Client","c":"RMIClient","l":"host","k":"1"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Server","c":"RMIServer","l":"host","k":"1"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Client","c":"TCPClient","l":"hostname","k":"1"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards","c":"EventType","l":"HUNT","k":"0"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Events","c":"Hunt","l":"Hunt(int, int)","u":"%3Cinit%3E(int,int)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Events","c":"Hunt","l":"Hunt(String, int, int)","u":"%3Cinit%3E(java.lang.String,int,int)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards","c":"CharacterType","l":"HUNTER","k":"0"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters","c":"Hunter","l":"Hunter(int, boolean)","u":"%3Cinit%3E(int,boolean)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters","c":"Hunter","l":"Hunter(int, boolean, int)","u":"%3Cinit%3E(int,boolean,int)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters","c":"Hunter","l":"Hunter(String, int, boolean)","u":"%3Cinit%3E(java.lang.String,int,boolean)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters","c":"Hunter","l":"Hunter(String, int, boolean, int)","u":"%3Cinit%3E(java.lang.String,int,boolean,int)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model","c":"Player","l":"hunters","k":"1"},{"p":"it.polimi.ingsw.gc14.Model.Cards.Building.Effects","c":"Building1","l":"icon","k":"1"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters","c":"Hunter","l":"icon","k":"1"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters","c":"Inventor","l":"icon","k":"1"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters","c":"Shaman","l":"icon","k":"1"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"MainFXMLController","l":"iconViews","k":"1"},{"p":"it.polimi.ingsw.gc14.Model","c":"DecksCreator.BuildingCardDefinition","l":"id","k":"1"},{"p":"it.polimi.ingsw.gc14.Model","c":"DecksCreator.TribeCardDefinition","l":"id","k":"1"},{"p":"it.polimi.ingsw.gc14.Model","c":"PlayableCard","l":"idIMG","k":"1"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"LeaderboardFXMLController","l":"imageCache","k":"2"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"MainFXMLController","l":"imageCache","k":"2"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Server","c":"ClientHandler","l":"in","k":"1"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Server","c":"HeartbeatHandler","l":"in","k":"1"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"MainFXMLController","l":"infoText","k":"1"},{"p":"it.polimi.ingsw.gc14.Model","c":"Game","l":"init()"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"LeaderboardFXMLController","l":"initialize()"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"LoginFXMLController","l":"initialize()"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"MainFXMLController","l":"initialize()"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"TotemFXMLController","l":"initialize()"},{"p":"it.polimi.ingsw.gc14.Model.Cards.Building.Effects","c":"Building0","l":"initialize(Player)","u":"initialize(it.polimi.ingsw.gc14.Model.Player)"},{"p":"it.polimi.ingsw.gc14.Model.Cards.Building.Effects","c":"Building4","l":"initialize(Player)","u":"initialize(it.polimi.ingsw.gc14.Model.Player)"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"LeaderboardFXMLController","l":"initPopup()"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"MainFXMLController","l":"initPopup()"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards","c":"Character","l":"insert(Player)","u":"insert(it.polimi.ingsw.gc14.Model.Player)"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters","c":"Artist","l":"insert(Player)","u":"insert(it.polimi.ingsw.gc14.Model.Player)"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters","c":"Builder","l":"insert(Player)","u":"insert(it.polimi.ingsw.gc14.Model.Player)"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters","c":"Gatherer","l":"insert(Player)","u":"insert(it.polimi.ingsw.gc14.Model.Player)"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters","c":"Hunter","l":"insert(Player)","u":"insert(it.polimi.ingsw.gc14.Model.Player)"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters","c":"Inventor","l":"insert(Player)","u":"insert(it.polimi.ingsw.gc14.Model.Player)"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters","c":"Shaman","l":"insert(Player)","u":"insert(it.polimi.ingsw.gc14.Model.Player)"},{"p":"it.polimi.ingsw.gc14.Network","c":"InterfaceResolver","l":"InterfaceResolver()","u":"%3Cinit%3E()","k":"3"},{"p":"it.polimi.ingsw.gc14","c":"ErrorType","l":"INVALID_USERNAME","k":"0"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards","c":"CharacterType","l":"INVENTOR","k":"0"},{"p":"it.polimi.ingsw.gc14.Model.Cards.Building","c":"EffectType","l":"INVENTOR_PAIR","k":"0"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters","c":"Inventor","l":"Inventor(int, int)","u":"%3Cinit%3E(int,int)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters","c":"Inventor","l":"Inventor(int, int, int)","u":"%3Cinit%3E(int,int,int)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters","c":"Inventor","l":"Inventor(String, int, int)","u":"%3Cinit%3E(java.lang.String,int,int)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters","c":"Inventor","l":"Inventor(String, int, int, int)","u":"%3Cinit%3E(java.lang.String,int,int,int)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model","c":"Player","l":"inventors","k":"1"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"FireParticleSystem.Particle","l":"isDead(double, double)","u":"isDead(double,double)"},{"p":"it.polimi.ingsw.gc14","c":"LimitedMap","l":"isEmpty()"},{"p":"it.polimi.ingsw.gc14.Network","c":"NetworkEvent","l":"isError","k":"1"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"MainFXMLController","l":"isError","k":"1"},{"p":"it.polimi.ingsw.gc14.Network","c":"NetworkEvent","l":"isError()"},{"p":"it.polimi.ingsw.gc14.Model","c":"DecksCreator.TribeCardDefinition","l":"isEvent","k":"1"},{"p":"it.polimi.ingsw.gc14.Model.Cards","c":"TribeCard","l":"isEventCard","k":"1"},{"p":"it.polimi.ingsw.gc14.Model.Cards","c":"TribeCard","l":"isEventCard()"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"GUI","l":"isFading","k":"1"},{"p":"it.polimi.ingsw.gc14","c":"GameEventProcessor","l":"isGameActive()"},{"p":"it.polimi.ingsw.gc14.Model.Orders","c":"OrderPlayer","l":"isPlayed()"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"LoginFXMLController","l":"isRMI","k":"1"},{"p":"it.polimi.ingsw.gc14","c":"GameEventProcessor","l":"isSuspended()"},{"p":"it.polimi.ingsw.gc14.View.TUI","c":"AsciiTable","l":"isWide(int)","k":"6"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Common","c":"IGameServer","l":"joinGame(String, int, IClientCallback)","u":"joinGame(java.lang.String,int,it.polimi.ingsw.gc14.Network.RMI.Common.IClientCallback)"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Server","c":"RMIServer","l":"joinGame(String, int, IClientCallback)","u":"joinGame(java.lang.String,int,it.polimi.ingsw.gc14.Network.RMI.Common.IClientCallback)"},{"p":"it.polimi.ingsw.gc14.Network","c":"NetworkConfig","l":"KEEPALIVE_INTERVAL_MS","k":"2"},{"p":"it.polimi.ingsw.gc14","c":"LimitedMap","l":"keySet()"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"LoginFXMLController","l":"labelErrore","k":"1"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"LoginFXMLController","l":"labelRMI","k":"1"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"LoginFXMLController","l":"labelTCP","k":"1"},{"p":"it.polimi.ingsw.gc14.Model","c":"MiniModel","l":"lastEvent","k":"1"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"FireParticleSystem","l":"lastFrame","k":"1"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Server","c":"RMIHeartbeat","l":"lastPingTime","k":"1"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Server","c":"HeartbeatHandler","l":"lastReceivedTime","k":"1"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"FireParticleSystem","l":"lastSpawn","k":"1"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"LeaderboardFXMLController","l":"LeaderboardFXMLController()","u":"%3Cinit%3E()","k":"3"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"GUI","l":"leaderboardScene","k":"1"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"FireParticleSystem.Particle","l":"life","k":"1"},{"p":"it.polimi.ingsw.gc14","c":"LimitedMap","l":"limit","k":"1"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Server","c":"ClientHandler","l":"limitedMap","k":"1"},{"p":"it.polimi.ingsw.gc14","c":"LimitedMap","l":"LimitedMap(int, Runnable)","u":"%3Cinit%3E(int,java.lang.Runnable)","k":"3"},{"p":"it.polimi.ingsw.gc14.View.TUI","c":"TUI","l":"lineReader","k":"1"},{"p":"it.polimi.ingsw.gc14","c":"SaveManager","l":"load()"},{"p":"it.polimi.ingsw.gc14.Model","c":"DecksCreator","l":"loadBuildingDeck(String)","u":"loadBuildingDeck(java.lang.String)","k":"6"},{"p":"it.polimi.ingsw.gc14.Model","c":"DecksCreator","l":"loadBuildingDeckByEra(int)","k":"6"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"GUI","l":"loaderLeaderboard","k":"1"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"GUI","l":"loaderLogin","k":"1"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"GUI","l":"loaderMain","k":"1"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"GUI","l":"loaderTotem","k":"1"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"LeaderboardFXMLController","l":"loadImage(String)","u":"loadImage(java.lang.String)"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"MainFXMLController","l":"loadImage(String)","u":"loadImage(java.lang.String)"},{"p":"it.polimi.ingsw.gc14.Model","c":"DecksCreator","l":"loadSlotDeck()","k":"6"},{"p":"it.polimi.ingsw.gc14.Model","c":"DecksCreator","l":"loadTribeDeck(String)","u":"loadTribeDeck(java.lang.String)","k":"6"},{"p":"it.polimi.ingsw.gc14.Model","c":"DecksCreator","l":"loadTribeDeckByEra(int)","k":"6"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"LoginFXMLController","l":"LoginFXMLController()","u":"%3Cinit%3E()","k":"3"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"GUI","l":"loginScene","k":"1"},{"p":"it.polimi.ingsw.gc14.Model.GamePackage","c":"CurrentState","l":"lowerDrawn()"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"MainFXMLController","l":"lowerList","k":"1"},{"p":"it.polimi.ingsw.gc14.Model.GamePackage","c":"Board","l":"lowerListBuilding","k":"1"},{"p":"it.polimi.ingsw.gc14.Model","c":"MiniModel","l":"lowerListBuildingCards","k":"1"},{"p":"it.polimi.ingsw.gc14.Network.NetworkEvents","c":"ApplyNextRound","l":"lowerListBuildingCards","k":"1"},{"p":"it.polimi.ingsw.gc14.Model.GamePackage","c":"Board","l":"lowerListTribe","k":"1"},{"p":"it.polimi.ingsw.gc14.Model","c":"MiniModel","l":"lowerListTribeCards","k":"1"},{"p":"it.polimi.ingsw.gc14.Network.NetworkEvents","c":"ApplyNextRound","l":"lowerListTribeCards","k":"1"},{"p":"it.polimi.ingsw.gc14","c":"ClientLauncherGUI","l":"main(String[])","u":"main(java.lang.String[])","k":"6"},{"p":"it.polimi.ingsw.gc14","c":"ClientLauncherTUI","l":"main(String[])","u":"main(java.lang.String[])","k":"6"},{"p":"it.polimi.ingsw.gc14","c":"ServerLauncher","l":"main(String[])","u":"main(java.lang.String[])","k":"6"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"MainFXMLController","l":"MainFXMLController()","u":"%3Cinit%3E()","k":"3"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Server","c":"HeartbeatHandler","l":"mainHandler","k":"1"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"MainFXMLController","l":"mainHBox","k":"1"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"TotemFXMLController","l":"mainHBox","k":"1"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Client","c":"TCPClient","l":"mainPort","k":"1"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"GUI","l":"mainScene","k":"1"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"LeaderboardFXMLController","l":"mainVBox","k":"1"},{"p":"it.polimi.ingsw.gc14","c":"LimitedMap","l":"map","k":"1"},{"p":"it.polimi.ingsw.gc14.Model.Orders","c":"OrderPlayer","l":"markAsPlayed()"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"FireParticleSystem","l":"MAX_PARTICLES","k":"2"},{"p":"it.polimi.ingsw.gc14.Network","c":"NetworkConfig","l":"MAX_PLAYERS","k":"2"},{"p":"it.polimi.ingsw.gc14.Model","c":"Player","l":"MAX_USERNAME_LENGTH","k":"2"},{"p":"it.polimi.ingsw.gc14.View.TUI","c":"BorderStyle","l":"mb","k":"1"},{"p":"it.polimi.ingsw.gc14.View.TUI","c":"BorderStyle","l":"mb()"},{"p":"it.polimi.ingsw.gc14.Network","c":"NetworkConfig","l":"MIN_PLAYERS","k":"2"},{"p":"it.polimi.ingsw.gc14.Controller","c":"ClientController","l":"miniModel","k":"1"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"GUI","l":"miniModel","k":"1"},{"p":"it.polimi.ingsw.gc14.Model","c":"MiniModel","l":"MiniModel(Map, OrderLogicCard, CurrentState, List, List, ArrayList, ArrayList, ArrayList, ArrayList, ArrayList)","u":"%3Cinit%3E(java.util.Map,it.polimi.ingsw.gc14.Model.OrderLogicCard,it.polimi.ingsw.gc14.Model.GamePackage.CurrentState,java.util.List,java.util.List,java.util.ArrayList,java.util.ArrayList,java.util.ArrayList,java.util.ArrayList,java.util.ArrayList)","k":"3"},{"p":"it.polimi.ingsw.gc14.View.TUI","c":"BorderStyle","l":"ml","k":"1"},{"p":"it.polimi.ingsw.gc14.Controller","c":"GameController","l":"model","k":"1"},{"p":"it.polimi.ingsw.gc14.View.TUI","c":"TUI","l":"model","k":"1"},{"p":"it.polimi.ingsw.gc14.View.TUI","c":"BorderStyle","l":"mr","k":"1"},{"p":"it.polimi.ingsw.gc14.View.TUI","c":"BorderStyle","l":"mt","k":"1"},{"p":"it.polimi.ingsw.gc14.View.TUI","c":"BorderStyle","l":"mt()"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"MainFXMLController","l":"myHand","k":"1"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Client","c":"RMIClient","l":"myIp","k":"1"},{"p":"it.polimi.ingsw.gc14.Controller","c":"ClientController","l":"myUsername","k":"1"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"TotemFXMLController","l":"nameStyle(boolean)"},{"p":"it.polimi.ingsw.gc14.Network","c":"NetworkConfig","l":"NetworkConfig()","u":"%3Cinit%3E()","k":"3"},{"p":"it.polimi.ingsw.gc14.Network","c":"NetworkEvent","l":"NetworkEvent(String, EventType, boolean, ErrorType)","u":"%3Cinit%3E(java.lang.String,it.polimi.ingsw.gc14.Network.EventType,boolean,it.polimi.ingsw.gc14.ErrorType)","k":"3"},{"p":"it.polimi.ingsw.gc14.Network","c":"EventType","l":"NEXT_ROUND","k":"0"},{"p":"it.polimi.ingsw.gc14.Model.GamePackage","c":"Board","l":"nextEra()"},{"p":"it.polimi.ingsw.gc14.Model","c":"Game","l":"nextPlayerSetup()"},{"p":"it.polimi.ingsw.gc14.Model","c":"Game","l":"nextRound()"},{"p":"it.polimi.ingsw.gc14.Model.GamePackage","c":"Board","l":"nextRound()"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Events","c":"CavePaintings","l":"nLower","k":"1"},{"p":"it.polimi.ingsw.gc14.Model.GamePackage","c":"CurrentState","l":"nLower","k":"1"},{"p":"it.polimi.ingsw.gc14.Model","c":"Slot","l":"nLower","k":"1"},{"p":"it.polimi.ingsw.gc14.Model.Cards","c":"TribeCard","l":"nMin","k":"1"},{"p":"it.polimi.ingsw.gc14.Model","c":"Slot","l":"nMinPlayer","k":"1"},{"p":"it.polimi.ingsw.gc14.Network","c":"CompositeClientBroadcaster","l":"notifyAll(MiniModel)","u":"notifyAll(it.polimi.ingsw.gc14.Model.MiniModel)"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Server","c":"RMIServer","l":"notifyAll(MiniModel)","u":"notifyAll(it.polimi.ingsw.gc14.Model.MiniModel)"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Server","c":"TCPServer","l":"notifyAll(MiniModel)","u":"notifyAll(it.polimi.ingsw.gc14.Model.MiniModel)"},{"p":"it.polimi.ingsw.gc14.Network","c":"CompositeClientBroadcaster","l":"notifyAll(NetworkEvent)","u":"notifyAll(it.polimi.ingsw.gc14.Network.NetworkEvent)"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Server","c":"RMIServer","l":"notifyAll(NetworkEvent)","u":"notifyAll(it.polimi.ingsw.gc14.Network.NetworkEvent)"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Server","c":"TCPServer","l":"notifyAll(NetworkEvent)","u":"notifyAll(it.polimi.ingsw.gc14.Network.NetworkEvent)"},{"p":"it.polimi.ingsw.gc14.Network","c":"IClient","l":"notifyDisconnection()"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Client","c":"RMIClient","l":"notifyDisconnection()"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Client","c":"TCPClient","l":"notifyDisconnection()"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Server","c":"ClientHandler","l":"notifyEvent(NetworkEvent)","u":"notifyEvent(it.polimi.ingsw.gc14.Network.NetworkEvent)"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Server","c":"ClientHandler","l":"notifyMiniModel(MiniModel)","u":"notifyMiniModel(it.polimi.ingsw.gc14.Model.MiniModel)"},{"p":"it.polimi.ingsw.gc14.Model","c":"Game","l":"nPlayers","k":"1"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Server","c":"RMIServer","l":"nPort","k":"1"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Events","c":"CavePaintings","l":"nPrestigeMul","k":"1"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Events","c":"CavePaintings","l":"nPrestigeRem","k":"1"},{"p":"it.polimi.ingsw.gc14.Model.GamePackage","c":"Board","l":"nTotem","k":"1"},{"p":"it.polimi.ingsw.gc14.Model.Cards.Building.Effects","c":"Building4","l":"numPair","k":"1"},{"p":"it.polimi.ingsw.gc14.Model.Cards.Building.Effects","c":"Building0","l":"numSet","k":"1"},{"p":"it.polimi.ingsw.gc14.Model.GamePackage","c":"CurrentState","l":"nUpper","k":"1"},{"p":"it.polimi.ingsw.gc14.Model","c":"Slot","l":"nUpper","k":"1"},{"p":"it.polimi.ingsw.gc14.Model.Cards.Building","c":"EffectType","l":"ON_END_TURN","k":"0"},{"p":"it.polimi.ingsw.gc14.Model.Cards.Building","c":"EffectType","l":"ON_EVENT","k":"0"},{"p":"it.polimi.ingsw.gc14.Model.Cards.Building","c":"EffectType","l":"ON_ROUND_END","k":"0"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"LoginFXMLController","l":"onAccediClick()"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Client","c":"ClientCallbackImpl","l":"onAction(NetworkEvent)","u":"onAction(it.polimi.ingsw.gc14.Network.NetworkEvent)"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Common","c":"IClientCallback","l":"onAction(NetworkEvent)","u":"onAction(it.polimi.ingsw.gc14.Network.NetworkEvent)"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"TotemFXMLController","l":"onConfirm()"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Client","c":"ClientCallbackImpl","l":"onGameInit(MiniModel)","u":"onGameInit(it.polimi.ingsw.gc14.Model.MiniModel)"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Common","c":"IClientCallback","l":"onGameInit(MiniModel)","u":"onGameInit(it.polimi.ingsw.gc14.Model.MiniModel)"},{"p":"it.polimi.ingsw.gc14","c":"GameEventProcessor","l":"onlinePlayerCount()"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"LeaderboardFXMLController","l":"onNewGame()"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"MainFXMLController","l":"openDetailsPopup()"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"LeaderboardFXMLController","l":"openPlayerPopup(Player)","u":"openPlayerPopup(it.polimi.ingsw.gc14.Model.Player)"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"MainFXMLController","l":"openPopup(ArrayList)","u":"openPopup(java.util.ArrayList)"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"MainFXMLController","l":"openPopupLowerBuilding(ArrayList)","u":"openPopupLowerBuilding(java.util.ArrayList)"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"MainFXMLController","l":"openPopupUpperBuilding(ArrayList)","u":"openPopupUpperBuilding(java.util.ArrayList)"},{"p":"it.polimi.ingsw.gc14.Model.GamePackage","c":"GameStages","l":"OPT_CARD_E","k":"0"},{"p":"it.polimi.ingsw.gc14.Model","c":"Game","l":"optionalCardQueue","k":"1"},{"p":"it.polimi.ingsw.gc14.Model","c":"Totems","l":"ORANGE","k":"0"},{"p":"it.polimi.ingsw.gc14.Model.Orders","c":"Order2","l":"Order2(ArrayList)","u":"%3Cinit%3E(java.util.ArrayList)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model.Orders","c":"Order3","l":"Order3(ArrayList)","u":"%3Cinit%3E(java.util.ArrayList)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model.Orders","c":"Order4","l":"Order4(ArrayList)","u":"%3Cinit%3E(java.util.ArrayList)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model.Orders","c":"Order5","l":"Order5(ArrayList)","u":"%3Cinit%3E(java.util.ArrayList)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model","c":"Game","l":"orderLogicCard","k":"1"},{"p":"it.polimi.ingsw.gc14.Model","c":"MiniModel","l":"orderLogicCard","k":"1"},{"p":"it.polimi.ingsw.gc14.Network","c":"NetworkEvent","l":"orderLogicCard","k":"1"},{"p":"it.polimi.ingsw.gc14.Model","c":"OrderLogicCard","l":"OrderLogicCard(ArrayList)","u":"%3Cinit%3E(java.util.ArrayList)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model.Orders","c":"OrderPlayer","l":"OrderPlayer(Player, boolean)","u":"%3Cinit%3E(it.polimi.ingsw.gc14.Model.Player,boolean)","k":"3"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Server","c":"ClientHandler","l":"out","k":"1"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Server","c":"HeartbeatHandler","l":"out","k":"1"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"FireParticleSystem","l":"pane","k":"1"},{"p":"it.polimi.ingsw.gc14.Model","c":"DecksCreator.BuildingCardDefinition","l":"params","k":"1"},{"p":"it.polimi.ingsw.gc14.Model","c":"DecksCreator.TribeCardDefinition","l":"params","k":"1"},{"p":"it.polimi.ingsw.gc14","c":"ClientLauncherTUI","l":"parsePos(String[], int)","u":"parsePos(java.lang.String[],int)"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"FireParticleSystem.Particle","l":"Particle(double, double, double, double, int, Random)","u":"%3Cinit%3E(double,double,double,double,int,java.util.Random)","k":"3"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"FireParticleSystem","l":"particles","k":"1"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Server","c":"TCPServer","l":"pendingHeartbeat","k":"1"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Client","c":"TCPClient","l":"PING","k":"2"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Server","c":"HeartbeatHandler","l":"PING","k":"2"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Common","c":"IGameServer","l":"ping(String)","u":"ping(java.lang.String)"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Server","c":"RMIServer","l":"ping(String)","u":"ping(java.lang.String)"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Client","c":"RMIClient","l":"pingSender","k":"1"},{"p":"it.polimi.ingsw.gc14.Model","c":"PlayableCard","l":"PlayableCard(int)","u":"%3Cinit%3E(int)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model","c":"PlayableCard","l":"PlayableCard(String, int)","u":"%3Cinit%3E(java.lang.String,int)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model.Orders","c":"OrderPlayer","l":"played","k":"1"},{"p":"it.polimi.ingsw.gc14.Model.GamePackage","c":"CurrentState","l":"player","k":"1"},{"p":"it.polimi.ingsw.gc14.Model.Orders","c":"OrderPlayer","l":"player","k":"1"},{"p":"it.polimi.ingsw.gc14.Model","c":"Player","l":"Player(String)","u":"%3Cinit%3E(java.lang.String)","k":"3"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"MainFXMLController","l":"playerCards","k":"1"},{"p":"it.polimi.ingsw.gc14","c":"GameEventProcessor","l":"playerList","k":"1"},{"p":"it.polimi.ingsw.gc14.Model","c":"OrderLogicCard","l":"playerList","k":"1"},{"p":"it.polimi.ingsw.gc14.Network","c":"NetworkEvent","l":"playerList","k":"1"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Server","c":"RMIHeartbeat","l":"playerList","k":"1"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Server","c":"RMIServer","l":"playerList","k":"1"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Server","c":"TCPServer","l":"playerList","k":"1"},{"p":"it.polimi.ingsw.gc14.Model","c":"MiniModel","l":"players","k":"1"},{"p":"it.polimi.ingsw.gc14.Model","c":"OrderLogicCard","l":"players","k":"1"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"MainFXMLController","l":"playerSide","k":"1"},{"p":"it.polimi.ingsw.gc14.Model","c":"Game","l":"playersList","k":"1"},{"p":"it.polimi.ingsw.gc14.Model","c":"Game","l":"playerStanding","k":"1"},{"p":"it.polimi.ingsw.gc14.Model.GamePackage","c":"CurrentState","l":"playerUpdate(Player, Slot)","u":"playerUpdate(it.polimi.ingsw.gc14.Model.Player,it.polimi.ingsw.gc14.Model.Slot)"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Client","c":"TCPClient","l":"PONG","k":"2"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Server","c":"HeartbeatHandler","l":"PONG","k":"2"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"LeaderboardFXMLController","l":"popup","k":"1"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"MainFXMLController","l":"popup","k":"1"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"MainFXMLController","l":"popupCards","k":"1"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"LeaderboardFXMLController","l":"popupContent","k":"1"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Client","c":"RMIClient","l":"port","k":"1"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Server","c":"TCPServer","l":"port","k":"1"},{"p":"it.polimi.ingsw.gc14.Network.NetworkEvents","c":"DrawLowerBuildingCard","l":"pos","k":"1"},{"p":"it.polimi.ingsw.gc14.Network.NetworkEvents","c":"DrawLowerTribeCard","l":"pos","k":"1"},{"p":"it.polimi.ingsw.gc14.Network.NetworkEvents","c":"DrawUpperBuildingCard","l":"pos","k":"1"},{"p":"it.polimi.ingsw.gc14.Network.NetworkEvents","c":"DrawUpperTribeCard","l":"pos","k":"1"},{"p":"it.polimi.ingsw.gc14.Network.NetworkEvents","c":"SlotChoice","l":"pos","k":"1"},{"p":"it.polimi.ingsw.gc14.Model.Cards.Building.Effects","c":"Building13","l":"PRESTIGE_AWARD","k":"2"},{"p":"it.polimi.ingsw.gc14.Model.Cards.Building.Effects","c":"Building10","l":"PRESTIGE_PER_CHARACTER_SET","k":"2"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Events","c":"Sustenance","l":"prestigeDebt","k":"1"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"MainFXMLController","l":"prestigeLabels","k":"1"},{"p":"it.polimi.ingsw.gc14.Model.Cards.Building.Effects","c":"Building11","l":"prestigeMul","k":"1"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Events","c":"Hunt","l":"prestigeMultiplier","k":"1"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Events","c":"ShamanicRitual","l":"prestigeToAdd","k":"1"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Events","c":"ShamanicRitual","l":"prestigeToRemove","k":"1"},{"p":"it.polimi.ingsw.gc14.Model.Cards","c":"BuildingCard","l":"prestigeValue","k":"1"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters","c":"Builder","l":"prestigeValue","k":"1"},{"p":"it.polimi.ingsw.gc14.Model","c":"DecksCreator.BuildingCardDefinition","l":"prestigeValue","k":"1"},{"p":"it.polimi.ingsw.gc14.Model","c":"Player","l":"prestigeValue","k":"1"},{"p":"it.polimi.ingsw.gc14.Model.Cards","c":"BuildingCard","l":"price","k":"1"},{"p":"it.polimi.ingsw.gc14.Model","c":"DecksCreator.BuildingCardDefinition","l":"price","k":"1"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"GUI","l":"primaryStage","k":"1"},{"p":"it.polimi.ingsw.gc14.View.TUI","c":"TUI","l":"printLine(String)","u":"printLine(java.lang.String)"},{"p":"it.polimi.ingsw.gc14.Network.NetworkEvents","c":"AddPlayer","l":"proposedNPlayer","k":"1"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"LoginFXMLController","l":"protocolToggle","k":"1"},{"p":"it.polimi.ingsw.gc14.Model","c":"OrderLogicCard","l":"pull()"},{"p":"it.polimi.ingsw.gc14.Model.Cards.Building.Effects","c":"Building0","l":"purchased","k":"1"},{"p":"it.polimi.ingsw.gc14.Model.Cards.Building.Effects","c":"Building4","l":"purchased","k":"1"},{"p":"it.polimi.ingsw.gc14.Model","c":"Totems","l":"PURPLE","k":"0"},{"p":"it.polimi.ingsw.gc14.Model","c":"OrderLogicCard","l":"push(Player)","u":"push(it.polimi.ingsw.gc14.Model.Player)"},{"p":"it.polimi.ingsw.gc14.Model","c":"OrderLogicCard","l":"pushNoEffect(Player)","u":"pushNoEffect(it.polimi.ingsw.gc14.Model.Player)"},{"p":"it.polimi.ingsw.gc14","c":"LimitedMap","l":"put(K, V)","u":"put(K,V)"},{"p":"it.polimi.ingsw.gc14","c":"LimitedMap","l":"putAll(Map)","u":"putAll(java.util.Map)"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"MainFXMLController","l":"quitBtn","k":"1"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"LeaderboardFXMLController","l":"rankingList","k":"1"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Client","c":"TCPClient","l":"receiveMessage()"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Server","c":"RMIHeartbeat","l":"receivePing()"},{"p":"it.polimi.ingsw.gc14.Network","c":"EventType","l":"RECONNECT_PLAYER","k":"0"},{"p":"it.polimi.ingsw.gc14.Model","c":"Game","l":"reconnectPlayer(Player)","u":"reconnectPlayer(it.polimi.ingsw.gc14.Model.Player)"},{"p":"it.polimi.ingsw.gc14.Controller","c":"GameController","l":"reconnectPlayer(String)","u":"reconnectPlayer(java.lang.String)"},{"p":"it.polimi.ingsw.gc14.Network.NetworkEvents","c":"ReconnectPlayer","l":"ReconnectPlayer(String)","u":"%3Cinit%3E(java.lang.String)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters","c":"Builder","l":"reductionValue","k":"1"},{"p":"it.polimi.ingsw.gc14","c":"GameEventProcessor","l":"rejectEvent(NetworkEvent)","u":"rejectEvent(it.polimi.ingsw.gc14.Network.NetworkEvent)"},{"p":"it.polimi.ingsw.gc14","c":"LimitedMap","l":"remove(Object)","u":"remove(java.lang.Object)"},{"p":"it.polimi.ingsw.gc14.Model","c":"Player","l":"removeFood(int)"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"FireParticleSystem.Particle","l":"removeFrom(Pane)","u":"removeFrom(javafx.scene.layout.Pane)"},{"p":"it.polimi.ingsw.gc14.Model","c":"OrderLogicCard","l":"removeFromQueue(Player)","u":"removeFromQueue(it.polimi.ingsw.gc14.Model.Player)"},{"p":"it.polimi.ingsw.gc14.Model.GamePackage","c":"Board","l":"removeLowerBuildingCard(BuildingCard)","u":"removeLowerBuildingCard(it.polimi.ingsw.gc14.Model.Cards.BuildingCard)"},{"p":"it.polimi.ingsw.gc14.Model","c":"MiniModel","l":"removeLowerBuildingCard(int)"},{"p":"it.polimi.ingsw.gc14.Model","c":"MiniModel","l":"removeLowerTribeCard(int)"},{"p":"it.polimi.ingsw.gc14.Model.GamePackage","c":"Board","l":"removeLowerTribeCard(TribeCard)","u":"removeLowerTribeCard(it.polimi.ingsw.gc14.Model.Cards.TribeCard)"},{"p":"it.polimi.ingsw.gc14","c":"GameEventProcessor","l":"removeOfflinePlayers()"},{"p":"it.polimi.ingsw.gc14.Model","c":"Player","l":"removePrestige(int)"},{"p":"it.polimi.ingsw.gc14.Model.GamePackage","c":"Board","l":"removeUpperBuildingCard(BuildingCard)","u":"removeUpperBuildingCard(it.polimi.ingsw.gc14.Model.Cards.BuildingCard)"},{"p":"it.polimi.ingsw.gc14.Model","c":"MiniModel","l":"removeUpperBuildingCard(int)"},{"p":"it.polimi.ingsw.gc14.Model","c":"MiniModel","l":"removeUpperTribeCard(int)"},{"p":"it.polimi.ingsw.gc14.Model.GamePackage","c":"Board","l":"removeUpperTribeCard(TribeCard)","u":"removeUpperTribeCard(it.polimi.ingsw.gc14.Model.Cards.TribeCard)"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"GUI","l":"render()"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"LeaderboardFXMLController","l":"render()"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"MainFXMLController","l":"render()"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"TotemFXMLController","l":"render()"},{"p":"it.polimi.ingsw.gc14.View","c":"IView","l":"render()"},{"p":"it.polimi.ingsw.gc14.View.TUI","c":"TUI","l":"render()"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"LeaderboardFXMLController","l":"renderBackground()"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"MainFXMLController","l":"renderBackground()"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"MainFXMLController","l":"renderBoard()"},{"p":"it.polimi.ingsw.gc14.View.TUI","c":"TUI","l":"renderBoard()"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"MainFXMLController","l":"renderDeck()"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"MainFXMLController","l":"renderLower()"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"MainFXMLController","l":"renderMyHand()"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"MainFXMLController","l":"renderOrder()"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"MainFXMLController","l":"renderSlotMap()"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"MainFXMLController","l":"renderUpper()"},{"p":"it.polimi.ingsw.gc14.Model.GamePackage","c":"GameStages","l":"RES_ACTIONS","k":"0"},{"p":"it.polimi.ingsw.gc14.Model.GamePackage","c":"GameStages","l":"RES_EVENT","k":"0"},{"p":"it.polimi.ingsw.gc14.Network","c":"InterfaceResolver","l":"resolveLocalInterface(String)","u":"resolveLocalInterface(java.lang.String)","k":"6"},{"p":"it.polimi.ingsw.gc14","c":"ServerLauncher","l":"restoreGameIfSaved(GameController, LimitedMap, SaveManager)","u":"restoreGameIfSaved(it.polimi.ingsw.gc14.Controller.GameController,it.polimi.ingsw.gc14.LimitedMap,it.polimi.ingsw.gc14.SaveManager)","k":"6"},{"p":"it.polimi.ingsw.gc14.Network","c":"NetworkConfig","l":"RMI_PORT","k":"2"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Client","c":"RMIClient","l":"RMIClient(ClientController, String, int, String)","u":"%3Cinit%3E(it.polimi.ingsw.gc14.Controller.ClientController,java.lang.String,int,java.lang.String)","k":"3"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Server","c":"RMIHeartbeat","l":"RMIHeartbeat(String, LimitedMap, Map, BlockingQueue)","u":"%3Cinit%3E(java.lang.String,it.polimi.ingsw.gc14.LimitedMap,java.util.Map,java.util.concurrent.BlockingQueue)","k":"3"},{"p":"it.polimi.ingsw.gc14.Network","c":"CompositeClientBroadcaster","l":"rmiServer","k":"1"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Server","c":"RMIServer","l":"RMIServer(GameController, int, BlockingQueue, LimitedMap, String)","u":"%3Cinit%3E(it.polimi.ingsw.gc14.Controller.GameController,int,java.util.concurrent.BlockingQueue,it.polimi.ingsw.gc14.LimitedMap,java.lang.String)","k":"3"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"FireParticleSystem.Particle","l":"rnd","k":"1"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"FireParticleSystem","l":"rnd","k":"1"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"LeaderboardFXMLController","l":"rootPane","k":"1"},{"p":"it.polimi.ingsw.gc14.Model.GamePackage","c":"CurrentState","l":"round","k":"1"},{"p":"it.polimi.ingsw.gc14.View.TUI","c":"BorderStyle","l":"ROUNDED","k":"0"},{"p":"it.polimi.ingsw.gc14.Model.GamePackage","c":"CurrentState","l":"roundUpdate()"},{"p":"it.polimi.ingsw.gc14.View.TUI","c":"AsciiTable","l":"rows","k":"1"},{"p":"it.polimi.ingsw.gc14.View.TUI","c":"AsciiTable","l":"rpad(String, int)","u":"rpad(java.lang.String,int)","k":"6"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Server","c":"ClientHandler","l":"run()"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Server","c":"HeartbeatHandler","l":"run()"},{"p":"it.polimi.ingsw.gc14","c":"ServerLauncher","l":"run()"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Client","c":"RMIClient","l":"running","k":"1"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Server","c":"RMIHeartbeat","l":"running","k":"1"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Client","c":"TCPClient","l":"running","k":"1"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Server","c":"ClientHandler","l":"running","k":"1"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Server","c":"HeartbeatHandler","l":"running","k":"1"},{"p":"it.polimi.ingsw.gc14.View.TUI","c":"AsciiTable","l":"s","k":"1"},{"p":"it.polimi.ingsw.gc14","c":"ClientLauncherTUI","l":"safeQuit(ClientController)","u":"safeQuit(it.polimi.ingsw.gc14.Controller.ClientController)"},{"p":"it.polimi.ingsw.gc14.Network","c":"InterfaceResolver","l":"sameSubnet(InetAddress, InetAddress, int)","u":"sameSubnet(java.net.InetAddress,java.net.InetAddress,int)","k":"6"},{"p":"it.polimi.ingsw.gc14","c":"SaveManager","l":"SAVE_RELATIVE_PATH","k":"2"},{"p":"it.polimi.ingsw.gc14","c":"SaveManager","l":"save(Game)","u":"save(it.polimi.ingsw.gc14.Model.Game)"},{"p":"it.polimi.ingsw.gc14","c":"GameEventProcessor","l":"saveManager","k":"1"},{"p":"it.polimi.ingsw.gc14","c":"SaveManager","l":"SaveManager(Class)","u":"%3Cinit%3E(java.lang.Class)","k":"3"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"FireParticleSystem","l":"scene","k":"1"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"TotemFXMLController","l":"selectedFrame","k":"1"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"TotemFXMLController","l":"selectedIndex","k":"1"},{"p":"it.polimi.ingsw.gc14.View.TUI","c":"AsciiTable","l":"separators","k":"1"},{"p":"it.polimi.ingsw.gc14","c":"ErrorType","l":"SERVER_CRASHED","k":"0"},{"p":"it.polimi.ingsw.gc14","c":"ErrorType","l":"SERVER_UNREACHABLE","k":"0"},{"p":"it.polimi.ingsw.gc14","c":"ServerLauncher","l":"ServerLauncher(BlockingQueue, GameController, LimitedMap, CompositeClientBroadcaster, SaveManager)","u":"%3Cinit%3E(java.util.concurrent.BlockingQueue,it.polimi.ingsw.gc14.Controller.GameController,it.polimi.ingsw.gc14.LimitedMap,it.polimi.ingsw.gc14.Network.CompositeClientBroadcaster,it.polimi.ingsw.gc14.SaveManager)","k":"3"},{"p":"it.polimi.ingsw.gc14","c":"LimitedMap","l":"setAction(Runnable)","u":"setAction(java.lang.Runnable)"},{"p":"it.polimi.ingsw.gc14.Model","c":"MiniModel","l":"setAvailableTotems(List)","u":"setAvailableTotems(java.util.List)"},{"p":"it.polimi.ingsw.gc14.Controller","c":"ClientController","l":"setClient(IClient)","u":"setClient(it.polimi.ingsw.gc14.Network.IClient)"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"GUI","l":"setController(ClientController)","u":"setController(it.polimi.ingsw.gc14.Controller.ClientController)"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"LoginFXMLController","l":"setController(ClientController)","u":"setController(it.polimi.ingsw.gc14.Controller.ClientController)"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"MainFXMLController","l":"setController(ClientController)","u":"setController(it.polimi.ingsw.gc14.Controller.ClientController)"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"TotemFXMLController","l":"setController(ClientController)","u":"setController(it.polimi.ingsw.gc14.Controller.ClientController)"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"LeaderboardFXMLController","l":"setController(ClientController, Runnable)","u":"setController(it.polimi.ingsw.gc14.Controller.ClientController,java.lang.Runnable)"},{"p":"it.polimi.ingsw.gc14.Model","c":"MiniModel","l":"setCurrentState(CurrentState)","u":"setCurrentState(it.polimi.ingsw.gc14.Model.GamePackage.CurrentState)"},{"p":"it.polimi.ingsw.gc14.Network","c":"NetworkEvent","l":"setData(Map, OrderLogicCard, CurrentState, List)","u":"setData(java.util.Map,it.polimi.ingsw.gc14.Model.OrderLogicCard,it.polimi.ingsw.gc14.Model.GamePackage.CurrentState,java.util.List)"},{"p":"it.polimi.ingsw.gc14.Model","c":"MiniModel","l":"setDisconnectedPlayers(ArrayList)","u":"setDisconnectedPlayers(java.util.ArrayList)"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"MainFXMLController","l":"setError(boolean)"},{"p":"it.polimi.ingsw.gc14.Network","c":"NetworkEvent","l":"setErrorType(ErrorType)","u":"setErrorType(it.polimi.ingsw.gc14.ErrorType)"},{"p":"it.polimi.ingsw.gc14.Network","c":"NetworkEvent","l":"setIsError(boolean)"},{"p":"it.polimi.ingsw.gc14.Model","c":"MiniModel","l":"setLastEvent(NetworkEvent)","u":"setLastEvent(it.polimi.ingsw.gc14.Network.NetworkEvent)"},{"p":"it.polimi.ingsw.gc14","c":"LimitedMap","l":"setLimit(int)"},{"p":"it.polimi.ingsw.gc14.View.TUI","c":"TUI","l":"setLineReader(LineReader)","u":"setLineReader(org.jline.reader.LineReader)"},{"p":"it.polimi.ingsw.gc14.Model","c":"MiniModel","l":"setLowerListBuildingCards(ArrayList)","u":"setLowerListBuildingCards(java.util.ArrayList)"},{"p":"it.polimi.ingsw.gc14.Model","c":"MiniModel","l":"setLowerListTribeCards(ArrayList)","u":"setLowerListTribeCards(java.util.ArrayList)"},{"p":"it.polimi.ingsw.gc14.Controller","c":"GameController","l":"setModel(Game)","u":"setModel(it.polimi.ingsw.gc14.Model.Game)"},{"p":"it.polimi.ingsw.gc14.Controller","c":"ClientController","l":"setModel(MiniModel)","u":"setModel(it.polimi.ingsw.gc14.Model.MiniModel)"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"GUI","l":"setModel(MiniModel)","u":"setModel(it.polimi.ingsw.gc14.Model.MiniModel)"},{"p":"it.polimi.ingsw.gc14.View","c":"IView","l":"setModel(MiniModel)","u":"setModel(it.polimi.ingsw.gc14.Model.MiniModel)"},{"p":"it.polimi.ingsw.gc14.View.TUI","c":"TUI","l":"setModel(MiniModel)","u":"setModel(it.polimi.ingsw.gc14.Model.MiniModel)"},{"p":"it.polimi.ingsw.gc14.Controller","c":"ClientController","l":"setMyUsername(String)","u":"setMyUsername(java.lang.String)"},{"p":"it.polimi.ingsw.gc14.Model","c":"Game","l":"setNPlayer(int)"},{"p":"it.polimi.ingsw.gc14.Model","c":"MiniModel","l":"setOrderLogicCard(OrderLogicCard)","u":"setOrderLogicCard(it.polimi.ingsw.gc14.Model.OrderLogicCard)"},{"p":"it.polimi.ingsw.gc14.Model","c":"MiniModel","l":"setPlayers(List)","u":"setPlayers(java.util.List)"},{"p":"it.polimi.ingsw.gc14.Model","c":"MiniModel","l":"setSlotPlayerMap(Map)","u":"setSlotPlayerMap(java.util.Map)"},{"p":"it.polimi.ingsw.gc14.Model","c":"MiniModel","l":"setStandingPlayers(List)","u":"setStandingPlayers(java.util.List)"},{"p":"it.polimi.ingsw.gc14.Model","c":"Player","l":"setTotem(Totems)","u":"setTotem(it.polimi.ingsw.gc14.Model.Totems)"},{"p":"it.polimi.ingsw.gc14.Model","c":"MiniModel","l":"setUpperListBuildingCards(ArrayList)","u":"setUpperListBuildingCards(java.util.ArrayList)"},{"p":"it.polimi.ingsw.gc14.Model","c":"MiniModel","l":"setUpperListTribeCards(ArrayList)","u":"setUpperListTribeCards(java.util.ArrayList)"},{"p":"it.polimi.ingsw.gc14.View.TUI","c":"TUI","l":"setUsername(String)","u":"setUsername(java.lang.String)"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards","c":"CharacterType","l":"SHAMAN","k":"0"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters","c":"Shaman","l":"Shaman(int, int)","u":"%3Cinit%3E(int,int)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters","c":"Shaman","l":"Shaman(int, int, int)","u":"%3Cinit%3E(int,int,int)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters","c":"Shaman","l":"Shaman(String, int, int)","u":"%3Cinit%3E(java.lang.String,int,int)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters","c":"Shaman","l":"Shaman(String, int, int, int)","u":"%3Cinit%3E(java.lang.String,int,int,int)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards","c":"EventType","l":"SHAMANIC_RITUAL","k":"0"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Events","c":"ShamanicRitual","l":"ShamanicRitual(int, int, int)","u":"%3Cinit%3E(int,int,int)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Events","c":"ShamanicRitual","l":"ShamanicRitual(String, int, int, int)","u":"%3Cinit%3E(java.lang.String,int,int,int)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model","c":"Player","l":"shamans","k":"1"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"LoginFXMLController","l":"showError(ErrorType)","u":"showError(it.polimi.ingsw.gc14.ErrorType)"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"GUI","l":"showError(ErrorType, String)","u":"showError(it.polimi.ingsw.gc14.ErrorType,java.lang.String)"},{"p":"it.polimi.ingsw.gc14.View","c":"IView","l":"showError(ErrorType, String)","u":"showError(it.polimi.ingsw.gc14.ErrorType,java.lang.String)"},{"p":"it.polimi.ingsw.gc14.View.TUI","c":"TUI","l":"showError(ErrorType, String)","u":"showError(it.polimi.ingsw.gc14.ErrorType,java.lang.String)"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"LoginFXMLController","l":"showError(String)","u":"showError(java.lang.String)"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"MainFXMLController","l":"showPopup()"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"LoginFXMLController","l":"showSuccess(String)","u":"showSuccess(java.lang.String)"},{"p":"it.polimi.ingsw.gc14.View.TUI","c":"AsciiTable","l":"sideBySide(List, List, int)","u":"sideBySide(java.util.List,java.util.List,int)","k":"6"},{"p":"it.polimi.ingsw.gc14.Network","c":"NetworkConfig","l":"SILENCE_THRESHOLD_MS","k":"2"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"FireParticleSystem.Particle","l":"size","k":"1"},{"p":"it.polimi.ingsw.gc14","c":"LimitedMap","l":"size()"},{"p":"it.polimi.ingsw.gc14.Network","c":"EventType","l":"SKIP_TURN","k":"0"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"MainFXMLController","l":"skipBtn","k":"1"},{"p":"it.polimi.ingsw.gc14.Controller","c":"ClientController","l":"skipTurn()"},{"p":"it.polimi.ingsw.gc14.Model","c":"Game","l":"skipTurn(Player)","u":"skipTurn(it.polimi.ingsw.gc14.Model.Player)"},{"p":"it.polimi.ingsw.gc14.Controller","c":"GameController","l":"skipTurn(String)","u":"skipTurn(java.lang.String)"},{"p":"it.polimi.ingsw.gc14.Network","c":"IClient","l":"skipTurn(String)","u":"skipTurn(java.lang.String)"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Client","c":"RMIClient","l":"skipTurn(String)","u":"skipTurn(java.lang.String)"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Common","c":"IGameServer","l":"skipTurn(String)","u":"skipTurn(java.lang.String)"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Server","c":"RMIServer","l":"skipTurn(String)","u":"skipTurn(java.lang.String)"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Client","c":"TCPClient","l":"skipTurn(String)","u":"skipTurn(java.lang.String)"},{"p":"it.polimi.ingsw.gc14.Network.NetworkEvents","c":"SkipTurn","l":"SkipTurn(String)","u":"%3Cinit%3E(java.lang.String)","k":"3"},{"p":"it.polimi.ingsw.gc14.View.TUI","c":"BorderStyle","l":"sl","k":"1"},{"p":"it.polimi.ingsw.gc14.View.TUI","c":"BorderStyle","l":"sl()"},{"p":"it.polimi.ingsw.gc14.Model.GamePackage","c":"CurrentState","l":"slot","k":"1"},{"p":"it.polimi.ingsw.gc14.Model.GamePackage","c":"GameStages","l":"SLOT_CHOICE","k":"0"},{"p":"it.polimi.ingsw.gc14.Network","c":"EventType","l":"SLOT_CHOICE","k":"0"},{"p":"it.polimi.ingsw.gc14.Model","c":"Slot","l":"Slot(char)","u":"%3Cinit%3E(char)","k":"3"},{"p":"it.polimi.ingsw.gc14.Controller","c":"ClientController","l":"slotChoice(int)"},{"p":"it.polimi.ingsw.gc14.Controller","c":"GameController","l":"slotChoice(String, int)","u":"slotChoice(java.lang.String,int)"},{"p":"it.polimi.ingsw.gc14.Network","c":"IClient","l":"slotChoice(String, int)","u":"slotChoice(java.lang.String,int)"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Client","c":"RMIClient","l":"slotChoice(String, int)","u":"slotChoice(java.lang.String,int)"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Common","c":"IGameServer","l":"slotChoice(String, int)","u":"slotChoice(java.lang.String,int)"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Server","c":"RMIServer","l":"slotChoice(String, int)","u":"slotChoice(java.lang.String,int)"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Client","c":"TCPClient","l":"slotChoice(String, int)","u":"slotChoice(java.lang.String,int)"},{"p":"it.polimi.ingsw.gc14.Network.NetworkEvents","c":"SlotChoice","l":"SlotChoice(String, int)","u":"%3Cinit%3E(java.lang.String,int)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model","c":"Game","l":"slotChoiceByIndex(Player, int)","u":"slotChoiceByIndex(it.polimi.ingsw.gc14.Model.Player,int)"},{"p":"it.polimi.ingsw.gc14.Model","c":"Slot","l":"slotId","k":"1"},{"p":"it.polimi.ingsw.gc14.Model.GamePackage","c":"Board","l":"slotList","k":"1"},{"p":"it.polimi.ingsw.gc14.Model","c":"Game","l":"slotMap","k":"1"},{"p":"it.polimi.ingsw.gc14.Model","c":"MiniModel","l":"slotPlayerMap","k":"1"},{"p":"it.polimi.ingsw.gc14.Network","c":"NetworkEvent","l":"slotPlayerMap","k":"1"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Server","c":"HeartbeatHandler","l":"socket","k":"1"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Client","c":"TCPClient","l":"socketReceive","k":"1"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Client","c":"TCPClient","l":"socketSend","k":"1"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Server","c":"TCPServer","l":"socketTCP","k":"1"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"FireParticleSystem","l":"SPAWN_INTERVAL_NS","k":"2"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"FireParticleSystem","l":"spawnParticle(double, double)","u":"spawnParticle(double,double)"},{"p":"it.polimi.ingsw.gc14.View.TUI","c":"BorderStyle","l":"sr","k":"1"},{"p":"it.polimi.ingsw.gc14.View.TUI","c":"BorderStyle","l":"sr()"},{"p":"it.polimi.ingsw.gc14.Model","c":"MiniModel","l":"standingPlayers","k":"1"},{"p":"it.polimi.ingsw.gc14","c":"ClientLauncherTUI","l":"start()"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Server","c":"RMIHeartbeat","l":"start()"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Server","c":"RMIServer","l":"start()"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Server","c":"TCPServer","l":"start()"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"FireParticleSystem","l":"start()"},{"p":"it.polimi.ingsw.gc14","c":"ClientLauncherGUI.GUIApp","l":"start(Stage)","u":"start(javafx.stage.Stage)"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"GUI","l":"start(Stage)","u":"start(javafx.stage.Stage)"},{"p":"it.polimi.ingsw.gc14","c":"GameEventProcessor","l":"startForfeitTimerIfNeeded(NetworkEvent, Game)","u":"startForfeitTimerIfNeeded(it.polimi.ingsw.gc14.Network.NetworkEvent,it.polimi.ingsw.gc14.Model.Game)"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Client","c":"RMIClient","l":"startHeartbeat()"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Server","c":"HeartbeatHandler","l":"startWatchdog()"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Server","c":"RMIServer","l":"startWatchdog(String)","u":"startWatchdog(java.lang.String)"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"FireParticleSystem","l":"STEPS_PER_FRAME","k":"2"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Client","c":"RMIClient","l":"stub","k":"1"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards","c":"EventType","l":"SUSTENANCE","k":"0"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Events","c":"Sustenance","l":"Sustenance(int, int)","u":"%3Cinit%3E(int,int)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Events","c":"Sustenance","l":"Sustenance(String, int, int)","u":"%3Cinit%3E(java.lang.String,int,int)","k":"3"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"LoginFXMLController","l":"switchProtocol()"},{"p":"it.polimi.ingsw.gc14.View.TUI","c":"BorderStyle","l":"sx","k":"1"},{"p":"it.polimi.ingsw.gc14.View.TUI","c":"BorderStyle","l":"sx()"},{"p":"it.polimi.ingsw.gc14.Network","c":"NetworkConfig","l":"TCP_PORT","k":"2"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Client","c":"TCPClient","l":"TCPClient(ClientController, String, int, int)","u":"%3Cinit%3E(it.polimi.ingsw.gc14.Controller.ClientController,java.lang.String,int,int)","k":"3"},{"p":"it.polimi.ingsw.gc14.Network","c":"CompositeClientBroadcaster","l":"tcpServer","k":"1"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Server","c":"TCPServer","l":"TCPServer(GameController, int, int, BlockingQueue, LimitedMap)","u":"%3Cinit%3E(it.polimi.ingsw.gc14.Controller.GameController,int,int,java.util.concurrent.BlockingQueue,it.polimi.ingsw.gc14.LimitedMap)","k":"3"},{"p":"it.polimi.ingsw.gc14","c":"ClientLauncherTUI","l":"terminal","k":"1"},{"p":"it.polimi.ingsw.gc14.View.TUI","c":"TUI","l":"terminal","k":"1"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"FireParticleSystem","l":"tick(long)"},{"p":"it.polimi.ingsw.gc14","c":"GameEventProcessor","l":"timerExecutor","k":"1"},{"p":"it.polimi.ingsw.gc14.View.TUI","c":"BorderStyle","l":"tl","k":"1"},{"p":"it.polimi.ingsw.gc14.View.TUI","c":"BorderStyle","l":"tl()"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"LoginFXMLController","l":"toggleThumb","k":"1"},{"p":"it.polimi.ingsw.gc14.Network","c":"InterfaceResolver","l":"toInt(byte[])","k":"6"},{"p":"it.polimi.ingsw.gc14","c":"ErrorType","l":"toString()"},{"p":"it.polimi.ingsw.gc14.Model.GamePackage","c":"CurrentState","l":"toString()"},{"p":"it.polimi.ingsw.gc14.Model.GamePackage","c":"GameStages","l":"toString()"},{"p":"it.polimi.ingsw.gc14.Model.Orders","c":"Order2","l":"toString()"},{"p":"it.polimi.ingsw.gc14.Model.Orders","c":"Order3","l":"toString()"},{"p":"it.polimi.ingsw.gc14.Model.Orders","c":"Order4","l":"toString()"},{"p":"it.polimi.ingsw.gc14.Model.Orders","c":"Order5","l":"toString()"},{"p":"it.polimi.ingsw.gc14.Model.Orders","c":"OrderPlayer","l":"toString()"},{"p":"it.polimi.ingsw.gc14.Model","c":"Player","l":"toString()"},{"p":"it.polimi.ingsw.gc14.Model","c":"Slot","l":"toString()"},{"p":"it.polimi.ingsw.gc14.Network","c":"EventType","l":"toString()"},{"p":"it.polimi.ingsw.gc14.Network","c":"NetworkEvent","l":"toString()"},{"p":"it.polimi.ingsw.gc14.Model.Cards.Building.Effects","c":"Building1","l":"toStringBoard()"},{"p":"it.polimi.ingsw.gc14.Model.Cards.Building.Effects","c":"Building11","l":"toStringBoard()"},{"p":"it.polimi.ingsw.gc14.Model.Cards","c":"BuildingCard","l":"toStringBoard()"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters","c":"Artist","l":"toStringBoard()"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters","c":"Builder","l":"toStringBoard()"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters","c":"Gatherer","l":"toStringBoard()"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters","c":"Hunter","l":"toStringBoard()"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters","c":"Inventor","l":"toStringBoard()"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters","c":"Shaman","l":"toStringBoard()"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Events","c":"CavePaintings","l":"toStringBoard()"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Events","c":"Hunt","l":"toStringBoard()"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Events","c":"ShamanicRitual","l":"toStringBoard()"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Events","c":"Sustenance","l":"toStringBoard()"},{"p":"it.polimi.ingsw.gc14.Model","c":"PlayableCard","l":"toStringBoard()"},{"p":"it.polimi.ingsw.gc14.Model.Cards.Building.Effects","c":"Building1","l":"toStringPlayer()"},{"p":"it.polimi.ingsw.gc14.Model.Cards.Building.Effects","c":"Building11","l":"toStringPlayer()"},{"p":"it.polimi.ingsw.gc14.Model.Cards","c":"BuildingCard","l":"toStringPlayer()"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters","c":"Artist","l":"toStringPlayer()"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters","c":"Builder","l":"toStringPlayer()"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters","c":"Gatherer","l":"toStringPlayer()"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters","c":"Hunter","l":"toStringPlayer()"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters","c":"Inventor","l":"toStringPlayer()"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters","c":"Shaman","l":"toStringPlayer()"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Events","c":"CavePaintings","l":"toStringPlayer()"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Events","c":"Hunt","l":"toStringPlayer()"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Events","c":"ShamanicRitual","l":"toStringPlayer()"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Events","c":"Sustenance","l":"toStringPlayer()"},{"p":"it.polimi.ingsw.gc14.Model","c":"PlayableCard","l":"toStringPlayer()"},{"p":"it.polimi.ingsw.gc14.Model","c":"Slot","l":"toStringTUI()"},{"p":"it.polimi.ingsw.gc14.Model","c":"Player","l":"totem","k":"1"},{"p":"it.polimi.ingsw.gc14.Network.NetworkEvents","c":"TotemChoice","l":"totem","k":"1"},{"p":"it.polimi.ingsw.gc14.Model.GamePackage","c":"GameStages","l":"TOTEM_CHOICE","k":"0"},{"p":"it.polimi.ingsw.gc14.Network","c":"EventType","l":"TOTEM_CHOICE","k":"0"},{"p":"it.polimi.ingsw.gc14.Controller","c":"ClientController","l":"totemChoice(int)"},{"p":"it.polimi.ingsw.gc14.Model","c":"Game","l":"totemChoice(Player, Totems)","u":"totemChoice(it.polimi.ingsw.gc14.Model.Player,it.polimi.ingsw.gc14.Model.Totems)"},{"p":"it.polimi.ingsw.gc14.Controller","c":"GameController","l":"totemChoice(String, String)","u":"totemChoice(java.lang.String,java.lang.String)"},{"p":"it.polimi.ingsw.gc14.Network","c":"IClient","l":"totemChoice(String, String)","u":"totemChoice(java.lang.String,java.lang.String)"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Client","c":"RMIClient","l":"totemChoice(String, String)","u":"totemChoice(java.lang.String,java.lang.String)"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Common","c":"IGameServer","l":"totemChoice(String, String)","u":"totemChoice(java.lang.String,java.lang.String)"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Server","c":"RMIServer","l":"totemChoice(String, String)","u":"totemChoice(java.lang.String,java.lang.String)"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Client","c":"TCPClient","l":"totemChoice(String, String)","u":"totemChoice(java.lang.String,java.lang.String)"},{"p":"it.polimi.ingsw.gc14.Network.NetworkEvents","c":"TotemChoice","l":"TotemChoice(String, String)","u":"%3Cinit%3E(java.lang.String,java.lang.String)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model","c":"Game","l":"totemChoiceQueue","k":"1"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"TotemFXMLController","l":"TotemFXMLController()","u":"%3Cinit%3E()","k":"3"},{"p":"it.polimi.ingsw.gc14.Model","c":"Totems","l":"Totems()","u":"%3Cinit%3E()","k":"3"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"GUI","l":"totemScene","k":"1"},{"p":"it.polimi.ingsw.gc14.View.TUI","c":"BorderStyle","l":"tr","k":"1"},{"p":"it.polimi.ingsw.gc14.View.TUI","c":"BorderStyle","l":"tr()"},{"p":"it.polimi.ingsw.gc14.Model","c":"Game","l":"transitionToOptionalOrNextRound()"},{"p":"it.polimi.ingsw.gc14.Model.Cards","c":"TribeCard","l":"TribeCard(int, boolean)","u":"%3Cinit%3E(int,boolean)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model.Cards","c":"TribeCard","l":"TribeCard(int, boolean, int)","u":"%3Cinit%3E(int,boolean,int)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model.Cards","c":"TribeCard","l":"TribeCard(String, int, boolean)","u":"%3Cinit%3E(java.lang.String,int,boolean)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model.Cards","c":"TribeCard","l":"TribeCard(String, int, boolean, int)","u":"%3Cinit%3E(java.lang.String,int,boolean,int)","k":"3"},{"p":"it.polimi.ingsw.gc14.Model","c":"DecksCreator.TribeCardDefinition","l":"TribeCardDefinition()","u":"%3Cinit%3E()","k":"3"},{"p":"it.polimi.ingsw.gc14.Model.GamePackage","c":"Board","l":"tribeDeck","k":"1"},{"p":"it.polimi.ingsw.gc14.View.TUI","c":"TUI","l":"TUI(MiniModel)","u":"%3Cinit%3E(it.polimi.ingsw.gc14.Model.MiniModel)","k":"3"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"TotemFXMLController","l":"turnBanner","k":"1"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards","c":"Character","l":"type","k":"1"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards","c":"EventCard","l":"type","k":"1"},{"p":"it.polimi.ingsw.gc14.Model","c":"DecksCreator.TribeCardDefinition","l":"type","k":"1"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"FireParticleSystem.Particle","l":"type","k":"1"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"FireParticleSystem.Particle","l":"update()"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"TotemFXMLController","l":"updateBanner(String, boolean)","u":"updateBanner(java.lang.String,boolean)"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"TotemFXMLController","l":"updateConfirmButton(boolean)"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"LoginFXMLController","l":"updateLoginButton(boolean)"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"MainFXMLController","l":"updateSidePanel()"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"FireParticleSystem.Particle","l":"updateVisual(double, double)","u":"updateVisual(double,double)"},{"p":"it.polimi.ingsw.gc14.Model.GamePackage","c":"CurrentState","l":"upperDrawn()"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"MainFXMLController","l":"upperList","k":"1"},{"p":"it.polimi.ingsw.gc14.Model.GamePackage","c":"Board","l":"upperListBuilding","k":"1"},{"p":"it.polimi.ingsw.gc14.Model","c":"MiniModel","l":"upperListBuildingCards","k":"1"},{"p":"it.polimi.ingsw.gc14.Network.NetworkEvents","c":"ApplyNextRound","l":"upperListBuildingCards","k":"1"},{"p":"it.polimi.ingsw.gc14.Model.GamePackage","c":"Board","l":"upperListTribe","k":"1"},{"p":"it.polimi.ingsw.gc14.Model","c":"MiniModel","l":"upperListTribeCards","k":"1"},{"p":"it.polimi.ingsw.gc14.Network.NetworkEvents","c":"ApplyNextRound","l":"upperListTribeCards","k":"1"},{"p":"it.polimi.ingsw.gc14","c":"ErrorType","l":"USER_ALREADY_CONNECTED","k":"0"},{"p":"it.polimi.ingsw.gc14.Network","c":"NetworkEvent","l":"username","k":"1"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Client","c":"RMIClient","l":"username","k":"1"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Server","c":"RMIHeartbeat","l":"username","k":"1"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Server","c":"ClientHandler","l":"username","k":"1"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Server","c":"HeartbeatHandler","l":"username","k":"1"},{"p":"it.polimi.ingsw.gc14.View.TUI","c":"TUI","l":"username","k":"1"},{"p":"it.polimi.ingsw.gc14.Model","c":"Player","l":"userName","k":"1"},{"p":"it.polimi.ingsw.gc14.View.TUI","c":"BorderStyle","l":"v","k":"1"},{"p":"it.polimi.ingsw.gc14.View.TUI","c":"BorderStyle","l":"v()"},{"p":"it.polimi.ingsw.gc14","c":"ErrorType","l":"valueOf(String)","u":"valueOf(java.lang.String)","k":"6"},{"p":"it.polimi.ingsw.gc14.Model.Cards.Building","c":"EffectType","l":"valueOf(String)","u":"valueOf(java.lang.String)","k":"6"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards","c":"CharacterType","l":"valueOf(String)","u":"valueOf(java.lang.String)","k":"6"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards","c":"EventType","l":"valueOf(String)","u":"valueOf(java.lang.String)","k":"6"},{"p":"it.polimi.ingsw.gc14.Model.GamePackage","c":"GameStages","l":"valueOf(String)","u":"valueOf(java.lang.String)","k":"6"},{"p":"it.polimi.ingsw.gc14.Model","c":"Totems","l":"valueOf(String)","u":"valueOf(java.lang.String)","k":"6"},{"p":"it.polimi.ingsw.gc14.Network","c":"EventType","l":"valueOf(String)","u":"valueOf(java.lang.String)","k":"6"},{"p":"it.polimi.ingsw.gc14.View.TUI","c":"BorderStyle","l":"valueOf(String)","u":"valueOf(java.lang.String)","k":"6"},{"p":"it.polimi.ingsw.gc14","c":"ErrorType","l":"values()","k":"6"},{"p":"it.polimi.ingsw.gc14","c":"LimitedMap","l":"values()"},{"p":"it.polimi.ingsw.gc14.Model.Cards.Building","c":"EffectType","l":"values()","k":"6"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards","c":"CharacterType","l":"values()","k":"6"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards","c":"EventType","l":"values()","k":"6"},{"p":"it.polimi.ingsw.gc14.Model.GamePackage","c":"GameStages","l":"values()","k":"6"},{"p":"it.polimi.ingsw.gc14.Model","c":"Totems","l":"values()","k":"6"},{"p":"it.polimi.ingsw.gc14.Network","c":"EventType","l":"values()","k":"6"},{"p":"it.polimi.ingsw.gc14.View.TUI","c":"BorderStyle","l":"values()","k":"6"},{"p":"it.polimi.ingsw.gc14","c":"ClientLauncherTUI","l":"view","k":"1"},{"p":"it.polimi.ingsw.gc14.Controller","c":"ClientController","l":"view","k":"1"},{"p":"it.polimi.ingsw.gc14.View.TUI","c":"TUI","l":"visibleLength(String)","u":"visibleLength(java.lang.String)"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"FireParticleSystem.Particle","l":"vx","k":"1"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"FireParticleSystem.Particle","l":"vy","k":"1"},{"p":"it.polimi.ingsw.gc14.Model.GamePackage","c":"GameStages","l":"WAITING","k":"0"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"FireParticleSystem","l":"warmedUp","k":"1"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Server","c":"RMIHeartbeat","l":"watchdog","k":"1"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Server","c":"HeartbeatHandler","l":"watchdog","k":"1"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Server","c":"RMIServer","l":"watchdogs","k":"1"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"FireParticleSystem.Particle","l":"weightedType(Random)","u":"weightedType(java.util.Random)","k":"6"},{"p":"it.polimi.ingsw.gc14.Model","c":"Totems","l":"WHITE","k":"0"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"FireParticleSystem.Particle","l":"wobbleAmp","k":"1"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"FireParticleSystem.Particle","l":"wobblePhase","k":"1"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"FireParticleSystem.Particle","l":"wobbleSpeed","k":"1"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"GUI","l":"wrapScene(Scene)","u":"wrapScene(javafx.scene.Scene)"},{"p":"it.polimi.ingsw.gc14","c":"ErrorType","l":"WRONG_ACTION","k":"0"},{"p":"it.polimi.ingsw.gc14","c":"ErrorType","l":"WRONG_PLAYER_NUMBER","k":"0"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"FireParticleSystem.Particle","l":"x","k":"1"},{"p":"it.polimi.ingsw.gc14.View.TUI","c":"BorderStyle","l":"x","k":"1"},{"p":"it.polimi.ingsw.gc14.View.GUI","c":"FireParticleSystem.Particle","l":"y","k":"1"},{"p":"it.polimi.ingsw.gc14.Model","c":"Totems","l":"YELLOW","k":"0"}];updateSearchResults();
\ No newline at end of file
diff --git a/deliverables/JAVADOC/module-search-index.js b/deliverables/JAVADOC/module-search-index.js
new file mode 100644
index 0000000..4daef26
--- /dev/null
+++ b/deliverables/JAVADOC/module-search-index.js
@@ -0,0 +1 @@
+moduleSearchIndex = [{"l":"it.polimi.ingsw.gc14"}];updateSearchResults();
\ No newline at end of file
diff --git a/deliverables/JAVADOC/overview-tree.html b/deliverables/JAVADOC/overview-tree.html
new file mode 100644
index 0000000..b5c544d
--- /dev/null
+++ b/deliverables/JAVADOC/overview-tree.html
@@ -0,0 +1,245 @@
+
+
+
+
+Class Hierarchy
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
The list of OrderPlayer entries tracking turn order and played status.
+Protected so subclasses can read it for display purposes (e.g., Object.toString()).
Describes whether the Hunter Icon is present or not. Whenever an
+Hunter with an Hunter Icon is added to the tribe, 1 Food token is awarded for each Hunter in the tribe
+(with or without an icon).
The number of star Icons the card possesses.
+During the Shamanic Ritual Event, having the
+majority of these icons provides Prestige Points;
+having the minority, on the other hand, results in
+losing Prestige Points.
The lower row of the tribe card. During the first round, there will be (num. of players + 1) character cards.
+During the following rounds, lower row will be emptied and populated with upper row's cards.
+When an Event card gets in the lower row, the event effect will be activated at the end of the round.
slotList contains the ordered list of slots (tiles). The slots changes based on the number of players.
+Each slot (tile) has special action as drawing from the upper/lower row or taking food.
username → watchdog.
+One watchdog per connected player, mirrors pendingHeartbeat / per-socket
+HeartbeatHandler in the TCP stack.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/deliverables/JAVADOC/tag-search-index.js b/deliverables/JAVADOC/tag-search-index.js
new file mode 100644
index 0000000..cc97b79
--- /dev/null
+++ b/deliverables/JAVADOC/tag-search-index.js
@@ -0,0 +1 @@
+tagSearchIndex = [{"l":"Constant Field Values","h":"","k":"18","u":"constant-values.html"},{"l":"Serialized Form","h":"","k":"18","u":"serialized-form.html"}];updateSearchResults();
\ No newline at end of file
diff --git a/deliverables/JAVADOC/type-search-index.js b/deliverables/JAVADOC/type-search-index.js
new file mode 100644
index 0000000..260782f
--- /dev/null
+++ b/deliverables/JAVADOC/type-search-index.js
@@ -0,0 +1 @@
+typeSearchIndex = [{"p":"it.polimi.ingsw.gc14.Network.NetworkEvents","l":"AddPlayer"},{"l":"All Classes and Interfaces","u":"allclasses-index.html","k":"18"},{"p":"it.polimi.ingsw.gc14.Network.NetworkEvents","l":"ApplyNextRound"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters","l":"Artist"},{"p":"it.polimi.ingsw.gc14.View.TUI","l":"AsciiTable"},{"p":"it.polimi.ingsw.gc14.Model.GamePackage","l":"Board"},{"p":"it.polimi.ingsw.gc14.View.TUI","l":"BorderStyle","k":"9"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters","l":"Builder"},{"p":"it.polimi.ingsw.gc14.Model.Cards.Building.Effects","l":"Building0"},{"p":"it.polimi.ingsw.gc14.Model.Cards.Building.Effects","l":"Building1"},{"p":"it.polimi.ingsw.gc14.Model.Cards.Building.Effects","l":"Building10"},{"p":"it.polimi.ingsw.gc14.Model.Cards.Building.Effects","l":"Building11"},{"p":"it.polimi.ingsw.gc14.Model.Cards.Building.Effects","l":"Building13"},{"p":"it.polimi.ingsw.gc14.Model.Cards.Building.Effects","l":"Building4"},{"p":"it.polimi.ingsw.gc14.Model.Cards.Building.Effects","l":"Building8"},{"p":"it.polimi.ingsw.gc14.Model.Cards","l":"BuildingCard"},{"p":"it.polimi.ingsw.gc14.Model","l":"DecksCreator.BuildingCardDefinition"},{"p":"it.polimi.ingsw.gc14.Model.Cards.Building","l":"BuildingEffect","k":"10"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Events","l":"CavePaintings"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards","l":"Character"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards","l":"CharacterType","k":"9"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Client","l":"ClientCallbackImpl"},{"p":"it.polimi.ingsw.gc14.Controller","l":"ClientController"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Server","l":"ClientHandler"},{"p":"it.polimi.ingsw.gc14","l":"ClientLauncherGUI"},{"p":"it.polimi.ingsw.gc14","l":"ClientLauncherTUI"},{"p":"it.polimi.ingsw.gc14.Network","l":"CompositeClientBroadcaster"},{"p":"it.polimi.ingsw.gc14.Model.GamePackage","l":"CurrentState"},{"p":"it.polimi.ingsw.gc14.Model","l":"DecksCreator"},{"p":"it.polimi.ingsw.gc14.Network.NetworkEvents","l":"DisconnectedPlayer"},{"p":"it.polimi.ingsw.gc14.Network.NetworkEvents","l":"DrawLowerBuildingCard"},{"p":"it.polimi.ingsw.gc14.Network.NetworkEvents","l":"DrawLowerTribeCard"},{"p":"it.polimi.ingsw.gc14.Network.NetworkEvents","l":"DrawUpperBuildingCard"},{"p":"it.polimi.ingsw.gc14.Network.NetworkEvents","l":"DrawUpperTribeCard"},{"p":"it.polimi.ingsw.gc14.Model.Cards.Building","l":"EffectType","k":"9"},{"p":"it.polimi.ingsw.gc14.Network.NetworkEvents","l":"EndedGame"},{"p":"it.polimi.ingsw.gc14","l":"ErrorType","k":"9"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards","l":"EventCard"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards","l":"EventType","k":"9"},{"p":"it.polimi.ingsw.gc14.Network","l":"EventType","k":"9"},{"p":"it.polimi.ingsw.gc14.View.GUI","l":"FireParticleSystem"},{"p":"it.polimi.ingsw.gc14.Model","l":"Game"},{"p":"it.polimi.ingsw.gc14.Controller","l":"GameController"},{"p":"it.polimi.ingsw.gc14","l":"GameEventProcessor"},{"p":"it.polimi.ingsw.gc14.Model.GamePackage","l":"GameStages","k":"9"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters","l":"Gatherer"},{"p":"it.polimi.ingsw.gc14.View.GUI","l":"GUI"},{"p":"it.polimi.ingsw.gc14","l":"ClientLauncherGUI.GUIApp"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Server","l":"HeartbeatHandler"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Events","l":"Hunt"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters","l":"Hunter"},{"p":"it.polimi.ingsw.gc14.Network","l":"IClient","k":"10"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Common","l":"IClientCallback","k":"10"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Common","l":"IGameServer","k":"10"},{"p":"it.polimi.ingsw.gc14.Network","l":"InterfaceResolver"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters","l":"Inventor"},{"p":"it.polimi.ingsw.gc14.View","l":"IView","k":"10"},{"p":"it.polimi.ingsw.gc14.View.GUI","l":"LeaderboardFXMLController"},{"p":"it.polimi.ingsw.gc14","l":"LimitedMap"},{"p":"it.polimi.ingsw.gc14.View.GUI","l":"LoginFXMLController"},{"p":"it.polimi.ingsw.gc14.View.GUI","l":"MainFXMLController"},{"p":"it.polimi.ingsw.gc14.Model","l":"MiniModel"},{"p":"it.polimi.ingsw.gc14.Network","l":"NetworkConfig"},{"p":"it.polimi.ingsw.gc14.Network","l":"NetworkEvent"},{"p":"it.polimi.ingsw.gc14.Model.Orders","l":"Order2"},{"p":"it.polimi.ingsw.gc14.Model.Orders","l":"Order3"},{"p":"it.polimi.ingsw.gc14.Model.Orders","l":"Order4"},{"p":"it.polimi.ingsw.gc14.Model.Orders","l":"Order5"},{"p":"it.polimi.ingsw.gc14.Model","l":"OrderLogicCard"},{"p":"it.polimi.ingsw.gc14.Model.Orders","l":"OrderPlayer"},{"p":"it.polimi.ingsw.gc14.View.GUI","l":"FireParticleSystem.Particle"},{"p":"it.polimi.ingsw.gc14.Model","l":"PlayableCard"},{"p":"it.polimi.ingsw.gc14.Model","l":"Player"},{"p":"it.polimi.ingsw.gc14.Network.NetworkEvents","l":"ReconnectPlayer"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Client","l":"RMIClient"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Server","l":"RMIHeartbeat"},{"p":"it.polimi.ingsw.gc14.Network.RMI.Server","l":"RMIServer"},{"p":"it.polimi.ingsw.gc14","l":"SaveManager"},{"p":"it.polimi.ingsw.gc14","l":"ServerLauncher"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters","l":"Shaman"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Events","l":"ShamanicRitual"},{"p":"it.polimi.ingsw.gc14.Network.NetworkEvents","l":"SkipTurn"},{"p":"it.polimi.ingsw.gc14.Model","l":"Slot"},{"p":"it.polimi.ingsw.gc14.Network.NetworkEvents","l":"SlotChoice"},{"p":"it.polimi.ingsw.gc14.Model.Cards.TribeCards.Events","l":"Sustenance"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Client","l":"TCPClient"},{"p":"it.polimi.ingsw.gc14.Network.TCP.Server","l":"TCPServer"},{"p":"it.polimi.ingsw.gc14.Network.NetworkEvents","l":"TotemChoice"},{"p":"it.polimi.ingsw.gc14.View.GUI","l":"TotemFXMLController"},{"p":"it.polimi.ingsw.gc14.Model","l":"Totems","k":"9"},{"p":"it.polimi.ingsw.gc14.Model.Cards","l":"TribeCard"},{"p":"it.polimi.ingsw.gc14.Model","l":"DecksCreator.TribeCardDefinition"},{"p":"it.polimi.ingsw.gc14.View.TUI","l":"TUI"}];updateSearchResults();
\ No newline at end of file
diff --git a/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Events/CavePaintings.java b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Events/CavePaintings.java
index 53ca34d..be3509a 100644
--- a/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Events/CavePaintings.java
+++ b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Events/CavePaintings.java
@@ -110,12 +110,13 @@ public class CavePaintings extends EventCard {
*
NOTE: {@code NUpper} is not a real attribute used in calculations (only {@code nLower} is needed),
* however it's a parameter on the cards' design.
*
- *
Includes:
- *
{@link #nLower}
- *
{@code NUpper}
- *
{@link #nPrestigeRem}
- *
{@link #nPrestigeMul}
- *
+ * Includes:
+ *
+ *
{@link #nLower}
+ *
{@code NUpper}
+ *
{@link #nPrestigeRem}
+ *
{@link #nPrestigeMul}
+ *
* @return {@code String} - a string representation of this {@code TribeCard}.
* @see it.polimi.ingsw.gc14.Model.Cards.TribeCard TribeCard
* @see it.polimi.ingsw.gc14.Model.Game Game
diff --git a/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Events/ShamanicRitual.java b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Events/ShamanicRitual.java
index 996f79a..6b5ef50 100644
--- a/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Events/ShamanicRitual.java
+++ b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Events/ShamanicRitual.java
@@ -130,10 +130,11 @@ public class ShamanicRitual extends EventCard {
/**
* Prints a string representation of this {@code TribeCard}. This specific variation is used in the {@code Game}'s
* toString to print a more detailed version.
- *
Includes:
- *
{@link #prestigeToAdd}
- *
{@link #prestigeToRemove}
- *
+ * Includes:
+ *
+ *
{@link #prestigeToAdd}
+ *
{@link #prestigeToRemove}
+ *
* @return {@code String} - a string representation of this {@code TribeCard}.
* @see it.polimi.ingsw.gc14.Model.Cards.TribeCard TribeCard
* @see it.polimi.ingsw.gc14.Model.Game Game
diff --git a/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Events/Sustenance.java b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Events/Sustenance.java
index a738330..bf8ce7d 100644
--- a/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Events/Sustenance.java
+++ b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Events/Sustenance.java
@@ -111,9 +111,10 @@ public class Sustenance extends EventCard {
/**
* Prints a string representation of this {@code TribeCard}. This specific variation is used in the {@code Game}'s
* toString to print a more detailed version.
- *
Includes:
- *
{@link #prestigeDebt}
- *
+ * Includes:
+ *
+ *
{@link #prestigeDebt}
+ *
* @return {@code String} - a string representation of this {@code TribeCard}.
* @see it.polimi.ingsw.gc14.Model.Cards.TribeCard TribeCard
* @see it.polimi.ingsw.gc14.Model.Game Game
diff --git a/src/main/java/it/polimi/ingsw/gc14/Model/Player.java b/src/main/java/it/polimi/ingsw/gc14/Model/Player.java
index c98f160..121ffb5 100644
--- a/src/main/java/it/polimi/ingsw/gc14/Model/Player.java
+++ b/src/main/java/it/polimi/ingsw/gc14/Model/Player.java
@@ -79,7 +79,6 @@ public class Player implements Serializable {
case GATHERER -> gatherers.size();
};
}
-
/**
* The current {@link BuildingCard Building Cards} in the player's deck.
*/
@@ -157,6 +156,8 @@ public class Player implements Serializable {
return prestigeValue;
}
+
+
/**
* Adds {@code value} amount of Food to the Player.
* @param value The amount of Food to be added. Should be non-negative.
@@ -242,6 +243,7 @@ public class Player implements Serializable {
this.totem = null;
}
+
/**
* Checks equality between this {@code Player} and another object.
* Two players are equal if and only if they share the same {@code userName}.
@@ -264,17 +266,18 @@ public class Player implements Serializable {
/**
* Prints the {@code Player}'s attributes for the {@code Board}'s representation.
* Uses the {@code UNICODE} border style.
- *