コード例 #1
0
ファイル: event.cpp プロジェクト: crystalspace/CS
uint csInputEventHelper::GetButton (iEventNameRegistry *reg,
	const iEvent* event)
{
  CS_ASSERT(CS_IS_INPUT_EVENT(reg, *event));

  if (CS_IS_MOUSE_EVENT(reg, *event))
  {
    return csMouseEventHelper::GetButton(event);
  }
  else if (CS_IS_JOYSTICK_EVENT(reg, *event))
  {
    return csJoystickEventHelper::GetButton(event);
  }
  else if (CS_IS_KEYBOARD_EVENT(reg, *event))
  {
    return 0;
  }
  else
  {
    return 0;
  }
}
コード例 #2
0
ファイル: event.cpp プロジェクト: crystalspace/CS
bool csInputEventHelper::GetButtonState (iEventNameRegistry *reg,
	const iEvent* event)
{
  CS_ASSERT(CS_IS_INPUT_EVENT(reg, *event));

  if (CS_IS_MOUSE_EVENT(reg, *event))
  {
    return csMouseEventHelper::GetButtonState (event);
  }
  else if (CS_IS_JOYSTICK_EVENT(reg, *event))
  {
    return csJoystickEventHelper::GetButtonState (event);
  }
  else if (CS_IS_KEYBOARD_EVENT(reg, *event))
  {
    return ((csKeyEventHelper::GetEventType (event) == csKeyEventTypeDown)
	    ?true:false);
  }
  else
  {
    return false;
  }
}
コード例 #3
0
ファイル: keys.cpp プロジェクト: GameLemur/Crystal-Space
bool WalkTest::WalkHandleEvent (iEvent &Event)
{
  if (Event.Name == CanvasHidden)
  {
    canvas_exposed = false;
#ifdef CS_DEBUG
    Report (CS_REPORTER_SEVERITY_NOTIFY, "canvas hidden");
#endif
  }
  else if (Event.Name == CanvasExposed)
  {
    canvas_exposed = true;
#ifdef CS_DEBUG
    Report (CS_REPORTER_SEVERITY_NOTIFY, "canvas exposed");
#endif
  }
  else if (Event.Name == CanvasResize)
  {
    Sys->FrameWidth = Sys->myG2D->GetWidth();
    Sys->FrameHeight = Sys->myG2D->GetHeight();
  }
  else if (CS_IS_KEYBOARD_EVENT(name_reg, Event))
  {
    eatkeypress (&Event);
  }
  else if (CS_IS_MOUSE_EVENT(name_reg, Event))
  {
    switch(csMouseEventHelper::GetEventType(&Event))
    {
    case csMouseEventTypeDown:
      switch(csMouseEventHelper::GetButton(&Event))
      {
	case csmbLeft:
	  MouseClick1Handler(Event); break;
	case csmbRight:
	  MouseClick2Handler(Event); break;
	case csmbMiddle:
	  MouseClick3Handler(Event); break;
      }
      break;

    case csMouseEventTypeMove:
      {
	// additional command by Leslie Saputra -> freelook mode.
	static bool first_time = true;
	if (do_freelook)
	{
	  int last_x, last_y;
	  last_x = csMouseEventHelper::GetX(&Event);
	  last_y = csMouseEventHelper::GetY(&Event);
	  float speed = 6.0f;
  	
	  myG2D->SetMousePosition (FRAME_WIDTH / 2, FRAME_HEIGHT / 2);
	  if (!first_time)
	  {
	    RotateCam (
		      speed * (-((float)(last_y - (FRAME_HEIGHT / 2) ))
		      		/ (FRAME_HEIGHT*2)*(1-2*(int)inverse_mouse)),
		      speed * (((float)(last_x - (FRAME_WIDTH / 2) ))
		      		/ (FRAME_WIDTH*2)));
	  }
	  else
	    first_time = false;
	}
	else
	  first_time = true;
      }
      break;

    case csMouseEventTypeUp:
      if (csMouseEventHelper::GetButton(&Event) == csmbLeft) 
      {
	move_forward = false;
	Step (0);
      }
      break;

    default:
      // ignore
      break;
    }
  }

  return false;
}
コード例 #4
0
ファイル: eventtest.cpp プロジェクト: garinh/cs
bool EventTest::HandleEvent (iEvent &ev)
{
  csRef<iEventNameRegistry> namereg = csEventNameRegistry::GetRegistry (
  	GetObjectRegistry ());
  if (CS_IS_KEYBOARD_EVENT (namereg, ev))
  {
    utf32_char key = csKeyEventHelper::GetRawCode (&ev);
    utf32_char cooked = csKeyEventHelper::GetCookedCode (&ev);
    bool autorep = csKeyEventHelper::GetAutoRepeat (&ev);
    csKeyModifiers key_modifiers;
    csKeyEventHelper::GetModifiers (&ev, key_modifiers);
    uint32 modifiers = csKeyEventHelper::GetModifiersBits (key_modifiers);
    uint32 type = csKeyEventHelper::GetEventType (&ev);
    csString str = csInputDefinition::GetKeyString (namereg, key,
    	&key_modifiers, true);
    printf ("Key %s: raw=%" PRId32 "(%c) "
        "cooked=%" PRId32 "(%c) rep=%d mods=%08" PRIu32 " desc='%s'\n",
    	type == csKeyEventTypeUp ? "UP" : "DO",
	key, (key >= 32 && key < 128) ? (char)key : '-',
	cooked, (cooked >= 32 && cooked < 128) ? (char)cooked : '-',
	autorep, modifiers, str.GetData ());
    fflush (stdout);
  }
  else if (CS_IS_MOUSE_EVENT (namereg, ev))
  {
    uint device = csMouseEventHelper::GetNumber (&ev);
    csMouseEventType type = csMouseEventHelper::GetEventType (&ev);
    csKeyModifiers key_modifiers;
    csKeyEventHelper::GetModifiers (&ev, key_modifiers);
    uint32 modifiers = csMouseEventHelper::GetModifiers (&ev);

    csMouseEventData data;
    csMouseEventHelper::GetEventData (&ev, data);
    int x = csMouseEventHelper::GetX (&ev);
    int y = csMouseEventHelper::GetY (&ev);
    uint but = csMouseEventHelper::GetButton (&ev);
    bool butstate = csMouseEventHelper::GetButtonState (&ev);
    uint32 butmask = csMouseEventHelper::GetButtonMask (&ev);

    csInputDefinition def (namereg, &ev, modifiers, true); //do we want cooked?
    csString str = def.ToString ();
    printf ("Mouse %s: but=%d(state=%d,mask=%08" PRIu32 ") "
        "device=%d x=%d y=%d mods=%08" PRIu32 " desc='%s'\n",
	type == csMouseEventTypeMove ? "MOVE" :
    	type == csMouseEventTypeUp ? "UP" :
	type == csMouseEventTypeDown ? "DO" :
	type == csMouseEventTypeClick ? "CLICK" :
	type == csMouseEventTypeDoubleClick ? "DBL" :
	"?",
	but, butstate, butmask, device, x, y,
	modifiers, str.GetData ());
    fflush (stdout);
  }
  else if (CS_IS_JOYSTICK_EVENT (namereg, ev))
  {
    uint device = csJoystickEventHelper::GetNumber (&ev);
    csKeyModifiers key_modifiers;
    csKeyEventHelper::GetModifiers (&ev, key_modifiers);
    uint32 modifiers = csJoystickEventHelper::GetModifiers (&ev);
    csJoystickEventData data;
    csJoystickEventHelper::GetEventData (&ev, data);
    csInputDefinition def (namereg, &ev, modifiers, true);
    csString str = def.ToString (false);
    csString desc ("");
    if (CS_IS_JOYSTICK_BUTTON_EVENT (namereg, ev, device))
    {
      uint but = csJoystickEventHelper::GetButton (&ev);
      bool butstate = csJoystickEventHelper::GetButtonState (&ev);
      uint32 butmask = csJoystickEventHelper::GetButtonMask (&ev);
      printf ("Joystick %s: device=%d but=%d(state=%d,mask=%08" PRIu32 ") "
          "mods=%08" PRIu32 " desc='%s'\n",
          butstate ? "DO" : "UP", device, but, butstate, butmask,
          modifiers, str.GetData ());
    }
    else if (CS_IS_JOYSTICK_MOVE_EVENT (namereg, ev, device))
    {
      size_t pos = str.Find ("Axis");
      str.SubString (desc, pos + 4, (size_t)-1);
      uint axisnum = atoi(desc.GetData ());
      printf ("Joystick MOVE: device=%d axis=%" PRId32 " value=%d "
          "mods=%08" PRIu32 " desc='%s'\n",
          device, axisnum, data.axes[axisnum], modifiers, str.GetData ());
    }
    fflush(stdout);
  }

  csBaseEventHandler::HandleEvent(ev);
  return false;
}