reman3/Rayman_X/cpa/tempgrp/IPT/IPT_Anal.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;
}
}
}
}
}