Subversion Repositories plumbers

Rev

Rev 12 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
25 daniel-mar 1
/*
2
 * Plumbers Don't Wear Ties - Structure of GAME.BIN
3
 * Copyright 2017 - 2020 Daniel Marschall, ViaThinkSoft
4
 *
5
 * Licensed under the Apache License, Version 2.0 (the "License");
6
 * you may not use this file except in compliance with the License.
7
 * You may obtain a copy of the License at
8
 *
9
 *     http://www.apache.org/licenses/LICENSE-2.0
10
 *
11
 * Unless required by applicable law or agreed to in writing, software
12
 * distributed under the License is distributed on an "AS IS" BASIS,
13
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
 * See the License for the specific language governing permissions and
15
 * limitations under the License.
16
 */
17
 
2 daniel-mar 18
#ifndef PLUMBERS_GAMESTRUCT_HEADER
19
#define PLUMBERS_GAMESTRUCT_HEADER
20
 
21
#include <stdint.h>
22
 
23
#define SCENEID_PREVDECISION 32767
24
#define SCENEID_ENDGAME      -1
25
 
12 daniel-mar 26
#define SEGMENT_BEGINNING 0
27
#define SEGMENT_DECISION  1
28
 
3 daniel-mar 29
#pragma pack(push, 1)
30
 
2 daniel-mar 31
struct _coord {
32
        int16_t     x;
33
        int16_t     y;
34
};
35
 
36
struct _actionDef {
37
        int32_t     scoreDelta;
12 daniel-mar 38
        int16_t     nextSceneID;       // will jump to the scene with the name "SCxx", where xx stands for nextSceneID (2 digits at least)
25 daniel-mar 39
                                       // SCENEID_PREVDECISION (0x7FFF) = end game
40
                                       // SCENEID_ENDGAME (0xFFFF)      = go back to the last decision
41
        int16_t     sceneSegment;      // SEGMENT_BEGINNING (0) = start scene from beginning
42
                                       // SEGMENT_DECISION (1)  = go to decision page
2 daniel-mar 43
        _coord      cHotspotTopLeft;
25 daniel-mar 44
        _coord      cHotspotBottomRight;
2 daniel-mar 45
};
46
 
47
struct _sceneDef {
48
        int16_t     numPics;
49
        int16_t     pictureIndex;
50
        int16_t     numActions;
51
        char        szSceneFolder[14]; // Foldername *must* be "SCxx" (case sensitive) where xx stands for a 2 digit ID
52
        char        szDialogWav[14];
53
        char        szDecisionBmp[14];
54
        _actionDef  actions[3];
55
};
56
 
57
struct _pictureDef {
58
        int16_t     duration;          // deciseconds
59
        char        szBitmapFile[14];
60
};
61
 
62
struct _gameBinFile {
63
        int16_t     unknown1[7];
64
        int16_t     numScenes;
65
        int16_t     numPics;
66
        int16_t     unknown2[2];
67
        _sceneDef   scenes[100];       // Scenes start at file position 0x0016
68
        _pictureDef pictures[2000];    // Pictures start at file position 0x2596
69
};
70
 
3 daniel-mar 71
#pragma pack(pop)
72
 
2 daniel-mar 73
#endif // PLUMBERS_GAMESTRUCT_HEADER