Station Component Overview - UQcsse3200/2024-studio-3 GitHub Wiki

Introduction

As per the entity component system, a single station entity contains many different components that provide functionality for each different station. Broadly components for stations were developed on, the need for cooking stations, chopping stations, a collection station, and a submission station. These general station types form the development of all of the different components and shape the design of them.

In general, the components that provide the necessary functionality between the station and the player are the StationItemHandlerComponent used for cooking and chopping stations, or the IngredientStationHandlerComponent used by stations which items can be collected from.

Additionally, components to facilate cooking, chopping, combining and collecting items are added to the station. These interactions can be further explained in the Processing Stations page

As for combining meals together, that can be further discussed in the combining stations page

Other stations not described in these buckets will be described in the miscellaneous stations page. For now this covers the fire extinguisher station and the bin station.

Functionality to provide animations to the stations also exits in the form of the Station Animation Controller.

UML Diagram

The UML here shows the relationships each of the components in the station overview, as well as relevant components from the Ingredient Stations, Processing Stations and Combining Stations.

image

Station Item Handler Component:

This is where interaction with the station & items will work, and is used in all the station components. The handler handles the manipulation & tracking items within stations, as well as identifying the type of station and keeping track of the allowed ingredients for a given station.

Further functionality which is unique to the type of station will be covered in their corresponding seperated component code which can be seen in the code samples below.

Ingredient Station Handler Component

IngredientStationHandlerComponent is similar to StationItemHandlerComponent in that is enables the interaction between that player and the station entity. Like the item handler component this handles the manipulation and tracking of items within stations, as well as keeping track of the type of station it is. This components publically available methods are handleInteraction(), stationGiveItem(), and getType(). In the order written, these implement the logic for handling item interaction, take the item from the station and return it to the player, and return the type of the station to the caller. Presently, the station simply generates a list of items from an internal list, however, the plan is to implement a list of items that can be received from a specific station, however, that was not within scope from the current sprint.

Station Collection Component:

StationCollectionComponent acts as a component which enables the player to collect items from a station. This component only has one method which is collectItem() this method acts as a layer between the station and the item factory, enabling the creation of new items into the game so that orders can be created. Again this component acts as a layer between that station and the player.

Extra info:

Ingredient Stations

Processing Stations

Combining Stations

Miscellaneous Stations