File: room_file_deprecated.cpp

package info (click to toggle)
scummvm 2.9.1%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 450,580 kB
  • sloc: cpp: 4,299,825; asm: 28,322; python: 12,901; sh: 11,302; java: 9,289; xml: 7,895; perl: 2,639; ansic: 2,465; yacc: 1,670; javascript: 1,020; makefile: 933; lex: 578; awk: 275; objc: 82; sed: 11; php: 1
file content (142 lines) | stat: -rw-r--r-- 3,638 bytes parent folder | download | duplicates (2)
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
/* ScummVM - Graphic Adventure Engine
 *
 * ScummVM is the legal property of its developers, whose names
 * are too numerous to list here. Please refer to the COPYRIGHT
 * file distributed with this source distribution.
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 */

//=============================================================================
//
// Deprecated room stuff. Removed from room class and load routine because this
// data is no longer supported in the engine. Perhaps move to some legacy
// knowledge base; or restore when it's possible to support ancient games.
//
//=============================================================================

#if defined (OBSOLETE)

#include "ags/shared/ac/common.h"
#include "ags/shared/util/stream.h"

using namespace AGS::Shared;

#define AE_WAITFLAG   0x80000000
#define MAXANIMSTAGES 10
struct AnimationStruct {
	int   x, y;
	int   data;
	int   object;
	int   speed;
	int8  action;
	int8  wait;
	AnimationStruct() {
		action = 0;
		object = 0;
		wait = 1;
		speed = 5;
	}
};

struct FullAnimation {
	AnimationStruct stage[MAXANIMSTAGES];
	int             numstages;
	FullAnimation() {
		numstages = 0;
	}
};

#define MAXPOINTS 30
struct PolyPoints {
	int x[MAXPOINTS];
	int y[MAXPOINTS];
	int numpoints;
	void add_point(int x, int y);
	PolyPoints() {
		numpoints = 0;
	}

	void Read(AGS::Shared::Stream *in);
};


#define MAXANIMS 10
// Just a list of cut out data
struct DeprecatedRoomStruct {
	// Full-room animations
	int16_t       numanims;
	FullAnimation anims[MAXANIMS];
	// Polygonal walkable areas (unknown version)
	int32_t       numwalkareas;
	PolyPoints    wallpoints[MAX_WALK_AREAS];
	// Unknown flags
	int16_t       flagstates[MAX_LEGACY_ROOM_FLAGS];
};



void PolyPoints::add_point(int x, int y) {
	x[numpoints] = x;
	y[numpoints] = y;
	numpoints++;

	if (numpoints >= MAXPOINTS)
		quit("too many poly points added");
}

void PolyPoints::Read(Stream *in) {
	in->ReadArrayOfInt32(x, MAXPOINTS);
	in->ReadArrayOfInt32(y, MAXPOINTS);
	numpoints = in->ReadInt32();
}


//
// Pre-2.5 scripts (we don't know how to convert them for the modern engine)
//
#define SCRIPT_CONFIG_VERSION 1
HRoomFileError ReadAncientScriptConfig(Stream *in) {
	int fmt = in->ReadInt32();
	if (fmt != SCRIPT_CONFIG_VERSION)
		return new RoomFileError(kRoomFileErr_FormatNotSupported, String::FromFormat("Invalid script configuration format (in room: %d, expected: %d).", fmt, SCRIPT_CONFIG_VERSION));

	size_t var_count = in->ReadInt32();
	for (size_t i = 0; i < var_count; ++i) {
		size_t len = in->ReadInt8();
		in->Seek(len);
	}
	return HRoomFileError::None();
}

HRoomFileError ReadAncientGraphicalScripts(Stream *in) {
	do {
		int ct = in->ReadInt32();
		if (ct == -1 || in->EOS())
			break;
		size_t len = in->ReadInt32();
		in->Seek(len);
	} while (true);
	return HRoomFileError::None();
}

HRoomFileError ReadPre250Scripts(Stream *in) {
	HRoomFileError err = ReadAncientScriptConfig(in);
	if (err)
		err = ReadAncientGraphicalScripts(in);
	return err;
}

#endif // OBSOLETE