initial files
This commit is contained in:
275
kp_liberation.brf_sumava/scripts/client/ui/cinematic_camera.sqf
Normal file
275
kp_liberation.brf_sumava/scripts/client/ui/cinematic_camera.sqf
Normal file
@@ -0,0 +1,275 @@
|
||||
if ( isNil "active_sectors" ) then { active_sectors = [] };
|
||||
if ( isNil "GRLIB_all_fobs" ) then { GRLIB_all_fobs = [] };
|
||||
|
||||
cinematic_camera_started = true;
|
||||
private _last_transition = -1;
|
||||
private _last_position = [ -1, -1, -1 ];
|
||||
|
||||
showCinemaBorder true;
|
||||
private _cinematic_camera = "camera" camCreate [0,0,0];
|
||||
private _cinematic_pointer = "Sign_Arrow_Blue_F" createVehicleLocal [0,0,0];
|
||||
_cinematic_pointer hideObject true;
|
||||
_cinematic_camera camSetTarget _cinematic_pointer;
|
||||
_cinematic_camera cameraEffect ["internal","back"];
|
||||
_cinematic_camera camcommit 0;
|
||||
if ( isNil "first_camera_round" ) then { first_camera_round = true; };
|
||||
|
||||
while { cinematic_camera_started } do {
|
||||
|
||||
waitUntil { !cinematic_camera_started || camCommitted _cinematic_camera };
|
||||
|
||||
if ( cinematic_camera_started ) then {
|
||||
camUseNVG false;
|
||||
|
||||
private _positions = [ getpos startbase ];
|
||||
if ( !first_camera_round ) then {
|
||||
|
||||
if ( count GRLIB_all_fobs > 0 ) then {
|
||||
for [ {_idx=0},{_idx < 2},{_idx=_idx+1} ] do {
|
||||
_positions pushback (selectRandom GRLIB_all_fobs);
|
||||
};
|
||||
};
|
||||
|
||||
if ( count active_sectors > 0 ) then {
|
||||
for [ {_idx=0},{_idx < 5},{_idx=_idx+1} ] do {
|
||||
_positions pushback (markerPos (selectRandom active_sectors));
|
||||
};
|
||||
} else {
|
||||
for [ {_idx=0},{_idx < 5},{_idx=_idx+1} ] do {
|
||||
_positions pushback (markerPos (selectRandom sectors_allSectors));
|
||||
};
|
||||
};
|
||||
|
||||
if ( GRLIB_endgame == 0 ) then {
|
||||
_activeplayers = (allPlayers select {alive _x && (_x distance (markerPos GRLIB_respawn_marker)) > 100});
|
||||
if ( count _activeplayers > 0 ) then {
|
||||
for [ {_idx=0},{_idx < 3},{_idx=_idx+1} ] do {
|
||||
_positions pushback (getpos (selectRandom _activeplayers));
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
_position = selectRandom (_positions - [_last_position]);
|
||||
_last_position = _position;
|
||||
_cinematic_pointer setpos [ _position select 0, _position select 1, (_position select 2) + 7 ];
|
||||
private _nearentities = _position nearEntities [ "Man", 100 ];
|
||||
private _camtarget = _cinematic_pointer;
|
||||
if ( first_camera_round ) then {
|
||||
_camtarget = startbase;
|
||||
} else {
|
||||
if (count (_nearentities select {alive _x && isPlayer _x}) != 0) then {
|
||||
_camtarget = selectRandom (_nearentities select {alive _x && isPlayer _x});
|
||||
} else {
|
||||
if (count (_nearentities select { alive _x }) != 0) then {
|
||||
_camtarget = selectRandom (_nearentities select {alive _x});
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
_cinematic_camera camSetTarget _camtarget;
|
||||
private _startpos = [ ((getpos _camtarget) select 0) - 60, ((getpos _camtarget) select 1) + 350, 5 ];
|
||||
private _endpos = [ ((getpos _camtarget) select 0) - 60, ((getpos _camtarget) select 1) - 230, 5 ];
|
||||
private _startfov = 0.5;
|
||||
private _endfov = 0.5;
|
||||
|
||||
if ( !first_camera_round ) then {
|
||||
_startfov = 0.8;
|
||||
_endfov = 0.8;
|
||||
|
||||
_next_transition = selectRandom ([0, 1, 2, 3, 4, 5, 6, 7 ,8 ,9 ,10, 11 ,12 ,13 ,14, 15] - [_last_transition]);
|
||||
_last_transition = _next_transition;
|
||||
|
||||
switch ( _next_transition ) do {
|
||||
case 0: {
|
||||
_startpos = [ ((getpos _camtarget) select 0) - 30, ((getpos _camtarget) select 1) - 50, 15 ];
|
||||
_endpos = [ ((getpos _camtarget) select 0) - 30, ((getpos _camtarget) select 1) + 50, 15 ];
|
||||
_endfov = 0.8;
|
||||
};
|
||||
|
||||
case 1: {
|
||||
_startpos = [ ((getpos _camtarget) select 0) + 5, ((getpos _camtarget) select 1) - 100, 1 ];
|
||||
_endpos = [ ((getpos _camtarget) select 0) + 5, ((getpos _camtarget) select 1) + 100, 40 ];
|
||||
_endfov = 0.55;
|
||||
};
|
||||
|
||||
case 2: {
|
||||
_startpos = [ ((getpos _camtarget) select 0) + 50, ((getpos _camtarget) select 1) - 50, 100 ];
|
||||
_endpos = [ ((getpos _camtarget) select 0) + 50, ((getpos _camtarget) select 1) + 50, 100 ];
|
||||
_startfov = 0.5;
|
||||
_endfov = 0.3;
|
||||
};
|
||||
|
||||
case 3: {
|
||||
_startpos = [ ((getpos _camtarget) select 0) + 50, ((getpos _camtarget) select 1) - 80, 2 ];
|
||||
_endpos = [ ((getpos _camtarget) select 0) + 50, ((getpos _camtarget) select 1) + 80, 20 ];
|
||||
};
|
||||
|
||||
case 4: {
|
||||
_startpos = [ ((getpos _camtarget) select 0) - 400, ((getpos _camtarget) select 1) + 400, 50 ];
|
||||
_endpos = [ ((getpos _camtarget) select 0) + 400, ((getpos _camtarget) select 1) + 400, 50 ];
|
||||
_startfov = 0.25;
|
||||
_endfov = 0.25;
|
||||
};
|
||||
|
||||
case 5: {
|
||||
_startpos = [ ((getpos _camtarget) select 0) + 300, ((getpos _camtarget) select 1) - 100, 15 ];
|
||||
_endpos = [ ((getpos _camtarget) select 0) -300, ((getpos _camtarget) select 1) - 120, 15 ];
|
||||
};
|
||||
|
||||
case 6: {
|
||||
_startpos = [ ((getpos _camtarget) select 0) + 100, ((getpos _camtarget) select 1) - 100, 1 ];
|
||||
_endpos = [ ((getpos _camtarget) select 0) + 100, ((getpos _camtarget) select 1) - 100, 50 ];
|
||||
};
|
||||
|
||||
case 7: {
|
||||
_startpos = [ ((getpos _camtarget) select 0) + 50, ((getpos _camtarget) select 1) - 50, 150 ];
|
||||
_endpos = [ ((getpos _camtarget) select 0) + 20, ((getpos _camtarget) select 1) - 20, 5 ];
|
||||
_startfov = 0.6;
|
||||
_endfov = 0.9;
|
||||
};
|
||||
|
||||
case 8: {
|
||||
_startpos = [ ((getpos _camtarget) select 0) - 300, ((getpos _camtarget) select 1) - 80, 20 ];
|
||||
_endpos = [ ((getpos _camtarget) select 0) + 300, ((getpos _camtarget) select 1) + 120, 20 ];
|
||||
_startfov = 0.55;
|
||||
_endfov = 0.55;
|
||||
};
|
||||
|
||||
case 9: {
|
||||
_startpos = [ ((getpos _camtarget) select 0) - 80, ((getpos _camtarget) select 1) - 300, 30 ];
|
||||
_endpos = [ ((getpos _camtarget) select 0) + 120, ((getpos _camtarget) select 1) + 300, 30 ];
|
||||
_startfov = 0.65;
|
||||
_endfov = 0.65;
|
||||
};
|
||||
|
||||
case 10: {
|
||||
_startpos = [ ((getpos _camtarget) select 0) - 5, ((getpos _camtarget) select 1) + 30, 5 ];
|
||||
_endpos = [ ((getpos _camtarget) select 0) - 25, ((getpos _camtarget) select 1) -30, 150 ];
|
||||
};
|
||||
|
||||
case 11 : {
|
||||
_cinematic_camera cameraEffect ["Terminate", "BACK"];
|
||||
camDestroy _cinematic_camera;
|
||||
_cinematic_camera = "camera" camCreate [0,0,0];
|
||||
_cinematic_camera cameraEffect ["internal","back"];
|
||||
_cinematic_camera camcommit 0;
|
||||
_startpos = [ ((getpos _camtarget) select 0) + 2, ((getpos _camtarget) select 1) -200, 25 ];
|
||||
_endpos = [ ((getpos _camtarget) select 0) + 2, ((getpos _camtarget) select 1) +200, 25 ];
|
||||
_cinematic_camera setDir 0;
|
||||
[ _cinematic_camera, -30, 0 ] call BIS_fnc_setPitchBank;
|
||||
};
|
||||
|
||||
case 12 : {
|
||||
_cinematic_camera cameraEffect ["Terminate", "BACK"];
|
||||
camDestroy _cinematic_camera;
|
||||
_cinematic_camera = "camera" camCreate [0,0,0];
|
||||
_cinematic_camera cameraEffect ["internal","back"];
|
||||
_cinematic_camera camcommit 0;
|
||||
_startpos = [ ((getpos _camtarget) select 0) + 302 , ((getpos _camtarget) select 1) + 300, 50 ];
|
||||
_endpos = [ ((getpos _camtarget) select 0) - 198, ((getpos _camtarget) select 1) - 200, 50 ];
|
||||
_cinematic_camera setDir 225;
|
||||
[ _cinematic_camera, -25, 0 ] call BIS_fnc_setPitchBank;
|
||||
};
|
||||
|
||||
case 13 : {
|
||||
_cinematic_camera cameraEffect ["Terminate", "BACK"];
|
||||
camDestroy _cinematic_camera;
|
||||
_cinematic_camera = "camera" camCreate [0,0,0];
|
||||
_cinematic_camera cameraEffect ["internal","back"];
|
||||
_cinematic_camera camcommit 0;
|
||||
_startpos = [ ((getpos _camtarget) select 0) - 80 , ((getpos _camtarget) select 1) + 150, 20 ];
|
||||
_endpos = [ ((getpos _camtarget) select 0) - 80, ((getpos _camtarget) select 1) - 150, 20 ];
|
||||
_cinematic_camera setDir 90;
|
||||
[ _cinematic_camera, -15, 0 ] call BIS_fnc_setPitchBank;
|
||||
};
|
||||
|
||||
case 14 : {
|
||||
_cinematic_camera cameraEffect ["Terminate", "BACK"];
|
||||
camDestroy _cinematic_camera;
|
||||
_cinematic_camera = "camera" camCreate [0,0,0];
|
||||
_cinematic_camera cameraEffect ["internal","back"];
|
||||
_cinematic_camera camcommit 0;
|
||||
_startpos = [ ((getpos _camtarget) select 0) - 50 , ((getpos _camtarget) select 1) + 2, 30 ];
|
||||
_endpos = [ ((getpos _camtarget) select 0) + 150, ((getpos _camtarget) select 1) - 2, 30 ];
|
||||
_cinematic_camera setDir 270;
|
||||
[ _cinematic_camera, -20, 0 ] call BIS_fnc_setPitchBank;
|
||||
_startfov = 0.55;
|
||||
_endfov = 0.55;
|
||||
};
|
||||
|
||||
case 15 : {
|
||||
_cinematic_camera cameraEffect ["Terminate", "BACK"];
|
||||
camDestroy _cinematic_camera;
|
||||
_cinematic_camera = "camera" camCreate [0,0,0];
|
||||
_cinematic_camera cameraEffect ["internal","back"];
|
||||
_cinematic_camera camcommit 0;
|
||||
_startpos = [ ((getpos _camtarget) select 0) - 150 , ((getpos _camtarget) select 1) + 5, 250 ];
|
||||
_endpos = [ ((getpos _camtarget) select 0) + 150, ((getpos _camtarget) select 1) + 5, 250 ];
|
||||
_cinematic_camera setDir 0;
|
||||
[ _cinematic_camera, -88, 0 ] call BIS_fnc_setPitchBank;
|
||||
_startfov = 0.3;
|
||||
_endfov = 0.3;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
if ( surfaceIsWater _position ) then {
|
||||
_startpos = [ _startpos select 0, _startpos select 1, (_startpos select 2) + 25 ];
|
||||
_endpos = [ _endpos select 0, _endpos select 1, (_endpos select 2) + 25 ];
|
||||
};
|
||||
|
||||
while { terrainIntersect [ _startpos, _endpos ] } do {
|
||||
_startpos = [ _startpos select 0, _startpos select 1, (_startpos select 2) + 30 ];
|
||||
_endpos = [ _endpos select 0, _endpos select 1, (_endpos select 2) + 30 ];
|
||||
};
|
||||
|
||||
_cinematic_camera camSetPos _startpos;
|
||||
_cinematic_camera camSetFov _startfov;
|
||||
_cinematic_camera camCommit 0;
|
||||
_cinematic_camera camSetPos _endpos;
|
||||
_cinematic_camera camSetFov _endfov;
|
||||
|
||||
if ( isNil "howtoplay" ) then { howtoplay = 0; };
|
||||
|
||||
if ( first_camera_round ) then {
|
||||
_cinematic_camera camcommit 18;
|
||||
} else {
|
||||
if ( howtoplay == 0 ) then {
|
||||
_cinematic_camera camcommit 10;
|
||||
} else {
|
||||
_cinematic_camera camcommit 20;
|
||||
};
|
||||
};
|
||||
first_camera_round = false;
|
||||
|
||||
if ( !isNil "showcaminfo" ) then {
|
||||
if ( showcaminfo && howtoplay == 0 ) then {
|
||||
private _unitname = "";
|
||||
if ( isPlayer _camtarget ) then { _unitname = name _camtarget };
|
||||
private _nearest_sector = "";
|
||||
if ( _position distance startbase < 300 ) then {
|
||||
_nearest_sector = "BEGIN OF OPERATION";
|
||||
} else {
|
||||
_nearest_sector = [300, _position ] call KPLIB_fnc_getNearestSector;
|
||||
if ( _nearest_sector != "" ) then {
|
||||
_nearest_sector = markertext _nearest_sector;
|
||||
} else {
|
||||
_nearfobs = GRLIB_all_fobs select {_x distance _position < 300};
|
||||
if ( count _nearfobs > 0 ) then {
|
||||
_nearest_sector = format [ "FOB %1", military_alphabet select ( GRLIB_all_fobs find ( _nearfobs select 0 ) ) ];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
[ format [ "<t size='0.7' align='left'>%1<br/>%2</t>", _unitname, _nearest_sector ],1,0.8,6,1 ] spawn BIS_fnc_dynamictext;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
_cinematic_camera cameraEffect ["Terminate", "BACK"];
|
||||
camDestroy _cinematic_camera;
|
||||
camUseNVG false;
|
||||
cinematic_camera_stop = true;
|
||||
154
kp_liberation.brf_sumava/scripts/client/ui/end_screen.sqf
Normal file
154
kp_liberation.brf_sumava/scripts/client/ui/end_screen.sqf
Normal file
@@ -0,0 +1,154 @@
|
||||
params [
|
||||
"_stats_ammo_produced",
|
||||
"_stats_ammo_spent",
|
||||
"_stats_blufor_soldiers_killed",
|
||||
"_stats_blufor_soldiers_recruited",
|
||||
"_stats_blufor_teamkills",
|
||||
"_stats_blufor_vehicles_built",
|
||||
"_stats_blufor_vehicles_killed",
|
||||
"_stats_civilian_buildings_destroyed",
|
||||
"_stats_civilian_vehicles_killed",
|
||||
"_stats_civilian_vehicles_killed_by_players",
|
||||
"_stats_civilian_vehicles_seized",
|
||||
"_stats_civilians_healed",
|
||||
"_stats_civilians_killed",
|
||||
"_stats_civilians_killed_by_players",
|
||||
"_stats_fobs_built",
|
||||
"_stats_fobs_lost",
|
||||
"_stats_fuel_produced",
|
||||
"_stats_fuel_spent",
|
||||
"_stats_hostile_battlegroups",
|
||||
"_stats_ieds_detonated",
|
||||
"_stats_opfor_killed_by_players",
|
||||
"_stats_opfor_soldiers_killed",
|
||||
"_stats_opfor_vehicles_killed",
|
||||
"_stats_opfor_vehicles_killed_by_players",
|
||||
"_stats_player_deaths",
|
||||
"_stats_playtime",
|
||||
"_stats_prisoners_captured",
|
||||
"_stats_readiness_earned",
|
||||
"_stats_reinforcements_called",
|
||||
"_stats_resistance_killed",
|
||||
"_stats_resistance_teamkills",
|
||||
"_stats_resistance_teamkills_by_players",
|
||||
"_stats_secondary_objectives",
|
||||
"_stats_sectors_liberated",
|
||||
"_stats_sectors_lost",
|
||||
"_stats_spartan_respawns",
|
||||
"_stats_supplies_produced",
|
||||
"_stats_supplies_spent",
|
||||
"_stats_vehicles_recycled",
|
||||
"_stats_rabbits_killed"
|
||||
];
|
||||
|
||||
// Some preparations
|
||||
if (isNil "cinematic_camera_started") then {cinematic_camera_started = false};
|
||||
private _line_delay = 0.75;
|
||||
private _page_delay = 5;
|
||||
private _addReportLine = {
|
||||
params [
|
||||
"_control",
|
||||
"_string",
|
||||
["_pageEnd", false, [false]]
|
||||
];
|
||||
|
||||
if (dialog) then {
|
||||
[_control, _string] call write_credit_line;
|
||||
sleep ([_line_delay, _page_delay] select _pageEnd);
|
||||
};
|
||||
};
|
||||
private _cleanPage = {
|
||||
if (dialog) then {
|
||||
ctrlSetText [691, ""];
|
||||
ctrlSetText [692, ""];
|
||||
ctrlSetText [693, ""];
|
||||
ctrlSetText [694, ""];
|
||||
ctrlSetText [695, ""];
|
||||
ctrlSetText [696, ""];
|
||||
sleep 2;
|
||||
};
|
||||
};
|
||||
|
||||
// Calculate the playtime
|
||||
private _playtime_days = floor (_stats_playtime / 86400);
|
||||
private _playtime_hours = floor ((_stats_playtime % 86400) / 3600);
|
||||
private _playtime_minutes = floor ((_stats_playtime % 3600) / 60);
|
||||
private _playtime_seconds = _stats_playtime % 60;
|
||||
|
||||
[] spawn cinematic_camera;
|
||||
|
||||
private _dialog = createDialog "liberation_endscreen";
|
||||
waitUntil {dialog};
|
||||
if (dialog) then {sleep 3};
|
||||
|
||||
// Playtime line
|
||||
[690, format [localize "STR_STATS_PLAYTIME", _playtime_days, _playtime_hours, _playtime_minutes, _playtime_seconds]] call _addReportLine;
|
||||
if (dialog) then {sleep 3};
|
||||
|
||||
// First page
|
||||
[691, format [localize "STR_STATS_OPFOR_K_INF", _stats_opfor_soldiers_killed]] call _addReportLine;
|
||||
[692, format [localize "STR_STATS_OPFOR_K_INF_PL", _stats_opfor_killed_by_players]] call _addReportLine;
|
||||
[693, format [localize "STR_STATS_OPFOR_K_VEH", _stats_opfor_vehicles_killed]] call _addReportLine;
|
||||
[694, format [localize "STR_STATS_OPFOR_K_VEH_PL", _stats_opfor_vehicles_killed_by_players], true] call _addReportLine;
|
||||
[] call _cleanPage;
|
||||
|
||||
// Second page
|
||||
[691, format [localize "STR_STATS_BLUFOR_B_INF", _stats_blufor_soldiers_recruited]] call _addReportLine;
|
||||
[692, format [localize "STR_STATS_BLUFOR_K_INF", _stats_blufor_soldiers_killed]] call _addReportLine;
|
||||
[693, format [localize "STR_STATS_BLUFOR_B_VEH", _stats_blufor_vehicles_built]] call _addReportLine;
|
||||
[694, format [localize "STR_STATS_BLUFOR_K_VEH", _stats_blufor_vehicles_killed]] call _addReportLine;
|
||||
[695, format [localize "STR_STATS_BLUFOR_K_PL", _stats_player_deaths]] call _addReportLine;
|
||||
[696, format [localize "STR_STATS_BLUFOR_TK", _stats_blufor_teamkills], true] call _addReportLine;
|
||||
[] call _cleanPage;
|
||||
|
||||
// Third page
|
||||
[691, format [localize "STR_STATS_GUE_K_INF", _stats_resistance_killed]] call _addReportLine;
|
||||
[692, format [localize "STR_STATS_GUE_TK_INF", _stats_resistance_teamkills]] call _addReportLine;
|
||||
[693, format [localize "STR_STATS_GUE_TK_INF_PL", _stats_resistance_teamkills_by_players]] call _addReportLine;
|
||||
[694, format [localize "STR_STATS_CIV_K_INF", _stats_civilians_killed]] call _addReportLine;
|
||||
[695, format [localize "STR_STATS_CIV_K_INF_PL", _stats_civilians_killed_by_players]] call _addReportLine;
|
||||
[696, format [localize "STR_STATS_CIV_B_INF", _stats_civilians_healed], true] call _addReportLine;
|
||||
[] call _cleanPage;
|
||||
|
||||
// Fourth page
|
||||
[691, format [localize "STR_STATS_CIV_K_VEH", _stats_civilian_vehicles_killed]] call _addReportLine;
|
||||
[692, format [localize "STR_STATS_CIV_K_VEH_PL", _stats_civilian_vehicles_killed_by_players]] call _addReportLine;
|
||||
[693, format [localize "STR_STATS_CIV_S_VEH", _stats_civilian_vehicles_seized]] call _addReportLine;
|
||||
[694, format [localize "STR_STATS_CIV_K_BUILDINGS", _stats_civilian_buildings_destroyed]] call _addReportLine;
|
||||
[695, format [localize "STR_STATS_VEH_RECYCLED", _stats_vehicles_recycled], true] call _addReportLine;
|
||||
[] call _cleanPage;
|
||||
|
||||
// Fifth page
|
||||
[691, format [localize "STR_STATS_PROD_AMMO", _stats_ammo_produced]] call _addReportLine;
|
||||
[692, format [localize "STR_STATS_SPENT_AMMO", _stats_ammo_spent]] call _addReportLine;
|
||||
[693, format [localize "STR_STATS_PROD_FUEL", _stats_fuel_produced]] call _addReportLine;
|
||||
[694, format [localize "STR_STATS_SPENT_FUEL", _stats_fuel_spent]] call _addReportLine;
|
||||
[695, format [localize "STR_STATS_PROD_SUPPLY", _stats_supplies_produced]] call _addReportLine;
|
||||
[696, format [localize "STR_STATS_SPENT_SUPPLY", _stats_supplies_spent], true] call _addReportLine;
|
||||
[] call _cleanPage;
|
||||
|
||||
// Sixth page
|
||||
[691, format [localize "STR_STATS_SECTORS_CAPTURED", _stats_sectors_liberated]] call _addReportLine;
|
||||
[692, format [localize "STR_STATS_SECTORS_LOST", _stats_sectors_lost]] call _addReportLine;
|
||||
[693, format [localize "STR_STATS_FOBS_BUILT", _stats_fobs_built]] call _addReportLine;
|
||||
[694, format [localize "STR_STATS_FOBS_LOST", _stats_fobs_lost]] call _addReportLine;
|
||||
[695, format [localize "STR_STATS_SIDEMISSIONS", _stats_secondary_objectives]] call _addReportLine;
|
||||
[696, format [localize "STR_STATS_PRISONERS", _stats_prisoners_captured], true] call _addReportLine;
|
||||
[] call _cleanPage;
|
||||
|
||||
// Seventh page
|
||||
[691, format [localize "STR_STATS_BATTLEGROUPS", _stats_hostile_battlegroups]] call _addReportLine;
|
||||
[692, format [localize "STR_STATS_REINFORCEMENTS", _stats_reinforcements_called]] call _addReportLine;
|
||||
[693, format [localize "STR_STATS_COMBATREADINESS", round _stats_readiness_earned]] call _addReportLine;
|
||||
[694, format [localize "STR_STATS_IEDS", _stats_ieds_detonated]] call _addReportLine;
|
||||
[695, format [localize "STR_STATS_POTATO", _stats_spartan_respawns]] call _addReportLine;
|
||||
[696, format [localize "STR_STATS_RABBITS", _stats_rabbits_killed], true] call _addReportLine;
|
||||
[] call _cleanPage;
|
||||
|
||||
// Eighth page
|
||||
[693, localize "STR_STATS_END1"] call _addReportLine;
|
||||
[694, localize "STR_STATS_END2"] call _addReportLine;
|
||||
[696, localize "STR_STATS_END3"] call _addReportLine;
|
||||
|
||||
waitUntil {!dialog};
|
||||
cinematic_camera_started = false;
|
||||
28
kp_liberation.brf_sumava/scripts/client/ui/intro.sqf
Normal file
28
kp_liberation.brf_sumava/scripts/client/ui/intro.sqf
Normal file
@@ -0,0 +1,28 @@
|
||||
if ( isNil "cinematic_camera_started" ) then { cinematic_camera_started = false };
|
||||
sleep 0.5;
|
||||
waitUntil { time > 0 };
|
||||
|
||||
[] spawn cinematic_camera;
|
||||
|
||||
if ( GRLIB_introduction ) then {
|
||||
|
||||
sleep 1;
|
||||
cutRsc ["intro1","PLAIN",1,true];
|
||||
sleep 5.5;
|
||||
cutRsc ["intro2","PLAIN",1,true];
|
||||
sleep 10;
|
||||
|
||||
};
|
||||
|
||||
showcaminfo = true;
|
||||
dostartgame = 0;
|
||||
howtoplay = 0;
|
||||
private _dialog = createDialog "liberation_menu";
|
||||
waitUntil { dialog };
|
||||
waitUntil { dostartgame == 1 || howtoplay == 1 || !dialog };
|
||||
|
||||
closeDialog 0;
|
||||
if ( howtoplay == 0 ) then {
|
||||
cinematic_camera_started = false;
|
||||
};
|
||||
introDone = true;
|
||||
81
kp_liberation.brf_sumava/scripts/client/ui/secondary_ui.sqf
Normal file
81
kp_liberation.brf_sumava/scripts/client/ui/secondary_ui.sqf
Normal file
@@ -0,0 +1,81 @@
|
||||
if ( isNil "GRLIB_secondary_starting" ) then { GRLIB_secondary_starting = false; };
|
||||
if ( isNil "GRLIB_secondary_in_progress" ) then { GRLIB_secondary_in_progress = -1; };
|
||||
|
||||
_dialog = createDialog "liberation_secondary";
|
||||
dostartsecondary = 0;
|
||||
|
||||
waitUntil { dialog };
|
||||
|
||||
{
|
||||
lbAdd [ 101, localize _x ];
|
||||
} foreach [
|
||||
"STR_SECONDARY_MISSION0",
|
||||
"STR_SECONDARY_MISSION1",
|
||||
"STR_SECONDARY_MISSION2"
|
||||
];
|
||||
|
||||
private [ "_oldchoice", "_images", "_briefings", "_missioncost" ];
|
||||
|
||||
_images = [
|
||||
"res\secondary\fob_hunting.jpg",
|
||||
"res\secondary\convoy_hijack.jpg",
|
||||
"res\secondary\sar.jpg"
|
||||
];
|
||||
|
||||
_briefings = [
|
||||
"STR_SECONDARY_BRIEFING0",
|
||||
"STR_SECONDARY_BRIEFING1",
|
||||
"STR_SECONDARY_BRIEFING2"
|
||||
];
|
||||
|
||||
_oldchoice = -1;
|
||||
lbSetCurSel [ 101, 0 ];
|
||||
|
||||
while { dialog && alive player && dostartsecondary == 0 } do {
|
||||
|
||||
if ( _oldchoice != lbCurSel 101 ) then {
|
||||
_oldchoice = lbCurSel 101;
|
||||
ctrlSetText [ 106, _images select _oldchoice ];
|
||||
((findDisplay 6842) displayCtrl (102)) ctrlSetStructuredText parseText localize (_briefings select _oldchoice);
|
||||
};
|
||||
|
||||
_missioncost = GRLIB_secondary_missions_costs select _oldchoice;
|
||||
|
||||
if ( ( _missioncost <= resources_intel ) && ( !GRLIB_secondary_starting ) ) then {
|
||||
ctrlEnable [ 103, true ];
|
||||
((findDisplay 6842) displayCtrl (103)) ctrlSetTooltip "";
|
||||
} else {
|
||||
ctrlEnable [ 103, false ];
|
||||
if ( _missioncost > resources_intel ) then {
|
||||
((findDisplay 6842) displayCtrl (103)) ctrlSetTooltip (localize "STR_SECONDARY_NOT_ENOUGH_INTEL");
|
||||
};
|
||||
if ( GRLIB_secondary_starting ) then {
|
||||
((findDisplay 6842) displayCtrl (103)) ctrlSetTooltip (localize "STR_SECONDARY_IN_PROGRESS");
|
||||
};
|
||||
};
|
||||
|
||||
if ( GRLIB_secondary_in_progress >= 0 ) then {
|
||||
lbSetCurSel [ 101, GRLIB_secondary_in_progress ];
|
||||
ctrlEnable [ 101, false ];
|
||||
} else {
|
||||
ctrlEnable [ 101, true ];
|
||||
};
|
||||
|
||||
ctrlSetText [ 107, format [ localize "STR_SECONDARY_INTEL", resources_intel ] ];
|
||||
sleep 0.1;
|
||||
};
|
||||
|
||||
if ( dostartsecondary == 1 ) then {
|
||||
private _index = lbCurSel 101;
|
||||
if !(([2000,999999,false] call KPLIB_fnc_getOpforSpawnPoint) isEqualTo "") then {
|
||||
[_index] remoteExec ["start_secondary_remote_call", 2];
|
||||
} else {
|
||||
hint "There is not enough enemy territory left for secondary missions.";
|
||||
uiSleep 2;
|
||||
hintSilent "";
|
||||
}
|
||||
};
|
||||
|
||||
if ( dialog ) then {
|
||||
closeDialog 0;
|
||||
};
|
||||
249
kp_liberation.brf_sumava/scripts/client/ui/squad_management.sqf
Normal file
249
kp_liberation.brf_sumava/scripts/client/ui/squad_management.sqf
Normal file
@@ -0,0 +1,249 @@
|
||||
private [ "_dialog", "_membercount", "_memberselection", "_unitname", "_selectedmember", "_cfgVehicles", "_cfgWeapons", "_primary_mags", "_secondary_mags", "_vehstring", "_nearfob", "_fobdistance", "_nearsquad", "_tempgmp", "_destpos", "_destdir", "_resupplied","_firstloop", "_squad_camera", "_targetobject", "_isvehicle" ];
|
||||
|
||||
GRLIB_squadaction = -1;
|
||||
GRLIB_squadconfirm = -1;
|
||||
_membercount = -1;
|
||||
_resupplied = false;
|
||||
_memberselection = -1;
|
||||
_selectedmember = objNull;
|
||||
_dialog = createDialog "liberation_squad";
|
||||
_cfgVehicles = configFile >> "cfgVehicles";
|
||||
_cfgWeapons = configFile >> "cfgWeapons";
|
||||
_firstloop = true;
|
||||
_isvehicle = false;
|
||||
|
||||
waitUntil { dialog };
|
||||
|
||||
|
||||
_targetobject = "Sign_Sphere100cm_F" createVehicleLocal [ 0, 0, 0 ];
|
||||
hideObject _targetobject;
|
||||
|
||||
_squad_camera = "camera" camCreate (getpos player);
|
||||
_squad_camera cameraEffect ["internal","back", "rtt"];
|
||||
_squad_camera camSetTarget _targetobject;
|
||||
_squad_camera camcommit 0;
|
||||
"rtt" setPiPEffect [0];
|
||||
|
||||
while { dialog && alive player } do {
|
||||
|
||||
if ( { alive _x } count (units group player) != _membercount ) then {
|
||||
|
||||
_membercount = { alive _x } count (units group player);
|
||||
|
||||
lbClear 101;
|
||||
{
|
||||
if ( alive _x ) then {
|
||||
_unitname = format ["%1. ", [ _x ] call KPLIB_fnc_getUnitPositionId];
|
||||
if(isPlayer _x) then {
|
||||
if ( count (squadParams _x ) != 0) then {
|
||||
_unitname = "[" + ((squadParams _x select 0) select 0) + "] ";
|
||||
};
|
||||
};
|
||||
_unitname = _unitname + ( name _x );
|
||||
lbAdd [ 101, _unitname ];
|
||||
};
|
||||
} foreach (units group player);
|
||||
|
||||
if ( _firstloop ) then {
|
||||
lbSetCurSel [ 101, 0 ];
|
||||
_firstloop = false;
|
||||
};
|
||||
};
|
||||
|
||||
_selectedmember = objNull;
|
||||
if ( lbCurSel 101 != -1 && (count (units group player ) > lbCurSel 101 ) ) then {
|
||||
_selectedmember = (units group player) select (lbCurSel 101);
|
||||
};
|
||||
|
||||
if ( !(isNull _selectedmember) ) then {
|
||||
"spawn_marker" setMarkerPosLocal (getpos _selectedmember);
|
||||
ctrlMapAnimClear ((findDisplay 5155) displayCtrl 100);
|
||||
((findDisplay 5155) displayCtrl 100) ctrlMapAnimAdd [0, 0.3, getpos _selectedmember];
|
||||
ctrlMapAnimCommit ((findDisplay 5155) displayCtrl 100);
|
||||
};
|
||||
|
||||
if ( !(isNull _selectedmember) ) then {
|
||||
if ( _memberselection != lbCurSel 101 || _resupplied || ( ( vehicle _selectedmember == _selectedmember && _isvehicle ) || ( vehicle _selectedmember != _selectedmember && !_isvehicle ) ) ) then {
|
||||
_memberselection = lbCurSel 101;
|
||||
_resupplied = false;
|
||||
|
||||
if (vehicle _selectedmember == _selectedmember) then {
|
||||
_targetobject attachTo [ _selectedmember, [0, 10, 0.05], "neck" ];
|
||||
_squad_camera attachTo [ _selectedmember, [0, 0.25, 0.05], "neck" ];
|
||||
_isvehicle = false;
|
||||
} else {
|
||||
_targetobject attachTo [ vehicle _selectedmember, [0, 20, 2]];
|
||||
_squad_camera attachTo [ vehicle _selectedmember, [0, 0, 2]];
|
||||
_isvehicle = true;
|
||||
};
|
||||
_squad_camera camcommit 0;
|
||||
|
||||
_unitname = format ["%1. ", [ _selectedmember ] call KPLIB_fnc_getUnitPositionId];
|
||||
if(isPlayer _selectedmember) then {
|
||||
if ( count (squadParams _selectedmember ) != 0) then {
|
||||
_unitname = "[" + ((squadParams _selectedmember select 0) select 0) + "] ";
|
||||
};
|
||||
};
|
||||
_unitname = _unitname + ( name _selectedmember );
|
||||
ctrlSetText [ 201, _unitname];
|
||||
|
||||
ctrlSetText [ 202, getText (_cfgVehicles >> (typeof _selectedmember) >> "displayName") ];
|
||||
ctrlSetText [ 203, format ["%1 %2%3", localize 'STR_HEALTH', round (100 - ((damage _selectedmember) * 100)), '%' ] ];
|
||||
|
||||
((findDisplay 5155) displayCtrl 203) ctrlSetTextColor [1,1,1,1];
|
||||
if ( damage _selectedmember > 0.4 ) then { ((findDisplay 5155) displayCtrl 203) ctrlSetTextColor [1,1,0,1]; };
|
||||
if ( damage _selectedmember > 0.6 ) then { ((findDisplay 5155) displayCtrl 203) ctrlSetTextColor [1,0.5,0,1]; };
|
||||
if ( damage _selectedmember > 0.8 ) then { ((findDisplay 5155) displayCtrl 203) ctrlSetTextColor [1,0,0,1]; };
|
||||
|
||||
ctrlSetText [ 204, format ["%1 %2m", localize 'STR_DISTANCE', round (player distance _selectedmember) ] ];
|
||||
|
||||
if ( primaryWeapon _selectedmember != "") then {
|
||||
ctrlSetText [ 205, format ["%1: %2", localize 'STR_PRIMARY_WEAPON', getText (_cfgWeapons >> (primaryWeapon _selectedmember) >> "displayName") ] ];
|
||||
|
||||
_primary_mags = 0;
|
||||
if ( count primaryWeaponMagazine _selectedmember > 0 ) then {
|
||||
_primary_mags = 1;
|
||||
{ if ( ( _x select 0 ) == ( ( primaryWeaponMagazine _selectedmember ) select 0 ) ) then { _primary_mags = _primary_mags + 1; } } foreach (magazinesAmmo _selectedmember);
|
||||
};
|
||||
|
||||
ctrlSetText [ 206, format ["%1: %2", localize 'STR_AMMO', _primary_mags ] ];
|
||||
} else {
|
||||
ctrlSetText [ 205, format ["%1: %2", localize 'STR_PRIMARY_WEAPON', localize 'STR_NONE' ] ];
|
||||
ctrlSetText [ 206, format ["%1: %2", localize 'STR_AMMO', 0 ] ];
|
||||
};
|
||||
|
||||
if ( secondaryWeapon _selectedmember != "") then {
|
||||
ctrlSetText [ 207, format ["%1: %2", localize 'STR_SECONDARY_WEAPON', getText (_cfgWeapons >> (secondaryWeapon _selectedmember) >> "displayName") ] ];
|
||||
|
||||
_secondary_mags = 0;
|
||||
if ( count secondaryWeaponMagazine _selectedmember > 0 ) then {
|
||||
_secondary_mags = 1;
|
||||
{ if ( ( _x select 0 ) == ( ( secondaryWeaponMagazine _selectedmember ) select 0 ) ) then { _secondary_mags = _secondary_mags + 1; } } foreach (magazinesAmmo _selectedmember);
|
||||
};
|
||||
|
||||
ctrlSetText [ 208, format ["%1: %2", localize 'STR_AMMO', _secondary_mags ] ];
|
||||
} else {
|
||||
ctrlSetText [ 207, format ["%1: %2", localize 'STR_SECONDARY_WEAPON', localize 'STR_NONE' ] ];
|
||||
ctrlSetText [ 208, format ["%1: %2", localize 'STR_AMMO', 0 ] ];
|
||||
};
|
||||
|
||||
if ( vehicle _selectedmember == _selectedmember ) then {
|
||||
ctrlSetText [ 209, "" ];
|
||||
} else {
|
||||
_vehstring = localize 'STR_PASSENGER';
|
||||
if (driver vehicle _selectedmember == _selectedmember ) then { _vehstring = localize 'STR_DRIVER'; };
|
||||
if (gunner vehicle _selectedmember == _selectedmember ) then { _vehstring = localize 'STR_GUNNER'; };
|
||||
if (commander vehicle _selectedmember == _selectedmember ) then { _vehstring = localize 'STR_COMMANDER'; };
|
||||
_vehstring = _vehstring + format [ " (%1)", getText (_cfgVehicles >> (typeof vehicle _selectedmember) >> "displayName") ];
|
||||
ctrlSetText [ 209, _vehstring ];
|
||||
};
|
||||
};
|
||||
} else {
|
||||
{ ctrlSetText [ _x, "" ] } foreach [ 201, 202, 203, 204, 205, 206, 207, 208, 209 ];
|
||||
GRLIB_squadconfirm = -1;
|
||||
GRLIB_squadaction = -1;
|
||||
};
|
||||
|
||||
if ( GRLIB_squadaction == -1 ) then {
|
||||
ctrlEnable [ 213, false ];
|
||||
ctrlEnable [ 214, false ];
|
||||
if ( !(isPlayer _selectedmember) && (vehicle _selectedmember == _selectedmember) ) then {
|
||||
ctrlEnable [ 210, true ];
|
||||
if ( leader group player == player ) then {
|
||||
ctrlEnable [ 211, true ];
|
||||
};
|
||||
ctrlEnable [ 212, true ];
|
||||
} else {
|
||||
ctrlEnable [ 210, false ];
|
||||
ctrlEnable [ 211, false ];
|
||||
ctrlEnable [ 212, false ];
|
||||
};
|
||||
} else {
|
||||
ctrlEnable [ 210, false ];
|
||||
ctrlEnable [ 211, false ];
|
||||
ctrlEnable [ 212, false ];
|
||||
ctrlEnable [ 213, true ];
|
||||
ctrlEnable [ 214, true ];
|
||||
};
|
||||
|
||||
if( GRLIB_squadconfirm == 0 ) then {
|
||||
GRLIB_squadconfirm = -1;
|
||||
GRLIB_squadaction = -1;
|
||||
};
|
||||
|
||||
if ( GRLIB_squadconfirm == 1 ) then {
|
||||
GRLIB_squadconfirm = -1;
|
||||
|
||||
if ( GRLIB_squadaction == 1 ) then {
|
||||
|
||||
_nearfob = [ getpos _selectedmember ] call KPLIB_fnc_getNearestFob;
|
||||
_fobdistance = 9999;
|
||||
if ( count _nearfob == 3 ) then {
|
||||
_fobdistance = _selectedmember distance _nearfob;
|
||||
};
|
||||
|
||||
_nearsquad = (getPos _selectedmember) nearEntities [KPLIB_aiResupplySources, 30];
|
||||
|
||||
if ( _fobdistance < 100 || count _nearsquad > 0 ) then {
|
||||
|
||||
_tempgmp = createGroup [GRLIB_side_friendly, true];
|
||||
(typeof _selectedmember) createUnit [ markers_reset, _tempgmp,''];
|
||||
[ (units _tempgmp) select 0, _selectedmember ] call KPLIB_fnc_swapInventory;
|
||||
deleteVehicle ((units _tempgmp) select 0);
|
||||
_selectedmember setDamage 0;
|
||||
|
||||
hint localize 'STR_RESUPPLY_OK';
|
||||
_resupplied = true;
|
||||
} else {
|
||||
hint localize 'STR_RESUPPLY_KO';
|
||||
};
|
||||
};
|
||||
|
||||
if (GRLIB_squadaction == 2) then {
|
||||
deleteVehicle _selectedmember;
|
||||
_resupplied = true;
|
||||
hint localize 'STR_REMOVE_OK';
|
||||
};
|
||||
|
||||
if (GRLIB_squadaction == 3) then {
|
||||
|
||||
closeDialog 0;
|
||||
|
||||
if ( primaryWeapon player == "" && secondaryWeapon player == "" ) then {
|
||||
[ _selectedmember, player ] call KPLIB_fnc_swapInventory;
|
||||
};
|
||||
|
||||
_destpos = getposATL _selectedmember;
|
||||
_destdir = getdir _selectedmember;
|
||||
|
||||
if ( damage _selectedmember > 0.4 ) then {
|
||||
if ( damage _selectedmember < 0.7 ) then {
|
||||
player setDamage (damage _selectedmember);
|
||||
} else {
|
||||
player setDamage 0.7;
|
||||
};
|
||||
};
|
||||
|
||||
deleteVehicle _selectedmember;
|
||||
sleep 0.01;
|
||||
|
||||
player setPosATL _destpos;
|
||||
player setDir _destdir;
|
||||
|
||||
sleep 0.01;
|
||||
|
||||
[ localize 'STR_SQUAD_DEPLOY' ] spawn spawn_camera;
|
||||
|
||||
};
|
||||
|
||||
GRLIB_squadaction = -1;
|
||||
|
||||
};
|
||||
|
||||
sleep 0.1;
|
||||
};
|
||||
|
||||
"spawn_marker" setMarkerPosLocal markers_reset;
|
||||
_squad_camera cameraEffect ["terminate","back"];
|
||||
camDestroy _squad_camera;
|
||||
deleteVehicle _targetobject;
|
||||
@@ -0,0 +1,65 @@
|
||||
private [ "_tutorial_titles", "_tutorial_pages", "_current_page", "_old_page", "_dialog" ];
|
||||
|
||||
if ( isNil "howtoplay" ) then { howtoplay = 0; };
|
||||
|
||||
_tutorial_titles = [
|
||||
localize "STR_TUTO_TITLE1",
|
||||
localize "STR_TUTO_TITLE2",
|
||||
localize "STR_TUTO_TITLE3",
|
||||
localize "STR_TUTO_TITLE4",
|
||||
localize "STR_TUTO_TITLE5",
|
||||
localize "STR_TUTO_TITLE6",
|
||||
localize "STR_TUTO_TITLE7",
|
||||
localize "STR_TUTO_TITLE8",
|
||||
localize "STR_TUTO_TITLE9",
|
||||
localize "STR_TUTO_TITLE10"
|
||||
];
|
||||
|
||||
_tutorial_pages = [
|
||||
"STR_TUTO_TEXT1",
|
||||
"STR_TUTO_TEXT2",
|
||||
"STR_TUTO_TEXT3",
|
||||
"STR_TUTO_TEXT4",
|
||||
"STR_TUTO_TEXT5",
|
||||
"STR_TUTO_TEXT6",
|
||||
"STR_TUTO_TEXT7",
|
||||
"STR_TUTO_TEXT8",
|
||||
"STR_TUTO_TEXT9",
|
||||
"STR_TUTO_TEXT10"
|
||||
];
|
||||
|
||||
_current_page = 0;
|
||||
_old_page = -99;
|
||||
|
||||
while { true } do {
|
||||
waitUntil { sleep 0.3; howtoplay == 1 };
|
||||
waitUntil { !dialog };
|
||||
sleep 0.1;
|
||||
|
||||
_dialog = createDialog "liberation_tutorial";
|
||||
if ( !cinematic_camera_started ) then {
|
||||
[] spawn cinematic_camera;
|
||||
};
|
||||
|
||||
waitUntil { dialog };
|
||||
|
||||
{
|
||||
lbAdd [ 513, _x];
|
||||
} foreach _tutorial_titles;
|
||||
|
||||
lbSetCurSel [ 513, 0 ];
|
||||
|
||||
while { howtoplay == 1 && alive player && dialog } do {
|
||||
_current_page = lbCurSel 513;
|
||||
if ( _current_page != _old_page ) then {
|
||||
ctrlSetText [ 514, _tutorial_titles select _current_page ];
|
||||
((findDisplay 5353) displayCtrl (515)) ctrlSetStructuredText parseText localize (_tutorial_pages select _current_page);
|
||||
_old_page = _current_page;
|
||||
};
|
||||
sleep 0.2;
|
||||
};
|
||||
if ( dialog ) then { closeDialog 0 };
|
||||
|
||||
cinematic_camera_started = false;
|
||||
howtoplay = 0;
|
||||
}
|
||||
177
kp_liberation.brf_sumava/scripts/client/ui/ui_manager.sqf
Normal file
177
kp_liberation.brf_sumava/scripts/client/ui/ui_manager.sqf
Normal file
@@ -0,0 +1,177 @@
|
||||
scriptName "KPLIB_uiManager";
|
||||
|
||||
disableSerialization;
|
||||
|
||||
private _sectorcontrols = [
|
||||
201, // BG Picture Sector
|
||||
202, // Capture Frame
|
||||
203, // Capture Frame OPFOR
|
||||
205, // Label Point
|
||||
244 // Capture Frame BLUFOR
|
||||
];
|
||||
|
||||
GRLIB_ui_notif = "";
|
||||
KP_liberation_supplies = 0;
|
||||
KP_liberation_ammo = 0;
|
||||
KP_liberation_fuel = 0;
|
||||
KP_liberation_air_vehicle_building_near = false;
|
||||
KP_liberation_recycle_building_near = false;
|
||||
|
||||
waitUntil { !isNil "synchro_done" };
|
||||
waitUntil { synchro_done };
|
||||
|
||||
if (isNil "cinematic_camera_started") then {cinematic_camera_started = false;};
|
||||
if (isNil "halojumping") then {halojumping = false;};
|
||||
|
||||
private _uiticks = 0;
|
||||
private _active_sectors_hint = false;
|
||||
private _attacked_string = "";
|
||||
private _nearest_active_sector = "";
|
||||
private _zone_size = 0;
|
||||
private _colorzone = "ColorGrey";
|
||||
private _bar = controlNull;
|
||||
private _barwidth = 0;
|
||||
|
||||
private _overlay = displayNull;
|
||||
private _overlayVisible = false;
|
||||
private _showHud = false;
|
||||
private _showResources = false;
|
||||
private _currentFob = "";
|
||||
|
||||
while {true} do {
|
||||
_currentFob = player getVariable ["KPLIB_fobName", ""];
|
||||
_showHud = alive player && {!dialog && {isNull curatorCamera && {!cinematic_camera_started && !halojumping}}};
|
||||
_visibleMap = visibleMap;
|
||||
|
||||
if (_showHud && {!_overlayVisible}) then {
|
||||
"KPLIB_ui" cutRsc ["KPLIB_overlay", "PLAIN", 1];
|
||||
_uiticks = 0;
|
||||
};
|
||||
if (!_showHud && {_overlayVisible}) then {
|
||||
"KPLIB_ui" cutText ["", "PLAIN"];
|
||||
};
|
||||
|
||||
_overlay = uiNamespace getVariable ["KPLIB_overlay", displayNull];
|
||||
_overlayVisible = !isNull _overlay;
|
||||
|
||||
// Player is at FOB
|
||||
if (_currentFob != "" || {_visibleMap}) then {
|
||||
_showResources = true;
|
||||
|
||||
private _nearestFob = player getVariable "KPLIB_fobPos";
|
||||
([_nearestFob] call KPLIB_fnc_getFobResources) params ["", "_supplies", "_ammo", "_fuel", "_hasAir", "_hasRecycling"];
|
||||
|
||||
if (KP_liberation_resources_global || {_visibleMap}) then {
|
||||
// Overwrite FOB name in global mode
|
||||
_currentFob = localize "STR_RESOURCE_GLOBAL";
|
||||
|
||||
KP_liberation_supplies = KP_liberation_supplies_global;
|
||||
KP_liberation_ammo = KP_liberation_ammo_global;
|
||||
KP_liberation_fuel = KP_liberation_fuel_global;
|
||||
} else {
|
||||
KP_liberation_supplies = _supplies;
|
||||
KP_liberation_ammo = _ammo;
|
||||
KP_liberation_fuel = _fuel;
|
||||
};
|
||||
// TODO this is used by build scripts, move to relevant places
|
||||
KP_liberation_air_vehicle_building_near = _hasAir;
|
||||
KP_liberation_recycle_building_near = _hasRecycling;
|
||||
} else {
|
||||
_showResources = false;
|
||||
KP_liberation_supplies = 0;
|
||||
KP_liberation_ammo = 0;
|
||||
KP_liberation_fuel = 0;
|
||||
KP_liberation_air_vehicle_building_near = false;
|
||||
KP_liberation_recycle_building_near = false;
|
||||
};
|
||||
|
||||
if (_overlayVisible) then {
|
||||
|
||||
(_overlay displayCtrl (266)) ctrlSetText format [ "%1", GRLIB_ui_notif ];
|
||||
(_overlay displayCtrl (267)) ctrlSetText format [ "%1", GRLIB_ui_notif ];
|
||||
|
||||
if ((markerPos "opfor_capture_marker") distance markers_reset > 100 ) then {
|
||||
|
||||
private [ "_attacked_string" ];
|
||||
_attacked_string = [markerpos "opfor_capture_marker"] call KPLIB_fnc_getLocationName;
|
||||
|
||||
(_overlay displayCtrl (401)) ctrlShow true;
|
||||
(_overlay displayCtrl (402)) ctrlSetText _attacked_string;
|
||||
(_overlay displayCtrl (403)) ctrlSetText (markerText "opfor_capture_marker");
|
||||
} else {
|
||||
(_overlay displayCtrl (401)) ctrlShow false;
|
||||
(_overlay displayCtrl (402)) ctrlSetText "";
|
||||
(_overlay displayCtrl (403)) ctrlSetText "";
|
||||
};
|
||||
|
||||
// Update resources overlay
|
||||
[
|
||||
_overlay,
|
||||
_showResources,
|
||||
_uiticks % 5 == 0, // update values
|
||||
_currentFob // area title
|
||||
] call KPLIB_fnc_overlayUpdateResources;
|
||||
|
||||
if (_uiticks % 25 == 0) then {
|
||||
|
||||
if (!isNil "active_sectors" && ([] call KPLIB_fnc_getOpforCap >= GRLIB_sector_cap)) then {
|
||||
|
||||
(_overlay displayCtrl (517)) ctrlShow true;
|
||||
|
||||
if (!_active_sectors_hint) then {
|
||||
hint localize "STR_OVERLOAD_HINT";
|
||||
_active_sectors_hint = true;
|
||||
};
|
||||
|
||||
_active_sectors_string = "<t align='right' color='#e0e000'>" + (localize "STR_ACTIVE_SECTORS") + "<br/>";
|
||||
{
|
||||
_active_sectors_string = [_active_sectors_string, markerText _x, "<br/>"] joinString "";
|
||||
} forEach active_sectors;
|
||||
_active_sectors_string = [_active_sectors_string, "</t>"] joinString "";
|
||||
(_overlay displayCtrl (516)) ctrlSetStructuredText parseText _active_sectors_string;
|
||||
|
||||
} else {
|
||||
(_overlay displayCtrl (516)) ctrlSetStructuredText parseText " ";
|
||||
(_overlay displayCtrl (517)) ctrlShow false;
|
||||
};
|
||||
|
||||
_nearest_active_sector = [GRLIB_sector_size] call KPLIB_fnc_getNearestSector;
|
||||
if ( _nearest_active_sector != "" ) then {
|
||||
_zone_size = GRLIB_capture_size;
|
||||
if ( _nearest_active_sector in sectors_bigtown ) then {
|
||||
_zone_size = GRLIB_capture_size * 1.4;
|
||||
};
|
||||
|
||||
"zone_capture" setmarkerposlocal (markerpos _nearest_active_sector);
|
||||
_colorzone = "ColorGrey";
|
||||
if ( [ markerpos _nearest_active_sector, _zone_size ] call KPLIB_fnc_getSectorOwnership == GRLIB_side_friendly ) then { _colorzone = GRLIB_color_friendly };
|
||||
if ( [ markerpos _nearest_active_sector, _zone_size ] call KPLIB_fnc_getSectorOwnership == GRLIB_side_enemy ) then { _colorzone = GRLIB_color_enemy };
|
||||
if ( [ markerpos _nearest_active_sector, _zone_size ] call KPLIB_fnc_getSectorOwnership == GRLIB_side_resistance ) then { _colorzone = "ColorCivilian" };
|
||||
"zone_capture" setmarkercolorlocal _colorzone;
|
||||
|
||||
_ratio = [_nearest_active_sector] call KPLIB_fnc_getBluforRatio;
|
||||
_barwidth = 0.084 * safezoneW * _ratio;
|
||||
_bar = _overlay displayCtrl (244);
|
||||
_bar ctrlSetPosition [(ctrlPosition _bar) select 0,(ctrlPosition _bar) select 1,_barwidth,(ctrlPosition _bar) select 3];
|
||||
_bar ctrlCommit ([0, 2] select ctrlShown _bar);
|
||||
|
||||
(_overlay displayCtrl (205)) ctrlSetText (markerText _nearest_active_sector);
|
||||
{(_overlay displayCtrl (_x)) ctrlShow true;} forEach _sectorcontrols;
|
||||
if (_nearest_active_sector in blufor_sectors) then {
|
||||
(_overlay displayCtrl (205)) ctrlSetTextColor [0,0.3,1.0,1];
|
||||
} else {
|
||||
(_overlay displayCtrl (205)) ctrlSetTextColor [0.85,0,0,1];
|
||||
};
|
||||
|
||||
"zone_capture" setMarkerSizeLocal [ _zone_size,_zone_size ];
|
||||
} else {
|
||||
{(_overlay displayCtrl (_x)) ctrlShow false;} forEach _sectorcontrols;
|
||||
"zone_capture" setmarkerposlocal markers_reset;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
_uiticks = _uiticks + 1;
|
||||
if (_uiticks > 1000) then {_uiticks = 0;};
|
||||
uiSleep 0.25;
|
||||
};
|
||||
@@ -0,0 +1,20 @@
|
||||
params [
|
||||
"_control",
|
||||
"_linearray"
|
||||
];
|
||||
|
||||
_linearray = toArray _linearray;
|
||||
private _caretPosition = 0;
|
||||
|
||||
private ["_currentline", "_caretcharacter"];
|
||||
while {dialog && (_caretPosition <= count _linearray)} do {
|
||||
_currentline = [];
|
||||
while {count _currentline < _caretPosition} do {
|
||||
_currentline pushback (_linearray select (count _currentline));
|
||||
};
|
||||
_caretcharacter = "";
|
||||
if ((_caretPosition % 2 == 0) && (_caretPosition != count _linearray)) then {_caretcharacter = "_"};
|
||||
ctrlSetText [_control, format ["%1%2", toString _currentline, _caretcharacter]];
|
||||
_caretPosition = _caretPosition + 1;
|
||||
sleep 0.04;
|
||||
};
|
||||
Reference in New Issue
Block a user