---
# System prepended metadata

title: OOGA Plan Discussion

---

# OOGA Plan Discussion
## Names

Oliver Rodas

Tinglong is the main character

### Project goals

- Side scrolling ENGINE

Things that are (easily) changed:

Obstacles:
- Falling
- Health depletion obstacles
- 

Objects:
- CPU controlled objects

Players:
- Specify # of players
- Assign contraols to anything on screen and control that thing
- Become what you kill
- Collect characters that you can switch to. They are your lives
- Certain characters force you to switch to them, so you don't want to kill them

```java=
interface GameObject {
  setImage(String url)
}

```

```json=
cameraConfig: {
  followPlayer: boolean;
  
}
```


```json=
"1" : {
    image: "thing.jpg"
   type: "chacater",
   name: "CharacterName",
   actions: [
   
   ],
   action: "shooter",
   collidble: boolean,
   onCollide: [
       {
       with: "player",
       action: "damage",
       payload: 
       }
   ],
   onDeath: ""
   locations: [
     {
       level: "2",
       x: 2149,
       y: 10,
     }
   ]   
},
{
    type: "character",
    ...
    onCollide: [
        {
         with: "enemy",
         location: "south",
         action: "jump"
        }
       {
        with: "any",
        location: "south",
        action: "st"
       }
    ]
},
"dialog_box2" : {
    type: "hitbox",
    id: 5,
    ...
    onCollide: [
        {
         with: "player",
         location: "any",
         action: "trigger_di"
         payload: ID_OF_DIALOG
        },
    ]
},
{
    type: "enemy",
    ...
    onCollide: [
    {
         with: "character",
         location: "top",
         action: "decrement_self"
         payload: "20"
     }
    ]
}

```

```json=
{
    dialog: "Bowser: Mario I love you",
    dialogID: id,
    level,
    responses: {
        ...
    },
    chosenResponse: response,
    dependsOn: {
        dialogID: id,
        dialogResponse: response
    }

}
```

Dialog stuff can be triggered through a Hit box. You can specify the
X and Y so that it can be triggered at a specific part.

Scale images to certain size so the model can

Notes:

Need to specify defaults for all of the values.

Modifiers:
- Powerups:
    - Any
- Antipowerups (powerdowns lol)

- currency
- Things can't go through, collisions

Camera Movements:
- Camera follows player
- Player has to keep up with camera
- Camera Doesnt Move

Triggers:
- When you hit certain % of 
- Player Health. Something that happens when health reaches percent

Trigger Actions:
- What happens when a trigger happens

### Project Emphasis


### Project Extensions


### Project Progress

#### Sprint 1 (Test)

#### Sprint 2 (Basic)

#### Sprint 3 (Complete)


# Random cool ideas

- Custom Variables
For example, the user could specify in game configurable
options with types. Like this:

```json=
runtimeConfiguration: {
   cameraSpeed: "number",
}

cameraConfiguration : {
   speed: "runtime.cameraSpeed"
}
```

So the user can hardcode values or allow them to be modified
in game. Then again this would be a little difficult.