mirror of
https://github.com/jmarshall23/CnC_Remastered_Collection.git
synced 2026-08-12 08:00:55 +02:00
* Cleanup of COORD.cpp
* Show Credits and move tab in the right place
This commit is contained in:
+3
-4
@@ -2,7 +2,6 @@
|
||||
# This .gitignore file was automatically created by Microsoft(R) Visual Studio.
|
||||
################################################################################
|
||||
|
||||
/.vs/CnC_Remastered_Collection/config
|
||||
/.vs/CnC_Remastered_Collection/v16/ipch/AutoPCH
|
||||
/.vs/CnC_Remastered_Collection/v16
|
||||
/out/build/x86-Debug
|
||||
/.vs/
|
||||
/out/
|
||||
/code/out/
|
||||
+1
-1
@@ -710,6 +710,6 @@ add_definitions(-DCHEAT_KEYS -DIMGUI_IMPL_OPENGL_LOADER_GLEW -DSCENARIO_EDITOR -
|
||||
add_compile_options(/permissive+ /Zc:forScope- /Zp1)
|
||||
add_executable(RedAlert ${src_win32lib} ${src_redalert} ${src_external})
|
||||
|
||||
set_target_properties(RedAlert PROPERTIES OUTPUT_NAME "RedAlert" LINK_FLAGS "/PDB:\"RedAlert.pdb\" /SUBSYSTEM:WINDOWS" RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/.." )
|
||||
set_target_properties(RedAlert PROPERTIES OUTPUT_NAME "RedAlert" LINK_FLAGS "/PDB:\"RedAlert.pdb\" /SUBSYSTEM:WINDOWS" RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/../../bin" )
|
||||
target_include_directories(RedAlert PRIVATE ./external/devil/;./external/;./redalert/win32lib;./external/lua/;./external/imgui;./external/dxsdk/Include;./external/ffmpeg-win32/include;./external/sdl2/include;./win32lib;./external/openal/include)
|
||||
target_link_libraries(RedAlert "opengl32.lib" "winmm.lib" "Ws2_32.lib" "${CMAKE_SOURCE_DIR}/external/devil/DevIL.lib" "${CMAKE_SOURCE_DIR}/external/sdl2/lib/x86/SDL2.lib" "${CMAKE_SOURCE_DIR}/external/openal/out/build/x86-Release/OpenAL32.lib")
|
||||
|
||||
+44
-242
@@ -44,11 +44,51 @@
|
||||
* Distance -- Determines the lepton distance between two coordinates. *
|
||||
* Distance -- Fetch distance between two target values. *
|
||||
* Fixed_To_Cardinal -- Converts a fixed point number into a cardinal number. *
|
||||
* Normal_Move_Point -- Moves point with tilt compensation. *
|
||||
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
|
||||
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
|
||||
|
||||
#include "function.h"
|
||||
|
||||
// Cosine lookup table
|
||||
const __int16 cosTable[255] = {
|
||||
0x0000, 0x0327, 0x064E, 0x0973, 0x0C98, 0x0FBA, 0x12DA, 0x15F7, 0x1911, 0x1C26, 0x1F38, 0x2244, 0x254B, 0x284D, 0x2B48,
|
||||
0x2E3C, 0x3129, 0x340F, 0x36EC, 0x39C1, 0x3C8D, 0x3F50, 0x4209, 0x44B7, 0x475B, 0x49F3, 0x4C81, 0x4F02, 0x5177, 0x53DF,
|
||||
0x563A, 0x5888, 0x5AC9, 0x5CFB, 0x5F1E, 0x6133, 0x6339, 0x652F, 0x6715, 0x68EC, 0x6AB2, 0x6C68, 0x6E0D, 0x6FA0, 0x7123,
|
||||
0x7293, 0x73F2, 0x753F, 0x767A, 0x77A2, 0x78B8, 0x79BB, 0x7AAB, 0x7B88, 0x7C51, 0x7D08, 0x7DAB, 0x7E3A, 0x7EB6, 0x7F1E,
|
||||
0x7F73, 0x7FB3, 0x7FE0, 0x7FF9, 0x7FFE, 0x7FEF, 0x7FCC, 0x7F95, 0x7F4B, 0x7EED, 0x7E7B, 0x7DF5, 0x7D5C, 0x7CAF, 0x7BEF,
|
||||
0x7B1C, 0x7A35, 0x793C, 0x782F, 0x7710, 0x75DF, 0x749B, 0x7345, 0x71DD, 0x7064, 0x6ED9, 0x6D3C, 0x6B8F, 0x69D1, 0x6803,
|
||||
0x6624, 0x6436, 0x6238, 0x602A, 0x5E0E, 0x5BE3, 0x59AA, 0x5763, 0x550E, 0x52AD, 0x503E, 0x4DC3, 0x4B3B, 0x48A8, 0x460A,
|
||||
0x4361, 0x40AD, 0x3DF0, 0x3B29, 0x3858, 0x357F, 0x329D, 0x2FB4, 0x2CC3, 0x29CB, 0x26CD, 0x23C9, 0x20BF, 0x1DB0, 0x1A9C,
|
||||
0x1784, 0x1469, 0x114A, 0x0E29, 0x0B06, 0x07E1, 0x04BA, 0x0193, 0xFE6D, 0xFB46, 0xF81F, 0xF4FA, 0xF1D7, 0xEEB6, 0xEB97,
|
||||
0xE87C, 0xE564, 0xE250, 0xDF41, 0xDC37, 0xD933, 0xD635, 0xD33D, 0xD04C, 0xCD63, 0xCA81, 0xC7A8, 0xC4D7, 0xC210, 0xBF53,
|
||||
0xBC9F, 0xB9F6, 0xB758, 0xB4C5, 0xB23D, 0xAFC2, 0xAD53, 0xAAF2, 0xA89D, 0xA656, 0xA41D, 0xA1F2, 0x9FD6, 0x9DC8, 0x9BCA,
|
||||
0x99DC, 0x97FD, 0x962F, 0x9471, 0x92C4, 0x9127, 0x8F9C, 0x8E23, 0x8CBB, 0x8B65, 0x8A21, 0x88F0, 0x87D1, 0x86C4, 0x85CB,
|
||||
0x84E4, 0x8411, 0x8351, 0x82A4, 0x820B, 0x8185, 0x8113, 0x80B5, 0x806B, 0x8034, 0x8011, 0x8002, 0x8007, 0x8020, 0x804D,
|
||||
0x808D, 0x80E2, 0x814A, 0x81C6, 0x8255, 0x82F8, 0x83AF, 0x8478, 0x8555, 0x8645, 0x8748, 0x885E, 0x8986, 0x8AC1, 0x8C0E,
|
||||
0x8D6D, 0x8EDD, 0x9060, 0x91F3, 0x9398, 0x954E, 0x9714, 0x98EB, 0x9AD1, 0x9CC7, 0x9ECD, 0xA0E2, 0xA305, 0xA537, 0xA778,
|
||||
0xA9C6, 0xAC21, 0xAE89, 0xB0FE, 0xB37F, 0xB60D, 0xB8A5, 0xBB49, 0xBDF7, 0xC0B0, 0xC373, 0xC63F, 0xC914, 0xCBF1, 0xCED7,
|
||||
0xD1C4, 0xD4B8, 0xD7B3, 0xDAB5, 0xDDBC, 0xE0C8, 0xE3DA, 0xE6EF, 0xEA09, 0xED26, 0xF046, 0xF368, 0xF68D, 0xF9B2, 0xFCD9,
|
||||
};
|
||||
|
||||
// Sine lookup table
|
||||
const __int16 sinTable[255] = {
|
||||
0x7FFF, 0x7FF5, 0x7FD7, 0x7FA5, 0x7F5F, 0x7F06, 0x7E99, 0x7E18, 0x7D84, 0x7CDC, 0x7C21, 0x7B52, 0x7A71, 0x797C, 0x7874,
|
||||
0x775A, 0x762D, 0x74EE, 0x739C, 0x7239, 0x70C4, 0x6F3D, 0x6DA5, 0x6BFC, 0x6A42, 0x6878, 0x669D, 0x64B3, 0x62B9, 0x60AF,
|
||||
0x5E97, 0x5C6F, 0x5A3A, 0x57F6, 0x55A5, 0x5346, 0x50DB, 0x4E63, 0x4BDE, 0x494E, 0x46B3, 0x440C, 0x415B, 0x3EA0, 0x3BDB,
|
||||
0x390D, 0x3636, 0x3356, 0x306F, 0x2D80, 0x2A8A, 0x278D, 0x248A, 0x2182, 0x1E74, 0x1B61, 0x184B, 0x1530, 0x1212, 0x0EF2,
|
||||
0x0BCF, 0x08AA, 0x0584, 0x025D, 0xFF37, 0xFC0F, 0xF8E9, 0xF5C3, 0xF29F, 0xEF7E, 0xEC5E, 0xE942, 0xE629, 0xE315, 0xE005,
|
||||
0xDCF9, 0xD9F4, 0xD6F4, 0xD3FA, 0xD108, 0xCE1C, 0xCB39, 0xC85D, 0xC58B, 0xC2C1, 0xC001, 0xBD4B, 0xBA9F, 0xB7FE, 0xB568,
|
||||
0xB2DE, 0xB060, 0xADEE, 0xAB89, 0xA931, 0xA6E6, 0xA4AA, 0xA27B, 0xA05B, 0x9E4A, 0x9C48, 0x9A56, 0x9873, 0x96A1, 0x94DF,
|
||||
0x932D, 0x918D, 0x8FFE, 0x8E80, 0x8D13, 0x8BB9, 0x8A70, 0x893A, 0x8817, 0x8706, 0x8607, 0x851C, 0x8444, 0x837F, 0x82CE,
|
||||
0x822F, 0x81A5, 0x812E, 0x80CB, 0x807B, 0x8040, 0x8018, 0x8004, 0x8004, 0x8018, 0x8040, 0x807B, 0x80CB, 0x812E, 0x81A5,
|
||||
0x822F, 0x82CE, 0x837F, 0x8444, 0x851C, 0x8607, 0x8706, 0x8817, 0x893A, 0x8A70, 0x8BB9, 0x8D13, 0x8E80, 0x8FFE, 0x918D,
|
||||
0x932D, 0x94DF, 0x96A1, 0x9873, 0x9A56, 0x9C48, 0x9E4A, 0xA05B, 0xA27B, 0xA4AA, 0xA6E6, 0xA931, 0xAB89, 0xADEE, 0xB060,
|
||||
0xB2DE, 0xB568, 0xB7FE, 0xBA9F, 0xBD4B, 0xC001, 0xC2C1, 0xC58B, 0xC85D, 0xCB39, 0xCE1C, 0xD108, 0xD3FA, 0xD6F4, 0xD9F4,
|
||||
0xDCF9, 0xE005, 0xE315, 0xE629, 0xE942, 0xEC5E, 0xEF7E, 0xF29F, 0xF5C3, 0xF8E9, 0xFC0F, 0xFF37, 0x025D, 0x0584, 0x08AA,
|
||||
0x0BCF, 0x0EF2, 0x1212, 0x1530, 0x184B, 0x1B61, 0x1E74, 0x2182, 0x248A, 0x278D, 0x2A8A, 0x2D80, 0x306F, 0x3356, 0x3636,
|
||||
0x390D, 0x3BDB, 0x3EA0, 0x415B, 0x440C, 0x46B3, 0x494E, 0x4BDE, 0x4E63, 0x50DB, 0x5346, 0x55A5, 0x57F6, 0x5A3A, 0x5C6F,
|
||||
0x5E97, 0x60AF, 0x62B9, 0x64B3, 0x669D, 0x6878, 0x6A42, 0x6BFC, 0x6DA5, 0x6F3D, 0x70C4, 0x7239, 0x739C, 0x74EE, 0x762D,
|
||||
0x775A, 0x7874, 0x797C, 0x7A71, 0x7B52, 0x7C21, 0x7CDC, 0x7D84, 0x7E18, 0x7E99, 0x7F06, 0x7F5F, 0x7FA5, 0x7FD7, 0x7FF5,
|
||||
};
|
||||
|
||||
/***********************************************************************************************
|
||||
* Coord_Cell -- Convert a coordinate into a cell number. *
|
||||
@@ -347,14 +387,6 @@ short const * Coord_Spillage_List(COORDINATE coord, Rect const & rect, bool noce
|
||||
*=============================================================================================*/
|
||||
COORDINATE Coord_Move(COORDINATE start, register DirType dir, unsigned short distance)
|
||||
{
|
||||
#ifdef NEVER
|
||||
short x = Coord_X(start);
|
||||
short y = Coord_Y(start);
|
||||
|
||||
Move_Point(x, y, dir, distance);
|
||||
return(XY_Coord(x,y));
|
||||
#endif
|
||||
|
||||
Move_Point(*(short *)&start, *(((short *)&start)+1), dir, distance);
|
||||
return(start);
|
||||
}
|
||||
@@ -399,238 +431,8 @@ COORDINATE Coord_Scatter(COORDINATE coord, unsigned distance, bool lock)
|
||||
return(newcoord);
|
||||
}
|
||||
|
||||
|
||||
int __cdecl calcx(signed short dir, short distance)
|
||||
{
|
||||
__asm {
|
||||
|
||||
//#pragma aux calcx parm [ax] [bx] \
|
||||
|
||||
and eax, 0
|
||||
and ebx, 0
|
||||
and ecx, 0
|
||||
and edx, 0
|
||||
|
||||
movzx eax, [dir]
|
||||
mov bx, [distance]
|
||||
imul bx
|
||||
shl ax, 1
|
||||
rcl dx, 1
|
||||
mov al, ah
|
||||
mov ah, dl
|
||||
cwd
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int __cdecl calcy(signed short param1, short distance)
|
||||
{
|
||||
__asm {
|
||||
|
||||
//#pragma aux calcy parm [ax] [bx] \
|
||||
|
||||
and eax, 0
|
||||
and ebx, 0
|
||||
and ecx, 0
|
||||
and edx, 0
|
||||
|
||||
movzx eax, [param1]
|
||||
mov bx, [distance]
|
||||
imul bx
|
||||
shl ax, 1
|
||||
rcl dx, 1
|
||||
mov al, ah
|
||||
mov ah, dl
|
||||
cwd
|
||||
neg eax
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#if (0)
|
||||
extern int calcx(signed short, short distance);
|
||||
#pragma aux calcx parm [ax] [bx] \
|
||||
modify [eax dx] \
|
||||
value [eax] = \
|
||||
"imul bx" \
|
||||
"shl ax,1" \
|
||||
"rcl dx,1" \
|
||||
"mov al,ah" \
|
||||
"mov ah,dl" \
|
||||
"cwd" \
|
||||
// "and eax,0FFFFh";
|
||||
|
||||
extern int calcy(signed short, short distance);
|
||||
#pragma aux calcy parm [ax] [bx] \
|
||||
modify [eax dx] \
|
||||
value [eax] = \
|
||||
"imul bx" \
|
||||
"shl ax,1" \
|
||||
"rcl dx,1" \
|
||||
"mov al,ah" \
|
||||
"mov ah,dl" \
|
||||
"cwd" \
|
||||
"neg eax";
|
||||
// "and eax,0FFFFh" \
|
||||
|
||||
#endif
|
||||
|
||||
const __int16 cosTable[255] = { 0x0, 0x327, 0x64E, 0x973, 0xC98, 0xFBA, 0x12DA, 0x15F7, 0x1911, 0x1C26, 0x1F38, 0x2244, 0x254B,
|
||||
0x284D, 0x2B48, 0x2E3C, 0x3129, 0x340F, 0x36EC, 0x39C1, 0x3C8D, 0x3F50, 0x4209, 0x44B7, 0x475B, 0x49F3, 0x4C81, 0x4F02,
|
||||
0x5177, 0x53DF, 0x563A, 0x5888, 0x5AC9, 0x5CFB, 0x5F1E, 0x6133, 0x6339, 0x652F, 0x6715, 0x68EC, 0x6AB2, 0x6C68, 0x6E0D,
|
||||
0x6FA0, 0x7123, 0x7293, 0x73F2, 0x753F, 0x767A, 0x77A2, 0x78B8, 0x79BB, 0x7AAB, 0x7B88, 0x7C51, 0x7D08, 0x7DAB, 0x7E3A,
|
||||
0x7EB6, 0x7F1E, 0x7F73, 0x7FB3, 0x7FE0, 0x7FF9, 0x7FFE, 0x7FEF, 0x7FCC, 0x7F95, 0x7F4B, 0x7EED, 0x7E7B, 0x7DF5, 0x7D5C,
|
||||
0x7CAF, 0x7BEF, 0x7B1C, 0x7A35, 0x793C, 0x782F, 0x7710, 0x75DF, 0x749B, 0x7345, 0x71DD, 0x7064, 0x6ED9, 0x6D3C, 0x6B8F,
|
||||
0x69D1, 0x6803, 0x6624, 0x6436, 0x6238, 0x602A, 0x5E0E, 0x5BE3, 0x59AA, 0x5763, 0x550E, 0x52AD, 0x503E, 0x4DC3, 0x4B3B,
|
||||
0x48A8, 0x460A, 0x4361, 0x40AD, 0x3DF0, 0x3B29, 0x3858, 0x357F, 0x329D, 0x2FB4, 0x2CC3, 0x29CB, 0x26CD, 0x23C9, 0x20BF,
|
||||
0x1DB0, 0x1A9C, 0x1784, 0x1469, 0x114A, 0xE29, 0xB06, 0x7E1, 0x4BA, 0x193, 0xFE6D, 0xFB46, 0xF81F, 0xF4FA, 0xF1D7,
|
||||
0xEEB6, 0xEB97, 0xE87C, 0xE564, 0xE250, 0xDF41, 0xDC37, 0xD933, 0xD635, 0xD33D, 0xD04C, 0xCD63, 0xCA81, 0xC7A8, 0xC4D7,
|
||||
0xC210, 0xBF53, 0xBC9F, 0xB9F6, 0xB758, 0xB4C5, 0xB23D, 0xAFC2, 0xAD53, 0xAAF2, 0xA89D, 0xA656, 0xA41D, 0xA1F2, 0x9FD6,
|
||||
0x9DC8, 0x9BCA, 0x99DC, 0x97FD, 0x962F, 0x9471, 0x92C4, 0x9127, 0x8F9C, 0x8E23, 0x8CBB, 0x8B65, 0x8A21, 0x88F0, 0x87D1,
|
||||
0x86C4, 0x85CB, 0x84E4, 0x8411, 0x8351, 0x82A4, 0x820B, 0x8185, 0x8113, 0x80B5, 0x806B, 0x8034, 0x8011, 0x8002, 0x8007,
|
||||
0x8020, 0x804D, 0x808D, 0x80E2, 0x814A, 0x81C6, 0x8255, 0x82F8, 0x83AF, 0x8478, 0x8555, 0x8645, 0x8748, 0x885E, 0x8986,
|
||||
0x8AC1, 0x8C0E, 0x8D6D, 0x8EDD, 0x9060, 0x91F3, 0x9398, 0x954E, 0x9714, 0x98EB, 0x9AD1, 0x9CC7, 0x9ECD, 0xA0E2, 0xA305,
|
||||
0xA537, 0xA778, 0xA9C6, 0xAC21, 0xAE89, 0xB0FE, 0xB37F, 0xB60D, 0xB8A5, 0xBB49, 0xBDF7, 0xC0B0, 0xC373, 0xC63F, 0xC914,
|
||||
0xCBF1, 0xCED7, 0xD1C4, 0xD4B8, 0xD7B3, 0xDAB5, 0xDDBC, 0xE0C8, 0xE3DA, 0xE6EF, 0xEA09, 0xED26, 0xF046, 0xF368, 0xF68D,
|
||||
0xF9B2, 0xFCD9,
|
||||
};
|
||||
|
||||
const __int16 sinTable[255] = {
|
||||
0x7FFF, 0x7FF5, 0x7FD7, 0x7FA5, 0x7F5F, 0x7F06, 0x7E99, 0x7E18, 0x7D84, 0x7CDC, 0x7C21, 0x7B52, 0x7A71, 0x797C, 0x7874,
|
||||
0x775A, 0x762D, 0x74EE, 0x739C, 0x7239, 0x70C4, 0x6F3D, 0x6DA5, 0x6BFC, 0x6A42, 0x6878, 0x669D, 0x64B3, 0x62B9, 0x60AF,
|
||||
0x5E97, 0x5C6F, 0x5A3A, 0x57F6, 0x55A5, 0x5346, 0x50DB, 0x4E63, 0x4BDE, 0x494E, 0x46B3, 0x440C, 0x415B, 0x3EA0, 0x3BDB,
|
||||
0x390D, 0x3636, 0x3356, 0x306F, 0x2D80, 0x2A8A, 0x278D, 0x248A, 0x2182, 0x1E74, 0x1B61, 0x184B, 0x1530, 0x1212, 0xEF2,
|
||||
0xBCF, 0x8AA, 0x584, 0x25D, 0xFF37, 0xFC0F, 0xF8E9, 0xF5C3, 0xF29F, 0xEF7E, 0xEC5E, 0xE942, 0xE629, 0xE315, 0xE005,
|
||||
0xDCF9, 0xD9F4, 0xD6F4, 0xD3FA, 0xD108, 0xCE1C, 0xCB39, 0xC85D, 0xC58B, 0xC2C1, 0xC001, 0xBD4B, 0xBA9F, 0xB7FE, 0xB568,
|
||||
0xB2DE, 0xB060, 0xADEE, 0xAB89, 0xA931, 0xA6E6, 0xA4AA, 0xA27B, 0xA05B, 0x9E4A, 0x9C48, 0x9A56, 0x9873, 0x96A1, 0x94DF,
|
||||
0x932D, 0x918D, 0x8FFE, 0x8E80, 0x8D13, 0x8BB9, 0x8A70, 0x893A, 0x8817, 0x8706, 0x8607, 0x851C, 0x8444, 0x837F, 0x82CE,
|
||||
0x822F, 0x81A5, 0x812E, 0x80CB, 0x807B, 0x8040, 0x8018, 0x8004, 0x8004, 0x8018, 0x8040, 0x807B, 0x80CB, 0x812E, 0x81A5,
|
||||
0x822F, 0x82CE, 0x837F, 0x8444, 0x851C, 0x8607, 0x8706, 0x8817, 0x893A, 0x8A70, 0x8BB9, 0x8D13, 0x8E80, 0x8FFE, 0x918D,
|
||||
0x932D, 0x94DF, 0x96A1, 0x9873, 0x9A56, 0x9C48, 0x9E4A, 0xA05B, 0xA27B, 0xA4AA, 0xA6E6, 0xA931, 0xAB89, 0xADEE, 0xB060,
|
||||
0xB2DE, 0xB568, 0xB7FE, 0xBA9F, 0xBD4B, 0xC001, 0xC2C1, 0xC58B, 0xC85D, 0xCB39, 0xCE1C, 0xD108, 0xD3FA, 0xD6F4, 0xD9F4,
|
||||
0xDCF9, 0xE005, 0xE315, 0xE629, 0xE942, 0xEC5E, 0xEF7E, 0xF29F, 0xF5C3, 0xF8E9, 0xFC0F, 0xFF37, 0x25D, 0x584, 0x8AA,
|
||||
0xBCF, 0xEF2, 0x1212, 0x1530, 0x184B, 0x1B61, 0x1E74, 0x2182, 0x248A, 0x278D, 0x2A8A, 0x2D80, 0x306F, 0x3356, 0x3636,
|
||||
0x390D, 0x3BDB, 0x3EA0, 0x415B, 0x440C, 0x46B3, 0x494E, 0x4BDE, 0x4E63, 0x50DB, 0x5346, 0x55A5, 0x57F6, 0x5A3A, 0x5C6F,
|
||||
0x5E97, 0x60AF, 0x62B9, 0x64B3, 0x669D, 0x6878, 0x6A42, 0x6BFC, 0x6DA5, 0x6F3D, 0x70C4, 0x7239, 0x739C, 0x74EE, 0x762D,
|
||||
0x775A, 0x7874, 0x797C, 0x7A71, 0x7B52, 0x7C21, 0x7CDC, 0x7D84, 0x7E18, 0x7E99, 0x7F06, 0x7F5F, 0x7FA5, 0x7FD7, 0x7FF5,
|
||||
};
|
||||
|
||||
void Move_Point(short& x, short& y, register DirType dir, unsigned short distance)
|
||||
{
|
||||
x += (cosTable[dir] * distance) / SHRT_MAX;
|
||||
y += -(sinTable[dir] * distance) / SHRT_MAX;
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************************************************
|
||||
* Normal_Move_Point -- Moves point with tilt compensation. *
|
||||
* *
|
||||
* This routine will move the point in the direction and distance specified but it will *
|
||||
* take into account the tilt of the playing field. Typical use of this routine is to *
|
||||
* determine positioning as it relates to the playfield. Turrets are a good example of *
|
||||
* this. *
|
||||
* *
|
||||
* INPUT: x,y -- References to the coordinates to adjust. *
|
||||
* *
|
||||
* dir -- The direction of the desired movement. *
|
||||
* *
|
||||
* distance -- The distance (in coordinate units) to move the point. *
|
||||
* *
|
||||
* OUTPUT: none *
|
||||
* *
|
||||
* WARNINGS: none *
|
||||
* *
|
||||
* HISTORY: *
|
||||
* 12/19/1995 JLB : Created. *
|
||||
*=============================================================================================*/
|
||||
// Loss of precision in initializations (8 bits to 7 bits) warning. Hmmm.. can this be fixed?
|
||||
//lint -e569
|
||||
void Normal_Move_Point(short &x, short &y, register DirType dir, unsigned short distance)
|
||||
{
|
||||
static unsigned char const CosTable[256] = {
|
||||
0x00,0x03,0x06,0x09,0x0c,0x0f,0x12,0x15,
|
||||
0x18,0x1b,0x1e,0x21,0x24,0x27,0x2a,0x2d,
|
||||
0x30,0x33,0x36,0x39,0x3b,0x3e,0x41,0x43,
|
||||
0x46,0x49,0x4b,0x4e,0x50,0x52,0x55,0x57,
|
||||
0x59,0x5b,0x5e,0x60,0x62,0x64,0x65,0x67,
|
||||
0x69,0x6b,0x6c,0x6e,0x6f,0x71,0x72,0x74,
|
||||
0x75,0x76,0x77,0x78,0x79,0x7a,0x7b,0x7b,
|
||||
0x7c,0x7d,0x7d,0x7e,0x7e,0x7e,0x7e,0x7e,
|
||||
|
||||
0x7f,0x7e,0x7e,0x7e,0x7e,0x7e,0x7d,0x7d,
|
||||
0x7c,0x7b,0x7b,0x7a,0x79,0x78,0x77,0x76,
|
||||
0x75,0x74,0x72,0x71,0x70,0x6e,0x6c,0x6b,
|
||||
0x69,0x67,0x66,0x64,0x62,0x60,0x5e,0x5b,
|
||||
0x59,0x57,0x55,0x52,0x50,0x4e,0x4b,0x49,
|
||||
0x46,0x43,0x41,0x3e,0x3b,0x39,0x36,0x33,
|
||||
0x30,0x2d,0x2a,0x27,0x24,0x21,0x1e,0x1b,
|
||||
0x18,0x15,0x12,0x0f,0x0c,0x09,0x06,0x03,
|
||||
|
||||
0x00,0xfd,0xfa,0xf7,0xf4,0xf1,0xee,0xeb,
|
||||
0xe8,0xe5,0xe2,0xdf,0xdc,0xd9,0xd6,0xd3,
|
||||
0xd0,0xcd,0xca,0xc7,0xc5,0xc2,0xbf,0xbd,
|
||||
0xba,0xb7,0xb5,0xb2,0xb0,0xae,0xab,0xa9,
|
||||
0xa7,0xa5,0xa2,0xa0,0x9e,0x9c,0x9a,0x99,
|
||||
0x97,0x95,0x94,0x92,0x91,0x8f,0x8e,0x8c,
|
||||
0x8b,0x8a,0x89,0x88,0x87,0x86,0x85,0x85,
|
||||
0x84,0x83,0x83,0x82,0x82,0x82,0x82,0x82,
|
||||
|
||||
0x82,0x82,0x82,0x82,0x82,0x82,0x83,0x83,
|
||||
0x84,0x85,0x85,0x86,0x87,0x88,0x89,0x8a,
|
||||
0x8b,0x8c,0x8e,0x8f,0x90,0x92,0x94,0x95,
|
||||
0x97,0x99,0x9a,0x9c,0x9e,0xa0,0xa2,0xa5,
|
||||
0xa7,0xa9,0xab,0xae,0xb0,0xb2,0xb5,0xb7,
|
||||
0xba,0xbd,0xbf,0xc2,0xc5,0xc7,0xca,0xcd,
|
||||
0xd0,0xd3,0xd6,0xd9,0xdc,0xdf,0xe2,0xe5,
|
||||
0xe8,0xeb,0xee,0xf1,0xf4,0xf7,0xfa,0xfd,
|
||||
};
|
||||
|
||||
static unsigned char const SinTable[256] = {
|
||||
0x7f,0x7e,0x7e,0x7e,0x7e,0x7e,0x7d,0x7d,
|
||||
0x7c,0x7b,0x7b,0x7a,0x79,0x78,0x77,0x76,
|
||||
0x75,0x74,0x72,0x71,0x70,0x6e,0x6c,0x6b,
|
||||
0x69,0x67,0x66,0x64,0x62,0x60,0x5e,0x5b,
|
||||
0x59,0x57,0x55,0x52,0x50,0x4e,0x4b,0x49,
|
||||
0x46,0x43,0x41,0x3e,0x3b,0x39,0x36,0x33,
|
||||
0x30,0x2d,0x2a,0x27,0x24,0x21,0x1e,0x1b,
|
||||
0x18,0x15,0x12,0x0f,0x0c,0x09,0x06,0x03,
|
||||
|
||||
0x00,0xfd,0xfa,0xf7,0xf4,0xf1,0xee,0xeb,
|
||||
0xe8,0xe5,0xe2,0xdf,0xdc,0xd9,0xd6,0xd3,
|
||||
0xd0,0xcd,0xca,0xc7,0xc5,0xc2,0xbf,0xbd,
|
||||
0xba,0xb7,0xb5,0xb2,0xb0,0xae,0xab,0xa9,
|
||||
0xa7,0xa5,0xa2,0xa0,0x9e,0x9c,0x9a,0x99,
|
||||
0x97,0x95,0x94,0x92,0x91,0x8f,0x8e,0x8c,
|
||||
0x8b,0x8a,0x89,0x88,0x87,0x86,0x85,0x85,
|
||||
0x84,0x83,0x83,0x82,0x82,0x82,0x82,0x82,
|
||||
|
||||
0x82,0x82,0x82,0x82,0x82,0x82,0x83,0x83,
|
||||
0x84,0x85,0x85,0x86,0x87,0x88,0x89,0x8a,
|
||||
0x8b,0x8c,0x8e,0x8f,0x90,0x92,0x94,0x95,
|
||||
0x97,0x99,0x9a,0x9c,0x9e,0xa0,0xa2,0xa5,
|
||||
0xa7,0xa9,0xab,0xae,0xb0,0xb2,0xb5,0xb7,
|
||||
0xba,0xbd,0xbf,0xc2,0xc5,0xc7,0xca,0xcd,
|
||||
0xd0,0xd3,0xd6,0xd9,0xdc,0xdf,0xe2,0xe5,
|
||||
0xe8,0xeb,0xee,0xf1,0xf4,0xf7,0xfa,0xfd,
|
||||
|
||||
0x00,0x03,0x06,0x09,0x0c,0x0f,0x12,0x15,
|
||||
0x18,0x1b,0x1e,0x21,0x24,0x27,0x2a,0x2d,
|
||||
0x30,0x33,0x36,0x39,0x3b,0x3e,0x41,0x43,
|
||||
0x46,0x49,0x4b,0x4e,0x50,0x52,0x55,0x57,
|
||||
0x59,0x5b,0x5e,0x60,0x62,0x64,0x65,0x67,
|
||||
0x69,0x6b,0x6c,0x6e,0x6f,0x71,0x72,0x74,
|
||||
0x75,0x76,0x77,0x78,0x79,0x7a,0x7b,0x7b,
|
||||
0x7c,0x7d,0x7d,0x7e,0x7e,0x7e,0x7e,0x7e,
|
||||
};
|
||||
distance = distance; // Keep LINT quiet.
|
||||
|
||||
//
|
||||
// Have to declare table as unsigned otherwise MSVC complains, but we need to treat the actual values as signed.
|
||||
//
|
||||
static const char *_sin_table = (char*)&SinTable[0];
|
||||
static const char *_cos_table = (char*)&CosTable[0];
|
||||
|
||||
x += calcx(_cos_table[dir], distance);
|
||||
|
||||
y += calcy(_sin_table[dir] / 2, distance);
|
||||
x += ( cosTable[dir] * distance ) / SHRT_MAX;
|
||||
y += -( sinTable[dir] * distance ) / SHRT_MAX;
|
||||
}
|
||||
|
||||
@@ -85,7 +85,8 @@ CreditClass::CreditClass(void) :
|
||||
//#define WW 50
|
||||
void CreditClass::Graphic_Logic(bool forced)
|
||||
{
|
||||
if (forced || IsToRedraw) {
|
||||
if (forced || IsToRedraw)
|
||||
{
|
||||
BStart(BENCH_TABS);
|
||||
|
||||
int xx = SeenBuff.Get_Width() - (120 * RESFACTOR);
|
||||
@@ -112,12 +113,8 @@ void CreditClass::Graphic_Logic(bool forced)
|
||||
/*
|
||||
** Display the new current value.
|
||||
*/
|
||||
// PG TabClass::Draw_Credits_Tab();
|
||||
#ifdef WIN32
|
||||
//PG Fancy_Text_Print("%ld", xx, 0, &MetalScheme, TBLACK, TPF_METAL12 | TPF_CENTER | TPF_USE_GRAD_PAL, Current);
|
||||
#else
|
||||
Fancy_Text_Print("%ld", xx, 0, &ColorRemaps[PCOLOR_GREY], TBLACK, TPF_NOSHADOW|TPF_6PT_GRAD|TPF_CENTER|TPF_BRIGHT_COLOR, Current);
|
||||
#endif //WIN32
|
||||
TabClass::Draw_Credits_Tab();
|
||||
Fancy_Text_Print("%ld", xx, 0, &MetalScheme, TBLACK, TPF_METAL12 | TPF_CENTER | TPF_USE_GRAD_PAL, Current);
|
||||
|
||||
if (Scen.MissionTimer.Is_Active()) {
|
||||
long secs = Scen.MissionTimer / TICKS_PER_SECOND;
|
||||
@@ -143,20 +140,12 @@ void CreditClass::Graphic_Logic(bool forced)
|
||||
Speak(vox);
|
||||
Map.FlasherTimer = 7;
|
||||
}
|
||||
#ifdef WIN32
|
||||
|
||||
if (hours) {
|
||||
Fancy_Text_Print(TXT_TIME_FORMAT_HOURS, 200 * RESFACTOR, 0, &MetalScheme, TBLACK, TPF_METAL12|TPF_CENTER|TPF_USE_GRAD_PAL, hours, mins, secs);
|
||||
} else {
|
||||
Fancy_Text_Print(TXT_TIME_FORMAT_NO_HOURS, 200 * RESFACTOR, 0, &MetalScheme, TBLACK, TPF_METAL12|TPF_CENTER|TPF_USE_GRAD_PAL, mins, secs);
|
||||
}
|
||||
#else
|
||||
if (hours) {
|
||||
Fancy_Text_Print("%02d:%02d:%02d", 120 * RESFACTOR, 0, &ColorRemaps[PCOLOR_GREY], TBLACK, TPF_NOSHADOW|TPF_6PT_GRAD|TPF_CENTER|TPF_BRIGHT_COLOR, hours, mins, secs);
|
||||
} else {
|
||||
Fancy_Text_Print("%02d:%02d", 120 * RESFACTOR, 0, &ColorRemaps[PCOLOR_GREY], TBLACK, TPF_NOSHADOW|TPF_6PT_GRAD|TPF_CENTER|TPF_BRIGHT_COLOR, mins, secs);
|
||||
}
|
||||
#endif //WIN32
|
||||
}
|
||||
|
||||
IsToRedraw = false;
|
||||
@@ -236,8 +225,6 @@ void CreditClass::AI(bool forced, HouseClass *player_ptr, bool logic_only)
|
||||
|
||||
adder = ABS(adder);
|
||||
adder >>= 3;
|
||||
// adder >>= 4;
|
||||
// adder >>= 5;
|
||||
adder = Bound(adder, 1, 71+72);
|
||||
if (Current > Credits) adder = -adder;
|
||||
Current += adder;
|
||||
|
||||
@@ -569,7 +569,6 @@ void Shake_The_Screen(int shakes, HousesType house = HOUSE_NONE);
|
||||
** COORD.CPP
|
||||
*/
|
||||
short const * Coord_Spillage_List(COORDINATE coord, Rect const & rect, bool nocenter=true);
|
||||
void Normal_Move_Point(short &x, short &y, register DirType dir, unsigned short distance);
|
||||
void Move_Point(short &x, short &y, register DirType dir, unsigned short distance);
|
||||
COORDINATE Coord_Move(COORDINATE start, DirType facing, unsigned short distance);
|
||||
COORDINATE Coord_Scatter(COORDINATE coord, unsigned distance, bool lock=false);
|
||||
|
||||
+10
-31
@@ -103,36 +103,27 @@ void TabClass::Draw_It(bool complete)
|
||||
int rightx = width - 1;
|
||||
int tab_height = TAB_HEIGHT * RESFACTOR;
|
||||
|
||||
LogicPage->Fill_Rect(0, 0, rightx, tab_height-1, BLACK);
|
||||
// LogicPage->Fill_Rect(0, 0, rightx, tab_height-(2 * RESFACTOR), BLACK);
|
||||
LogicPage->Fill_Rect(0, 0, rightx, tab_height - 1, BLACK);
|
||||
|
||||
#ifdef WIN32
|
||||
/*
|
||||
** Use the new sidebar art for 640x400
|
||||
*/
|
||||
CC_Draw_Shape(TabShape, 0, 0, 0, WINDOW_MAIN, SHAPE_NORMAL);
|
||||
#else
|
||||
CC_Draw_Shape(TabShape, 2, 0, 0, WINDOW_MAIN, SHAPE_NORMAL);
|
||||
#endif
|
||||
|
||||
Draw_Credits_Tab();
|
||||
LogicPage->Draw_Line(0, tab_height-(1* RESFACTOR), rightx, tab_height-(1 * RESFACTOR), BLACK);
|
||||
#ifdef WIN32
|
||||
|
||||
Fancy_Text_Print(TXT_TAB_BUTTON_CONTROLS, (EVA_WIDTH/2) * RESFACTOR, 0, &MetalScheme, TBLACK, TPF_METAL12 | TPF_CENTER | TPF_USE_GRAD_PAL);
|
||||
#else
|
||||
// Fancy_Text_Print(TXT_TAB_BUTTON_CONTROLS, (EVA_WIDTH/2) * RESFACTOR, 0, &ColorRemaps[PCOLOR_GREY], TBLACK, TPF_6PT_GRAD|TPF_NOSHADOW|TPF_CENTER|TPF_BRIGHT_COLOR);
|
||||
Fancy_Text_Print(TXT_TAB_BUTTON_CONTROLS, (EVA_WIDTH/2) * RESFACTOR, 0, &ColorRemaps[PCOLOR_GREY], TBLACK, TPF_METAL12|TPF_NOSHADOW|TPF_CENTER|TPF_BRIGHT_COLOR);
|
||||
#endif //WIN32
|
||||
if (IsSidebarActive) {
|
||||
#ifndef WIN32
|
||||
TabClass::Hilite_Tab(1);
|
||||
#endif //WIN32
|
||||
} else {
|
||||
|
||||
if (!IsSidebarActive)
|
||||
{
|
||||
CC_Draw_Shape(TabShape, 0, width-(EVA_WIDTH * RESFACTOR), 0, WINDOW_MAIN, SHAPE_NORMAL);
|
||||
Fancy_Text_Print(TXT_TAB_SIDEBAR, width-((EVA_WIDTH/2) * RESFACTOR), 0, &ColorRemaps[PCOLOR_GREY], TBLACK, TPF_METAL12|TPF_NOSHADOW|TPF_CENTER|TPF_BRIGHT_COLOR);
|
||||
}
|
||||
|
||||
LogicPage->Unlock();
|
||||
}
|
||||
|
||||
Credits.Graphic_Logic(complete || IsToRedraw);
|
||||
|
||||
IsToRedraw = false;
|
||||
@@ -141,22 +132,16 @@ void TabClass::Draw_It(bool complete)
|
||||
|
||||
void TabClass::Draw_Credits_Tab(void)
|
||||
{
|
||||
#ifdef WIN32
|
||||
/*
|
||||
** Use the new sidebar art for 640x400
|
||||
*/
|
||||
CC_Draw_Shape(TabShape, Map.MoneyFlashTimer > 1 ? 8 : 6, (320-EVA_WIDTH) * RESFACTOR, 0, WINDOW_MAIN, SHAPE_NORMAL);
|
||||
#else
|
||||
CC_Draw_Shape(TabShape, 4, (320-(EVA_WIDTH*2)) * RESFACTOR, 0, WINDOW_MAIN, SHAPE_NORMAL);
|
||||
#endif
|
||||
int width = SeenBuff.Get_Width();
|
||||
CC_Draw_Shape(TabShape, Map.MoneyFlashTimer > 1 ? 8 : 6, width - (EVA_WIDTH * RESFACTOR), 0, WINDOW_MAIN, SHAPE_NORMAL);
|
||||
|
||||
|
||||
if (Scen.MissionTimer.Is_Active()) {
|
||||
bool light = ((int)Scen.MissionTimer < TICKS_PER_MINUTE * Rule.TimerWarning) || Map.FlasherTimer > 0;
|
||||
#ifdef WIN32
|
||||
CC_Draw_Shape(TabShape, light ? 4 : 2, 320, 0, WINDOW_MAIN, SHAPE_NORMAL);
|
||||
#else
|
||||
CC_Draw_Shape(TabShape, light ? 6 : 5, EVA_WIDTH * RESFACTOR, 0, WINDOW_MAIN, SHAPE_NORMAL);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
@@ -173,7 +158,6 @@ void TabClass::Hilite_Tab(int tab)
|
||||
textx = (320-(EVA_WIDTH/2)) * RESFACTOR;
|
||||
}
|
||||
|
||||
#ifdef WIN32
|
||||
/*
|
||||
** Use the new sidebar art for 640x400
|
||||
*/
|
||||
@@ -181,11 +165,6 @@ void TabClass::Hilite_Tab(int tab)
|
||||
MetalScheme.Color = 128+6;
|
||||
Fancy_Text_Print(TXT_TAB_BUTTON_CONTROLS, (EVA_WIDTH/2) * RESFACTOR, 0, &MetalScheme, TBLACK, TPF_METAL12 | TPF_CENTER | TPF_USE_GRAD_PAL);
|
||||
MetalScheme.Color = 128;
|
||||
#else
|
||||
CC_Draw_Shape(TabShape, 1 + (tab ? 0 : 2), xpos, 0, WINDOW_MAIN, SHAPE_NORMAL);
|
||||
Fancy_Text_Print(text, textx, 0, &ColorRemaps[PCOLOR_GREY], TBLACK, TPF_METAL12|TPF_NOSHADOW|TPF_CENTER|TPF_BRIGHT_COLOR);
|
||||
// Fancy_Text_Print(text, textx, 0, &ColorRemaps[PCOLOR_GREY], TBLACK, TPF_6PT_GRAD|TPF_NOSHADOW|TPF_CENTER|TPF_BRIGHT_COLOR);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -610,19 +610,19 @@ void VesselTypeClass::Turret_Adjust(DirType dir, int & x, int & y) const
|
||||
|
||||
switch (Type) {
|
||||
case VESSEL_CA:
|
||||
Normal_Move_Point(xx, yy, dir, 22);
|
||||
Move_Point(xx, yy, dir, 22);
|
||||
x = xx;
|
||||
y = yy-4;
|
||||
break;
|
||||
|
||||
case VESSEL_PT:
|
||||
Normal_Move_Point(xx, yy, dir, 14);
|
||||
Move_Point(xx, yy, dir, 14);
|
||||
x = xx;
|
||||
y = yy+1;
|
||||
break;
|
||||
|
||||
case VESSEL_DD:
|
||||
Normal_Move_Point(xx, yy, dir+DIR_S, 8);
|
||||
Move_Point(xx, yy, dir+DIR_S, 8);
|
||||
x = xx;
|
||||
y = yy-4;
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user