2013-03-03 01:03:33 +00:00
|
|
|
/*
|
2014-06-01 17:55:23 +00:00
|
|
|
* Portions of this file are copyright Rebirth contributors and licensed as
|
|
|
|
* described in COPYING.txt.
|
|
|
|
* Portions of this file are copyright Parallax Software and licensed
|
|
|
|
* according to the Parallax license below.
|
|
|
|
* See COPYING.txt for license details.
|
|
|
|
|
2013-03-03 01:03:33 +00:00
|
|
|
THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX
|
|
|
|
SOFTWARE CORPORATION ("PARALLAX"). PARALLAX, IN DISTRIBUTING THE CODE TO
|
|
|
|
END-USERS, AND SUBJECT TO ALL OF THE TERMS AND CONDITIONS HEREIN, GRANTS A
|
|
|
|
ROYALTY-FREE, PERPETUAL LICENSE TO SUCH END-USERS FOR USE BY SUCH END-USERS
|
|
|
|
IN USING, DISPLAYING, AND CREATING DERIVATIVE WORKS THEREOF, SO LONG AS
|
|
|
|
SUCH USE, DISPLAY OR CREATION IS FOR NON-COMMERCIAL, ROYALTY OR REVENUE
|
|
|
|
FREE PURPOSES. IN NO EVENT SHALL THE END-USER USE THE COMPUTER CODE
|
|
|
|
CONTAINED HEREIN FOR REVENUE-BEARING PURPOSES. THE END-USER UNDERSTANDS
|
|
|
|
AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE.
|
|
|
|
COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*
|
|
|
|
*
|
|
|
|
* Header for gamemine.c
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
2015-04-19 04:18:51 +00:00
|
|
|
#pragma once
|
2013-03-03 01:03:33 +00:00
|
|
|
|
2013-10-26 03:40:50 +00:00
|
|
|
#include <physfs.h>
|
2017-02-19 19:33:37 +00:00
|
|
|
#include "fwd-segment.h"
|
2013-10-26 03:40:50 +00:00
|
|
|
#include "maths.h"
|
|
|
|
|
2013-11-21 23:11:51 +00:00
|
|
|
#define TMAP_NUM_MASK 0x3FFF
|
|
|
|
|
2013-03-03 01:03:33 +00:00
|
|
|
#if defined(DXX_BUILD_DESCENT_I)
|
|
|
|
#define MINE_VERSION 17 // Current version expected
|
|
|
|
#elif defined(DXX_BUILD_DESCENT_II)
|
|
|
|
#define MINE_VERSION 20 // Current version expected
|
2015-07-25 23:10:45 +00:00
|
|
|
#include "vecmat.h"
|
2013-03-03 01:03:33 +00:00
|
|
|
#endif
|
|
|
|
#define COMPATIBLE_VERSION 16 // Oldest version that can safely be loaded.
|
|
|
|
|
2016-09-11 18:49:16 +00:00
|
|
|
#if DXX_USE_EDITOR
|
2013-03-03 01:03:33 +00:00
|
|
|
struct mtfi {
|
|
|
|
ushort fileinfo_signature;
|
|
|
|
ushort fileinfo_version;
|
|
|
|
int fileinfo_sizeof;
|
|
|
|
}; // Should be same as first two fields below...
|
|
|
|
|
2015-11-26 02:56:55 +00:00
|
|
|
#if defined(DXX_BUILD_DESCENT_I) || defined(DXX_BUILD_DESCENT_II)
|
2013-03-03 01:03:33 +00:00
|
|
|
struct mfi {
|
|
|
|
ushort fileinfo_signature;
|
|
|
|
ushort fileinfo_version;
|
|
|
|
int fileinfo_sizeof;
|
|
|
|
int header_offset; // Stuff common to game & editor
|
|
|
|
int header_size;
|
|
|
|
int editor_offset; // Editor specific stuff
|
|
|
|
int editor_size;
|
|
|
|
int segment_offset;
|
|
|
|
int segment_howmany;
|
|
|
|
int segment_sizeof;
|
|
|
|
int newseg_verts_offset;
|
|
|
|
int newseg_verts_howmany;
|
|
|
|
int newseg_verts_sizeof;
|
|
|
|
int group_offset;
|
|
|
|
int group_howmany;
|
|
|
|
int group_sizeof;
|
|
|
|
int vertex_offset;
|
2017-02-19 19:33:38 +00:00
|
|
|
unsigned vertex_howmany;
|
2013-03-03 01:03:33 +00:00
|
|
|
int vertex_sizeof;
|
|
|
|
int texture_offset;
|
2014-12-20 04:36:11 +00:00
|
|
|
uint32_t texture_howmany;
|
2013-03-03 01:03:33 +00:00
|
|
|
int texture_sizeof;
|
|
|
|
int walls_offset;
|
|
|
|
int walls_howmany;
|
|
|
|
int walls_sizeof;
|
|
|
|
int triggers_offset;
|
|
|
|
int triggers_howmany;
|
|
|
|
int triggers_sizeof;
|
|
|
|
int links_offset;
|
|
|
|
int links_howmany;
|
|
|
|
int links_sizeof;
|
|
|
|
int object_offset; // Object info
|
|
|
|
int object_howmany;
|
|
|
|
int object_sizeof;
|
|
|
|
int unused_offset; // was: doors_offset
|
|
|
|
int unused_howmamy; // was: doors_howmany
|
|
|
|
int unused_sizeof; // was: doors_sizeof
|
|
|
|
#if defined(DXX_BUILD_DESCENT_II)
|
|
|
|
short level_shake_frequency, level_shake_duration;
|
|
|
|
// Shakes every level_shake_frequency seconds
|
|
|
|
// for level_shake_duration seconds (on average, random). In 16ths second.
|
|
|
|
int secret_return_segment;
|
|
|
|
vms_matrix secret_return_orient;
|
|
|
|
|
|
|
|
int dl_indices_offset;
|
|
|
|
int dl_indices_howmany;
|
|
|
|
int dl_indices_sizeof;
|
|
|
|
|
|
|
|
int delta_light_offset;
|
|
|
|
int delta_light_howmany;
|
|
|
|
int delta_light_sizeof;
|
|
|
|
|
|
|
|
int segment2_offset;
|
|
|
|
int segment2_howmany;
|
|
|
|
int segment2_sizeof;
|
|
|
|
#endif
|
|
|
|
};
|
2015-11-26 02:56:55 +00:00
|
|
|
#endif
|
2013-03-03 01:03:33 +00:00
|
|
|
#endif // EDITOR
|
|
|
|
|
|
|
|
struct mh {
|
|
|
|
int num_vertices;
|
|
|
|
int num_segments;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct me {
|
|
|
|
int current_seg;
|
|
|
|
int newsegment_offset;
|
|
|
|
int newsegment_size;
|
|
|
|
int Curside;
|
|
|
|
int Markedsegp;
|
|
|
|
int Markedside;
|
|
|
|
int Groupsegp[10];
|
|
|
|
int Groupside[10];
|
|
|
|
int num_groups;
|
|
|
|
int current_group;
|
|
|
|
//int num_objects;
|
|
|
|
};
|
|
|
|
|
|
|
|
extern struct mtfi mine_top_fileinfo; // Should be same as first two fields below...
|
|
|
|
extern struct mfi mine_fileinfo;
|
|
|
|
extern struct mh mine_header;
|
|
|
|
extern struct me mine_editor;
|
|
|
|
|
|
|
|
// loads from an already-open file
|
|
|
|
// returns 0=everything ok, 1=old version, -1=error
|
2016-08-25 04:05:32 +00:00
|
|
|
#ifdef dsx
|
|
|
|
namespace dsx {
|
2019-08-06 02:59:40 +00:00
|
|
|
int load_mine_data_compiled(PHYSFS_File *LoadFile, const char *Gamesave_current_filename);
|
2016-08-25 04:05:32 +00:00
|
|
|
}
|
|
|
|
#endif
|
2013-03-03 01:03:33 +00:00
|
|
|
#define TMAP_NUM_MASK 0x3FFF
|
|
|
|
|
2013-03-03 01:03:33 +00:00
|
|
|
#if defined(DXX_BUILD_DESCENT_II)
|
2017-06-17 23:05:16 +00:00
|
|
|
namespace dsx {
|
2012-11-11 00:14:30 +00:00
|
|
|
extern int d1_pig_present;
|
2013-03-03 01:03:33 +00:00
|
|
|
|
|
|
|
/* stuff for loading descent.pig of descent 1 */
|
2020-08-24 01:31:28 +00:00
|
|
|
uint16_t convert_d1_tmap_num(uint16_t d1_tmap_num);
|
2017-06-17 23:05:16 +00:00
|
|
|
}
|
2013-03-03 01:03:33 +00:00
|
|
|
#endif
|