211 lines
5.2 KiB
C
211 lines
5.2 KiB
C
/*=========================================================================
|
|
* IPT_Anal.c :
|
|
* Analyse entry
|
|
*
|
|
* (c) Ubi Studios 1997
|
|
*=======================================================================*/
|
|
|
|
#include <limits.h>
|
|
|
|
#include "IPT_CPA.h"
|
|
|
|
#include "IPT_Hdl.h"
|
|
|
|
#define D_IPT_Input_StructureDefine
|
|
#include "IPT_KDef.h"
|
|
#include "IPT_Str.h"
|
|
|
|
#include "ErrIPT.h"
|
|
|
|
#define D_IPT_DefineIsKeyWordValid
|
|
#include "IPT_Kwan.h"
|
|
#undef D_IPT_DefineIsKeyWordValid
|
|
|
|
#undef D_IPT_Input_StructureDefine
|
|
|
|
#include "IPT_Hist.h"
|
|
#include "IPT_Def.h"
|
|
#include "IPT_Anal.h"
|
|
|
|
/* ANNECY AV DEMO {*/
|
|
#ifndef U64
|
|
int IPT_g_bAtLeastOneActionIsValidated;
|
|
#endif
|
|
/* END ANNECY AV }*/
|
|
|
|
#ifdef U64
|
|
#include "TMP.h" /* for demo player*/
|
|
#include "u_dma.h" /* idem*/
|
|
#include "Input_s.h"
|
|
|
|
|
|
/*************************************************************************/
|
|
|
|
/* 007*/
|
|
#endif
|
|
|
|
#include "acp_driver.h"
|
|
|
|
|
|
#ifndef M_CheckPointer
|
|
#define M_CheckPointer(a)
|
|
#endif /* M_CheckPointer */
|
|
|
|
|
|
/*#ifdef U64_DEMO_RECORDER
|
|
unsigned long TabDemoRecord[C_MaxDemoEntry*C_NbCodedEntry];
|
|
#else
|
|
extern char _DemoDataSegmentRomStart[];
|
|
extern char _DemoDataSegmentRomEnd[];
|
|
unsigned long* TabDemoRecord=NULL;
|
|
#endif
|
|
|
|
short NbDemoEntry;
|
|
char IPT_DemoMode = IPT_M_DemoStopMode;*/
|
|
|
|
|
|
|
|
/* ANNECY AV {*/
|
|
|
|
extern IPT_tdxHandleToEntryElement g_h_ActualEntryInput;
|
|
extern IPT_tdxHandleToKeyWordElement IPT_g_hNextParameter;
|
|
|
|
|
|
INLINE
|
|
unsigned char IPT_fn_bIsEntryActionValid(IPT_tdxHandleToEntryElement _hEntryElement)
|
|
{
|
|
g_h_ActualEntryInput = _hEntryElement;
|
|
/* g_h_ActualEntryInput -> scAnalogicValue = 0;*/
|
|
g_h_ActualEntryInput->xAnalogicValue = 0.0f;
|
|
|
|
/* '=' is not an error*/
|
|
IPT_g_hNextParameter = &_hEntryElement->d_stKeyWordElementArray[0];
|
|
|
|
if (IPT_g_hNextParameter!=NULL)
|
|
return (IPT_fn_bIsKeyWordValid( IPT_g_hNextParameter ));
|
|
else
|
|
return (IPT_C_FALSE);
|
|
|
|
}
|
|
|
|
/* END ANNECY AV }*/
|
|
|
|
|
|
/*************************************************************************/
|
|
unsigned char IPT_fn_bIsJustValidated(IPT_tdxHandleToEntryElement _hEntryElement)
|
|
{
|
|
return((_hEntryElement->lState==1)?IPT_C_TRUE:IPT_C_FALSE);
|
|
}
|
|
/*************************************************************************/
|
|
unsigned char IPT_fn_bIsValidated(IPT_tdxHandleToEntryElement _hEntryElement)
|
|
{
|
|
/*XB*/
|
|
M_CheckPointer(_hEntryElement);
|
|
/*End XB*/
|
|
|
|
return((_hEntryElement->lState>0)?IPT_C_TRUE:IPT_C_FALSE);
|
|
}
|
|
/*************************************************************************/
|
|
unsigned char IPT_fn_bIsJustInvalidated(IPT_tdxHandleToEntryElement _hEntryElement)
|
|
{
|
|
return((_hEntryElement->lState==-1)?IPT_C_TRUE:IPT_C_FALSE);
|
|
}
|
|
/*************************************************************************/
|
|
unsigned char IPT_fn_bIsInvalidated(IPT_tdxHandleToEntryElement _hEntryElement)
|
|
{
|
|
return((_hEntryElement->lState<0)?IPT_C_TRUE:IPT_C_FALSE);
|
|
}
|
|
/*************************************************************************/
|
|
long IPT_fn_lGetAnalogicValue(IPT_tdxHandleToEntryElement _hEntryElement)
|
|
{
|
|
/* return((long)(_hEntryElement->scAnalogicValue));*/
|
|
return((long)(_hEntryElement->xAnalogicValue));
|
|
}
|
|
/*************************************************************************/
|
|
|
|
|
|
void IPT_fn_vReadInput(void)
|
|
{
|
|
unsigned long i;
|
|
IPT_tdxHandleToEntryElement hEntryElement;
|
|
unsigned char ucIsActionValid;
|
|
unsigned char ucValid = IPT_C_TRUE;
|
|
|
|
#ifdef USE_DIRECTX //Mouse Read
|
|
/**** Read the Mouse device ****/
|
|
// if (IPT_g_hInputStructure.p_ucValideAndActiveDevice[IPT_E_KeyboardDeviceEvent] == IPT_C_ActivateDevice)
|
|
if (INO_fn_wReadMouse()== C_wMouseError)
|
|
{
|
|
ucValid = IPT_C_FALSE;
|
|
}
|
|
#ifdef TEST_MOUSE
|
|
else
|
|
{
|
|
float x,y;
|
|
int i,j;
|
|
static int kk=0;
|
|
if(INO_fn_wRightMouseButtonDown()==C_wMouseTrue)
|
|
{
|
|
INO_fn_wGetMousePositionInGldDevice(&x,&y);
|
|
if(INO_fn_wGetMousePosition(&i,&j)==C_wMouseTrue)
|
|
{
|
|
kk++;
|
|
}
|
|
else
|
|
{
|
|
kk--;
|
|
}
|
|
kk++;
|
|
}
|
|
}
|
|
#endif
|
|
#endif
|
|
|
|
|
|
/**** Read the keyboard device ****/
|
|
#if (!defined(U64))
|
|
if (IPT_g_hInputStructure.p_ucValideAndActiveDevice[IPT_E_KeyboardDeviceEvent] == IPT_C_ActivateDevice)
|
|
if (fn_wKbReadKeyboard()==C_wKbError)
|
|
ucValid = IPT_C_FALSE;
|
|
#endif /* !U64 */
|
|
|
|
/**** Read the joysticks devices ****/
|
|
if (IPT_g_hInputStructure.ucOnePadActivate == IPT_C_ActivateDevice)
|
|
if (fn_wJoyReadJoystick(C_wJoyReadConnected)==C_wJoyError)
|
|
ucValid = IPT_C_FALSE;
|
|
|
|
if (ucValid==IPT_C_TRUE)
|
|
{
|
|
/**** Historic ****/
|
|
IPT_fn_vActualizeHistoric();
|
|
|
|
#ifndef U64
|
|
IPT_g_bAtLeastOneActionIsValidated = FALSE;
|
|
#endif
|
|
|
|
/**** Actions ****/
|
|
for (i=0;i<IPT_g_hInputStructure.ulNumberOfEntryElement;i++)
|
|
{
|
|
hEntryElement = &IPT_g_hInputStructure.d_stEntryElementArray[i];
|
|
if (hEntryElement->bIsActivate==IPT_C_TRUE)
|
|
{
|
|
ucIsActionValid = IPT_fn_bIsEntryActionValid(hEntryElement);
|
|
if (ucIsActionValid == IPT_C_FALSE)
|
|
{
|
|
if (IPT_fn_bIsInvalidated (hEntryElement))
|
|
hEntryElement -> lState -= 1;
|
|
else
|
|
if (IPT_fn_bIsValidated (hEntryElement)) hEntryElement -> lState = -1;
|
|
}
|
|
else
|
|
{
|
|
if (IPT_fn_bIsValidated (hEntryElement))
|
|
hEntryElement -> lState += 1;
|
|
else
|
|
if (IPT_fn_bIsInvalidated (hEntryElement)) hEntryElement -> lState = 1;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|