extract Gestures to own Module and Port THS to ACE

This commit is contained in:
jokoho48 2015-10-15 00:26:31 +02:00
parent cb65a67a3e
commit bfcf057dab
28 changed files with 715 additions and 0 deletions

View File

@ -0,0 +1,11 @@
class Extended_PreInit_EventHandlers {
class ADDON {
init = QUOTE( call COMPILE_FILE(XEH_preInit) );
};
};
class Extended_PostInit_EventHandlers {
class ADDON {
init = QUOTE(call COMPILE_FILE(XEH_postInit));
};
};

View File

@ -0,0 +1,158 @@
class CfgVehicles {
class Man;
class CAManBase: Man {
class ACE_SelfActions {
class ACE_Gestures {
displayName = CSTRING(Gestures);
condition = QUOTE(canStand _target && GVAR(ReloadMutex));
statement = "";
showDisabled = 1;
priority = 3.5;
icon = PATHTOF(UI\gestures_ca.paa);
class ACE_Gesture_Advance {
displayName = CSTRING(BIgestureAdvance);
condition = QUOTE(canStand _target);
statement = QUOTE(_target playActionNow 'gestureAdvance';);
showDisabled = 1;
priority = 1.9;
};
class ACE_Gesture_Go {
displayName = CSTRING(BIgestureGo);
condition = QUOTE(canStand _target);
statement = QUOTE(_target playActionNow ([ARR_2('gestureGo','gestureGoB')] select floor random 2););
showDisabled = 1;
priority = 1.8;
};
class ACE_Gesture_Follow {
displayName = CSTRING(BIgestureFollow);
condition = QUOTE(canStand _target);
statement = QUOTE(_target playActionNow 'gestureFollow';);
showDisabled = 1;
priority = 1.7;
};
class ACE_Gesture_Up {
displayName = CSTRING(BIgestureUp);
condition = QUOTE(canStand _target);
statement = QUOTE(_target playActionNow 'gestureUp';);
showDisabled = 1;
priority = 1.5;
};
class ACE_Gesture_CeaseFire {
displayName = CSTRING(BIgestureCeaseFire);
condition = QUOTE(canStand _target);
statement = QUOTE(_target playActionNow 'gestureCeaseFire';);
showDisabled = 1;
priority = 1.3;
};
class ACE_Gesture_Freeze {
displayName = CSTRING(BIgestureFreeze);
condition = QUOTE(canStand _target);
statement = QUOTE(_target playActionNow 'gestureFreeze';);
showDisabled = 1;
priority = 1.2;
};
class ACE_Gesture_Forward {
displayName = CSTRING(forward);
condition = QUOTE(canStand _target && GVAR(ReloadMutex));
statement = QUOTE(QUOTE(QGVAR(forward)) call FUNC(playSignal));
showDisabled = 1;
priority = 1.9;
};
class ACE_Gesture_Regroup {
displayName = CSTRING(regroup);
condition = QUOTE(canStand _target && GVAR(ReloadMutex));
statement = QUOTE(QUOTE(QGVAR(regroup)) call FUNC(playSignal));
showDisabled = 1;
priority = 1.8;
};
class ACE_Gesture_Stop {
displayName = CSTRING(stop);
condition = QUOTE(canStand _target && GVAR(ReloadMutex));
statement = QUOTE(QUOTE(QGVAR(stop)) call FUNC(playSignal));
showDisabled = 1;
priority = 1.7;
};
class ACE_Gesture_Cover {
displayName = CSTRING(cover);
condition = QUOTE(canStand _target && GVAR(ReloadMutex));
statement = QUOTE(QUOTE(QGVAR(cover)) call FUNC(playSignal));
showDisabled = 1;
priority = 1.6;
};
class ACE_Gesture_Point {
displayName = CSTRING(point);
condition = QUOTE(canStand _target && GVAR(ReloadMutex));
statement = QUOTE(QUOTE(QGVAR(point)) call FUNC(playSignal));
showDisabled = 1;
priority = 1.5;
};
class ACE_Gesture_Engage {
displayName = CSTRING(engage);
condition = QUOTE(canStand _target && GVAR(ReloadMutex));
statement = QUOTE(QUOTE(QGVAR(engage)) call FUNC(playSignal));
showDisabled = 1;
priority = 1.4;
};
class ACE_Gesture_Hold {
displayName = CSTRING(hold);
condition = QUOTE(canStand _target && GVAR(ReloadMutex));
statement = QUOTE(QUOTE(QGVAR(hold)) call FUNC(playSignal));
showDisabled = 1;
priority = 1.3;
};
class ACE_Gesture_Warning {
displayName = CSTRING(warning);
condition = QUOTE(canStand _target && GVAR(ReloadMutex));
statement = QUOTE(QUOTE(QGVAR(warning)) call FUNC(playSignal));
showDisabled = 1;
priority = 1.2;
};
/*
class ACE_Gesture_Yes {
displayName = ECSTRING(common,Yes);
condition = QUOTE(canStand _target);
statement = QUOTE(_target playActionNow ([ARR_2('gestureYes','gestureNod')] select floor random 2););
showDisabled = 1;
priority = 1.1;
hotkey = "8";
};
class ACE_Gesture_No {
displayName = ECSTRING(common,No);
condition = QUOTE(canStand _target);
statement = QUOTE(_target playActionNow 'gestureNo';);
showDisabled = 1;
priority = 1.0;
hotkey = "9";
};
class ACE_Gesture_Hi {
displayName = CSTRING(Gestures_Hi);
condition = QUOTE(canStand _target);
statement = QUOTE(_target playActionNow ([ARR_3('gestureHi','gestureHiB','gestureHiC')] select floor random 3););
showDisabled = 1;
priority = 0.9;
hotkey = "0";
};
*/
};
};
};
};

