1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
use crate::*;

pub mod image {
    use crate::Image;

    pub(crate) fn chequers_1() -> Image {
        Image {
            pixels: vec![
                1, 0, 1, 0, 1, 0, 1, 0,
                0, 1, 0, 1, 0, 1, 0, 1,
                1, 0, 1, 0, 1, 0, 1, 0,
                0, 1, 0, 1, 0, 1, 0, 1,
                1, 0, 1, 0, 1, 0, 1, 0,
                0, 1, 0, 1, 0, 1, 0, 1,
                1, 0, 1, 0, 1, 0, 1, 0,
                0, 1, 0, 1, 0, 1, 0, 1,
            ]
        }
    }

    pub fn chequers_2() -> Image {
        Image {
            pixels: vec![
                0,1,0,1,0,1,0,1,
                1,0,1,0,1,0,1,0,
                0,1,0,1,0,1,0,1,
                1,0,1,0,1,0,1,0,
                0,1,0,1,0,1,0,1,
                1,0,1,0,1,0,1,0,
                0,1,0,1,0,1,0,1,
                1,0,1,0,1,0,1,0,
            ]
        }
    }
}

pub fn avatar() -> Avatar {
    Avatar {
        animation_frames: vec![
            Image {
                pixels: vec![
                    0,0,0,0,0,0,0,0,
                    0,0,1,1,1,1,0,0,
                    0,1,1,1,1,1,1,0,
                    1,1,1,0,1,1,1,0,
                    1,0,0,1,1,0,0,1,
                    1,1,1,1,1,1,1,1,
                    1,1,1,1,1,1,1,1,
                    0,1,1,1,1,1,1,0,
                ]
            },
            Image {
                pixels: vec![
                    0,0,0,0,0,0,0,0,
                    0,0,0,0,0,0,0,0,
                    0,0,1,1,1,1,0,0,
                    0,1,1,1,1,1,1,0,
                    1,1,1,0,1,1,1,0,
                    1,0,0,1,1,0,0,1,
                    1,1,1,1,1,1,1,1,
                    0,1,1,1,0,1,1,0,
                ]
            },
        ],
        room: "0".to_string(),
        position: Position { x: 2, y: 5 }
    }
}

pub(crate) fn sprite() -> Sprite {
    Sprite {
        id: "a".to_string(),
        name: Some("hatch".to_string()),
        animation_frames: vec![
            Image {
                pixels: vec![
                    0,0,0,0,0,0,0,0,
                    0,1,1,1,1,0,0,0,
                    0,1,0,0,1,0,0,0,
                    0,0,1,1,1,1,0,0,
                    0,0,1,1,1,1,0,0,
                    0,1,0,1,1,1,1,0,
                    0,1,0,1,1,1,1,0,
                    0,1,1,0,1,1,1,1,
                ]
            }
        ],
        dialogue: Some("SPR_0".to_string()),
        room: "4".to_string(),
        position: Position {
            x: 9,
            y: 7
        }
    }
}

pub fn item() -> Item {
    Item {
        id: "6".to_string(),
        animation_frames: vec![
            Image {
                pixels: vec![
                    0,1,0,0,0,0,0,0,
                    0,0,0,0,0,0,0,0,
                    0,0,0,0,0,0,0,0,
                    0,0,0,0,0,1,0,0,
                    0,0,1,0,0,0,0,0,
                    0,0,0,0,0,0,0,0,
                    0,0,0,0,0,0,0,0,
                    0,0,0,0,0,0,1,0,
                ]
            }
        ],
        name: Some("door".to_string()),
        dialogue: Some("ITM_2".to_string())
    }
}

