# Informal Module Notes ## Controller Modules ### Module 1: BatterySessionManagement Module () Purpose: This module controls the entire game LocalStorage: data = new BatterySessionData() We need: 1. A unique ID for the session that is about to be played 2. Know which User is playing 3. data[User] = getUserData() 4. Know the order that the mini games will be played 4. For each mini game m, 5. m.init() 6. m.getInstructions() 7. data[MiniGame].append(m.play()) 8. We need to store this mini-game data 7. Store the data in Elasticsearch ### MiniGame Interface (all mini games have these methods) 1. init 2. getInstructions() 3. when finished returns MiniGameData <- play() ### Mini Game Module Example: Circles ## Data-only Modules ### BatterySessionData 1. SessionId (natural number, random) - unique (primary key) 2. If you know the session ID, you can ask Elasticsearch to return this object 2. User UserData 3. MiniGameData: [MiniGameData] ### UserData 1. UserId Natural Number (unique, think MacId) 2. FirstName String 3. LastName String 4. Age? Gender? ... # CirclesData : MiniGameData 1. OriginPoint: 3DPoint 2. DestinationPoint: 3DPoint 3. DestinationTime: Float Assumption: DestinationTime is in milliseconds