Binary file not shown.

View File

@ -0,0 +1,36 @@
#include "script_component.hpp"
#include "key.sqf"
// reload mutex, you can't play signal while reloading
GVAR(ReloadMutex) = true;
// PFH for Reloading
[{
if (isNull (findDisplay 46)) exitWith {};
// handle reloading
(findDisplay 46) displayAddEventHandler ["KeyDown", {
if ((_this select 1) in actionKeys "ReloadMagazine") then {
_weapon = currentWeapon ACE_player;
if (_weapon != "") then {
GVAR(ReloadMutex) = false;
_gesture = getText (configfile >> "CfgWeapons" >> _this >> "reloadAction");
_isLauncher = "Launcher" in ([configFile >> "CfgWeapons" >> _this, true] call BIS_fnc_returnParents);
_config = ["CfgGesturesMale", "CfgMovesMaleSdr"] select _isLauncher;
_duration = getNumber (configfile >> _config >> "States" >> _gesture >> "speed");
if (_duration != 0) then {
_duration = if (_duration < 0) then { abs _duration } else { 1 / _duration };
} else {
_duration = 3;
};
[{GVAR(ReloadMutex) = true;}, [], _duration] call EFUNC(common,waitAndExecute);
};
};
false
}];
[_this select 1] call CBA_fnc_removePerFrameHandler;
}, 0,[]] call CBA_fnc_addPerFrameHandler;

View File

