The Omelette Bar is an application that will allow users to simulate the process of making a fully customizable omelette of their choosing. Following the instructional cues given at the bottom of the program users will drag utensils around the screen to interact with objects, and drag and drop their desired ingredients into the pan. The goal of the program is for users to become at-home chefs by going through the complete process of making their own custom omelettes.
The visual aesthetic is based on a flat illustration style with a fun retro dynamic. By creating a simple colour I was able to use accent colours that draw attention and highlight important interaction elements within the environment such as the handles of cooking utensils and the plates. The layout of the application as half top-down and side view allowed more screen real estate to be given to the prep station and stove element since that is where the majority of interaction occurs. It also enabled me to create appropriate perspective view illustrations that users would recognize from real-world scenarios.
I organized the structure of the code into 5 different packages:
- food – contains an abstract ingredient class, classes for all 7 specific ingredients, an abstract omelette class as well as several omelette decorators and interfaces for various omelette states.
- kitchen – contains an abstract utensil class, 3 specific utensil classes, a background class to display kitchen elements, and a stove class and additional decorators for on and off states.
- main – contains a class creating the applet frame and the panel in which the main prices and FSM-driven state change.
- outdoors – contains all the classes to build recursive trees and dynamic environments completely in Java code ( branch, generated tree, flower, leaf, and window class).
- util – contains a collection of helper classes for loading multimedia files such as images, sounds, and fonts. In addition classes for instructional cues and the title screens.
The biggest challenge of the program was to be able to create a customizable experience to be able to use any combination of ingredients they desired rather than have them be predetermined. To do this I created two ingredients typed array lists, one that contained all the ingredients on the table and another that would have only the toppings selected by the user. The idea behind it is that once users mix their omelette any ingredients which intersect with the pan are removed from the original list and entered into the selected list so that the program can keep track of them.