#include "MW4Headers.hpp" #include "hudcomp.hpp" #include "hudcomp2.hpp" #include "huddamage.hpp" #include "vehicle.hpp" #include "mech.hpp" #include "mechlabheaders.h" #include "weapon.hpp" #include "mwapplication.hpp" #include "..\missionlang\resource.h" //»óÈÆÂ¯ begin #include #include #include #include extern bool g_bCOOP; // MSL 5.02 extern float texuv2[LastMechID+1][11][4]; extern int offset2[LastMechID+1][11][2]; extern float texuv3[LastMechID+1][11][4]; extern int offset3[LastMechID+1][11][2]; bool g_bMuteMode = false; bool g_bJumpZoom = true; bool g_bZoomMode = true; bool g_bJumpMode = false; bool g_bFlushMode = false; bool g_bLightAmpMode = false; bool g_bNextTargetMode = false; bool g_bCrossTargetMode = false; // MSL 5.03 Secondary Damage Display int g_nAuxilMode = 0; //»óÈÆÂ¯ end using namespace MechWarrior4; namespace HUDDAMAGE { const int YOUR_BARHEIGHT = 90; const int YOUR_BARWIDTH = 10; const int TARGET_BARHEIGHT = 90; const int TARGET_BARWIDTH = 10; const int MAX_FLASH = 10; // MSL 5.05 Fix the S1 and S2 swap issue const int trans_array[12] = { 8,5,6,4,2,3,1,0,9,10,7,11 }; // MSL ADD MECH const char *texturename[LastMechID+1] = { "hud\\annihilator", "hud\\archer", "hud\\arcticwolf", "hud\\ares", "hud\\argus", "hud\\assassin2", "hud\\atlas", "hud\\avatar", "hud\\awesome", "hud\\battlemaster", "hud\\battlemasteriic", "hud\\behemoth", "hud\\behemothii", "hud\\blackhawk", "hud\\blackknight", "hud\\blacklanner", "hud\\brigand", "hud\\bushwacker", "hud\\catapult", "hud\\cauldronborn", "hud\\chimera", "hud\\commando", "hud\\cougar", "hud\\cyclops", "hud\\daishi", // "hud\\dasher", "hud\\deimos", "hud\\dragon", "hud\\fafnir", "hud\\flea", "hud\\gladiator", "hud\\grizzly", "hud\\hauptmann", "hud\\hellhound", "hud\\hellspawn", "hud\\highlander", "hud\\hollanderii", "hud\\hunchback", "hud\\kodiak", "hud\\loki", "hud\\longbow", "hud\\madcat", "hud\\madcat2", "hud\\masakari", "hud\\mauler", "hud\\novacat", "hud\\osiris", "hud\\owens", "hud\\puma", "hud\\raven", "hud\\rifleman", "hud\\ryoken", "hud\\shadowcat", "hud\\solitaire", "hud\\sunder", "hud\\templar", "hud\\thanatos", "hud\\thor", "hud\\uller", "hud\\urbanmech", "hud\\uziel", "hud\\victor", "hud\\vulture", "hud\\warhammer", "hud\\wolfhound", "hud\\zeus" }; // left leg 0 // right leg 1 // left arm 2 // right arm 3 // right torso 4 // left torso 5 // center torso 6 // center torso reat 7 // head 8 // special 1 9 // special 2 10 // MSL ADD MECH const Scalar texuv[LastMechID+1][11][4] = { { {62,52, 79,112},{32,52,49,112},{ 79, 8, 98,56},{19, 8,31,54},{33,13, 50,43},{62,13,78,43},{104,16,125,69},{0,0,0,0},{53,8,59,13},{0,0,0,0},{0,0,0,0}}, // M_Annihilator { {65,57, 86,117},{23,57,44,117},{ 88,56,103,80},{ 5,56,20,80},{18,13, 47,54},{61,13,90,54},{47,17,61,69},{0,0,0,0},{51,5,57,13},{0,0,0,0},{0,0,0,0}}, // M_Archer { {70,60, 95,114},{19,60,44,114},{ 84,44,107,61},{ 6,44,29,61},{22,26, 42,49},{70,26,90,49},{45,23,69,72},{0,0,0,0},{52,18,56,20},{71,7,96,22},{17,7,42,22}}, // M_Arctic Wolf { {59,63, 89,126},{23,63,53,126},{ 80,26, 96,57},{16,26,32,57},{34,13, 55,47},{57,13,78,47},{103,20,125,59},{0,0,0,0},{52,8,60,11},{81,6,100,24},{12,6,31,24}}, // M_Ares { {60,49, 96,113},{17,49,53,113},{ 74, 8,105,42},{18,10,38,36},{40,10, 50,39},{61,10,72,39},{96,49,113,108},{0,0,0,0},{54,1.001f,59,5},{0,0,0,0},{0,0,0,0}}, // M_Argus { {59,63, 89,126},{23,63,53,126},{ 80,26, 96,57},{16,26,32,57},{34,13, 55,47},{57,13,78,47},{103,20,125,59},{0,0,0,0},{52,8,60,11},{81,6,100,24},{0,0,0,0}}, // M_Assassin2 { {58,51, 75,115},{37,51,54,115},{ 73,11, 92,51},{20,11,39,51},{42,15, 50,48},{62,15,70,48},{2,8,18,66},{0,0,0,0},{48,3,54,6},{97,37,103,43},{84,65,91,84}}, // M_Atlas { {60,45, 95,114},{20,45,55,114},{ 78,28, 97,44},{18,28,37,44},{38, 9, 50,42},{65,9,77,42},{52,7,63,45},{0,0,0,0},{55,1.001f,60,6},{99,43,126,56},{0,0,0,0}}, // M_Avatar { {62,52, 79,112},{32,52,49,112},{ 79, 8, 98,56},{19, 8,31,54},{33,13, 50,43},{62,13,78,43},{104,16,125,69},{0,0,0,0},{53,8,59,13},{0,0,0,0},{0,0,0,0}}, // M_Awesome { {58,51, 75,115},{37,51,54,115},{ 73,11, 92,51},{20,11,39,51},{42,15, 50,48},{62,15,70,48},{2,8,18,66},{0,0,0,0},{48,3,54,6},{97,37,103,43},{84,65,91,84}}, // M_Battlemaster { {58,51, 75,115},{37,51,54,115},{ 73,11, 92,51},{20,11,39,51},{42,15, 50,48},{62,15,70,48},{2,8,18,66},{0,0,0,0},{48,3,54,6},{97,37,103,43},{0,0,0,0}}, // M_Battlemasteriic { {62,59, 81,125},{34,59,53,125},{ 83, 9,108,54},{ 6, 6,34,54},{37,17, 49,47},{67,17,79,47},{51,6,64,58},{0,0,0,0},{70,10,77,13},{7,71,25,110},{0,0,0,0}}, // M_Behemoth { {62,59, 81,125},{34,59,53,125},{ 83, 9,108,54},{ 6, 6,34,54},{37,17, 49,47},{67,17,79,47},{51,6,64,58},{0,0,0,0},{70,10,77,13},{7,71,25,110},{0,0,0,0}}, // M_BehemothII { {59,63, 89,126},{23,63,53,126},{ 80,26, 96,57},{16,26,32,57},{34,13, 55,47},{57,13,78,47},{103,20,125,59},{0,0,0,0},{52,8,60,11},{81,6,100,24},{12,6,31,24}}, // M_Blackhawk { {62,59, 81,125},{34,59,53,125},{ 83, 9,108,54},{ 6, 6,34,54},{37,17, 49,47},{67,17,79,47},{51,6,64,58},{0,0,0,0},{70,10,77,13},{7,71,25,110},{0,0,0,0}}, // M_blackknight { {59,63, 89,126},{23,63,53,126},{ 80,26, 96,57},{16,26,32,57},{34,13, 55,47},{57,13,78,47},{103,20,125,59},{0,0,0,0},{52,8,60,11},{81,6,100,24},{12,6,31,24}}, // M_blacklanner { {59,63, 89,126},{23,63,53,126},{ 80,26, 96,57},{16,26,32,57},{34,13, 55,47},{57,13,78,47},{103,20,125,59},{0,0,0,0},{52,8,60,11},{81,6,100,24},{12,6,31,24}}, // M_Brigand { {59,61, 89,127},{21,61,52,127},{ 77,30,102,57},{ 8,27,34,58},{36,14, 55,39},{56,11,75,39},{106,21,126,54},{0,0,0,0},{52,5,59,9},{79,2,95,15},{0,0,0,0}}, // M_Bushwacker { {62,66, 95,124},{17,66,51,124},{ 77,10,108,41},{ 6,10,35,41},{38,32, 50,64},{64,32,74,64},{51,28,62,71},{0,0,0,0},{53,21,60,26},{0,0,0,0},{0,0,0,0}}, // M_Catapult { {78,59,108,123},{18,59,49,123},{ 94,25,126,47},{ 4,31,36,53},{36, 9, 57,34},{79,15,91,40},{54,29,78,66},{0,0,0,0},{64,4,71,7},{95,4,113,21},{10,3,30,23}}, // M_CauldronBorn { {58,56, 89,127},{22,56,53,127},{ 89,26,107,45},{ 8,28,23,46},{92,57,120,86},{67,12,86,35},{46,7,67,55},{0,0,0,0},{60,3,66,6},{0,0,0,0},{0,0,0,0}}, // M_Chimera { {57,45, 91,110},{21,45,50,110},{ 90,23,105,57},{ 9,23,22,57},{24,11, 45,42},{67,11,88,42},{108,6,126,57},{0,0,0,0},{52,0,60,4},{0,0,0,0},{0,0,0,0}}, // M_Commando { {57,45, 91,110},{21,45,50,110},{ 90,23,105,57},{ 9,23,22,57},{24,11, 45,42},{67,11,88,42},{108,6,126,57},{0,0,0,0},{52,0,60,4},{0,0,0,0},{0,0,0,0}}, // M_Cougar { {79,58,104,116},{20,58,45,116},{ 98,19,114,55},{ 8,19,24,55},{27,25, 41,55},{80,23,95,55},{51,16,74,74},{0,0,0,0},{58,9,67,11},{34,8,47,20},{0,0,0,0}}, // M_Cyclops { {61,53,100,111},{10,53,49,111},{ 79,17, 94,50},{16,17,31,50},{34,12, 54,51},{56,12,76,51},{103,21,125,65},{0,0,0,0},{52,5,59,11},{103,5,124,14},{0,0,0,0}}, // M_Daishi // { {57,45, 91,110},{21,45,50,110},{ 90,23,105,57},{ 9,23,22,57},{24,11, 45,42},{67,11,88,42},{108,6,126,57},{0,0,0,0},{52,0,60,4},{0,0,0,0},{0,0,0,0}}, // M_Dasher { {59,63, 89,126},{23,63,53,126},{ 80,26, 96,57},{16,26,32,57},{34,13, 55,47},{57,13,78,47},{103,20,125,59},{0,0,0,0},{52,8,60,11},{81,6,100,24},{12,6,31,24}}, // M_Deimos { {79,49,100,115},{28,49,49,115},{108,26,124,49},{ 4,24,22,45},{27,11, 49,37},{79,11,100,37},{54,14,74,62},{0,0,0,0},{59,5,69,10},{0,0,0,0},{0,0,0,0}}, // M_Dragon { {77,64,102,123},{34,64,59,123},{109,12,123,45},{10,12,24,45},{28,13, 55,53},{79,13,106,53},{57,13,78,74},{0,0,0,0},{54,5,61,8},{0,0,0,0},{0,0,0,0}}, // M_Fafnir { {93,54,119,119},{ 6,54,32,119},{110,29,115,36},{ 6,29,11,36},{33,16, 50,38},{59,16,76,38},{45,54,64,100},{0,0,0,0},{51,5,58,8},{0,0,0,0},{0,0,0,0}}, // M_Flea { {62,65, 79,117},{27,65,44,117},{ 85,29,101,59},{ 6,28,20,60},{29,26, 39,61},{67,26,77,61},{42,11,64,76},{0,0,0,0},{68,14,77,19},{0,0,0,0},{0,0,0,0}}, // M_Gladiator { {79,58,104,116},{20,58,45,116},{ 98,19,114,55},{ 8,19,24,55},{27,25, 41,55},{80,23,95,55},{51,16,74,74},{0,0,0,0},{58,9,67,11},{34,8,47,20},{0,0,0,0}}, // M_Grizzly { {79,58,104,116},{20,58,45,116},{ 98,19,114,55},{ 8,19,24,55},{27,25, 41,55},{80,23,95,55},{51,16,74,74},{0,0,0,0},{58,9,67,11},{34,8,47,20},{0,0,0,0}}, // M_Hauptmann { {55,48, 84,106},{23,48,52,106},{ 97,30,114,47},{ 8,30,25,47},{31,13, 47,46},{77,14,93,47},{94,58,109,97},{0,0,0,0},{50,6,57,9},{0,0,0,0},{0,0,0,0}}, // M_Hellhound { {66,62, 84,126},{30,62,48,126},{ 79,25, 97,54},{18,25,35,54},{37,19, 56,44},{58,23,77,43},{47,47,67,61},{0,0,0,0},{60,18,66,23},{43,1.001f,57,16},{20,8,37,23}}, // M_Hellspawn { {85,60,105,124},{24,61,44,125},{104,23,123,48},{ 3,21,23,49},{25, 9, 52,46},{75,8,100,45},{55,5,72,66},{0,0,0,0},{79,3,90,6},{0,0,0,0},{0,0,0,0}}, // M_Highlander { {59,63, 89,126},{23,63,53,126},{ 80,26, 96,57},{16,26,32,57},{34,13, 55,47},{57,13,78,47},{103,20,125,59},{0,0,0,0},{52,8,60,11},{81,6,100,24},{12,6,31,24}}, // M_HollanderII { {70,55, 92,112},{23,55,45,112},{109,16,124,47},{ 2,16,17,47},{ 6,55, 18,76},{92,5,104,49},{45,9,68,66},{0,0,0,0},{55,3,61,5},{22,9,38,30},{0,0,0,0}}, // M_Hunchback { {82,66,108,119},{ 8,66,34,119},{ 95,11,117,38},{ 4,26,26,53},{32,16, 51,51},{67,16,86,51},{41,58,74,119},{0,0,0,0},{54,6,61,9},{0,0,0,0},{0,0,0,0}}, // M_Kodiak { {64,52, 81,114},{32,52,49,114},{ 77,23, 95,52},{20,23,36,52},{38,18, 48,47},{65,13,75,47},{50,16,64,64},{0,0,0,0},{54,10,59,14},{36,7,48,16},{0,0,0,0}}, // M_Loki { {76,55, 96,119},{31,55,51,119},{102,18,126,42},{ 2,18,26,42},{28,15, 48,46},{78,15,98,46},{52,11,73,65},{0,0,0,0},{76,5,85,8},{0,0,0,0},{0,0,0,0}}, // M_Longbow { {59,63, 89,126},{23,63,53,126},{ 80,26, 96,57},{16,26,32,57},{34,13, 55,47},{57,13,78,47},{103,20,125,59},{0,0,0,0},{52,8,60,11},{81,6,100,24},{12,6,31,24}}, // M_Madcat { {67,53, 98,111},{16,53,47,111},{ 75,34, 95,51},{19,34,39,51},{40,15, 56,50},{58,15,74,50},{47,66,67,109},{0,0,0,0},{53,9,61,13},{19,4,36,25},{78,4,95,25}}, // M_Madcat_MKII { {75,51,120,114},{ 8,51,53,114},{ 99,10,126,43},{ 2,10,29,43},{41,15, 55,49},{73,15,87,49},{56,15,72,66},{0,0,0,0},{58,6,70,10},{0,0,0,0},{0,0,0,0}}, // M_Masakari { {67,56, 87,112},{24,56,44,112},{ 84, 7,100,54},{11, 7,27,54},{31, 5, 51,52},{60,5,80,52},{47,58,64,101},{0,0,0,0},{52,11,59,15},{0,0,0,0},{0,0,0,0}}, // M_Mauler { {62,63, 84,128},{29,63,51,128},{ 79,11,101,49},{12,11,34,49},{35,16, 47,44},{66,16,78,44},{48,11,65,62},{0,0,0,0},{52,4,61,7},{0,0,0,0},{0,0,0,0}}, // M_Novacat { {66,63, 85,124},{27,63,46,124},{ 84,17, 98,40},{15,23,28,38},{30,17, 43,46},{69,17,82,46},{45,14,67,57},{0,0,0,0},{53,8,59,12},{8,4,24,11},{48,59,64,66}}, // M_Osiris { {75,54,104,112},{21,54,50,112},{ 97,17,120,45},{ 5,17,28,45},{30,29, 47,50},{78,29,95,50},{50,12,75,62},{0,0,0,0},{33,17,45,19},{0,0,0,0},{0,0,0,0}}, // M_Owens { {74,54,110,119},{14,54,50,119},{103, 5,123,45},{ 2, 5,22,45},{26, 5, 45,35},{79,5,98,35},{49,5,74,50},{0,0,0,0},{56,59,68,65},{0,0,0,0},{0,0,0,0}}, // M_Puma { {67,45, 90,114},{23,45,46,114},{ 79, 7, 99,31},{13, 7,33,22},{36,11, 56,42},{57,11,77,42},{46,66,67,111},{0,0,0,0},{54,4,59,9},{0,0,0,0},{0,0,0,0}}, // M_Raven { {59,63, 89,126},{23,63,53,126},{ 80,26, 96,57},{16,26,32,57},{34,13, 55,47},{57,13,78,47},{103,20,125,59},{0,0,0,0},{52,8,60,11},{81,6,100,24},{12,6,31,24}}, // M_Rifleman { {54,57, 83,125},{21,57,50,125},{ 77,14, 97,52},{17,14,37,52},{39,15, 56,41},{58,15,75,41},{87,60,123,103},{0,0,0,0},{53,7,61,11},{0,0,0,0},{0,0,0,0}}, // M_Ryoken { {67,42,103,114},{11,42,47,114},{ 79,21,104,40},{ 9,21,35,40},{37, 7, 49,39},{65,10,77,39},{47,52,67,106},{0,0,0,0},{54,2,60,5},{0,0,0,0},{0,0,0,0}}, // M_Shadowcat { {79,58,104,116},{20,58,45,116},{ 98,19,114,55},{ 8,19,24,55},{27,25, 41,55},{80,23,95,55},{51,16,74,74},{0,0,0,0},{58,9,67,11},{34,8,47,20},{0,0,0,0}}, // M_Solitaire { {70,50, 90,117},{23,50,43,117},{102,22,122,43},{ 5,22,25,43},{28, 8, 43,42},{70,8,85,42},{46,5,67,62},{0,0,0,0},{90,8,97,11},{0,0,0,0},{0,0,0,0}}, // M_Sunder { {65,57, 86,117},{23,57,44,117},{ 88,56,103,80},{ 5,56,20,80},{18,13, 47,54},{61,13,90,54},{47,17,61,69},{0,0,0,0},{51,5,57,13},{0,0,0,0},{0,0,0,0}}, // M_Templar { {64,48, 84,115},{31,48,51,115},{ 84,12,104,44},{11,12,31,44},{33, 8, 51,43},{65,8,82,43},{52,7,64,65},{0,0,0,0},{56,1.001f,60,6},{0,0,0,0},{0,0,0,0}}, // M_Thanatos { {64,51, 81,113},{32,51,49,113},{ 78,22, 96,51},{19,22,35,51},{37,17, 50,44},{64,22,76,44},{99,20,114,64},{0,0,0,0},{41,11,48,16},{62,6,77,20},{0,0,0,0}}, // M_Thor { {60,54, 96,126},{18,54,54,126},{101,21,126,54},{ 3,22,34,58},{37,10, 56,34},{80,9,99,33},{58,17,78,52},{0,0,0,0},{64,10,72,13},{0,0,0,0},{0,0,0,0}}, // M_Uller { {60,54, 96,126},{18,54,54,126},{101,21,126,54},{ 3,22,34,58},{37,10, 56,34},{80,9,99,33},{58,17,78,52},{0,0,0,0},{64,10,72,13},{0,0,0,0},{0,0,0,0}}, // M_Urbanmech { {69,52, 96,114},{17,52,44,114},{ 88,10,109,41},{ 6,10,25,49},{30, 9, 46,49},{69,9,83,49},{46,11,69,47},{0,0,0,0},{53,2,61,6},{46,48,67,72},{0,0,0,0}}, // M_Uziel { {75,54, 95,118},{31,54,51,118},{ 99,58,116,91},{11,59,28,82},{18,16, 44,48},{81,16,107,48},{49,6,77,67},{0,0,0,0},{34,7,42,12},{0,0,0,0},{0,0,0,0}}, // M_Victor { {60,45, 95,114},{20,45,55,114},{ 78,28, 97,44},{18,28,37,44},{38, 9, 50,42},{65,9,77,42},{52,7,63,45},{0,0,0,0},{55,1.001f,60,6},{99,43,126,56},{0,0,0,0}}, // M_Vulture { {59,63, 89,126},{23,63,53,126},{ 80,26, 96,57},{16,26,32,57},{34,13, 55,47},{57,13,78,47},{103,20,125,59},{0,0,0,0},{52,8,60,11},{81,6,100,24},{12,6,31,24}}, // M_Warhammer { {66,55, 79,116},{34,55,47,116},{ 90,14,103,50},{ 8,15,25,53},{31,21, 41,47},{72,21,82,47},{46,8,66,71},{0,0,0,0},{72,14,80,16},{0,0,0,0},{0,0,0,0}}, // M_Wolfhound { {78,53,101,114},{20,53,43,114},{106,47,121,70},{ 2,48,17,66},{ 7, 9, 33,43},{84,9,110,43},{42,4,71,63},{0,0,0,0},{75,13,82,17},{0,0,0,0},{0,0,0,0}} // M_Zeus }; // MSL ADD MECH const int offset[LastMechID+1][11][2] = { { {62,52},{32,52},{78, 8},{20, 8},{33,13},{62,13},{46,16},{0,0},{53,20},{ 0, 0},{ 0, 0}}, // M_Annihilator { {62,53},{33,53},{84,36},{17,36},{22, 9},{65, 9},{51,13},{0,0},{55,19},{ 0, 0},{ 0, 0}}, // M_Archer { {70,56},{19,56},{75,33},{15,33},{28,22},{65,22},{45,19},{0,0},{52,21},{67,11},{21,11}}, // M_Arctic Wolf { {58,49},{24,49},{80,26},{16,26},{34,13},{57,13},{45,20},{0,0},{52,23},{72, 6},{21, 6}}, // M_Ares { {60,49},{17,49},{74, 8},{18,10},{40,10},{61,10},{48, 6},{0,0},{54,13},{ 0, 0},{ 0, 0}}, // M_Argus { {58,49},{24,49},{80,26},{16,26},{34,13},{57,13},{45,20},{0,0},{52,23},{72, 6},{ 0, 0}}, // M_Assassin2 { {58,51},{37,51},{72,11},{21,11},{42,15},{62,15},{49, 8},{0,0},{48,13},{39,37},{69,50}}, // M_Atlas { {60,45},{20,45},{78,28},{18,28},{38, 9},{65, 9},{52, 7},{0,0},{55, 4},{44,43},{ 0, 0}}, // M_Avatar { {62,52},{32,52},{78, 8},{20, 8},{33,13},{62,13},{46,16},{0,0},{53,20},{ 0, 0},{ 0, 0}}, // M_Awesome { {58,51},{37,51},{72,11},{21,11},{42,15},{62,15},{49, 8},{0,0},{48,13},{39,37},{69,50}}, // M_Battlemaster { {58,51},{37,51},{72,11},{21,11},{42,15},{62,15},{49, 8},{0,0},{48,13},{39,37},{ 0, 0}}, // M_BattlemasterIIc { {62,49},{34,49},{78, 9},{ 9, 6},{39,17},{64,17},{51, 6},{0,0},{54,10},{ 8, 6},{ 0, 0}}, // M_Behemoth { {62,49},{34,49},{78, 9},{ 9, 6},{39,17},{64,17},{51, 6},{0,0},{54,10},{ 8, 6},{ 0, 0}}, // M_BehemothII { {58,49},{24,49},{80,26},{16,26},{34,13},{57,13},{45,20},{0,0},{52,23},{72, 6},{21, 6}}, // M_Blackhawk { {62,49},{34,49},{78, 9},{ 9, 6},{39,17},{64,17},{51, 6},{0,0},{54,10},{ 8, 6},{ 0, 0}}, // M_Blackknight { {58,49},{24,49},{80,26},{16,26},{34,13},{57,13},{45,20},{0,0},{52,23},{72, 6},{21, 6}}, // M_Blacklanner { {58,49},{24,49},{80,26},{16,26},{34,13},{57,13},{45,20},{0,0},{52,23},{72, 6},{21, 6}}, // M_Brigand { {59,44},{21,44},{77,30},{ 8,27},{36,14},{56,11},{46,21},{0,0},{52,27},{69, 2},{ 0, 0}}, // M_Bushwacker { {61,57},{17,57},{67,10},{16,10},{38,32},{64,32},{51,28},{0,0},{53,33},{ 0, 0},{ 0, 0}}, // M_Catapult { {60,52},{24,52},{80,33},{ 3,34},{35,26},{69,26},{47,29},{0,0},{59,39},{73,15},{22,13}}, // M_CauldronBorn { {58,43},{22,43},{79,25},{19,27},{27, 7},{67,12},{46,10},{0,0},{60,10},{ 0, 0},{ 0, 0}}, // M_Chimera { {57,45},{21,45},{90,23},{ 9,23},{24,11},{67,11},{48, 6},{0,0},{52,16},{ 0, 0},{ 0, 0}}, // M_Commando { {57,45},{21,45},{90,23},{ 9,23},{24,11},{67,11},{48, 6},{0,0},{52,16},{ 0, 0},{ 0, 0}}, // M_Cougar { {64,55},{23,55},{80,22},{17,22},{34,23},{64,21},{45,13},{0,0},{52,21},{34,10},{ 0, 0}}, // M_Cyclops { {61,53},{10,53},{78,17},{17,17},{34,12},{56,12},{45,21},{0,0},{52,29},{58, 5},{ 0, 0}}, // M_Daishi // { {57,45},{21,45},{90,23},{ 9,23},{24,11},{67,11},{48, 6},{0,0},{52,16},{ 0, 0},{ 0, 0}}, // M_Dasher { {58,51},{24,51},{80,28},{16,28},{34,15},{57,15},{45,22},{0,0},{52,25},{72, 8},{21, 8}}, // M_Deimos { {66,49},{33,49},{78,26},{21,24},{29,11},{69,11},{50,14},{0,0},{55,19},{ 0, 0},{ 0, 0}}, // M_Dragon { {60,55},{30,55},{91,12},{10,12},{23,13},{65,13},{47,13},{0,0},{54,39},{ 0, 0},{ 0, 0}}, // M_Fafnir { {62,43},{21,43},{69,29},{35,29},{33,16},{59,16},{45,13},{0,0},{51,27},{ 0, 0},{ 0, 0}}, // M_Flea { {62,61},{35,61},{73,27},{26,27},{40,24},{64,24},{46, 9},{0,0},{53,25},{ 0, 0},{ 0, 0}}, // M_Gladiator { {64,55},{23,55},{80,22},{17,22},{34,23},{64,21},{45,13},{0,0},{52,21},{34,10},{ 0, 0}}, // M_Grizzly { {64,55},{23,55},{80,22},{17,22},{34,23},{64,21},{45,13},{0,0},{52,21},{34,10},{ 0, 0}}, // M_Hauptmann { {55,48},{23,48},{76,30},{14,30},{31,14},{60,14},{46,22},{0,0},{50,38},{ 0, 0},{ 0, 0}}, // M_Hellhound { {66,50},{30,50},{79,25},{18,25},{37,19},{58,23},{47,46},{0,0},{44,18},{43, 7},{25, 8}}, // M_Hellspawn { {61,52},{32,52},{79,27},{13,26},{22,13},{64,13},{48, 6},{0,0},{51,11},{ 0, 0},{ 0, 0}}, // M_Highlander { {58,49},{24,49},{80,26},{16,26},{34,13},{57,13},{45,20},{0,0},{52,23},{72, 6},{21, 6}}, // M_HollanderII { {60,55},{31,55},{77,20},{21,20},{36,32},{65, 9},{45, 9},{0,0},{55,13},{35, 9},{ 0, 0}}, // M_Hunchback { {60,60},{29,60},{79,26},{14,26},{31,16},{65,16},{41, 9},{0,0},{54,12},{ 0, 0},{ 0, 0}}, // M_Kodiak { {64,52},{32,52},{77,23},{20,23},{38,18},{65,13},{50,16},{0,0},{54,20},{36, 7},{ 0, 0}}, // M_Loki { {60,49},{31,49},{84,16},{ 3,16},{26,13},{65,13},{45, 9},{0,0},{51,21},{ 0, 0},{ 0, 0}}, // M_Longbow { {58,49},{24,49},{80,26},{16,26},{34,13},{57,13},{45,20},{0,0},{52,23},{72, 6},{21, 6}}, // M_Madcat { {67,53},{16,53},{75,34},{19,34},{40,15},{58,15},{47,26},{0,0},{53,31},{24, 4},{73, 4}}, // M_Madcat_MKII { {62,51},{ 7,51},{78,29},{ 9,29},{34,15},{66,15},{49,15},{0,0},{51,32},{ 0, 0},{ 0, 0}}, // M_Masakari { {59,56},{32,56},{76, 7},{19, 7},{31, 5},{60, 5},{47,18},{0,0},{52,25},{ 0, 0},{ 0, 0}}, // M_Mauler { {62,46},{29,46},{79,11},{12,11},{35,16},{66,16},{48,11},{0,0},{52,14},{ 0, 0},{ 0, 0}}, // M_Novacat { {66,53},{27,53},{84,17},{15,23},{30,17},{69,17},{45,14},{0,0},{53,20},{48, 4},{48,59}}, // M_Osiris { {62,52},{21,52},{82,17},{ 7,17},{30,29},{65,29},{44,12},{0,0},{50,36},{ 0, 0},{ 0, 0}}, // M_Owens { {57,45},{19,45},{83,23},{ 9,23},{25,13},{68,13},{43,13},{0,0},{50,36},{ 0, 0},{ 0, 0}}, // M_Puma { {67,45},{23,45},{69, 7},{20, 7},{36,11},{57,11},{46,16},{0,0},{54,22},{ 0, 0},{ 0, 0}}, // M_Raven { {58,49},{24,49},{80,26},{16,26},{34,13},{57,13},{45,20},{0,0},{52,23},{72, 6},{21, 6}}, // M_Rifleman { {64,53},{21,53},{77,10},{17,10},{39,11},{58,11},{39,24},{0,0},{53,31},{ 0, 0},{ 0, 0}}, // M_Ryoken { {67,42},{11,42},{79,21},{ 9,21},{37, 7},{65,10},{47, 7},{0,0},{54,16},{ 0, 0},{ 0, 0}}, // M_Shadowcat { {64,55},{23,55},{80,22},{17,22},{34,23},{64,21},{45,13},{0,0},{52,21},{34,10},{ 0, 0}}, // M_Solitaire { {64,50},{29,50},{81,22},{12,22},{31, 8},{67, 8},{46, 5},{0,0},{53,21},{ 0, 0},{ 0, 0}}, // M_Sunder { {62,53},{33,53},{84,36},{17,36},{22, 9},{65, 9},{51,13},{0,0},{55,19},{ 0, 0},{ 0, 0}}, // M_Templar { {64,48},{31,48},{84,12},{11,12},{33, 8},{65, 8},{52, 7},{0,0},{56,15},{ 0, 0},{ 0, 0}}, // M_Thanatos { {65,51},{31,51},{78,22},{19,22},{37,17},{64,22},{49,20},{0,0},{41,21},{62, 6},{ 0, 0}}, // M_Thor { {60,40},{18,40},{79,21},{ 4,22},{37,11},{58,11},{47,19},{0,0},{53,23},{ 0, 0},{ 0, 0}}, // M_Uller { {60,40},{18,40},{79,21},{ 4,22},{37,11},{58,11},{47,19},{0,0},{53,23},{ 0, 0},{ 0, 0}}, // M_Urbanmech { {69,52},{17,52},{81,23},{13,23},{30, 9},{69, 9},{46,11},{0,0},{53,35},{46,48},{ 0, 0}}, // M_Uziel { {60,51},{32,51},{78,24},{19,25},{22,16},{64,16},{42, 6},{0,0},{52,15},{ 0, 0},{ 0, 0}}, // M_Victor { {60,45},{20,45},{78,28},{18,28},{38, 9},{65, 9},{52, 7},{0,0},{55, 4},{44,43},{ 0, 0}}, // M_Vulture { {58,49},{24,49},{80,26},{16,26},{34,13},{57,13},{45,20},{0,0},{52,23},{72, 6},{21, 6}}, // M_Warhammer { {66,55},{34,55},{73,14},{23,15},{41,21},{62,21},{46, 8},{0,0},{52,14},{ 0, 0},{ 0, 0}}, // M_Wolfhound { {60,53},{30,53},{77,32},{20,32},{21, 9},{66, 9},{42, 4},{0,0},{53,20},{ 0, 0},{ 0, 0}} // M_Zeus }; } using namespace HUDDAMAGE; HUDDamage::HUDDamage() { int i; //labels - black background HD LT CT RT LA RA RL LL S1 S2 CTR AddTexture ("hud\\hud4",20,115,119,127,127); AddTexture ("hud\\hud4",21,129,119,141,127); AddTexture ("hud\\hud4",22,143,119,155,127); AddTexture ("hud\\hud4",23,157,119,169,127); AddTexture ("hud\\hud4",24,171,119,183,127); AddTexture ("hud\\hud4",25,185,119,197,127); AddTexture ("hud\\hud4",26,199,119,211,127); AddTexture ("hud\\hud4",27,213,119,225,127); AddTexture ("hud\\hud4",28,229,119,241,127); AddTexture ("hud\\hud4",29,243,119,255,127); AddTexture ("hud\\hud4",30,229,50,254,58); for (i=20;i<=30;i++) { m_Textures[i]->BlendMode (gos_BlendDecal); } //labels - white background HD LT CT RT LA RA RL LL S1 S2 CTR AddTexture ("hud\\hud4",40,115,110,127,118); AddTexture ("hud\\hud4",41,129,110,141,118); AddTexture ("hud\\hud4",42,143,110,155,118); AddTexture ("hud\\hud4",43,157,110,169,118); AddTexture ("hud\\hud4",44,171,110,183,118); AddTexture ("hud\\hud4",45,185,110,197,118); AddTexture ("hud\\hud4",46,199,110,211,118); AddTexture ("hud\\hud4",47,213,110,225,118); AddTexture ("hud\\hud4",48,229,110,241,118); AddTexture ("hud\\hud4",49,243,110,255,118); AddTexture ("hud\\hud4",50,229,41,254,49); // AddTexture ("hud\\hud3",50,232,0,256,57); // AddTexture ("hud\\hud3",51,232,67,241,117); // AddTexture ("hud\\hud3",52,232,67,241,117); Size (Point3D (152,133,0)); Location (Point3D (657,466,0)); m_DamageColors[0] = MakeColor(100, 225, 100, 225); m_DamageColors[1] = MakeColor(225, 225, 0, 200); m_DamageColors[2] = MakeColor(255, 150, 0, 175); m_DamageColors[3] = MakeColor(255, 50, 0, 150); m_DamageColors[4] = MakeColor(255, 50, 0, 125); m_DamageColors[5] = MakeColor(0, 0, 0, 100); Color (MakeColor (0,175,0,150)); m_DamageFlashTime = 0; m_HitFlashTime = 0; //»óÈÆ ¾Õ VehicleInterface::GetInstance()->hudDamageMode=false; //»óÈÆ µÚ m_ArmorMode = VehicleInterface::GetInstance()->hudDamageMode; for (i=0;iUpdateText (app->GetLocString (IDS_HUDREAR)); m_RearText->SetSize (HUDText::SMALL_SIZE); m_RearText->Color (MakeColor (73,231,73,255)); } HUDDamage::~HUDDamage() { delete m_RearText; } void HUDDamage::SetVehicle(Vehicle *vehicle) { inherited::SetVehicle (vehicle); if (m_Vehicle.GetCurrent ()) { Mech *mech; mech = Cast_Object (Mech *,m_Vehicle.GetCurrent ()); const Mech__GameModel *model = static_cast (mech->GetGameModel ()); #if 0 static int s_nMechID = 0; m_MechID = s_nMechID; s_nMechID++; if (LastMechID < s_nMechID) s_nMechID = 0; #else m_MechID = model->mechID; #endif } else m_MechID = 0; } void HUDDamage::Reset (void) { m_DamageFlashTime = 0; m_HitFlashTime = 0; int i; for (i=0;i=0); Verify (m_MechID <= LastMechID); AddTexture (texturename[m_MechID],0,texuv[m_MechID][0][0],texuv[m_MechID][0][1],texuv[m_MechID][0][2],texuv[m_MechID][0][3],128,128); // left leg AddTexture (texturename[m_MechID],1,texuv[m_MechID][1][0],texuv[m_MechID][1][1],texuv[m_MechID][1][2],texuv[m_MechID][1][3],128,128); // right leg AddTexture (texturename[m_MechID],2,texuv[m_MechID][2][0],texuv[m_MechID][2][1],texuv[m_MechID][2][2],texuv[m_MechID][2][3],128,128); // left arm AddTexture (texturename[m_MechID],3,texuv[m_MechID][3][0],texuv[m_MechID][3][1],texuv[m_MechID][3][2],texuv[m_MechID][3][3],128,128); // right arm AddTexture (texturename[m_MechID],4,texuv[m_MechID][4][0],texuv[m_MechID][4][1],texuv[m_MechID][4][2],texuv[m_MechID][4][3],128,128); // right torso AddTexture (texturename[m_MechID],5,texuv[m_MechID][5][0],texuv[m_MechID][5][1],texuv[m_MechID][5][2],texuv[m_MechID][5][3],128,128); // left torso AddTexture (texturename[m_MechID],6,texuv[m_MechID][6][0],texuv[m_MechID][6][1],texuv[m_MechID][6][2],texuv[m_MechID][6][3],128,128); // center torso AddTexture ("hud\\hud5",7,220,0,252,50); // center torso rear AddTexture (texturename[m_MechID],8,texuv[m_MechID][8][0],texuv[m_MechID][8][1],texuv[m_MechID][8][2],texuv[m_MechID][8][3],128,128); // head AddTexture (texturename[m_MechID],9,texuv[m_MechID][9][0],texuv[m_MechID][9][1],texuv[m_MechID][9][2],texuv[m_MechID][9][3],128,128); // special 1 AddTexture (texturename[m_MechID],10,texuv[m_MechID][10][0],texuv[m_MechID][10][1],texuv[m_MechID][10][2],texuv[m_MechID][10][3],128,128); // special 2 AddTexture ("hud\\hud5",11,229,68,238,118); // special 1 rear AddTexture ("hud\\hud5",12,243,68,254,118); // special 2 rear if(!hsh_initialized) { ; } else { //»óÈÆ mfd_device.LoadDamageTexture(texturename[m_MechID]); radar_device.LoadRadarDamageTexture(texturename[m_MechID]); } } void HUDDamage::Update (Stuff::Time till) { if (m_DamageFlashTime == 0) m_DamageFlashTime = till; if (m_HitFlashTime == 0) m_HitFlashTime = till; while (m_DamageFlashTime <= till) { m_DamageFlash = !m_DamageFlash; m_DamageFlashTime += 1.0/6.0; } while (m_HitFlashTime <= till) { int i; for (i=0;iSize (); x = 658; y = 590; color = MakeColor (0,126,0,255); // <- (126,126,0,255) DrawLine (658,589,769,589,color); DrawLine (658,598,769,598,color); for (x=0;x<10;x++) { DrawLine (bartable[x],589,bartable[x],598,color); } DrawLine (769,589,769,598,color); DrawLine (771,589,799,589,color); DrawLine (771,598,799,598,color); DrawLine (799,589,799,598,color); color = Color (); for (i=0;i<10;i++) { //±ÛÀÚ¸¦ ±×¸®´Â °÷Àΰ¡?? m_Textures[20+i]->Draw (Point3D ((Scalar) bartable[i]+1.0f,(Scalar) y,0.9f),size,MakeColor (255,255,255,255),HUDTexture::NO_FLIP,true); if (!(m_HitFlashCount[trans_array[i]] & 0x01)) { m_Textures[40+i]->Draw (Point3D ((Scalar) bartable[i]+1.0f,(Scalar) y-1.0f,0.9f),size,MakeColor (255,255,255,255)); } } if (!(m_HitFlashCount[trans_array[10]] & 0x01)) m_RearText->Color (MakeColor (73,231,73,255)); else m_RearText->Color (MakeColor (255,255,255,255)); DWORD tx,ty; m_RearText->DrawSize (tx,ty); tx >>= 1; ty >>= 1; m_RearText->Draw (Point3D (785.0f-tx,529.0f-ty,0.9f)); /* size = m_Textures[30]->Size (); m_Textures[30]->Draw (Point3D (773.0f,524.0f,0.9f),size,MakeColor (255,255,255,255),HUDTexture::NO_FLIP,true); if (!(m_HitFlashCount[trans_array[10]] & 0x01)) m_Textures[50]->Draw (Point3D (773.0f,523.0f,0.9f),size,MakeColor (255,255,255,255)); */ size = Size (); if (m_ArmorMode) { Scalar height; int x,y; size = m_Textures[20]->Size (); for (i=0;i 2.0f) { if (m_HitFlashCount[trans_array[i]] & 0x01) { my_DrawRect (x,y,(int) (x+13),(int) (y-height),MakeColor (255,255,255,255)); } else { my_DrawRect (x,y,(int) (x+13),(int) (y-height),m_DamageColors[m_DamageValues[trans_array[i]]]); } } DrawFrame (x,y,x+13,y-50,Color ()); break; case 9: // s1 x = bartable[i]+2; height = (m_ArmorValues[trans_array[i]]) * 45.0f; if (height > 2.0f) { if (m_HitFlashCount[trans_array[i]] & 0x01) { my_DrawRect (x+3,y,(int) (x+YOUR_BARWIDTH-3),(int) (y-height),MakeColor (255,255,255,255)); } else { my_DrawRect (x+3,y,(int) (x+YOUR_BARWIDTH-3),(int) (y-height),m_DamageColors[m_DamageValues[trans_array[i]]]); } } DrawFrame (x+3,y,x+YOUR_BARWIDTH-3,y-45,Color ()); break; case 10: //s2 x = bartable[i]+2; height = (m_ArmorValues[trans_array[i]]) * 45.0f; if (height > 2.0f) { if (m_HitFlashCount[trans_array[i]] & 0x01) { my_DrawRect (x+3,y,(int) (x+YOUR_BARWIDTH-3),(int) (y-height),MakeColor (255,255,255,255)); } else { my_DrawRect (x+3,y,(int) (x+YOUR_BARWIDTH-3),(int) (y-height),m_DamageColors[m_DamageValues[trans_array[i]]]); } } DrawFrame (x+3,y,x+YOUR_BARWIDTH-3,y-45,Color ()); break; default: x = bartable[i]; height = (m_ArmorValues[trans_array[i]]) * YOUR_BARHEIGHT; if (height > 2.0f) { if (m_HitFlashCount[trans_array[i]] & 0x01) { my_DrawRect (x+3,y,(int) (x+YOUR_BARWIDTH-1),(int) (y-height),MakeColor (255,255,255,255)); } else { my_DrawRect (x+3,y,(int) (x+YOUR_BARWIDTH-1),(int) (y-height),m_DamageColors[m_DamageValues[trans_array[i]]]); } } DrawFrame (x+3,y,x+YOUR_BARWIDTH-1,y-YOUR_BARHEIGHT,Color ()); break; } } } } else { Point3D boxloc; boxloc = Location (); loc.x = boxloc.x; loc.y = boxloc.y; int fred; fred = 0; for (i=0;i<11;i++) {//13À̶ó´Â ¼ýÀÚ°¡ ÀǹÌÇÏ´Â °ÍÀº ¹«¾ùÀϱî? #if 0 if (i != fred) { continue; } #endif Verify (m_Textures[i]); switch (i) { case 7: // rear if ((m_DamageValues[i] <= 5) && (m_DamageValues[i]>=0)) { if ((m_DamageValues[i] != 4) || (m_DamageFlash)) { loc.x = 765; loc.y = 469; size = m_Textures[i]->Size (); m_Textures[i]->Draw (loc,size,m_DamageColors[m_DamageValues[i]]); } } break; case 11: // s1 if ((m_DamageValues[9] <= 5) && (m_DamageValues[9]>=0)) { if ((m_DamageValues[9] != 4) || (m_DamageFlash)) { loc.x = 773; loc.y = 535; size = m_Textures[i]->Size (); m_Textures[i]->Draw (loc,size,m_DamageColors[m_DamageValues[9]]); } } break; case 12: // s2 if ((m_DamageValues[10] <= 5) && (m_DamageValues[10]>=0)) { if ((m_DamageValues[10] != 4) || (m_DamageFlash)) { loc.x = 788; loc.y = 535; size = m_Textures[i]->Size (); m_Textures[i]->Draw (loc,size,m_DamageColors[m_DamageValues[10]]); } } break; default: if ((m_DamageValues[i] <= 5) && (m_DamageValues[i]>=0)) { if ((m_DamageValues[i] != 4) || (m_DamageFlash)) { loc.x = boxloc.x + (offset[m_MechID][i][0]); loc.y = boxloc.y + (offset[m_MechID][i][1]); size = m_Textures[i]->Size (); m_Textures[i]->Draw (loc,size,m_DamageColors[m_DamageValues[i]]); } } break; } } } } else { if(mfd_device.BeginChannel(2)) { mfd_device.pD3DDevice->SetTexture(0,0); mfd_device.DrawThickFrameList(4,damage_back_frames,1,0xFFFFFFFF); static int s_naStates[8] = { 1, 1, 1, 1, 1, 1, 1, 1 }; if (g_bCOOP) { mfd_device.DrawMFDBackText(mfd_text_damage_COOP, s_naStates); } else { if (g_bMuteMode) s_naStates[0] = 2; else s_naStates[0] = 1; // MSL 5.02 Pinky Button if (g_bZoomMode) s_naStates[4] = 2; else s_naStates[4] = 1; if (g_bJumpMode) s_naStates[5] = 2; else s_naStates[5] = 1; if (g_bFlushMode) s_naStates[6] = 2; else s_naStates[6] = 1; if (g_bLightAmpMode) s_naStates[7] = 2; else s_naStates[7] = 1; if (g_bNextTargetMode) s_naStates[1] = 2; else s_naStates[1] = 1; if (g_bCrossTargetMode) s_naStates[2] = 2; else s_naStates[2] = 1; mfd_device.DrawMFDBackText(mfd_text_damage, s_naStates); } int i; mfd_device.pD3DDevice->SetTexture(0,mfd_device.pDDSTexture); //enable Alpha mfd_device.pD3DDevice->SetRenderState( D3DRENDERSTATE_ALPHABLENDENABLE, TRUE ); mfd_device.pD3DDevice->SetRenderState( D3DRENDERSTATE_SRCBLEND, D3DBLEND_SRCALPHA ); mfd_device.pD3DDevice->SetRenderState( D3DRENDERSTATE_DESTBLEND, D3DBLEND_INVSRCALPHA ); //¿ø·¡°ÍÀº..13,14,14,14,14,14,14,14,16,14ÀÇ °£°ÝÀ» µÎ°í ÀÖ´Ù. const hsh_bartable[11] = {26+61*0,26+61*1,26+61*2,26+61*3,26+61*4,26+61*5,26+61*6,26+61*7,522,591,540}; DWORD color=0xFFFFFFFF; const DWORD color_nohit=0xFF808080; const DWORD color_hit=0xFFFFFFFF; for(i=0;i<8;i++) { color=(m_HitFlashCount[trans_array[i]] & 0x01)? color_hit:color_nohit; mfd_device.DrawTexture(10+58*i,392,color,0+58*i,403,0+58*(i+1),447); } color=(m_HitFlashCount[trans_array[8]] & 0x01)? color_hit:color_nohit; mfd_device.DrawTexture(506,392,color,0,452,60,496); color=(m_HitFlashCount[trans_array[9]] & 0x01)? color_hit:color_nohit; mfd_device.DrawTexture(571,392,color,60,452,118,496); color=(m_HitFlashCount[trans_array[10]] & 0x01)? color_hit:color_nohit; mfd_device.DrawTexture(506,194,color,178,452,308,496); // MSL 5.03 Damage on Secondary if (g_nAuxilMode == 1) { // if(radar_device.pDDSRadarDamageTexture==0) radar_device.LoadRadarDamageTexture(texturename[m_MechID]); // clear back ground texture RECT rc={140,407,340,607}; DDBLTFX fx={0,}; fx.dwSize=sizeof(fx); fx.dwFillColor=0; radar_device.pDDSTarget->Blt(&rc,NULL,NULL,DDBLT_COLORFILL ,&fx); for (i=0;i<11;i++) {//13À̶ó´Â ¼ýÀÚ°¡ ÀǹÌÇÏ´Â °ÍÀº ¹«¾ùÀϱî? int dv=m_DamageValues[i]; DWORD color=0xFF000000; if(0<=dv && dv<=5) color=SH_DamageColor[dv]; if ((m_DamageValues[i] <= 5) && (m_DamageValues[i]>=0)) { if ((m_DamageValues[i] != 4) || (m_DamageFlash)) { color = m_DamageColors[m_DamageValues[i]]; radar_device.pD3DDevice->SetTexture(0,radar_device.pDDSRadarDamageTexture); radar_device.pD3DDevice->SetRenderState( D3DRENDERSTATE_ALPHABLENDENABLE, TRUE ); radar_device.pD3DDevice->SetRenderState( D3DRENDERSTATE_SRCBLEND, D3DBLEND_SRCALPHA ); radar_device.pD3DDevice->SetRenderState( D3DRENDERSTATE_DESTBLEND, D3DBLEND_INVSRCALPHA ); radar_device.tw=256,radar_device.th=256; radar_device.DrawTexture( (offset3[m_MechID][i][0]/2)+138, (offset3[m_MechID][i][1]/2)+406, color, texuv3[m_MechID][i][0]/2, texuv3[m_MechID][i][1]/2, texuv3[m_MechID][i][2]/2, texuv3[m_MechID][i][3]/2 ); radar_device.tw=512,radar_device.th=512; } } } } if (m_ArmorMode) { mfd_device.pD3DDevice->SetTexture(0,0); int hsh_x; Scalar hsh_height; for (int i=0;i 2.0f) { mfd_device.DrawQuad(hsh_x,(int)(179-hsh_height),598,179,color); } mfd_device.DrawFrame(hsh_x,179-126,598,179,0xFFFFFFFF); break; case 9: // s1 hsh_height=m_ArmorValues[tr]*110; if (hsh_height > 2.0f) { mfd_device.DrawQuad(hsh_x,(int)(375-hsh_height),hsh_x+26,375,color); } mfd_device.DrawFrame(hsh_x,375-110,hsh_x+26,375,0xFFFFFFFF); break; case 10: // s2 hsh_height=m_ArmorValues[tr]*110; if (hsh_height > 2.0f) { mfd_device.DrawQuad(hsh_x,(int)(375-hsh_height),hsh_x+26,375,color); } mfd_device.DrawFrame(hsh_x,375-110,hsh_x+26,375,0xFFFFFFFF); break; default: hsh_height=m_ArmorValues[tr]*300; hsh_x=26+58*i; if (hsh_height > 2.0f) { mfd_device.DrawQuad(hsh_x,(int)(375-hsh_height),hsh_x+26,375,color); } mfd_device.DrawFrame(hsh_x,375-300,hsh_x+26,375,0xFFFFFFFF); break; } } } } else {//!ArmorMode if(mfd_device.pDDSDamageTexture==0) mfd_device.LoadDamageTexture(texturename[m_MechID]); for (i=0;i<13;i++) {//13À̶ó´Â ¼ýÀÚ°¡ ÀǹÌÇÏ´Â °ÍÀº ¹«¾ùÀϱî? int dv=m_DamageValues[i]; DWORD color=0xFF000000; if(0<=dv && dv<=5)color=SH_DamageColor[dv]; switch (i) { case 7: // rear if ((m_DamageValues[i] <= 5) && (m_DamageValues[i]>=0)) if ((m_DamageValues[i] != 4) || (m_DamageFlash)) { mfd_device.pD3DDevice->SetTexture(0,mfd_device.pDDSTexture); mfd_device.pD3DDevice->SetRenderState( D3DRENDERSTATE_ALPHABLENDENABLE, TRUE ); mfd_device.pD3DDevice->SetRenderState( D3DRENDERSTATE_SRCBLEND, D3DBLEND_SRCALPHA ); mfd_device.pD3DDevice->SetRenderState( D3DRENDERSTATE_DESTBLEND, D3DBLEND_INVSRCALPHA ); RenderAux5MechBack(0,color); } break; case 11: // rear s1 { int dv=m_DamageValues[9]; DWORD color=0xFF000000; if(0<=dv && dv<=5)color=SH_DamageColor[dv]; if ((m_DamageValues[9] <= 5) && (m_DamageValues[9]>=0)) if ((m_DamageValues[9] != 4) || (m_DamageFlash)) { mfd_device.pD3DDevice->SetTexture(0,mfd_device.pDDSTexture); mfd_device.pD3DDevice->SetRenderState( D3DRENDERSTATE_ALPHABLENDENABLE, TRUE ); mfd_device.pD3DDevice->SetRenderState( D3DRENDERSTATE_SRCBLEND, D3DBLEND_SRCALPHA ); mfd_device.pD3DDevice->SetRenderState( D3DRENDERSTATE_DESTBLEND, D3DBLEND_INVSRCALPHA ); RenderAux5MechBack(1,color); } } break; case 12: // rear s2 { int dv=m_DamageValues[10]; DWORD color=0xFF000000; if(0<=dv && dv<=5)color=SH_DamageColor[dv]; if ((m_DamageValues[10] <= 5) && (m_DamageValues[10]>=0)) if ((m_DamageValues[10] != 4) || (m_DamageFlash)) { mfd_device.pD3DDevice->SetTexture(0,mfd_device.pDDSTexture); mfd_device.pD3DDevice->SetRenderState( D3DRENDERSTATE_ALPHABLENDENABLE, TRUE ); mfd_device.pD3DDevice->SetRenderState( D3DRENDERSTATE_SRCBLEND, D3DBLEND_SRCALPHA ); mfd_device.pD3DDevice->SetRenderState( D3DRENDERSTATE_DESTBLEND, D3DBLEND_INVSRCALPHA ); RenderAux5MechBack(2,color); } } break; default: if ((m_DamageValues[i] <= 5) && (m_DamageValues[i]>=0)) { if ((m_DamageValues[i] != 4) || (m_DamageFlash)) { mfd_device.pD3DDevice->SetTexture(0,mfd_device.pDDSDamageTexture); mfd_device.pD3DDevice->SetRenderState( D3DRENDERSTATE_ALPHABLENDENABLE, TRUE ); mfd_device.pD3DDevice->SetRenderState( D3DRENDERSTATE_SRCBLEND, D3DBLEND_SRCALPHA ); mfd_device.pD3DDevice->SetRenderState( D3DRENDERSTATE_DESTBLEND, D3DBLEND_INVSRCALPHA ); mfd_device.DrawTexture( offset2[m_MechID][i][0]+100, offset2[m_MechID][i][1]+40, color, texuv2[m_MechID][i][0], texuv2[m_MechID][i][1], texuv2[m_MechID][i][2], texuv2[m_MechID][i][3] ); } } break; } } } } mfd_device.EndChannel(); } } namespace NHUDTARGETDAMAGE { const int WeaponTransTable[85][2] = { {W_SmallLaser ,27}, {W_MediumLaser ,18}, {W_LargeLaser ,11}, {W_SmallPulse ,28}, {W_MediumPulse ,19}, {W_LargePulse ,12}, {W_ERSmallLaser ,27}, {W_ERMediumLaser ,18}, {W_ERLargeLaser ,11}, {W_SmallXPulse, 28}, {W_MedXPulse ,28}, {W_LargeXPulse ,28}, {W_ClanSmallPulse ,52}, {W_ClanMediumPulse,49}, {W_ClanLargePulse ,44}, {W_ClanERSmallLaser ,38}, {W_ClanERMediumLaser ,36}, {W_ClanERLargeLaser ,35}, {W_PPC ,26}, {W_ERPPC, 26}, {W_ClanERPPC ,37}, {W_Flamer,4}, {W_ERFlamer,4}, {W_Bombast ,3}, {W_SRM2 ,29}, {W_SRM4 ,30}, {W_SRM6 ,31}, {W_ClanSRM2 ,29}, {W_ClanSRM4 ,30}, {W_ClanSRM6 ,31}, {W_SSRM2 ,53}, {W_SSRM4 ,54}, {W_SSRM6 ,55}, {W_ClanSSRM2 ,53}, {W_ClanSSRM4 ,54}, {W_ClanSSRM6 ,55}, {W_MRM10 ,21}, {W_MRM20 ,22}, {W_MRM30 ,23}, {W_MRM40 ,24}, {W_SMRM10 ,21}, {W_SMRM20 ,22}, {W_SMRM30 ,23}, {W_SMRM40 ,24}, {W_ClanSMRM10 ,21}, {W_ClanSMRM20 ,22}, {W_ClanSMRM30 ,23}, {W_ClanSMRM40 ,24}, {W_LRM5 ,17}, {W_LRM10 ,14}, {W_LRM15 ,15}, {W_LRM20 ,16}, {W_ClanLRM5 ,48}, {W_ClanLRM10 ,45}, {W_ClanLRM15 ,46}, {W_ClanLRM20 ,47}, {W_Thunderbolt ,32}, {W_NarcBeacon ,25}, {W_ClanNarcBeacon ,51}, {W_Flare ,51}, {W_HighExplosive ,51}, {W_ArtilleryStrike ,51}, {W_AC2 ,1}, {W_AC5 ,1}, {W_AC10 ,0}, {W_AC20 ,0}, {W_LBXAC10 ,9}, {W_LBXAC20 ,10}, {W_ClanLBXAC10 ,42}, {W_ClanLBXAC20 ,43}, {W_UltraAC2 ,33}, {W_UltraAC5 ,34}, {W_UltraAC10 ,34}, {W_UltraAC20 ,34}, {W_ClanUltraAC2 ,56}, {W_ClanUltraAC5 ,57}, {W_ClanUltraAC10 ,57}, {W_ClanUltraAC20 ,51}, {W_LightGauss ,8}, {W_Gauss ,6}, {W_HeavyGauss ,51}, {W_ClanGauss ,40}, {W_MachineGun ,20}, {W_ClanMachineGun ,50}, {W_LongTom ,13}, // {W_RTXAC2, 77}, // {W_RTXAC5, 78}, }; int LookupWeapon (int id) { int i; for (i=0;i<85;i++) { if (WeaponTransTable[i][0] == id) { return WeaponTransTable[i][1]; } } return -1; } }; using namespace NHUDTARGETDAMAGE; HUDTargetDamage::HUDTargetDamage() : m_TargetVehicle(NULL) { int i; AddTexture ("hud\\hud4",0,29,43,49,91); //leftleg AddTexture ("hud\\hud4",1,6,43,26,92); //rightleg AddTexture ("hud\\hud4",2,43,11,56,42); //leftarm AddTexture ("hud\\hud4",3,0,11,12,42); //rightarm AddTexture ("hud\\hud4",4,12,7,22,33); //righttorso AddTexture ("hud\\hud4",5,33,7,43,33); //lefttorso AddTexture ("hud\\hud4",6,22,10,33,41); //centertorso AddTexture ("hud\\hud4",7,0,0,0,0); //blank rear? AddTexture ("hud\\hud4",8,22,0,33,10); //head AddTexture ("hud\\hud4",9,0,0,0,0); //special1 AddTexture ("hud\\hud4",10,0,0,0,0); //special2 AddTexture ("hud\\hud4",20,115,119,127,127); AddTexture ("hud\\hud4",21,129,119,141,127); AddTexture ("hud\\hud4",22,143,119,155,127); AddTexture ("hud\\hud4",23,157,119,169,127); AddTexture ("hud\\hud4",24,171,119,183,127); AddTexture ("hud\\hud4",25,185,119,197,127); AddTexture ("hud\\hud4",26,199,119,211,127); AddTexture ("hud\\hud4",27,213,119,225,127); AddTexture ("hud\\hud4",28,229,119,241,127); AddTexture ("hud\\hud4",29,243,119,255,127); AddTexture ("hud\\hud4",30,157,119,169,127); for (i=20;i<=30;i++) { m_Textures[i]->BlendMode (gos_BlendDecal); } AddTexture ("hud\\hud4",40,115,110,127,118); AddTexture ("hud\\hud4",41,129,110,141,118); AddTexture ("hud\\hud4",42,143,110,155,118); AddTexture ("hud\\hud4",43,157,110,169,118); AddTexture ("hud\\hud4",44,171,110,183,118); AddTexture ("hud\\hud4",45,185,110,197,118); AddTexture ("hud\\hud4",46,199,110,211,118); AddTexture ("hud\\hud4",47,213,110,225,118); AddTexture ("hud\\hud4",48,229,110,241,118); AddTexture ("hud\\hud4",49,243,110,255,118); AddTexture ("hud\\hud4",50,157,110,169,118); for (i=0;i<58;i++) { AddTexture ("hud\\hud4",100+i,60,24+(i*4.0f),87,28+(i*4.0f)); } m_DamageColors[0] = MakeColor(100, 225, 100, 225); m_DamageColors[1] = MakeColor(225, 225, 0, 200); m_DamageColors[2] = MakeColor(255, 150, 0, 175); m_DamageColors[3] = MakeColor(255, 50, 0, 150); m_DamageColors[4] = MakeColor(255, 50, 0, 125); m_DamageColors[5] = MakeColor(0, 0, 0, 100); m_TargetName = new HUDText (); m_TargetName->Justification (HUDText::LEFT_ALIGN); m_TargetRangeText = new HUDNumberText (); m_TargetRangeText->Justification (HUDText::LEFT_ALIGN); //»óÈÆ // m_TargetRangeText->SetSize(HUDText::LARGE_SIZE); m_TargetRangeText->SetSize(HUDText::MEDIUM_SIZE); m_TargetAlignment = 0; m_TargetTonnage = -1; m_TargetName->UpdateText (""); m_TargetRangeText->UpdateText (""); Color (MakeColor (0,175,0,150)); m_DamageFlashTime = 0; m_HitFlashTime = 0; for (i=0;ihudTargetDamageMode=false; //»óÈÆ µÚ m_ArmorMode = VehicleInterface::GetInstance()->hudTargetDamageMode; m_LastMechMode = false; } HUDTargetDamage::~HUDTargetDamage() { delete m_TargetName; delete m_TargetRangeText; } void HUDTargetDamage::Reset (void) { m_DamageFlashTime = 0; m_HitFlashTime = 0; int i; m_Weapons.clear (); for (i=0;i=0); Verify (m_TargetMechID <= LastMechID); AddTexture (texturename[m_TargetMechID],0,texuv[m_TargetMechID][0][0],texuv[m_TargetMechID][0][1],texuv[m_TargetMechID][0][2],texuv[m_TargetMechID][0][3],128,128); // left leg AddTexture (texturename[m_TargetMechID],1,texuv[m_TargetMechID][1][0],texuv[m_TargetMechID][1][1],texuv[m_TargetMechID][1][2],texuv[m_TargetMechID][1][3],128,128); // right leg AddTexture (texturename[m_TargetMechID],2,texuv[m_TargetMechID][2][0],texuv[m_TargetMechID][2][1],texuv[m_TargetMechID][2][2],texuv[m_TargetMechID][2][3],128,128); // left arm AddTexture (texturename[m_TargetMechID],3,texuv[m_TargetMechID][3][0],texuv[m_TargetMechID][3][1],texuv[m_TargetMechID][3][2],texuv[m_TargetMechID][3][3],128,128); // right arm AddTexture (texturename[m_TargetMechID],4,texuv[m_TargetMechID][4][0],texuv[m_TargetMechID][4][1],texuv[m_TargetMechID][4][2],texuv[m_TargetMechID][4][3],128,128); // right torso AddTexture (texturename[m_TargetMechID],5,texuv[m_TargetMechID][5][0],texuv[m_TargetMechID][5][1],texuv[m_TargetMechID][5][2],texuv[m_TargetMechID][5][3],128,128); // left torso AddTexture (texturename[m_TargetMechID],6,texuv[m_TargetMechID][6][0],texuv[m_TargetMechID][6][1],texuv[m_TargetMechID][6][2],texuv[m_TargetMechID][6][3],128,128); // center torso AddTexture ("hud\\hud5",7,220,0,252,50); // center torso rear AddTexture (texturename[m_TargetMechID],8,texuv[m_TargetMechID][8][0],texuv[m_TargetMechID][8][1],texuv[m_TargetMechID][8][2],texuv[m_TargetMechID][8][3],128,128); // head AddTexture (texturename[m_TargetMechID],9,texuv[m_TargetMechID][9][0],texuv[m_TargetMechID][9][1],texuv[m_TargetMechID][9][2],texuv[m_TargetMechID][9][3],128,128); // special 1 AddTexture (texturename[m_TargetMechID],10,texuv[m_TargetMechID][10][0],texuv[m_TargetMechID][10][1],texuv[m_TargetMechID][10][2],texuv[m_TargetMechID][10][3],128,128); // special 2 AddTexture ("hud\\hud5",11,229,68,238,118); // special 1 rear AddTexture ("hud\\hud5",12,243,68,254,118); // special 2 rear if(!hsh_initialized) { ; } else { //»óÈÆ mfd_device.LoadTargetTexture(texturename[m_TargetMechID]); } } void HUDTargetDamage::Update (Stuff::Time till) { if (m_DamageFlashTime == 0) m_DamageFlashTime = till; if (m_HitFlashTime == 0) m_HitFlashTime = till; while (m_DamageFlashTime <= till) { m_DamageFlash = !m_DamageFlash; m_DamageFlashTime += 1.0/6.0; } while (m_HitFlashTime <= till) { int i; for (i=0;iIsDerivedFrom (Vehicle::DefaultData)) { Vehicle *veh; veh = Cast_Object (Vehicle *,m_TargetVehicle.GetCurrent ()); int i; for (i=0;iarmorArray[i]; } } if (value> 0) { Verify (m_TargetVehicle.GetCurrent ()->IsDerivedFrom (Mech::DefaultData)); Mech *mech = Cast_Object(Mech *, m_TargetVehicle.GetCurrent()); Check_Object (mech); int i; for (i=0;idamageArray[i]; } } } } bool HUDTargetDamage::ToggleMode (void) { if (m_TargetVehicle.GetCurrent ()) { if (!m_TargetVehicle.GetCurrent ()->IsDerivedFrom (Mech::DefaultData)) m_ArmorMode = false; else { m_ArmorMode = !m_ArmorMode; m_LastMechMode = m_ArmorMode; } } else m_ArmorMode = false; VehicleInterface::GetInstance()->hudTargetDamageMode = m_ArmorMode; return m_ArmorMode; } void HUDTargetDamage::Target (Entity *veh) { int i; Vehicle *vehicle = m_Vehicle.GetCurrent(); if (!vehicle) return; if (veh && (vehicle->GetRelativeAlignment(veh->GetAlignment()) == Entity::Player)) m_ShowData = true; else m_ShowData = false; m_Weapons.clear (); m_TargetVehicle.Remove (); for (i=0;inetworkingFlag) // if(MWApplication::GetInstance()->networkingFlag) { if (veh->IsDerivedFrom (Vehicle::DefaultData)) { Vehicle *vehicle = Cast_Object (Vehicle *,veh); Stuff::ChainIteratorOf weaponIterator (&vehicle->weaponChain); m_Weapons.reserve (vehicle->weaponChain.GetSize ()); Weapon *weapon; while((weapon = weaponIterator.ReadAndNext()) != NULL) { Check_Object(weapon); const Weapon__GameModel *model = weapon->GetGameModel (); Verify (model); m_Weapons.push_back (WeaponData (LookupWeapon (model->itemID),weapon->internalLocation)); } } if (!veh->IsDerivedFrom (Mech::DefaultData)) { m_ArmorMode = false; } else { m_ArmorMode = m_LastMechMode; } } } } const char weapon_name[58][8]={ "AC10", "AC5", "AM5", "BMB LAS", "FLAMER", "FLARE", "GAUSS", "HIGH EX", "L GAUSS", "LBX10", "LBX20", "LG LAS", "LG PLS", "LNG TOM", "LRM10", "LRM15", "LRM20", "LRM5", "MD LAS", "MD PLS", "MG", "MRM10", "MRM20", "MRM30", "MRM40", "NARC", "PPC", "SM LAS", "SM PLS", "SRM2", "SRM4", "SRM6", "THDRBLT", "ULTRA 2", "ULTRA 5", "C ERLGL", "C ERMDL", "C ERPPC", "C ERSML", "C ELAMR", "C GAUSS", "C LAMS", "C LBX10", "C LBX20", "C LGPLS", "C LRM10", "C LRM15", "C LRM20", "C LRM5", "C MDPLS", "C MG", "C NARC", "C SMPLS", "C STRK2", "C STRK4", "C STRK6", "C UAC2", "C UAC5" // {W_SmallLaser ,27}, // {W_MediumLaser ,18}, // {W_LargeLaser ,11}, // {W_SmallPulse ,28}, // {W_MediumPulse ,19}, // {W_LargePulse ,12}, // {W_ERSmallLaser ,27}, // {W_ERMediumLaser ,18}, // {W_ERLargeLaser ,11}, // {W_SmallXPulse, 28}, // {W_MedXPulse ,28}, // {W_LargeXPulse ,28}, // {W_ClanSmallPulse ,52}, // {W_ClanMediumPulse,49}, // {W_ClanLargePulse ,44}, // {W_ClanERSmallLaser ,38}, // {W_ClanERMediumLaser ,36}, // {W_ClanERLargeLaser ,35}, // {W_PPC ,26}, // {W_ERPPC, 26}, // {W_ClanERPPC ,37}, // {W_Flamer,4}, // {W_ERFlamer,4}, // {W_Bombast ,3}, // {W_SRM2 ,29}, // {W_SRM4 ,30}, // {W_SRM6 ,31}, // {W_SSRM2 ,53}, // {W_SSRM4 ,54}, // {W_SSRM6 ,55}, // {W_ClanSSRM2 ,53}, // {W_ClanSSRM4 ,54}, // {W_ClanSSRM6 ,55}, // {W_MRM10 ,21}, // {W_MRM20 ,22}, // {W_MRM30 ,23}, // {W_MRM40 ,24}, // {W_SMRM10 ,21}, // {W_SMRM20 ,22}, // {W_SMRM30 ,23}, // {W_SMRM40 ,24}, // {W_ClanSMRM10 ,21}, // {W_ClanSMRM20 ,22}, // {W_ClanSMRM30 ,23}, // {W_ClanSMRM40 ,24}, // {W_LRM5 ,17}, // {W_LRM10 ,14}, // {W_LRM15 ,15}, // {W_LRM20 ,16}, // {W_ClanLRM5 ,48}, // {W_ClanLRM10 ,45}, // {W_ClanLRM15 ,46}, // {W_ClanLRM20 ,47}, // {W_Thunderbolt ,32}, // {W_NarcBeacon ,25}, // {W_ClanNarcBeacon ,51}, // {W_Flare ,51}, // {W_HighExplosive ,51}, // {W_ArtilleryStrike ,51}, // {W_AC2 ,1}, // {W_AC5 ,1}, // {W_AC10 ,0}, // {W_AC20 ,0}, // {W_LBXAC10 ,9}, // {W_LBXAC20 ,10}, // {W_ClanLBXAC10 ,42}, // {W_ClanLBXAC20 ,43}, // {W_UltraAC2 ,33}, // {W_UltraAC5 ,34}, // {W_UltraAC10 ,34}, // {W_UltraAC20 ,34}, // {W_ClanUltraAC2 ,56}, // {W_ClanUltraAC5 ,57}, // {W_ClanUltraAC10 ,57}, // {W_ClanUltraAC20 ,51}, // {W_LightGauss ,8}, // {W_Gauss ,6}, // {W_HeavyGauss ,51}, // {W_ClanGauss ,40}, // {W_MachineGun ,20}, // {W_ClanMachineGun ,50}, // {W_LongTom ,13}, // {W_RTXAC2, 77}, // {W_RTXAC5, 78}, }; static char mfd_text_targetdamage[8][32]={ "NEAREST\nFRIENDLY","NEXT\nFRIENDLY","PREV\nFRIENDLY","TARGET\nMODE", "NEAREST\nENEMY","NEXT\nENEMY","PREV\nENEMY","CROSSHAIR\nTARGET", }; // MSL ADD MECH // -1 = OFF static index_redirection[LastMechID+1]={ 0 , // Annihilator 1 , // Archer 2 , // Arctic Wolf 3 , // Ares 4 , // Argus 5 , // Assassin2 6 , // Atlas 7 , // Avatar 8 , // Awesome 9 , // Battlemaster 10 , // BattlemasterIIc 11 , // Behemoth 12 , // Behemoth II 13 , // Black Hawk 14 , // Black Knight 15 , // Black Lanner 16 , // Brigand 17 , // Bushwacker 18 , // Catapult 19 , // cauldron-born 20 , // Chimera 21 , // Commando 22 , // Cougar 23 , // Cyclops 24 , // Daishi 25 , // Deimos 26 , // Dragon 27 , // Fafnir 28 , // Flea 29 , // Gladiator 30 , // Grizzly 31 , // Hauptmann 32 , // Hellhound 33 , // Hellspawn 34 , // Highlander 35 , // Hollander II 36 , // Hunchback 37 , // Kodiak 38 , // Loki 39 , // Longbow 40 , // Madcat 41 , // Madcat Mk. II 42 , // Masakari 43 , // Mauler 44 , // Novacat 45 , // Osiris 46 , // Owens 47 , // Puma 48 , // Raven 49 , // Rifleman 50 , // Ryoken 51 , // Shadowcat 52 , // Solitaire 53 , // Sunder 54 , // Templar 55 , // Thanatos 56 , // Thor 57 , // Uller 58 , // Urbanmech 59 , // Uziel 60 , // Victor 61 , // Vulture 62 , // Warhammer 63 , // Wolfhound 64 , // Zeus }; int GetMechIndex(int idx_org) { // MSL 5.02 // if(0<=idx_org && idx_org<21){ if(0<=idx_org && idx_org (targetmech->GetGameModel ()); m_TargetMechID = model->mechID; } else { m_TargetMechID = 0; } if (m_ShowData) { if (!m_ArmorMode) { stlport::vector::iterator iter; int cury,curx; cury = 570; curx = 3; size = m_Textures[100]->Size (); for (iter= m_Weapons.begin ();iter != m_Weapons.end ();iter++) { if (iter->m_TextureID == -1) continue; color = m_DamageColors[m_DamageValues[iter->m_PartLoc]]; my_DrawRect (curx,cury,curx+30,cury+6,color); m_Textures[100+(iter->m_TextureID)]->Draw (Point3D (curx+1.0f,cury+1.0f,0.9f),size,0xFF000000,HUDTexture::NO_FLIP,true); cury += 6; if ((cury+6) >= 598) { cury = 570; curx = 33; } } } color = MakeColor (0,200,0,150); if (m_TargetTonnage == -1) { //ŸÄÏÀÌ ¸ÞÅ©°¡ ¾Æ´Ò¶§.. Verify (!m_ArmorMode); // only mechs show armor mode if (m_TargetVehicle.GetCurrent()->IsDerivedFrom (MWObject::DefaultData)) { MWObject *veh = Cast_Object (MWObject *,m_TargetVehicle.GetCurrent ()); if (m_ArmorValues[0] != (veh->m_HitPoints / veh->m_MaxHitPoints)) m_HitFlashCount[0] = 1; m_ArmorValues[0] = (veh->m_HitPoints / veh->m_MaxHitPoints); int x,y; size = m_Textures[20]->Size (); x = 78; y = 594; color = Color (); if (m_ArmorValues[0] != -1) { Scalar height; Scalar tx; tx = 141-73-10; height = (m_ArmorValues[0]) * (599-488-10); Clamp (height,0,(599-488-10)); // if (height > 2.0f) { // if (m_HitFlashCount[MAX_HUD_DAMAGE_ZONE] & 0x01) // my_DrawRect (x,y,(int) (x+tx),(int) (y-height),MakeColor (255,255,255,255)); // else { int level; level = (int) ((m_ArmorValues[0]*(MAX_HUD_DAMAGE_LEVEL))+0.5f); level = MAX_HUD_DAMAGE_LEVEL - level; Clamp (level,0,MAX_HUD_DAMAGE_LEVEL-2); my_DrawRect (x,y,(int) (x+tx),(int) (y-height),m_DamageColors[level]); } } DrawFrame (x,y,(int) (x+tx),y-(599-488-10),Color ()); } } } else { //ŸÄÏÀÌ ¸ÞÅ©À϶§.. Verify (m_TargetVehicle.GetCurrent ()->IsDerivedFrom (Mech::DefaultData)); Mech *mech = Cast_Object(Mech *, m_TargetVehicle.GetCurrent()); Check_Object (mech); int i; for (i=0;idamageArray[i]) m_HitFlashCount[i] = 1; m_DamageValues[i] = mech->damageArray[i]; if (m_ArmorValues[i] != mech->armorArray[i]) m_HitFlashCount[i] = 1; m_ArmorValues[i] = mech->armorArray[i]; } color = MakeColor (0, 0, 0, 150); Point3D size,loc; if (m_ArmorMode) { //ŸÄÏÀÌ ¸ÞÅ©ÀÌ°í ¾Æ¸Ó ¸ðµåÀ϶§ int x,y; size = m_Textures[20]->Size (); // DrawLine (771-658,589,799-658,589,color); // DrawLine (771-658,599,799-658,599,color); // DrawLine (799-658,589,799-658,599,color); x = 5; y = 582; color = Color (); size = m_Textures[20]->Size (); for (i=0;iDraw (Point3D ((Scalar) bartable[i]+1.0f-658,590.0f,0.9f),size,MakeColor (255,255,255,255),HUDTexture::NO_FLIP,true); if (!(m_HitFlashCount[trans_array[i]] & 0x01)) m_Textures[40+i]->Draw (Point3D ((Scalar) bartable[i]+1.0f-658,589.0f,0.9f),size,MakeColor (255,255,255,255)); if (height > 2.0f) { if (m_HitFlashCount[trans_array[i]] & 0x01) my_DrawRect (x+3,y,(int) (x+TARGET_BARWIDTH-1),(int) (y-height),MakeColor (255,255,255,255)); else my_DrawRect (x+3,y,(int) (x+TARGET_BARWIDTH-1),(int) (y-height),m_DamageColors[m_DamageValues[trans_array[i]]]); } DrawFrame (x+3,y,x+TARGET_BARWIDTH-1,y-TARGET_BARHEIGHT,Color ()); } } color = MakeColor (0,126,0,255); DrawLine (0,589,142,589,color); DrawLine (0,599,142,599,color); for (x=0;x<11;x++) { DrawLine (bartable[x]-658,589,bartable[x]-658,599,color); } DrawLine (142,589,142,599,color); } else { // MSL 5.03 Target Damage Display Verify (m_TargetMechID >=0); Verify (m_TargetMechID <= LastMechID); AddTexture (texturename[m_TargetMechID],0,texuv[m_TargetMechID][0][0],texuv[m_TargetMechID][0][1],texuv[m_TargetMechID][0][2],texuv[m_TargetMechID][0][3],128,128); // left leg AddTexture (texturename[m_TargetMechID],1,texuv[m_TargetMechID][1][0],texuv[m_TargetMechID][1][1],texuv[m_TargetMechID][1][2],texuv[m_TargetMechID][1][3],128,128); // right leg AddTexture (texturename[m_TargetMechID],2,texuv[m_TargetMechID][2][0],texuv[m_TargetMechID][2][1],texuv[m_TargetMechID][2][2],texuv[m_TargetMechID][2][3],128,128); // left arm AddTexture (texturename[m_TargetMechID],3,texuv[m_TargetMechID][3][0],texuv[m_TargetMechID][3][1],texuv[m_TargetMechID][3][2],texuv[m_TargetMechID][3][3],128,128); // right arm AddTexture (texturename[m_TargetMechID],4,texuv[m_TargetMechID][4][0],texuv[m_TargetMechID][4][1],texuv[m_TargetMechID][4][2],texuv[m_TargetMechID][4][3],128,128); // right torso AddTexture (texturename[m_TargetMechID],5,texuv[m_TargetMechID][5][0],texuv[m_TargetMechID][5][1],texuv[m_TargetMechID][5][2],texuv[m_TargetMechID][5][3],128,128); // left torso AddTexture (texturename[m_TargetMechID],6,texuv[m_TargetMechID][6][0],texuv[m_TargetMechID][6][1],texuv[m_TargetMechID][6][2],texuv[m_TargetMechID][6][3],128,128); // center torso AddTexture ("hud\\hud5",7,220,0,252,50); // center torso rear AddTexture (texturename[m_TargetMechID],8,texuv[m_TargetMechID][8][0],texuv[m_TargetMechID][8][1],texuv[m_TargetMechID][8][2],texuv[m_TargetMechID][8][3],128,128); // head AddTexture (texturename[m_TargetMechID],9,texuv[m_TargetMechID][9][0],texuv[m_TargetMechID][9][1],texuv[m_TargetMechID][9][2],texuv[m_TargetMechID][9][3],128,128); // special 1 AddTexture (texturename[m_TargetMechID],10,texuv[m_TargetMechID][10][0],texuv[m_TargetMechID][10][1],texuv[m_TargetMechID][10][2],texuv[m_TargetMechID][10][3],128,128); // special 2 AddTexture ("hud\\hud5",11,229,68,238,118); // special 1 rear AddTexture ("hud\\hud5",12,243,68,254,118); // special 2 rear if(!hsh_initialized) { ; } else { //»óÈÆ mfd_device.LoadTargetTexture(texturename[m_TargetMechID]); } Point3D boxloc; boxloc = Location (); loc.x = boxloc.x; loc.y = boxloc.y; int fred; fred = 0; for (i=0;i<11;i++) {//13À̶ó´Â ¼ýÀÚ°¡ ÀǹÌÇÏ´Â °ÍÀº ¹«¾ùÀϱî? #if 0 if (i != fred) { continue; } #endif Verify (m_Textures[i]); switch (i) { case 7: // rear break; case 11: // s1 break; case 12: // s2 break; default: if ((m_DamageValues[i] <= 5) && (m_DamageValues[i]>=0)) { if ((m_DamageValues[i] != 4) || (m_DamageFlash)) { loc.x = 73 + (offset[m_TargetMechID][i][0]); loc.y = 482 + (offset[m_TargetMechID][i][1]); size = m_Textures[i]->Size (); m_Textures[i]->Draw (loc,size,m_DamageColors[m_DamageValues[i]]); } } break; } } } } } // move it here so that the target range text readout is on top of the damage bars m_TargetName->Color (MakeColor (73,231,73,255)); m_TargetName->TopLeft (2,468); m_TargetName->BottomRight (140,484); m_TargetRangeText->Color (MakeColor (241,33,33,255)); m_TargetRangeText->TopLeft (2,468); m_TargetRangeText->BottomRight (50,484); DWORD textw,texth; m_TargetName->DrawSize (textw,texth); m_TargetName->Draw (Point3D (140.0f - textw,468,0.9f)); m_TargetRangeText->DrawSize (textw,texth); m_TargetRangeText->Draw (Point3D (50.0f - textw,468,0.9f)); } else if(mfd_device.BeginChannel(3)) { mfd_device.DrawMFDBackText( mfd_text_targetdamage); mfd_device.pD3DDevice->SetTexture(0,0); mfd_device.pD3DDevice->SetRenderState( D3DRENDERSTATE_ALPHABLENDENABLE, TRUE ); mfd_device.pD3DDevice->SetRenderState( D3DRENDERSTATE_SRCBLEND, D3DBLEND_SRCALPHA ); mfd_device.pD3DDevice->SetRenderState( D3DRENDERSTATE_DESTBLEND, D3DBLEND_INVSRCALPHA ); if (m_ArmorMode) { mfd_device.DrawThickFrame(7,102,635,390,2,0xFFFFFFFF); } else { mfd_device.DrawThickFrame( 7,102,317,331,2,0xFFFFFFFF); mfd_device.DrawThickFrame( 7,337,317,434,2,0xFFFFFFFF); mfd_device.DrawThickFrame(323,102,635,434,2,0xFFFFFFFF); } mfd_device.DrawThickFrame(7,44,635,95,2,0xFFFFFFFF); if (m_TargetVehicle.GetCurrent ()) { //3D target ¶Ç´Â 2D TargetÀ» ±×¸°´Ù. if (!m_ArmorMode) { if(g_f3dtarget) { mfd_device.pD3DDevice->SetTexture(0,mfd_device.pDDSMechTexture); mfd_device.pD3DDevice->SetRenderState( D3DRENDERSTATE_ALPHABLENDENABLE, FALSE); mfd_device.pD3DDevice->SetTextureStageState(0,D3DTSS_MAGFILTER,D3DTFG_LINEAR); mfd_device.pD3DDevice->SetTextureStageState(0,D3DTSS_MINFILTER,D3DTFG_LINEAR); mfd_device.tw=128,mfd_device.th=128; mfd_device.DrawTexture2(42,104,240,204,0xFFFFFFFF,0,10,120,112); mfd_device.tw=512,mfd_device.th=512; mfd_device.pD3DDevice->SetTexture(0,0); } else { if(m_TargetTonnage != -1) { Mech *mech = Cast_Object(Mech *, m_TargetVehicle.GetCurrent()); const Mech__GameModel *model = static_cast (mech->GetGameModel ()); int mechindex=GetMechIndex(model->mechID); if(mechindex>=0) { //Áö¿øµÇ´Â mech¸¸ ±×¸°´Ù. // MSL 5.02 Target MFD Image int x=(mechindex%8)*128; int y=(mechindex/8)*128; // int x=(mechindex%4)*128; // int y=(mechindex/4)*128; //TargetÀ» 2D·Î ±×¸°´Ù. mfd_device.pD3DDevice->SetTexture(0,mfd_device.pDDSMechTexture); mfd_device.pD3DDevice->SetRenderState( D3DRENDERSTATE_ALPHABLENDENABLE, FALSE); mfd_device.pD3DDevice->SetTextureStageState(0,D3DTSS_MAGFILTER,D3DTFG_LINEAR); mfd_device.pD3DDevice->SetTextureStageState(0,D3DTSS_MINFILTER,D3DTFG_LINEAR); //¸ÞÅ©ÀÇ Á¾·ùº°·Î ÁÂÇ¥¸¦ °è»êÇÏ´Â.. ·çƾÀ» ÀÛ¼ºÇÏ¿© Áý¾î ³ÖÀ»°Í... // MSL 5.02 Target MFD Image mfd_device.tw=1024,mfd_device.th=1024; // MSL 5.02 Target MFD Image Resize // mfd_device.DrawTexture2(42,104,240,204,0xFFFFFFFF,x,y,x+120,y+120); mfd_device.DrawTexture2(42,104,240,225,0xFFFFFFFF,x,y,x+120,y+120); mfd_device.tw=512,mfd_device.th=512; mfd_device.pD3DDevice->SetTexture(0,0); } } } } // MSL 5.03 Target Damage Display if (m_TargetVehicle.GetCurrent ()) { Mech *targetmech; targetmech = Cast_Object (Mech *,m_TargetVehicle.GetCurrent ()); const Mech__GameModel *model = static_cast (targetmech->GetGameModel ()); m_TargetMechID = model->mechID; } else { m_TargetMechID = 0; } // MSL 5.03 Damage on Secondary if (g_nAuxilMode == 2) { if (m_ShowData) { // if(radar_device.pDDSRadarDamageTexture==0) radar_device.LoadRadarDamageTexture(texturename[m_TargetMechID]); // clear back ground texture RECT rc={140,407,340,607}; DDBLTFX fx={0,}; fx.dwSize=sizeof(fx); fx.dwFillColor=0; radar_device.pDDSTarget->Blt(&rc,NULL,NULL,DDBLT_COLORFILL ,&fx); for (int i=0;i<11;i++) {//13À̶ó´Â ¼ýÀÚ°¡ ÀǹÌÇÏ´Â °ÍÀº ¹«¾ùÀϱî? int dv=m_DamageValues[i]; DWORD color=0xFF000000; if(0<=dv && dv<=5) color=SH_DamageColor[dv]; if ((m_DamageValues[i] <= 5) && (m_DamageValues[i]>=0)) { if ((m_DamageValues[i] != 4) || (m_DamageFlash)) { color = m_DamageColors[m_DamageValues[i]]; radar_device.pD3DDevice->SetTexture(0,radar_device.pDDSRadarDamageTexture); radar_device.pD3DDevice->SetRenderState( D3DRENDERSTATE_ALPHABLENDENABLE, TRUE ); radar_device.pD3DDevice->SetRenderState( D3DRENDERSTATE_SRCBLEND, D3DBLEND_SRCALPHA ); radar_device.pD3DDevice->SetRenderState( D3DRENDERSTATE_DESTBLEND, D3DBLEND_INVSRCALPHA ); radar_device.tw=256,radar_device.th=256; radar_device.DrawTexture( (offset3[m_TargetMechID][i][0]/2)+138, (offset3[m_TargetMechID][i][1]/2)+406, color, texuv3[m_TargetMechID][i][0]/2, texuv3[m_TargetMechID][i][1]/2, texuv3[m_TargetMechID][i][2]/2, texuv3[m_TargetMechID][i][3]/2 ); radar_device.tw=512,radar_device.th=512; } } } } else { // clear back ground texture RECT rc={140,407,340,607}; DDBLTFX fx={0,}; fx.dwSize=sizeof(fx); fx.dwFillColor=0; radar_device.pDDSTarget->Blt(&rc,NULL,NULL,DDBLT_COLORFILL ,&fx); } } if (m_ShowData) { //ÁÂÃø ÇÏ´ÜÀÇ targetÀÇ ¹«±âÀÇ »óŸ¦ Ç¥½ÃÇÏ´Â ·çƾ.. if (!m_ArmorMode) { stlport::vector::iterator iter; const int iy=350;//initial y; const int rh=18;//row height const int cw=80;//column width int cury= iy; int curx = 20; for (iter= m_Weapons.begin ();iter != m_Weapons.end ();iter++) { if (iter->m_TextureID == -1)continue; int dv=m_DamageValues[iter->m_PartLoc];//damagevalue if(dv<5) { DWORD shcolor=SH_DamageColor[dv]; mfd_device.DrawQuad(curx,cury,curx+cw-5,cury+rh-1,shcolor); mfd_device.pFont[1].DrawText(curx,cury+rh/2,0xFF000000,weapon_name[iter->m_TextureID],TEXTALIGN_LEFT|TEXTALIGN_VCENTER); } cury += rh; if ((cury+rh) >= 430) { cury = iy; curx += cw; } } } if (m_TargetTonnage == -1) { //ŸÄÏÀÌ ¸ÞÅ©°¡ ¾Æ´Ò¶§.. Verify (!m_ArmorMode); // only mechs show armor mode if (m_TargetVehicle.GetCurrent()->IsDerivedFrom (MWObject::DefaultData)) { MWObject *veh = Cast_Object (MWObject *,m_TargetVehicle.GetCurrent ()); if (m_ArmorValues[0] != (veh->m_HitPoints / veh->m_MaxHitPoints)) m_HitFlashCount[0] = 1; m_ArmorValues[0] = (veh->m_HitPoints / veh->m_MaxHitPoints); if (m_ArmorValues[0] != -1) { //µ¥¹ÌÁö ¸·´ë ±×·¡ÇÁ¸¦ ±×¸°´Ù. ³ôÀÌ¿Í »ö»ó µ¿½Ã¿¡ Ç¥ÇöµÈ´Ù. int level; level = (int) ((m_ArmorValues[0]*(MAX_HUD_DAMAGE_LEVEL))+0.5f); level = MAX_HUD_DAMAGE_LEVEL - level; Clamp (level,0,MAX_HUD_DAMAGE_LEVEL-2); float armorval=m_ArmorValues[0]; Clamp(armorval,0,1); mfd_device.DrawQuad(480-60,(int)(430-armorval*316),480+60,430,SH_DamageColor[level]); mfd_device.DrawFrame(480-60,114,480+60,430,0xFFFFFFFF); } } }//When the target is not a mech. else { //ŸÄÏÀÌ ¸ÞÅ©À϶§.. Verify (m_TargetVehicle.GetCurrent ()->IsDerivedFrom (Mech::DefaultData)); Mech *mech = Cast_Object(Mech *, m_TargetVehicle.GetCurrent()); Check_Object (mech); int i; for (i=0;idamageArray[i]) m_HitFlashCount[i] = 1; m_DamageValues[i] = mech->damageArray[i]; if (m_ArmorValues[i] != mech->armorArray[i]) m_HitFlashCount[i] = 1; m_ArmorValues[i] = mech->armorArray[i]; } if (m_ArmorMode) { //ŸÄÏÀÌ ¸ÞÅ©ÀÌ°í ¾Æ¸Ó ¸ðµåÀ϶§ for (i=0;iSetTexture(0,mfd_device.pDDSTexture); mfd_device.DrawTexture(x,392,hsh_color2,u1,v1,u2,v2); x+=10; mfd_device.pD3DDevice->SetTexture(0,0); mfd_device.DrawQuad(x,388-h,x+38,388,hsh_color); mfd_device.DrawFrame(x,388-280,x+38,388,0xFFFFFFFF); } } } else { // MSL 5.03 Target Damage Display mfd_device.LoadTargetTexture(texturename[m_TargetMechID]); //ŸÄÏÀÌ ¸ÞÅ©ÀÌ°í ¾Æ¸Ó ¸ðµå°¡ ¾Æ´Ò¶§.. if(mfd_device.pDDSTargetTexture==0) mfd_device.LoadTargetTexture(texturename[m_TargetMechID]); for (i=0;i<11;i++) {//13À̶ó´Â ¼ýÀÚ°¡ ÀǹÌÇÏ´Â °ÍÀº ¹«¾ùÀϱî? int dv=m_DamageValues[i]; DWORD color=0xFF000000; if(0<=dv && dv<=5)color=SH_DamageColor[dv]; switch (i) { case 7: // rear break; case 11: // s1 break; case 12: break; default: if ((m_DamageValues[i] <= 5) && (m_DamageValues[i]>=0)) { if ((m_DamageValues[i] != 4) || (m_DamageFlash)) { mfd_device.pD3DDevice->SetTexture(0,mfd_device.pDDSTargetTexture); mfd_device.pD3DDevice->SetRenderState( D3DRENDERSTATE_ALPHABLENDENABLE, TRUE ); mfd_device.pD3DDevice->SetRenderState( D3DRENDERSTATE_SRCBLEND, D3DBLEND_SRCALPHA ); mfd_device.pD3DDevice->SetRenderState( D3DRENDERSTATE_DESTBLEND, D3DBLEND_INVSRCALPHA ); mfd_device.DrawTexture( offset2[m_TargetMechID][i][0]+312, offset2[m_TargetMechID][i][1]+92, color, texuv2[m_TargetMechID][i][0], texuv2[m_TargetMechID][i][1], texuv2[m_TargetMechID][i][2], texuv2[m_TargetMechID][i][3] ); } } break; } } } }//When the target is a mech. }//m_ShowData mfd_device.pFont[0].DrawText(40,69,0xFFFFFFFF,hsh_targetrange,TEXTALIGN_LEFT|TEXTALIGN_VCENTER); mfd_device.pFont[0].DrawText(605,69,0xFFFFFFFF,hsh_targetname,TEXTALIGN_RIGHT|TEXTALIGN_VCENTER); } mfd_device.EndChannel(); } }