flInput.c

Go to the documentation of this file.
00001 #include "flGlobal.h"
00002 #if FL_INPUT != 0
00003 #include <stdio.h>
00004 #include <stdlib.h>
00005 #include <pspctrl.h>
00006 
00007 #if FL_INCLUDE_ALL_C == 0
00008 #include "flInput.h"
00009 
00010 #if FL_TIMER != 0
00011 #include "flTimer.h"
00012 #endif
00013 #endif
00014 
00015 u8          inputStates[32];
00016 SceCtrlData inputData[2];
00017 
00018 #if FL_TIMER != 0
00019 Timer* inputTimer;
00020 #endif
00021 float  inputLockTime = 0;
00022 
00023 void       (*inputPause)() = NULL;
00024 u8         inputPauseButton = 0;
00025 u8         inputPauseState = 0;
00026 
00027 void inputInit() {
00028      sceCtrlReadBufferPositive(&inputData[0], 1);
00029      #if FL_TIMER != 0
00030      inputTimer = timerCreate();
00031      #endif
00032 }
00033 
00034 u8 inputCheck(u8 inInput) {
00035      if(inputLockTime > 0)
00036           return 0;
00037      return inputStates[inInput];
00038 }
00039 
00040 bool inputDown(u8 inInput) {
00041      if(inputLockTime > 0)
00042           return 0;
00043      return (inputStates[inInput] & 1);
00044 }
00045 
00046 void inputPoll() {
00047      if(inputLockTime > 0.0f) {
00048           #if FL_TIMER != 0
00049           inputLockTime -= timerGetDeltaTime(inputTimer);
00050           #else
00051           inputLockTime--;
00052           #endif
00053           if(inputLockTime < 0.0f)
00054                inputLockTime = 0.0f;
00055      } else {
00056           timerGetDeltaTime(inputTimer);
00057      }
00058      inputData[0] = inputData[1];
00059      sceCtrlPeekBufferPositive(&inputData[1], 1);
00060      int i;
00061      for(i = 0; i < 32; i++) {
00062           if(inputData[1].Buttons & (1 << i))
00063                inputStates[i] = 1;
00064           else
00065                inputStates[i] = 0;
00066           if((inputData[0].Buttons & (1 << i)) != (inputData[1].Buttons & (1 << i)))
00067                inputStates[i] |= 2;
00068      }
00069      if(inputPause && (inputLockTime <= 0.0f)) {
00070           if(inputStates[inputPauseButton] == inputPauseState) {
00071                (*inputPause)();
00072                inputLock(0.0625);
00073           }
00074      }
00075 }
00076 
00077 void inputLock(float inTime) {
00078      if(inputLockTime == 0)
00079           timerGetDeltaTime(inputTimer);
00080      inputLockTime += inTime;
00081 }
00082 
00083 void inputPauseFunc(u8 inInput, u8 inState, void (*inFunc)()) {
00084      inputPause = inFunc;
00085      inputPauseButton = inInput;
00086      inputPauseState = (inState & 3);
00087 }
00088 
00089 #endif

Generated on Wed Sep 5 19:04:00 2007 for funcLib by  doxygen 1.5.1