@ -0,0 +1,7 @@
#include "script_component.hpp"
ADDON = false;
PREP(playSignal);
ADDON = true;

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,200 @@
class CfgMovesBasic {
class ManActions {
GVAR(forward) = QGVAR(forward);
GVAR(stop) = QGVAR(stop);
GVAR(cover) = QGVAR(cover);
GVAR(regroup) = QGVAR(regroup);
GVAR(engage) = QGVAR(engage);
GVAR(point) = QGVAR(point);
GVAR(hold) = QGVAR(hold);
GVAR(warning) = QGVAR(warningS);
GVAR(forwardStandLowered) = QGVAR(forwardStandLowered);
GVAR(stopStandLowered) = QGVAR(stopStandLowered);
GVAR(covertandLowered) = QGVAR(covertandLowered);
GVAR(regroupStandLowered) = QGVAR(regroupStandLowered);
GVAR(engageStandLowered) = QGVAR(engageStandLowered);
GVAR(pointStandLowered) = QGVAR(pointStandLowered);
GVAR(holdStandLowered) = QGVAR(holdStandLowered);
GVAR(warningtandLowered) = QGVAR(warningtandLowered);
};
class Actions {
class NoActions: ManActions {
GVAR(forward)[] = {QGVAR(forward), "Gesture"};
GVAR(stop)[] = {QGVAR(stop), "Gesture"};
GVAR(cover)[] = {QGVAR(cover), "Gesture"};
GVAR(regroup)[] = {QGVAR(regroup), "Gesture"};
GVAR(engage)[] = {QGVAR(engage), "Gesture"};
GVAR(point)[] = {QGVAR(point), "Gesture"};
GVAR(hold)[] = {QGVAR(hold), "Gesture"};
GVAR(warning)[] = {QGVAR(warning), "Gesture"};
GVAR(forwardStandLowered)[] = {QGVAR(forwardStandLowered), "Gesture"};
GVAR(stopStandLowered)[] = {QGVAR(stopStandLowered), "Gesture"};
GVAR(covertandLowered)[] = {QGVAR(covertandLowered), "Gesture"};
GVAR(regroupStandLowered)[] = {QGVAR(regroupStandLowered), "Gesture"};
GVAR(engageStandLowered)[] = {QGVAR(engageStandLowered), "Gesture"};
GVAR(pointStandLowered)[] = {QGVAR(pointStandLowered), "Gesture"};
GVAR(holdStandLowered)[] = {QGVAR(holdStandLowered), "Gesture"};
GVAR(warningStandLowered)[] = {QGVAR(warningStandLowered), "Gesture"};
};
};
};
class CfgGesturesMale {
class Default;
class BlendAnims {
GVAR(LeftArm)[] = {
"LeftShoulder", 1,
"LeftArm", 1,
"LeftArmRoll", 1,
"LeftForeArm", 1,
"LeftForeArmRoll", 1,
"LeftHand", 1,
"LeftHandIndex1", 1,
"LeftHandIndex2", 1,
"LeftHandIndex3", 1,
"LeftHandMiddle1", 1,
"LeftHandMiddle2", 1,
"LeftHandMiddle3", 1,
"LeftHandPinky1", 1,
"LeftHandMiddle2", 1,
"LeftHandMiddle3", 1,
"LeftHandPinky1", 1,
"LeftHandPinky2", 1,
"LeftHandPinky3", 1,
"LeftHandRing", 1,
"LeftHandRing1", 1,
"LeftHandRing2", 1,
"LeftHandRing3", 1,
"LeftHandThumb1", 1,
"LeftHandThumb2", 1,
"LeftHandThumb3", 1
};
};
class States {
class GVAR(Base): Default {
actions = "NoActions";
canPullTrigger = 0;
connectAs = "";
connectFrom[] = {};
connectTo[] = {};
disableWeapons = 0;
enableBinocular = 1;
enableMissile = 1;
enableOptics = 0;
equivalentTo = "";
file = "\A3\anims_f\Dataanim\Sdr\gst\GestureHi.rtm";
forceAim = 0;
headBobMode = 0;
headBobStrength = 0;
interpolateFrom[] = {};
interpolateTo[] = {};
interpolateWith[] = {};
interpolationRestart = 0;
interpolationSpeed = 6;
looped = 0;
mask = QGVAR(LeftArm);
minPlayTime = 0.5;
preload = 0;
ragdoll = 0;
relSpeedMax = 1;
relSpeedMin = 1;
showHandGun = 0;
showItemInHand = 0;
showItemInRightHand = 0;
showWeaponAim = 1;
soundEdge[] = {0.5,1};
soundEnabled = 1;
soundOverride = "";
speed = -2;
static = 0;
terminal = 0;
Walkcycles = 1;
weaponIK = 1;
leftHandIKBeg = 1;
leftHandIKCurve[] = {0, 1, 0.1, 0, 0.8, 0, 1, 1};
leftHandIKEnd = 1;
rightHandIKBeg = 1;
rightHandIKCurve[] = {1};
rightHandIKEnd = 1;
};
class GVAR(forward): GVAR(Base) {
file = QUOTE(PATHTOF(anim\ace_forward.rtm));
speed = 1;
};
class GVAR(forwardStandLowered): GVAR(forward) {
file = QUOTE(PATHTOF(anim\ace_forward_stand_lowered.rtm));
};
class GVAR(stop): GVAR(forward) {
file = QUOTE(PATHTOF(anim\ace_stop.rtm));
speed = 0.6;
};
class GVAR(stopStandLowered): GVAR(stop) {
file = QUOTE(PATHTOF(anim\ace_stop_stand_lowered.rtm));
};
class GVAR(cover): GVAR(forward) {
file = QUOTE(PATHTOF(anim\ace_cover.rtm));
speed = 0.8;
};
class GVAR(covertandLowered): GVAR(cover) {
file = QUOTE(PATHTOF(anim\ace_cover_stand_lowered.rtm));
};
class GVAR(regroup): GVAR(forward) {
file = QUOTE(PATHTOF(anim\ace_regroup.rtm));
speed = 0.8;
};
class GVAR(regroupStandLowered): GVAR(regroup) {
file = QUOTE(PATHTOF(anim\ace_regroup_stand_lowered.rtm));
};
class GVAR(engage): GVAR(forward) {
file = QUOTE(PATHTOF(anim\ace_engage.rtm));
speed = 0.9;
};
class GVAR(engageStandLowered): GVAR(engage) {
file = QUOTE(PATHTOF(anim\ace_engage_stand_lowered.rtm));
};
class GVAR(point): GVAR(forward) {
file = QUOTE(PATHTOF(anim\ace_point.rtm));
speed = 0.8;
};
class GVAR(pointStandLowered): GVAR(point) {
file = QUOTE(PATHTOF(anim\ace_point_stand_lowered.rtm));
};
class GVAR(hold): GVAR(forward) {
file = QUOTE(PATHTOF(anim\ace_hold.rtm));
speed = 0.8;
};
class GVAR(holdStandLowered): GVAR(hold) {
file = QUOTE(PATHTOF(anim\ace_hold_stand_lowered.rtm));
};
class GVAR(warning): GVAR(forward) {
file = QUOTE(PATHTOF(anim\ace_warning.rtm));
speed = 0.8;
};
class GVAR(warningtandLowered): GVAR(warning) {
file = QUOTE(PATHTOF(anim\ace_warning_stand_lowered.rtm));
};
};
};