pub fn room() -> Room {
    Room {
        id: "a".to_string(),
        palette: "9".to_string(),
        name: Some("cellar 7".to_string()),
        tiles: vec![
            "0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"1l".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),
            "y".to_string(),"x".to_string(),"0".to_string(),"0".to_string(),"1j".to_string(),"0".to_string(),"0".to_string(),"1j".to_string(),"1l".to_string(),"0".to_string(),"1j".to_string(),"0".to_string(),"0".to_string(),"1j".to_string(),"0".to_string(),"0".to_string(),
            "y".to_string(),"y".to_string(),"x".to_string(),"k".to_string(),"k".to_string(),"1c".to_string(),"1x".to_string(),"1y".to_string(),"1m".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),
            "y".to_string(),"y".to_string(),"y".to_string(),"x".to_string(),"k".to_string(),"s".to_string(),"s".to_string(),"s".to_string(),"k".to_string(),"k".to_string(),"k".to_string(),"k".to_string(),"k".to_string(),"1g".to_string(),"1f".to_string(),"k".to_string(),
            "k".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"1i".to_string(),"1u".to_string(),"1u".to_string(),"1u".to_string(),"1v".to_string(),"11".to_string(),"19".to_string(),"1b".to_string(),"1a".to_string(),"1e".to_string(),"10".to_string(),"k".to_string(),
            "k".to_string(),"z".to_string(),"z".to_string(),"11".to_string(),"12".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"10".to_string(),"17".to_string(),"z".to_string(),"18".to_string(),"1e".to_string(),"12".to_string(),"k".to_string(),
            "k".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"1k".to_string(),"14".to_string(),"15".to_string(),"16".to_string(),"1h".to_string(),"z".to_string(),"k".to_string(),
            "k".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"10".to_string(),"1d".to_string(),"1v".to_string(),"1r".to_string(),"1s".to_string(),"1r".to_string(),"1q".to_string(),"1z".to_string(),"k".to_string(),
            "k".to_string(),"z".to_string(),"z".to_string(),"12".to_string(),"10".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"1i".to_string(),"1n".to_string(),"1o".to_string(),"1o".to_string(),"1o".to_string(),"1p".to_string(),"z".to_string(),"k".to_string(),
            "k".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"10".to_string(),"z".to_string(),"z".to_string(),"k".to_string(),
            "k".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"11".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"k".to_string(),
            "k".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"12".to_string(),"z".to_string(),"z".to_string(),"10".to_string(),"12".to_string(),"k".to_string(),
            "k".to_string(),"k".to_string(),"k".to_string(),"k".to_string(),"k".to_string(),"k".to_string(),"k".to_string(),"k".to_string(),"k".to_string(),"k".to_string(),"k".to_string(),"k".to_string(),"k".to_string(),"k".to_string(),"k".to_string(),"k".to_string(),
            "0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),
            "0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),
            "0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string()
        ],
        items: vec![
            Instance {position: Position { x: 11, y: 5}, id: "d".to_string()},
            Instance {position: Position { x: 8,  y: 3}, id: "e".to_string()},
            Instance {position: Position { x: 1,  y: 0}, id: "5".to_string()},
            Instance {position: Position { x: 2,  y: 1}, id: "6".to_string()},
            Instance {position: Position { x: 3,  y: 2}, id: "6".to_string()},
        ],
        exits: vec![
            ExitInstance {
                position: Position { x: 3, y: 3},
                exit: Exit { room: "3".to_string(), position: Position { x: 10, y: 6}}
            },
        ],
        endings: vec![
            Instance{position: Position { x: 8, y: 7 }, id: "undefined".to_string()},
        ],
    }
}

