<commit_before>Level Specification
===================
## Level Object
Each level should be defined in a seperate file, stored in `/src/levels/{level number}.json`

	{
		"boundaries": [Bool, Bool, Bool, Bool], // top, right, bottom, left. All default to true
		"walls": [Wall, ...], // 0 or more walls present in this level
		"puck-start": Position, // The initial puck position
        "stars": [Integer, …] // 0 or more
	}

`stars` is the minimum number of bounces required to get 1 star, 2 stars, ..., n stars. The length of the `stars` array is the number of stars available.

### Defaults

	{
		"boundaries": [true, true, true, true],
		"walls": [],
		"puck-start": { // This is due to change
			"x": 0,
			"y": 0
		},
		"stars": []
	}

### To do:
* Define default values for `puck-start`.

## Wall Object
Defines a single wall in the game, which may or may not have a light up panel

	{
		"light-colours": [HexColour | null, HexColour | null],
		"coords": [Position, Position]
	}

Any of the following types are valid for `light-colours`: `[]`, `[HexColour]`, `[null, HexColour]`, `[HexColour, null]`, `[HexColour, HexColour]`, `[null, null]`

### Defaults

	{
		"light-colours": ["#ff0000", "#ff0000"],
		"coords: undefined
	}

## Position

	{
		"x": Float,
		"y": Float
	}

## HexColour
A valid hex colour, like you would use in CSS. E.g. `#f5f5f5`<commit_msg>Changed level spec to include new wall definition<commit_after>Level Specification
===================
## Level Object
Each level should be defined in a seperate file, stored in `/src/levels/{level number}.json`

	{
		"boundaries": [Bool, Bool, Bool, Bool], // top, right, bottom, left. All default to true
		"walls": [Wall, ...], // 0 or more walls present in this level
		"puck-start": Position, // The initial puck position
        "stars": [Integer, …] // 0 or more
	}

`stars` is the minimum number of bounces required to get 1 star, 2 stars, ..., n stars. The length of the `stars` array is the number of stars available.

### Defaults

	{
		"boundaries": [true, true, true, true],
		"walls": [],
		"puck-start": { // This is due to change
			"x": 0,
			"y": 0
		},
		"stars": []
	}

### To do:
* Define default values for `puck-start`.

## Wall Object
Defines a single wall in the game, which may or may not have a light up panel

	{
		"light-colours": [HexColour | null, HexColour | null],
		"coords": Position,
		"dimensions": Dimension,
		"rotation": Integer
	}

Any of the following types are valid for `light-colours`: `[]`, `[HexColour]`, `[null, HexColour]`, `[HexColour, null]`, `[HexColour, HexColour]`, `[null, null]`

### Defaults

	{
		"light-colours": ["#ff0000", "#ff0000"],
		"coords: undefined
		"dimensions": undefined,
		"rotation": 0
	}

Any undefined default values are required to be filled in, and will not render

## Position

	{
		"x": Float,
		"y": Float
	}

## Dimension

	{
		"w": Float,
		"h": Float
	}

## HexColour
A valid hex colour, like you would use in CSS. E.g. `#f5f5f5`
{'fraction_non_alphanumeric': 0.16839986581684, 'fraction_numerical': 0.011741026501174102, 'mean_word_length': 3.504531722054381, 'pattern_counts': {'":': 36, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1600944', 'n_tokens_mistral': 1125, 'n_tokens_neox': 1006, 'n_words': 380}