View File

@ -0,0 +1,17 @@
#include "script_component.hpp"
class CfgPatches {
class ADDON {
units[] = {};
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_interact_menu"};
author[] = {"joko // Jonas", "Emperias", "Zigomarvin"};
authorUrl = "https://github.com/commy2/";
VERSION_CONFIG;
};
};
#include "CfgMovesBasic.hpp"
#include "CfgEventHandlers.hpp"
#include "CfgVehicles.hpp"

View File

@ -0,0 +1,30 @@
#include "script_component.hpp"
/*
* Author: joko // Jonas, Emperias, Zigomarvin
* Detect if the player and play the Gesture Animation
*
* Arguments:
* Animation <STRING>
*
* Return Value:
* <BOOL>
*
* Example:
* "GeniusAnimation" call ace_handSignals_fnc_playSignal
*
* Public: No
*/
if (!GVAR(ReloadMutex)) exitWith {false};
private "_gesture";
_gesture = if (_this select [0,2] == "BI") then {
_this select [2]
} else {
if (((animationState ACE_player) select [0, 12]) in ["amovpercmstp", "amovpercmwlk", "amovpercmtac"] && weaponLowered ACE_player) then {
format ["%1StandLowered", _this]
} else {
_this
};
};
ACE_player playAction _gesture;
true

View File

@ -0,0 +1 @@
#include "\z\ace\addons\gestures\script_component.hpp"

52
addons/gestures/key.sqf Normal file
View File