pub(crate) fn game_default() -> Game {
    Game {
        name: "Write your game's title here".to_string(),
        version: 6.5,
        room_format: 1,
        palettes: vec![
            Palette {
                id: "0".to_string(),
                name: None,
                colours: vec![
                    Colour {red: 0,   green: 82,  blue: 204 },
                    Colour {red: 128, green: 159, blue: 255 },
                    Colour {red: 255, green: 255, blue: 255 },
                ]
            }
        ],
        rooms: vec![
            Room {
                id: "0".to_string(),
                palette: "0".to_string(),
                name: None,
                tiles: vec![
                    "0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),
                    "0".to_string(),"a".to_string(),"a".to_string(),"a".to_string(),"a".to_string(),"a".to_string(),"a".to_string(),"a".to_string(),"a".to_string(),"a".to_string(),"a".to_string(),"a".to_string(),"a".to_string(),"a".to_string(),"a".to_string(),"0".to_string(),
                    "0".to_string(),"a".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"a".to_string(),"0".to_string(),
                    "0".to_string(),"a".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"a".to_string(),"0".to_string(),
                    "0".to_string(),"a".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"a".to_string(),"0".to_string(),
                    "0".to_string(),"a".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"a".to_string(),"0".to_string(),
                    "0".to_string(),"a".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"a".to_string(),"0".to_string(),
                    "0".to_string(),"a".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"a".to_string(),"0".to_string(),
                    "0".to_string(),"a".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"a".to_string(),"0".to_string(),
                    "0".to_string(),"a".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"a".to_string(),"0".to_string(),
                    "0".to_string(),"a".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"a".to_string(),"0".to_string(),
                    "0".to_string(),"a".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"a".to_string(),"0".to_string(),
                    "0".to_string(),"a".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"a".to_string(),"0".to_string(),
                    "0".to_string(),"a".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"a".to_string(),"0".to_string(),
                    "0".to_string(),"a".to_string(),"a".to_string(),"a".to_string(),"a".to_string(),"a".to_string(),"a".to_string(),"a".to_string(),"a".to_string(),"a".to_string(),"a".to_string(),"a".to_string(),"a".to_string(),"a".to_string(),"a".to_string(),"0".to_string(),
                    "0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),
                ],
                items: vec![],
                exits: vec![],
                endings: vec![]
            }
        ],
        tiles: vec![
            Tile {
                id: "a".to_string(),
                name: None,
                wall: false,
                animation_frames: vec![
                    Image {
                        pixels: vec![
                            1,1,1,1,1,1,1,1,
                            1,0,0,0,0,0,0,1,
                            1,0,0,0,0,0,0,1,
                            1,0,0,1,1,0,0,1,
                            1,0,0,1,1,0,0,1,
                            1,0,0,0,0,0,0,1,
                            1,0,0,0,0,0,0,1,
                            1,1,1,1,1,1,1,1,
                        ]
                    }
                ]
            }
        ],
        avatar: Avatar {
            animation_frames: vec![
                Image {
                    pixels: vec![
                        0,0,0,1,1,0,0,0,
                        0,0,0,1,1,0,0,0,
                        0,0,0,1,1,0,0,0,
                        0,0,1,1,1,1,0,0,
                        0,1,1,1,1,1,1,0,
                        1,0,1,1,1,1,0,1,
                        0,0,1,0,0,1,0,0,
                        0,0,1,0,0,1,0,0,
                    ]
                }
            ],
            room: "0".to_string(),
            position: Position { x: 4, y: 4 }
        },
        sprites: vec![
            Sprite {
                id: "a".to_string(),
                name: None,
                animation_frames: vec![
                    Image {
                        pixels: vec![
                            0,0,0,0,0,0,0,0,
                            0,0,0,0,0,0,0,0,
                            0,1,0,1,0,0,0,1,
                            0,1,1,1,0,0,0,1,
                            0,1,1,1,0,0,1,0,
                            0,1,1,1,1,1,0,0,
                            0,0,1,1,1,1,0,0,
                            0,0,1,0,0,1,0,0,
                        ]
                    }
                ],
                dialogue: Some("SPR_0".to_string()),
                room: "0".to_string(),
                position: Position { x: 8, y: 12 }
            }
        ],
        items: vec![
            Item {
                id: "0".to_string(),
                animation_frames: vec![
                    Image {
                        pixels: vec![
                            0,0,0,0,0,0,0,0,
                            0,0,0,0,0,0,0,0,
                            0,0,0,0,0,0,0,0,
                            0,0,1,1,1,1,0,0,
                            0,1,1,0,0,1,0,0,
                            0,0,1,0,0,1,0,0,
                            0,0,0,1,1,0,0,0,
                            0,0,0,0,0,0,0,0,
                        ]
                    },
                ],
                name: Some("tea".to_string()),
                dialogue: Some("ITM_0".to_string())
            },
        ],
        dialogues: vec![
            Dialogue {
                id: "SPR_0".to_string(),
                contents: "I'm a cat".to_string(),
            },
            Dialogue {
                id: "ITM_0".to_string(),
                contents: "You found a nice warm cup of tea".to_string(),
            },
        ],
        endings: vec![],
        variables: vec![
            Variable { id: "a".to_string(), initial_value: "42".to_string() }
        ],
    }
}