@ -0,0 +1,52 @@
#include "\a3\editor_f\Data\Scripts\dikCodes.h"
{
_x params ["_currentName","_key"];
if (_currentName select [0,1] == "BI") then {
_currentName = _currentName select [2];
};
_code = (compile format [QUOTE(QUOTE(QGVAR(_%1)) call FUNC(playSignal); hint 'KeyDown'), _currentName]);
[
"ACE3 Gestures",
_currentName,
localize format[LSTRING(%1), _currentName],
_code,
{hint "key Up"},
[_key, [false, (_key != -1), false]],
false
] call CBA_fnc_addKeybind;
/*
if (56 in (actionKeys "LookAround")) then {
[
"ACE3 Gestures",
_currentName + "ALT",
localize format[LSTRING(%1), _currentName],
_code,
{},
[_key, if (_key == 0) then {[false, false, false]} else { [false, true, true] }],
false
] call CBA_fnc_addKeybind;
};
*/
false
} count [
["stop", DIK_NUMPAD2],
["cover", DIK_NUMPAD3],
["forward", DIK_NUMPAD4],
["regroup", DIK_NUMPAD5],
["engage", DIK_NUMPAD6],
["point", DIK_NUMPAD7],
["hold", DIK_NUMPAD8],
["warning", DIK_NUMPAD9],
["BIgestureGo", -1],
["BIgestureAdvance", -1],
["BIgestureFollow", -1],
["BIgestureUp", -1],
["BIgestureFreeze", -1],
["BIgestureCeaseFire", -1]
];

View File

@ -0,0 +1,12 @@
#define COMPONENT Gestures
#include "\z\ace\addons\main\script_mod.hpp"
#ifdef DEBUG_ENABLED_GESTURES
#define DEBUG_MODE_FULL
#endif
#ifdef DEBUG_SETTINGS_GESTURES
#define DEBUG_SETTINGS DEBUG_SETTINGS_GESTURES
#endif
#include "\z\ace\addons\main\script_macros.hpp"

View File

@ -0,0 +1,191 @@
<?xml version="1.0" encoding="utf-8"?>
<Project name="ACE">
<Package name="Gestures">
<Key ID="STR_ACE_Gestures_NAME">
<English>ACE Gestures</English>
<German>ACE Gesten</German>
<Polish>ACE Gesty</Polish>
</Key>
<Key ID="STR_ACE_Gestures_Gestures">
<English>Gestures</English>
<German>Gesten</German>
<Spanish>Gestos</Spanish>
<Polish>Gesty</Polish>
<Czech>Posunky</Czech>
<French>Signaux</French>
<Russian>Жесты</Russian>
<Hungarian>Kézjelek</Hungarian>
<Portuguese>Gestos</Portuguese>
<Italian>Gesti</Italian>
</Key>
<Key ID="STR_ACE_Gestures_BIgestureAdvance">
<English>Advance</English>
<German>Vordringen</German>
<Spanish>Avanzar</Spanish>
<Polish>Naprzód</Polish>
<Czech>Postoupit</Czech>
<French>Avancer</French>
<Russian>Продвигаться</Russian>
<Hungarian>Előre</Hungarian>
<Portuguese>Avançar</Portuguese>
<Italian>Avanzare</Italian>
</Key>
<Key ID="STR_ACE_Gestures_BIgestureGo">
<English>Go</English>
<German>Los</German>
<Spanish>Adelante</Spanish>
<Polish>Szybko</Polish>
<Czech>Jít</Czech>
<French>Aller</French>
<Russian>Идти</Russian>
<Hungarian>Mozgás</Hungarian>
<Portuguese>Mover-se</Portuguese>
<Italian>Muoversi</Italian>
</Key>
<Key ID="STR_ACE_Gestures_BIgestureFollow">
<English>Follow</English>
<German>Folgen</German>
<Spanish>Seguirme</Spanish>
<Polish>Za mną</Polish>
<Czech>Následovat</Czech>
<French>Suivre</French>
<Russian>Следовать</Russian>
<Hungarian>Utánam</Hungarian>
<Portuguese>Seguir</Portuguese>
<Italian>Seguire</Italian>
</Key>
<Key ID="STR_ACE_Gestures_BIgestureUp">
<English>Up</English>
<German>Aufstehen</German>
<Spanish>Arriba</Spanish>
<Polish>Do góry</Polish>
<Czech>Vztyk</Czech>
<French>Debout</French>
<Russian>Вверх</Russian>
<Hungarian>Fel</Hungarian>
<Portuguese>Acima</Portuguese>
<Italian>Alzarsi</Italian>
</Key>
<Key ID="STR_ACE_Gestures_BIgestureCeaseFire">
<English>Cease Fire</English>
<German>Feuer einstellen</German>
<Spanish>Alto el fuego</Spanish>
<Polish>Wstrzymać ogień</Polish>
<Czech>Zastavit palbu</Czech>
<French>Halte au feu</French>
<Russian>Прекратить огонь</Russian>
<Hungarian>Tüzet szüntess</Hungarian>
<Portuguese>Cessar Fogo</Portuguese>
<Italian>Cessare il Fuoco</Italian>
</Key>
<Key ID="STR_ACE_Gestures_BIGesturesPoint">
<English>Point</English>
<German>Zeigen</German>
<Spanish>Señalar</Spanish>
<Polish>Wskazać</Polish>
<Czech>Ukázat</Czech>
<French>Pointer</French>
<Russian>Точка</Russian>
<Hungarian>Mutat</Hungarian>
<Portuguese>Apontar</Portuguese>
<Italian>Puntare a</Italian>
</Key>
<Key ID="STR_ACE_Gestures_BIgestureFreeze">
<English>Freeze</English>
<German>Keine Bewegung</German>
<Spanish>Alto</Spanish>
<Polish>Stać</Polish>
<Czech>Stát</Czech>
<French>Halte</French>
<Russian>Замереть</Russian>
<Hungarian>Állj</Hungarian>
<Portuguese>Alto</Portuguese>
<Italian>Fermi</Italian>
</Key>
<!-- STOP -->
<Key ID="STR_ACE_Gestures_stop">
<English>Stop</English>
<French>Stop</French>
<German>Stop</German>
<Polish>Stop</Polish>
</Key>
<!-- COVER -->
<Key ID="STR_ACE_Gestures_cover">
<English>Cover</English>
<German>Deckung</German>
<Spanish>Cubrirse</Spanish>
<Polish>Do osłony</Polish>
<Czech>Krýt se</Czech>
<French>A couvert</French>
<Russian>Укрыться</Russian>
<Hungarian>Fedezékbe</Hungarian>
<Portuguese>Proteger-se</Portuguese>
<Italian>Copertura</Italian>
</Key>
<!-- REGROUP -->
<Key ID="STR_ACE_Gestures_regroup">
<English>Rally up</English>
<French>Regroupement</French>
<German>Sammeln</German>
<Polish>Zbiórka</Polish>
</Key>
<!-- FORWARD -->
<Key ID="STR_ACE_Gestures_forward">
<English>Move forward</English>
<French>En avant</French>
<German>Vorwärts Bewegen</German>
<Polish>Naprzód</Polish>
</Key>
<!-- ENGAGE -->
<Key ID="STR_ACE_Gestures_engage">
<English>Engage</English>
<French>Engager</French>
<Polish>Atak</Polish>
</Key>
<!-- POINT -->
<Key ID="STR_ACE_Gestures_point">
<English>Point</English>
<French>Pointer</French>
<German>Zeigen</German>
<Polish>Wskaż</Polish>
</Key>
<!-- HOLD -->
<Key ID="STR_ACE_Gestures_hold">
<English>Hold</English>
<French>Tenir</French>
<German>Anhalten</German>
<Polish>Wstrzymać</Polish>
</Key>
<!-- WARNING -->
<Key ID="STR_ACE_Gestures_warning">
<English>Warning</English>
<French>Attention</French>
<German>Achtung</German>
<Polish>Uwaga</Polish>
</Key>
<!-- FREE LOOK -->
<Key ID="STR_ACE_Gestures_FREELOOK">
<English> &#43; freelook</English>
<French> &#43; vue libre</French>
<German> &#43; Frei Blick</German>
<Polish> &#43; rozglądanie się</Polish>
</Key>
</Package>
</Project>