Exemplo n.º 1
0
/*--------------------------------------------------------------------------*/
void PegStatusBar::SizeToParent(void)
{
    if (!Parent())
    {
        return;
    }

    PegWindow *pWin = (PegWindow *) Parent();

    PegRect NewSize = Parent()->mReal;

    if (pWin->Style() & FF_THICK)
    {
        NewSize.wBottom -= PEG_FRAME_WIDTH - 2;
        NewSize.wLeft += PEG_FRAME_WIDTH - 2;
        NewSize.wRight -= PEG_FRAME_WIDTH - 2;
    }
    else
    {
        if (!(pWin->Style() & FF_NONE))
        {
            NewSize.wBottom -= 2;
            NewSize.wLeft += 2;
            NewSize.wRight -= 2;
        }
    }

    NewSize.wTop = NewSize.wBottom - (mpFont->uHeight + 6);
    PegMessage NewMessage(PM_SIZE);
    NewMessage.Rect = NewSize;
    Message(NewMessage);

    if (Parent()->StatusIs(PSF_SIZEABLE))
    {
        mClient.wRight = mReal.wRight - PEG_SCROLL_WIDTH;
    }

    // Resize the last prompt so that it fills to my right,

    if (mpLastPrompt)
    {
        NewSize = mpLastPrompt->mReal;
        NewSize.wRight = mReal.wRight - 1;
        if (Parent())
        {
            if (Parent()->StatusIs(PSF_SIZEABLE))
            {
                NewSize.wRight -= PEG_SCROLL_WIDTH;
            }
        }
        mpLastPrompt->Resize(NewSize);
    }
}
Exemplo n.º 2
0
/*--------------------------------------------------------------------------*/
BOOL PegTextBox::LineUp(void)
{
    if (mpVScroll)
    {
        if (miTopLine)
        {
            // send myself a scroll up message:
            PegMessage NewMessage(PEG_SIGNAL(PegVScroll::IDB_UPBUTTON, PSF_CLICKED));
            mpVScroll->Message(NewMessage);
            return(TRUE);
        }
    }
    return(FALSE);
}
Exemplo n.º 3
0
/*--------------------------------------------------------------------------*/
BOOL PegTextBox::LineDown(void)
{
    if (mpVScroll)
    {
        PegScrollInfo *psi = mpVScroll->GetScrollInfo();

        if (psi->wCurrent + psi->wVisible < psi->wMax)
        {
            // send myself a scroll down message:
            PegMessage NewMessage(mpVScroll, PEG_SIGNAL(PegVScroll::IDB_DOWNBUTTON, PSF_CLICKED));
            mpVScroll->Message(NewMessage);
            return(TRUE);
        }
    }
    return(FALSE);
}
Exemplo n.º 4
0
/*--------------------------------------------------------------------------*/
void PegMenuBar::SizeToParent(void)
{
    if (!Parent())
    {
        return;
    }

    PegWindow *pWin = (PegWindow *) Parent();

    PegRect NewSize = Parent()->mReal;

    if (pWin->Style() & FF_THICK)
    {
        NewSize.wTop += PEG_FRAME_WIDTH - 1;
        NewSize.wLeft += PEG_FRAME_WIDTH - 1;
        NewSize.wRight -= PEG_FRAME_WIDTH - 2;
    }
    else
    {
        if (!(pWin->Style() & FF_NONE))
        {
            NewSize.wTop += 2;
            NewSize.wLeft += 2;
            NewSize.wRight -= 2;
        }
    }

    // look for a title, if there is one I need to be under it:

    PegThing *pTest = Parent()->First();

    while(pTest)
    {
        if (pTest->Type() == TYPE_TITLE)
        {
            NewSize.wTop += pTest->mReal.Height();
            break;
        }
        pTest = pTest->Next();
    }

    PegFont *pFont = DEF_MENU_FONT;
    NewSize.wBottom = NewSize.wTop + pFont->uHeight + 6;
    PegMessage NewMessage(PM_SIZE);
    NewMessage.Rect = NewSize;
    Message(NewMessage);
}
Exemplo n.º 5
0
/* Called from interrupt context */
int
Receive_Msg (ADAPTER_PTR HA, unsigned char Msg)
{
  unsigned char NM;

  TRACE(4,("Receive_Msg(): MI_Count = %d, Needed = %d\n", HA->Ext->MI_Count, HA->Ext->MI_Needed));
  switch (HA->Ext->MI_Count) {

  case 0:                                               /* New first message byte */

    HA->Ext->MI_Buff[0] = Msg;
    NM = NewMessage(HA, Msg);
    TRACE(5,("Receive_Msg(): NewMessage says: 0x%02x\n", NM));
    return NM;


  case -1:                                              /* Second byte (length) of extended message */

    TRACE(4,("Receive_Msg(): Extd msg length = %d\n", Msg));
    if (Msg == 0) {

      HA->Ext->MI_Needed = 0;
      HA->Ext->MI_Buff[1] = 0;
      HA->Ext->MI_Count = 0;
      return SCSISendReject(HA);

    }
    HA->Ext->MI_Needed = Msg;
    HA->Ext->MI_Buff[1] = Msg;
    HA->Ext->MI_Count = 2;
    return MI_MORE;


  default:                                              /* Subsequent bytes of multi-byte message */

    HA->Ext->MI_Buff[HA->Ext->MI_Count++] = Msg;
    if (--(HA->Ext->MI_Needed) == 0)
      return Interpret_MSG(HA);
    break;

  }

  return MI_MORE;
}
Exemplo n.º 6
0
void AwayEditorWindow::MessageReceived(BMessage* message)
{
	switch(message->what)
	{
	
		case AWAY_NEW:
			NewMessage();
			break;
			
		case AWAY_SAVE:
			SaveMessage();
			break;
			
		case AWAY_DELETE:
			DeleteMessage();
			break;
			
		case AWAY_CHANGED:
			isDirty = true;
			break;

		case BEAIM_RELOAD_PREF_SETTINGS:
			enterIsNewline = prefs->ReadBool( "EnterInsertsNewline", false );
			tabIsTab = prefs->ReadBool( "TabIsTab", false );
			break;

		case AWAY_SELECTED: {
			AwayItem* item = (AwayItem*)genView->listview->ItemAt( genView->listview->CurrentSelection() );
			if( !item || !CheckMessage() ) {
				EnableMessageStuff(false);
				return;
			}
			LoadMessage( item->GetName() );
			break;
		}
		
		case BEAIM_REFRESH_LANG_STRINGS:
			RefreshLangStrings();
			break;

		default:
			BWindow::MessageReceived(message);
	}
}
Exemplo n.º 7
0
void    ODGServerThread::run()
{
    try
    {
        if (!m_server)
        {
            m_server.reset(new Server(io_service,m_port));
            connect( (Server*)  m_server.get(),SIGNAL(NewMessage(std::string)),
                     this, SLOT(slotThreadNewMessage(std::string)));
        }
        emit NewLogMessage("Online Data Generator has started!");
        DBLogger::singleton()->LD_LogEvent(events::EVENT_ODG_SERVER_START_LISTEN,"ODG. Начало работы сервера",0);
        io_service.run();
    }
    catch (std::exception& ex)
    {
        emit ServerError("Server error: " + std::string(ex.what()));
    }
}
Exemplo n.º 8
0
void Logger::ProcessMessages() {
  if( !mProcessMessages )
    return;

  for( auto it : mQueue ) {
    LogEventType type = it.first;
    const QString& msg = it.second;

    if( mFile && mFile->isOpen() ) {
      QTextStream out( mFile );
      out << msg;
      mFile->flush();
    }

    emit NewMessage( type, msg );
  }

  mQueue.clear();
}
Exemplo n.º 9
0
void NPCTalk(Entity *self, Entity *other)
{
  int i;
  NPC *npc;
  i = (int)(random() * 10);
  /*start Dialog*/
  switch(i)
  {
    case 0:
      NewMessage("Hello Good Sir!",IndexColor(White));
      break;
    case 1:
      NewMessage("Greetings!",IndexColor(White));
      break;
    case 2:
      NewMessage("How are you doing?",IndexColor(White));
      break;
    case 3:
      NewMessage("Good Day",IndexColor(White));
      break;
    case 4:
      NewMessage("Haldo",IndexColor(White));
      break;
    case 5:
      NewMessage("Stay Safe",IndexColor(White));
      break;
    case 6:
      NewMessage("I hope you are well.",IndexColor(White));
      break;
    default:
      NewMessage("Hello Good Sir!",IndexColor(White));
      break;
  }
  npc = GetNPCByName(self->name);
  if(npc == NULL)return;
  NPCDialogWindow(npc,self->objindex);
}
Exemplo n.º 10
0
/*--------------------------------------------------------------------------*/
void PegMenuButton::SendOwnerMessage(void)
{
    if (mpSubMenu || !mpOwner || Parent()->Type() == TYPE_MENU_BAR)
    {
        return;
    }
    Presentation()->MoveFocusTree(mpOwner);
            
    if (mwStyle & BF_CHECKABLE)
    {
        if (mwStyle & BF_CHECKED)
        {
            SetChecked(FALSE);
        }
        else
        {
            SetChecked(TRUE);
        }
    }
    else
    {
        if (mwStyle & BF_DOTABLE)
        {
            RemoveSiblingDots();
            SetDotted(TRUE);
        }
        else
        {
            if (Id())
            {
                PegMessage NewMessage(mpOwner, PEG_SIGNAL(Id(), PSF_CLICKED));
                NewMessage.iData = Id();
                NewMessage.pSource = this;
                MessageQueue()->Push(NewMessage);
            }
        }
    }
}
Exemplo n.º 11
0
/*--------------------------------------------------------------------------*/
void PegStatusBar::SetFont(PegFont *pFont)
{
    if (!pFont)
    {
        return;
    }
    mpFont = pFont;
    PegRect NewSize = mReal;
    SIGNED iOldTop = mReal.wTop;
    NewSize.wTop = NewSize.wBottom - (mpFont->uHeight + 6);
    PegMessage NewMessage(PM_SIZE);
    NewMessage.Rect = NewSize;
    Message(NewMessage);

    // resize all my child prompts:
    NewSize.wTop += 2;
    NewSize.wBottom--;

    PegThing *pTest = First();
    while(pTest)
    {
        if (pTest->Type() == TYPE_PROMPT)
        {
            PegPrompt *pp = (PegPrompt *) pTest;
            NewSize.wLeft = pp->mReal.wLeft;
            NewSize.wRight = pp->mReal.wRight;
            pp->Resize(NewSize);
        }
        pTest = pTest->Next();
    }

    if (StatusIs(PSF_VISIBLE))
    {
        Parent()->mClient.wBottom += mReal.wTop - iOldTop;
        Parent()->Resize(Parent()->mReal);
        Parent()->Draw();
    }
}
Exemplo n.º 12
0
byte PlayerGetItem(byte itm, int x, int y)
{
	int cx, cy;

	GetCamera(&cx, &cy);
	cx <<= FIXSHIFT;
	cy <<= FIXSHIFT;

	// won't pick up other weapons when in power armor
	if (player.weapon == WPN_PWRARMOR && (itm == ITM_MISSILES || itm == ITM_AK8087 ||
			itm == ITM_FLAME || itm == ITM_BOMBS || itm == ITM_BIGAXE || itm == ITM_SPEAR ||
			itm == ITM_MACHETE || itm == ITM_MINES || itm == ITM_LIGHTNING || itm == ITM_TURRETWPN ||
			itm == ITM_JETPACK || itm == ITM_MINDCONTROL || itm == ITM_REFLECTOR || itm == ITM_SWAPGUN))
		return 1;

	switch (itm) {
		case ITM_HAMMERUP:
			if (player.hammers < 5)
				player.hammers++;
			MakeNormalSound(SND_HAMMERUP);
			NewMessage("HAMMER UP!", 75, 0);
			player.score += 150;
			return 0;
			break;
		case ITM_PANTS:
			if (player.hamSpeed > 0)
				player.hamSpeed -= 4;
			NewMessage("PANTS OF POWER!", 75, 0);
			MakeNormalSound(SND_PANTS);
			player.score += 100;
			return 0;
			break;
		case ITM_REVERSE:
			player.hammerFlags |= HMR_REVERSE;
			NewMessage("REVERSE HAMMER!", 75, 0);
			MakeNormalSound(SND_REVERSE);
			player.score += 100;
			return 0;
			break;
		case ITM_REFLECT:
			player.hammerFlags |= HMR_REFLECT;
			NewMessage("REFLECT HAMMER!", 75, 0);
			MakeNormalSound(SND_REFLECT);
			player.score += 100;
			return 0;
			break;
		case ITM_MISSILES:
			if (player.weapon == WPN_MISSILES && player.ammo == 20) // don't get it
				return 1;
			MakeNormalSound(SND_WEAPON);
			NewMessage("MISSILE PACK!", 75, 0);
			player.weapon = WPN_MISSILES;
			player.ammo = 20;
			player.score += 50;
			return 0;
			break;
		case ITM_FLAME:
			if (player.weapon == WPN_FLAME && player.ammo == 50) // don't get it
				return 1;
			MakeNormalSound(SND_WEAPON);
			NewMessage("FLAMETHROWER!", 75, 0);
			player.weapon = WPN_FLAME;
			player.ammo = 50;
			player.score += 50;
			return 0;
			break;
		case ITM_BOMBS:
			if (player.weapon == WPN_BOMBS && player.ammo == 5) // don't get it
				return 1;
			MakeNormalSound(SND_WEAPON);
			NewMessage("CHERRY BOMBS!", 75, 0);
			player.weapon = WPN_BOMBS;
			player.ammo = 5;
			player.score += 50;
			return 0;
			break;
		case ITM_AK8087:
			if (player.weapon == WPN_AK8087 && player.ammo == 99) // don't get it
				return 1;
			MakeNormalSound(SND_WEAPON);
			NewMessage("AK-8087!", 75, 0);
			player.weapon = WPN_AK8087;
			player.ammo = 99;
			player.score += 50;
			return 0;
			break;
		case ITM_TAKEOUT:
			if (player.life == 128)
				return 1; // don't need the food

			MakeNormalSound(SND_FOOD);
			goodguy->poison = 0;
			switch (MGL_random(8)) {
				case 0:
					NewMessage("Just fried rice", 75, 0);
					PlayerHeal(5);
					break;
				case 1:
					NewMessage("Mmm, Kung Pao!", 75, 0);
					PlayerHeal(25);
					break;
				case 2:
					NewMessage("Szechwan Shredded Pork!!", 75, 0);
					PlayerHeal(50);
					break;
				case 3:
					NewMessage("Moo Shi Beef!", 75, 0);
					PlayerHeal(25);
					break;
				case 4:
					NewMessage("Ick, mostly veggies", 75, 0);
					PlayerHeal(1);
					break;
				case 5:
					NewMessage("Hmm, tastes kind of citrusy", 75, 0);
					PlayerHeal(15);
					break;
				case 6:
					NewMessage("Joy! Wontons!", 75, 0);
					PlayerHeal(20);
					break;
				case 7:
					NewMessage("GeneralTsao has outdone himself", 75, 0);
					PlayerHeal(40);
					break;
			}
			player.score += 50;
			return 0;
			break;
		case ITM_SHIELD:
			MakeNormalSound(SND_SHIELD);
			player.shield = 240;
			player.score += 50;
			NewMessage("Energy Barrier!", 30, 0);
			return 0;
			break;
		case ITM_BRAIN:
			MakeNormalSound(SND_GETBRAIN);
			player.brains++;
			if (player.brains >= TotalBrains())
			{
				player.brains = TotalBrains();
				if (opt.playAs == PLAYAS_BOUAPHA)
					MakeNormalSound(SND_KOOLKAT);
				else if (opt.playAs == PLAYAS_LUNATIC)
					MakeNormalSound(SND_DRLLAUGH);
				else
					MakeNormalSound(SND_HAPPYDIE);

				playerGlow = 127;
			}
			player.score += 25;
			return 0;
			break;
		case ITM_KEY:
			if (player.keys[0] < 3)
			{
				player.keys[0]++;
				MakeNormalSound(SND_GETKEY);
				return 0;
			}
			else
				return 1; // don't pick it up
			break;
		case ITM_KEYR:
			MakeNormalSound(SND_GETKEY);
			player.keys[1] = 1;
			return 0;
			break;
		case ITM_KEYG:
			MakeNormalSound(SND_GETKEY);
			player.keys[2] = 1;
			return 0;
			break;
		case ITM_KEYB:
			MakeNormalSound(SND_GETKEY);
			player.keys[3] = 1;
			return 0;
			break;
		case ITM_KEYCH1:
			MakeNormalSound(SND_GETKEYCHAIN);
			player.keychain[player.worldNum][0] = 1;
			KeyChainAllCheck();
			player.score += 50000;
			player.prevScore += 50000;
			NewMessage("Cool! A pumpkin keychain!", 75, 0);
			return 0;
			break;
		case ITM_KEYCH2:
			MakeNormalSound(SND_GETKEYCHAIN);
			player.keychain[player.worldNum][1] = 1;
			KeyChainAllCheck();
			player.score += 50000;
			player.prevScore += 50000;
			NewMessage("Cool! A hammer keychain!", 75, 0);
			return 0;
			break;
		case ITM_KEYCH3:
			MakeNormalSound(SND_GETKEYCHAIN);
			player.keychain[player.worldNum][2] = 1;
			KeyChainAllCheck();
			player.score += 50000;
			player.prevScore += 50000;
			NewMessage("Cool! A rocket keychain!", 75, 0);
			return 0;
			break;
		case ITM_KEYCH4:
			MakeNormalSound(SND_GETKEYCHAIN);
			player.keychain[player.worldNum][3] = 1;
			KeyChainAllCheck();
			player.score += 50000;
			player.prevScore += 50000;
			NewMessage("Cool! A squash keychain!", 75, 0);
			return 0;
			break;
		case ITM_LOONYKEY:
			MakeNormalSound(SND_LOONYKEY);
			player.lunacyKey[player.worldNum] = 1;
			player.score += 100000;
			player.prevScore += 100000;
			return 0;
			break;
#ifdef EXPANDO
		case ITM_PWRARMOR:
			MakeNormalSound(SND_ROBOBOUAPHAON);
			NewMessage("POWER ARMOR!!", 75, 0);
			player.weapon = WPN_PWRARMOR;
			player.ammo = 1000;
			player.score += 150;
			player.shield = 0;
			goodguy->seq = ANIM_A2;
			goodguy->frm = 0;
			goodguy->frmTimer = 0;
			goodguy->frmAdvance = 64;
			goodguy->action = ACTION_BUSY;
			return 0;
			break;
		case ITM_BIGAXE:
			if (player.weapon == WPN_BIGAXE && player.ammo == 15) // don't get it
				return 1;
			MakeNormalSound(SND_WEAPON);
			NewMessage("BIG AXE!", 75, 0);
			player.weapon = WPN_BIGAXE;
			player.ammo = 15;
			player.score += 50;
			return 0;
			break;
		case ITM_LIGHTNING:
			if (player.weapon == WPN_LIGHTNING && player.ammo == 40) // don't get it
				return 1;
			MakeNormalSound(SND_WEAPON);
			NewMessage("LIGHTNING ROD!", 75, 0);
			player.weapon = WPN_LIGHTNING;
			player.ammo = 40;
			player.score += 50;
			return 0;
			break;
		case ITM_SPEAR:
			if (player.weapon == WPN_SPEAR && player.ammo == 20) // don't get it
				return 1;
			MakeNormalSound(SND_WEAPON);
			NewMessage("SPEARS!", 75, 0);
			player.weapon = WPN_SPEAR;
			player.ammo = 20;
			player.score += 50;
			return 0;
			break;
		case ITM_MACHETE:
			if (player.weapon == WPN_MACHETE && player.ammo == 30) // don't get it
				return 1;
			MakeNormalSound(SND_WEAPON);
			NewMessage("MACHETE!", 75, 0);
			player.weapon = WPN_MACHETE;
			player.ammo = 30;
			player.score += 50;
			return 0;
			break;
		case ITM_MINES:
			if (player.weapon == WPN_MINES && player.ammo == 8) // don't get it
				return 1;
			MakeNormalSound(SND_WEAPON);
			NewMessage("MINES!", 75, 0);
			player.weapon = WPN_MINES;
			player.ammo = 8;
			player.score += 50;
			return 0;
			break;
		case ITM_GARLIC:
			NewMessage("Fresh Garlic!", 75, 0);
			player.garlic = 255;
			return 0;
			break;
		case ITM_ORBITER:
			FireBullet(goodguy->x, goodguy->y, goodguy->facing, BLT_ORBITER, 1);
			NewMessage("ORBITER!", 75, 0);
			return 0;
			break;
		case ITM_ACCEL:
			MakeNormalSound(SND_SPEEDUP);
			NewMessage("PARTICLE ACCELERATOR!", 75, 0);
			player.speed = 255;
			return 0;
			break;
		case ITM_TURRETWPN:
			if (player.weapon == WPN_TURRET && player.ammo == 3) // don't get it
				return 1;
			MakeNormalSound(SND_WEAPON);
			NewMessage("TURRETS!", 75, 0);
			player.weapon = WPN_TURRET;
			player.ammo = 3;
			player.score += 50;
			return 0;
			break;
		case ITM_MINDCONTROL:
			if (player.weapon == WPN_MINDCONTROL && player.ammo == 1) // don't get it
				return 1;
			MakeNormalSound(SND_WEAPON);
			NewMessage("MIND CONTROL RAY!", 75, 0);
			player.weapon = WPN_MINDCONTROL;
			player.ammo = 1;
			player.score += 50;
			return 0;
			break;
		case ITM_REFLECTOR:
			if (player.weapon == WPN_REFLECTOR && player.ammo == 40) // don't get it
				return 1;
			MakeNormalSound(SND_WEAPON);
			NewMessage("REFLECTOR SHIELD!", 75, 0);
			player.weapon = WPN_REFLECTOR;
			player.ammo = 40;
			player.score += 50;
			return 0;
			break;
		case ITM_INVIS:
			MakeNormalSound(SND_ROBOBOUAPHAON);
			NewMessage("THE CLOAK INVISIBLE!", 75, 0);
			player.score += 50;
			player.invisibility = 255;
			return 0;
			break;
		case ITM_JETPACK:
			if (player.weapon == WPN_JETPACK && player.ammo == 10) // don't get it
				return 1;
			MakeNormalSound(SND_WEAPON);
			NewMessage("JETPACK!", 75, 0);
			player.weapon = WPN_JETPACK;
			player.ammo = 10;
			player.score += 50;
			return 0;
			break;
		case ITM_SWAPGUN:
			if (player.weapon == WPN_SWAPGUN && player.ammo == 3) // don't get it
				return 1;
			MakeNormalSound(SND_WEAPON);
			NewMessage("SWAPGUN!", 75, 0);
			player.weapon = WPN_SWAPGUN;
			player.ammo = 3;
			player.score += 50;
			return 0;
			break;
		case ITM_UNHAMMER:
			if (player.hammers > 0)
			{
				player.hammers--;
				player.score -= 150;
			}
			MakeNormalSound(SND_HAMMERDN);
			NewMessage("HAMMER DOWN!", 75, 0);
			return 0;
			break;
		case ITM_UNPANTS:
			if (player.hamSpeed < 16)
			{
				player.hamSpeed += 4;
				player.score -= 100;
			}
			NewMessage("PANTS OF SLOWNESS!", 75, 0);
			MakeNormalSound(SND_PANTSDN);
			return 0;
			break;
		case ITM_BADCHINESE:
			MakeNormalSound(SND_FOOD);
			goodguy->poison = 0;
			switch (MGL_random(6)) {
				case 0:
					NewMessage("Radioactive Energy!!", 75, 0);
					PlayerHeal(30);
					player.speed = 255;
					break;
				case 1:
					NewMessage("Szechwan Surprise!", 75, 0);
					PlayerHeal(128);
					break;
				case 2:
					NewMessage("Filling... with... RAGE!!", 75, 0);
					PlayerHeal(50);
					player.rage = 127 * 256;
					break;
				case 3:
					NewMessage("Toxic Mu Shu!", 75, 0);
					goodguy->poison = 255;
					break;
				case 4:
					NewMessage("Thermonuclear Heartburn!", 75, 0);
					goodguy->GetShot(0, 0, 50, GameCurrentMap(), &curWorld);
					break;
				case 5:
					NewMessage("Atomic Inviso-Power!", 75, 0);
					player.invisibility = 255;
					break;
			}
			player.score += 50;
			return 0;
			break;
#endif
	}
	return 1;
}
Exemplo n.º 13
0
int UpdateNPCShopWindow(HUDInfo *self,int pressID)
{
  char text[80];
  int c;
  int Good;
  NPC *npc;
  P_Skill *skill;
  Item *item;
  npc = (NPC *)self->ib;
  c = GetShopCount(npc);
  switch(pressID)
  {
    case 0:
      PopWindow(self->Handle);
      return 1;
      break;
  }
  if((pressID >= 1)&&(pressID <= c))
  {
    if(strcmp(npc->shop[pressID - 1].type,"item")==0)
    {
      item = GetItemByName(npc->shop[pressID - 1].name);
      if(item == NULL)return 0;
      if(PDat.gold >= (item->cost * npc->shop[pressID - 1].markup))
      {
        BuyingPrice = (item->cost * npc->shop[pressID - 1].markup);
        strcpy(BuyingItem,item->name);
        sprintf(text,"Buy %s for %iG?",BuyingItem,BuyingPrice);
        YesNo(text,PurchaseItem,NULL);
      }
      else
      {
        NewMessage("You can't afford this!",IndexColor(White));
        NewMessage("Come back when you have more money!",IndexColor(White));
      }
    }
    else if(strcmp(npc->shop[pressID - 1].type,"service")==0)
    {
      if(strcmp(npc->shop[pressID - 1].name,"Rest")==0)
      {
        /*TODO:advance the clock some time...*/
        /*TODO address status effects*/
        NewMsg("After some rest, you feel better.");
        PlayerEnt->health = PlayerEnt->healthmax;
        PlayerEnt->mana = PlayerEnt->manamax;
        PlayerEnt->stamina = PlayerEnt->staminamax;
      }
      else if(strcmp(npc->shop[pressID - 1].name,"Inventory")==0)
      {
        /*TODO Open up Stockpile menu*/
        NewMsg("To Be Added.");
      }
      else if(strcmp(npc->shop[pressID - 1].name,"Upgrade")==0)
      {
        /*TODO Open up Stockpile menu*/
        NewMsg("To Be Added.");
      }
    }
    else if(strcmp(npc->shop[pressID - 1].type,"spell")==0)
    {
      skill = GetSpellByName(npc->shop[pressID - 1].name);
      if(skill == NULL)return 0;
      if(PDat.gold >= (skill->price * npc->shop[pressID - 1].markup))
      {
        if(strcmp(skill->type,"favor")==0)
        {
          if(GetPlayerItemByName("Wood Relic")!= NULL)/*TODO add other favor castors as needed*/
          {
            BuyingPrice = (skill->price * npc->shop[pressID - 1].markup);
            strcpy(BuyingItem,skill->name);
            sprintf(text,"Learn the divine favor %s for %iG?",BuyingItem,BuyingPrice);
            YesNo(text,PurchaseSpell,NULL);
          }
          else
          {
            NewMsg("In order to learn this, you will need a Holy Relic");
          }
        }
        if(strcmp(skill->type,"alchemy")==0)
        {
          if(GetPlayerItemByName("White Stone")!= NULL)/*TODO add other favor castors as needed*/
          {
            BuyingPrice = (skill->price * npc->shop[pressID - 1].markup);
            strcpy(BuyingItem,skill->name);
            sprintf(text,"Learn how to make %ss for %iG?",BuyingItem,BuyingPrice);
            YesNo(text,PurchaseSpell,NULL);
          }
          else
          {
            NewMsg("In order to learn this, you will need a Philosopher's Stone!");
          }
        }
      }
      else
      {
        NewMsg("I'm afraid I can't afford to teach for free.");
      }
    }
    else if(strcmp(npc->shop[pressID - 1].type,"skill")==0)
    {
      skill = GetSkillByName(npc->shop[pressID - 1].name);
      if(skill == NULL)return 0;
      Good = 1;
      if(PDat.gold >= (skill->price * npc->shop[pressID - 1].markup))
      {
        if(SkillHasSpecial(skill,"Strength"))
        {
          if(PDat.attr[A_Str].score < 10)
          {
            Good = 0;
            NewMsg("You will need to have more strength than that to learn this skill.");
          }
        }
        if(SkillHasSpecial(skill,"Endurance"))
        {
          if(PDat.attr[A_End].score < 10)
          {
            Good = 0;
            NewMsg("I'm sorry, you just are not tough enough to handle this skill.");
          }
        }
        if(SkillHasSpecial(skill,"Agility"))
        {
          if(PDat.attr[A_Agi].score < 10)
          {
            Good = 0;
            NewMsg("You will need to work on your footwork before I can teach you this.");
          }
        }
        if(SkillHasSpecial(skill,"Dexterity"))
        {
          if(PDat.attr[A_Dex].score < 10)
          {
            Good = 0;
            NewMsg("I'm sorry, but you have stupid hands.  If you get new ones come back.");
          }
        }
        if(SkillHasSpecial(skill,"Focus"))
        {
          if(PDat.attr[A_Foc].score < 10)
          {
            Good = 0;
            NewMsg("If you can't concentrate,  I can't teach you.");
          }
        }
        if(SkillHasSpecial(skill,"Spirit"))
        {
          if(PDat.attr[A_Str].score < 10)
          {
            Good = 0;
            NewMsg("You lack the strength of will to understand what I haave to teach you.");
          }
        }
        if(Good)
        {
          BuyingPrice = (skill->price * npc->shop[pressID - 1].markup);
          strcpy(BuyingItem,skill->name);
          sprintf(text,"Learn the %s skill for %iG?",BuyingItem,BuyingPrice);
          YesNo(text,PurchaseSkill,NULL);
        }
      }
      else
      {
        NewMsg("Training Takes time and MONEY.  Come back when you have more of the later.");
      }
    }
    return 1;
  }
  return 0;
}
Exemplo n.º 14
0
void CompleteQuest()
{
  char buf[80];
  char text[80];
  char map[80];
  int  id;
  Progress *p;
  P_Item *pitem;
  char *b;
  int i;
  int g;
  if(QuestNPC == NULL)return;
  /*resolve win conditions*/
  for(i = 0; i < 4;i++)
  {
    if(strlen(QuestNPC->quests[QuestID].wincond[i]) > 1)
    {
      sscanf(QuestNPC->quests[QuestID].wincond[i],"%s",buf);
      if(strcmp(buf,"return")==0)
      {
        /*first type of win condition, return an item*/
        b = strchr(QuestNPC->quests[QuestID].wincond[i], ' ');
        b++;
        /*find item by b in player's inventory*/
        pitem = GetPlayerItemByName(b);
        if(pitem != NULL)
        {
          /*by now, this should be true*/
          TakePlayerItem(pitem);
        }
      }
      else if(strcmp(buf,"kill")==0)
      {
        sscanf(QuestNPC->quests[QuestID].wincond[i],"%s %s %i",buf,map,&id);
        p = GetProgressByIndexMap(map,id);
        if(p != NULL)
        {
          if(strcmp(p->value,"dead")== 0)
          {
            sprintf(text,"Well done killing that beast!");
            NewMsg(text);
          }
        }
      }
      else if(strcmp(buf,"save")==0)
      {
        sscanf(QuestNPC->quests[QuestID].wincond[i],"%s %s %i",buf,map,&id);
        p = GetProgressByIndexMap(map,id);
        if(p != NULL)
        {
          if(strcmp(p->value,"saved")== 0)
          {
            sprintf(text,"You are a true hero, Thank you!");
            NewMsg(text);
          }
        }
      }
    }
  }
  /*give rewards*/
  for(i = 0; i < 4;i++)
  {
    if(strlen(QuestNPC->quests[QuestID].reward[i]) > 1)
    {
      sscanf(QuestNPC->quests[QuestID].reward[i],"%s",buf);
      if(strcmp(buf,"gold")==0)
      {
        b = strchr(QuestNPC->quests[QuestID].reward[i], ' ');
        b++;
        sscanf(b,"%i",&g);
        GivePlayerGold(g);
        NewMessage("Here is some Gold!",IndexColor(Gold));
      }
      else if(strcmp(buf,"item")==0)
      {
        b = strchr(QuestNPC->quests[QuestID].reward[i], ' ');
        b++;
        GivePlayerItem(b);
        sprintf(text,"Have this %s.",b);
        NewMsg(text);
      }
      else if(strcmp(buf,"skill")==0)
      {
        b = strchr(QuestNPC->quests[QuestID].reward[i], ' ');
        b++;
        GivePlayerSkill(b);
        sprintf(text,"I will teach you the skill %s.",b);
        NewMsg(text);
      }
      else if(strcmp(buf,"spell")==0)
      {
        b = strchr(QuestNPC->quests[QuestID].reward[i], ' ');
        b++;
        GivePlayerSpell(b);
        sprintf(text,"I will teach you the spell %s.",b);
        NewMsg(text);
      }
      else if(strcmp(buf,"grace")==0)
      {
        b = strchr(QuestNPC->quests[QuestID].reward[i], ' ');
        b++;
        sscanf(b,"%i",&g);
        GivePlayerGrace(g);
        sprintf(text,"You have earned %i grace.",g);
        NewMsg(text);
      }
    }
  }
  SetPlayerProgress(level.name,QuestNPC->quests[QuestID].name, NPCID,"complete");
}
Exemplo n.º 15
0
        ExitNow(error = Icmp::HandleMessage(message, messageInfo));
    }

exit:
    return error;
}

void Ip6::ProcessReceiveCallback(Message &aMessage)
{
    ThreadError error = kThreadError_None;
    Message *messageCopy;

    VerifyOrExit(sReceiveIp6DatagramCallback != NULL, ;);

    // make a copy of the datagram to pass to host
    VerifyOrExit((messageCopy = NewMessage(0)) != NULL, ;);
    SuccessOrExit(error = messageCopy->SetLength(aMessage.GetLength()));
    VerifyOrExit(aMessage.CopyTo(0, 0, aMessage.GetLength(), *messageCopy) == aMessage.GetLength(),
                 error = kThreadError_Drop);

    sReceiveIp6DatagramCallback(messageCopy);

exit:

    if (error != kThreadError_None && messageCopy != NULL)
    {
        Message::Free(*messageCopy);
    }
}

ThreadError Ip6::HandleDatagram(Message &message, Netif *netif, uint8_t interfaceId, const void *linkMessageInfo,
Exemplo n.º 16
0
void MacroRecorder::record(int message, uptr_t wParam, sptr_t lParam)
{
FXString msgstring;
  MacroMessage*prev=list[0];
  switch (message) {
    case SCI_CUT:
    case SCI_COPY:
    case SCI_CLEARALL:
    case SCI_SELECTALL:
    case SCI_HOME:
    case SCI_HOMEEXTEND:
    case SCI_LINEEND:
    case SCI_LINEENDEXTEND:
    case SCI_HOMEWRAP:
    case SCI_HOMEWRAPEXTEND:
    case SCI_LINEENDWRAP:
    case SCI_LINEENDWRAPEXTEND:
    case SCI_DOCUMENTSTART:
    case SCI_DOCUMENTSTARTEXTEND:
    case SCI_DOCUMENTEND:
    case SCI_DOCUMENTENDEXTEND:
    case SCI_LINECOPY:
    case SCI_LINECUT:
    case SCI_LINEDELETE:
    case SCI_LOWERCASE:
    case SCI_UPPERCASE:
    case SCI_COPYALLOWLINE:
    case SCI_HOMERECTEXTEND:
    case SCI_LINEENDRECTEXTEND:
    case SCI_SEARCHANCHOR:
    {
      if ((!prev)||(prev->message!=message)) {
        NewMessage();
      }
      return;
    }

    case SCI_GOTOLINE:
    case SCI_GOTOPOS:
    case SCI_SETSELECTIONMODE:
    {
      if ((!prev)||(prev->message!=message)||(prev->wParam!=wParam)||(prev->lParam!=lParam)) {
        NewMessage();
      }
      return;
    }

    case SCI_REPLACESEL:
    case SCI_ADDTEXT:
    case SCI_INSERTTEXT:
    case SCI_APPENDTEXT:
    {
      if ((prev) && (prev->message==message)) {
        AppendString();
      } else {
        AddString();
      }
      return;
    }

    case SCI_SEARCHNEXT:
    case SCI_SEARCHPREV:
    {
      if (!prev) {
        AddString();
      } else {
        if ((prev->message==SCI_SEARCHNEXT)||(prev->message==SCI_SEARCHPREV)) {
          NewMessage();
          if (strcmp((char*)prev->lParam,(char*)lParam)==0) {
            mm->lParam=prev->lParam;
          } else {
            mm->lParam=reinterpret_cast<long>(strdup((char*)lParam));
            mm->allocd=1;
          }
        } else {
          AddString();
        }
      }
      return;
    }
    case SCI_REPLACETARGET: { // Hijacked message, see SciSearch::NotifyRecorder()
      AddString();
      return;
    }
    case SCI_PASTE:
    case SCI_LINEDOWN:
    case SCI_LINEDOWNEXTEND:
    case SCI_PARADOWN:
    case SCI_PARADOWNEXTEND:
    case SCI_LINEUP:
    case SCI_LINEUPEXTEND:
    case SCI_PARAUP:
    case SCI_PARAUPEXTEND:
    case SCI_CHARLEFT:
    case SCI_CHARLEFTEXTEND:
    case SCI_CHARRIGHT:
    case SCI_CHARRIGHTEXTEND:
    case SCI_WORDLEFT:
    case SCI_WORDLEFTEXTEND:
    case SCI_WORDRIGHT:
    case SCI_WORDRIGHTEXTEND:
    case SCI_WORDPARTLEFT:
    case SCI_WORDPARTLEFTEXTEND:
    case SCI_WORDPARTRIGHT:
    case SCI_WORDPARTRIGHTEXTEND:
    case SCI_WORDLEFTEND:
    case SCI_WORDLEFTENDEXTEND:
    case SCI_WORDRIGHTEND:
    case SCI_WORDRIGHTENDEXTEND:
    case SCI_STUTTEREDPAGEUP:
    case SCI_STUTTEREDPAGEUPEXTEND:
    case SCI_STUTTEREDPAGEDOWN:
    case SCI_STUTTEREDPAGEDOWNEXTEND:
    case SCI_PAGEUP:
    case SCI_PAGEUPEXTEND:
    case SCI_PAGEDOWN:
    case SCI_PAGEDOWNEXTEND:
    case SCI_DELETEBACK:
    case SCI_TAB:
    case SCI_BACKTAB:
    case SCI_FORMFEED:
    case SCI_DELWORDLEFT:
    case SCI_DELWORDRIGHT:
    case SCI_EDITTOGGLEOVERTYPE:
    case SCI_CANCEL:
    case SCI_VCHOME:
    case SCI_VCHOMEEXTEND:
    case SCI_VCHOMEWRAP:
    case SCI_VCHOMEWRAPEXTEND:
    case SCI_DELWORDRIGHTEND:
    case SCI_DELLINELEFT:
    case SCI_DELLINERIGHT:
    case SCI_LINETRANSPOSE:
    case SCI_LINEDUPLICATE:
    case SCI_HOMEDISPLAY:
    case SCI_HOMEDISPLAYEXTEND:
    case SCI_LINEENDDISPLAY:
    case SCI_LINEENDDISPLAYEXTEND:
    case SCI_LINEDOWNRECTEXTEND:
    case SCI_LINEUPRECTEXTEND:
    case SCI_CHARLEFTRECTEXTEND:
    case SCI_CHARRIGHTRECTEXTEND:
    case SCI_VCHOMERECTEXTEND:
    case SCI_PAGEUPRECTEXTEND:
    case SCI_PAGEDOWNRECTEXTEND:
    case SCI_SELECTIONDUPLICATE:
    case SCI_LINESCROLLDOWN:
    case SCI_LINESCROLLUP:
    case SCI_DELETEBACKNOTLINE:
    case SCI_CLEAR:
    {
      if ( (!prev) || (prev->message!=message) ) {
        NewMessage();
      } else {
        prev->lParam++;
      }
      return;
    }
  }
}
Exemplo n.º 17
0
byte LunaticRun(int *lastTime)
{
	numRunsToMakeUp = 0;
	if (*lastTime > TIME_PER_FRAME * 30)
		*lastTime = TIME_PER_FRAME * 30;

	while (*lastTime >= TIME_PER_FRAME)
	{
		if (!gamemgl->Process())
		{
			mapToGoTo = 255;
			return LEVEL_ABORT;
		}

		if (gameMode == GAMEMODE_PLAY)
		{
			// update everything here
			if (!windingDown)
			{
				if (windingUp)
				{
					curMap->Update(UPDATE_FADEIN, &curWorld);
					EditorUpdateGuys(curMap);
					windingUp--;
				}
				else
				{
					curMap->Update(UPDATE_GAME, &curWorld);
					UpdateGuys(curMap, &curWorld);
					UpdateBullets(curMap, &curWorld);
					SpecialAnytimeCheck(curMap);
				}
			}
			else
			{
				curMap->Update(UPDATE_FADE, &curWorld);
				EditorUpdateGuys(curMap);
			}
			UpdateParticles(curMap);
			UpdateMessage();

			if (curMap->flags & MAP_SNOWING)
				MakeItSnow(curMap);

			if (windingDown)
			{
				windingDown--;
				if (!windingDown)
					return windDownReason;
			}
		}
		else if (gameMode == GAMEMODE_MENU)
		{
			switch (UpdatePauseMenu(gamemgl)) {
				case 0:
					lastKey = 0;
					gameMode = GAMEMODE_PLAY;
					break;
				case 1:
					break;
				case 2:
					if (mapNum)
						mapToGoTo = 0;
					else
						mapToGoTo = 255;
					lastKey = 0;
					return LEVEL_ABORT;
					break;
				case 3:
					mapToGoTo = 255;
					lastKey = 0;
					return WORLD_QUITGAME; // dump out altogether
					break;
			}
		}
		else if (gameMode == GAMEMODE_PIC) // gamemode_pic
		{
			if (GetTaps()&(CONTROL_B1 | CONTROL_B2))
			{
				gameMode = GAMEMODE_PLAY;
				// restore the palette
				gamemgl->LoadBMP("graphics\\title.bmp");
			}
		}
		else // gamemode_rage
		{
			UpdateRage(gamemgl);
			if (player.rageClock)
				player.rageClock--;
			else
			{
				gameMode = GAMEMODE_PLAY;
				StartRaging();
			}
			if (goodguy)
				goodguy->facing = (goodguy->facing + 1)&7;
		}

		if (msgFromOtherModules == MSG_NEWFEATURE)
		{
			NewMessage("** NEW FEATURE ADDED!! **", 120, 1);
			msgFromOtherModules = MSG_NONE;
		}
		else if (msgFromOtherModules == MSG_GOTOMAP)
		{
			mapToGoTo = msgContent;
			windingDown = 30;
			windDownReason = LEVEL_ABORT;
			msgFromOtherModules = MSG_NONE;
		}
		else if (msgFromOtherModules == MSG_WINLEVEL)
		{
			mapToGoTo = msgContent;
			windingDown = 40;
			windDownReason = LEVEL_WIN;
			msgFromOtherModules = MSG_NONE;
			if (player.worldNum == 4 && player.levelNum == 6)
			{

				ShowVictoryAnim(4); // you killed him.
				SendMessageToGame(MSG_WINGAME, 0);
			}
			player.boredom = 0;
		}
		else if (msgFromOtherModules == MSG_RESET)
		{
			if (opt.youSuck)
				NewBigMessage("You Suck", 30);
			else
				NewBigMessage("Try Again!", 30);
			windingDown = 30;
			windDownReason = LEVEL_RESET;
			msgFromOtherModules = MSG_NONE;
		}
		else if (msgFromOtherModules == MSG_LOADGAME)
		{
			NewBigMessage("Loading Game", 30);
			windingDown = 30;
			windDownReason = LEVEL_LOADING;
			msgFromOtherModules = MSG_NONE;
		}
		else if (msgFromOtherModules == MSG_WINGAME)
		{
			dword CDtime;

			mapToGoTo = 0;
			windingDown = 1;
			windDownReason = LEVEL_WIN;
			msgFromOtherModules = MSG_NONE;
			CDtime = timeGetTime();
			VictoryText(gamemgl);
			Credits(gamemgl);
			garbageTime += timeGetTime() - CDtime;
			player.boredom = 0;
		}
		*lastTime -= TIME_PER_FRAME;
		numRunsToMakeUp++;
		updFrameCount++;
	}
	HandleCDMusic();
	garbageTime = 0;
	JamulSoundUpdate();

	return LEVEL_PLAYING;
}
Exemplo n.º 18
0
void PollKeyboard(void)
{
    int ScanCode;
    int CtrlCode;
    int CtrlWord;
    int KeyVal;
    union REGS regs;
    PegMessage NewMessage(NULL, PM_KEY);
    PegThing *pt = NULL;

    #if defined(_MSC_VER)
    if (_kbhit())
    {
    #else
    if (kbhit())
    {
    #endif
        regs.h.ah = 0x10;
        int86 (0x16, &regs, &regs);
        ScanCode = regs.h.ah;
        regs.h.ah = 2;
        int86 (0x16, &regs, &regs);
        CtrlCode = regs.h.al;

        CtrlWord = 0;        
        if (CtrlCode & 0x04)
        {
            CtrlWord = KF_CTRL;
        }
        if (CtrlCode & 0x03)
        {
            CtrlWord |= KF_SHIFT;
        }

        KeyVal = 0;
        if (ScanCode < AT_KEYTABLE_LEN)
        {
            if (CtrlWord & KF_SHIFT)      // shift key pressed?
            {
                if (CtrlCode & 0x40)
                {
                    KeyVal = ATKeyTable[ScanCode][0];
                }
                else
                {
                    KeyVal = ATKeyTable[ScanCode][1];
                }
            }
            else
            {
                if (CtrlCode & 0x40)
                {
                    KeyVal = ATKeyTable[ScanCode][1];
                }
                else
                {
                    KeyVal = ATKeyTable[ScanCode][0];
                }
            }
        }
        else
        {
            if (ScanCode == DOS_CTRL_F4)
            {
                KeyVal = PK_F4;
                CtrlWord = KF_CTRL;
            }
        }

        if (KeyVal)
        {
            // convert the F4 key into a <CTRL-TAB> key, since without hooking
            // the keyboard interrupt directly it is impossible to receive
            // a CTRL-TAB key under DOS.

            if (KeyVal == PK_F4 && !CtrlWord)
            {
                KeyVal = PK_TAB;
                CtrlWord = KF_CTRL;
            }
            NewMessage.wType = PM_KEY;

            if (CtrlWord & KF_CTRL)
            {
                switch(KeyVal)
                {
                case 'x':
                case 'X':
                    NewMessage.wType = PM_CUT;
                    break;

                case 'c':
                case 'C':
                    NewMessage.wType = PM_COPY;
                    break;

                case 'v':
                case 'V':
                    NewMessage.wType = PM_PASTE;
                    break;
                }
            }
            NewMessage.iData = KeyVal;
            NewMessage.lData = CtrlWord;
            pt->MessageQueue()->Push(NewMessage);
            OldKeyVal = KeyVal;     // keep track of last key sent
            OldStatus = CtrlWord;   // and its flags
            OldKeyTime = OldTime;   // and when it was sent
        }
    }
    else
    {
        if (OldKeyVal && (OldTime - OldKeyTime > 10))
        {
            NewMessage.wType = PM_KEY_RELEASE;
            NewMessage.lData = OldStatus;
            NewMessage.iData = OldKeyVal;
            OldKeyVal = 0;
            pt->MessageQueue()->Push(NewMessage);
        }
    }
}

#endif

/*--------------------------------------------------------------------------*/
#define MOUSEXMIN 2
#define MOUSEYMIN 2

#ifdef SUPERVGA
#define MOUSEXMAX 1022
#define MOUSEYMAX 766
#elif defined(_PEGVGASCRN_)
#define MOUSEXMAX 638
#define MOUSEYMAX 478
#else
#define MOUSEXMAX 318
#define MOUSEYMAX 238
#endif

int xPos = MOUSEXMAX / 2;
int yPos = MOUSEYMAX / 2;
int oldx = -1;
int oldy = -1;
int OldButtons;


void PollMouse(void)
{
    PegMessage NewMessage;
    union REGS regs;
    PegThing *pt = NULL;
    int xDelta = 0, yDelta = 0;
    regs.x.ax = 0x03;
    int86 (0x33, &regs, &regs);

    int Buttons = regs.x.bx;

    regs.x.ax = 0x0b;
    int86 (0x33, &regs, &regs);

    xDelta = regs.x.cx;
    yDelta = regs.x.dx;

    xPos += xDelta;
    yPos += yDelta;

    if (xPos < MOUSEXMIN)
    {
        xPos = MOUSEXMIN;
    }
    if (xPos > MOUSEXMAX)
    {
        xPos = MOUSEXMAX;
    }
    if (yPos < MOUSEYMIN)
    {
        yPos = MOUSEYMIN;
    }
    if (yPos > MOUSEYMAX)
    {
        yPos = MOUSEYMAX;
    }

    if (OldButtons != Buttons)
    {
        if (Buttons & 0x01)
        {
            NewMessage.wType = PM_LBUTTONDOWN;
        }
        else
        {
            NewMessage.wType = PM_LBUTTONUP;
        }
        NewMessage.Point.x = xPos;
        NewMessage.Point.y = yPos;
        NewMessage.iData = Buttons;
        pt->MessageQueue()->Push(NewMessage);
    }
    else
    {
        if (oldx != xPos || oldy != yPos)
        {
            NewMessage.wType = PM_POINTER_MOVE;
            NewMessage.Point.x = xPos;
            NewMessage.Point.y = yPos;
            NewMessage.iData = Buttons;
            pt->MessageQueue()->Push(NewMessage);
        }
    }
    oldx = xPos;
    oldy = yPos;
    OldButtons = Buttons;
}
Exemplo n.º 19
0
void tileThink(entity *self)
{
  Uint8 *keys;
  Coord TempS;    /*temp position*/
  Coord cam;
  char dm[80];
  bsp *node;

  int i;
  Coord downvect;

    keys = SDL_GetKeyState(NULL);

    if(self->state==0)
    {
    if(keys[SDLK_LEFT])
    {
      self->v.y-=0.05f;
      self->v.x+=0.05f;
      if(self->v.y <= -1)
      {
        self->v.y=-1;
        self->v.x=0;
        self->state=1;
      }
      if(self->v.x >= 1)
      {
        self->v.x=1;
      }
    }
    if(keys[SDLK_RIGHT])
    {
      self->v.y+=0.05f;
      self->v.x+=0.05f;
      if(self->v.y >= 1)
      {
        self->v.y=1;
        self->v.x=0;
        self->state=1;
      }
      if(self->v.x >= 1)
      {
        self->v.x=1;
      }
    }
    }
    if(self->state==1)
    {
      if(keys[SDLK_LEFT])
      {
        self->v.y+=0.05f;
        self->v.x-=0.05f;
        if(self->v.y >= 1)
        {
          self->v.y=1;
          self->v.x=0;
          self->state=0;
        }
        if(self->v.x <= -1)
        {
          self->v.x=-1;
        }
      }
      if(keys[SDLK_RIGHT])
      {
        self->v.y-=0.05f;
        self->v.x-=0.05f;
        if(self->v.y <= -1)
        {
          self->v.y=-1;
          self->v.x=0;
          self->state=0;
        }
        if(self->v.x <= -1)
        {
          self->v.x=-1;
        }
      }
    }

    if(self->state==0)
    {
      self->rotation.z=(90*self->v.y)-90;
    }
    if(self->state==1)
    {
      self->rotation.z=-(90*self->v.y)+90;
    }
    UpdatePosition(self);

    cam.x = self->s.x;
    cam.y = self->s.y;
    cam.z = self->s.z;
    glCamera.position.x= -self->s.x;
    glCamera.position.y= -self->s.y+100;
    glCamera.position.z= -self->s.z-50;

    downvect.x = 0;
    downvect.y = 0;
    downvect.z = -1;

    node = checkBsp(self->s);
  for (i = 0; i < node->numTris; i++)
  {
    //Draw3DThickLine( node->triList[i]->v1, node->triList[i]->v2,1,0,0);
    //Draw3DThickLine(node->triList[i]->v3, node->triList[i]->v2,1,0,0);
    //Draw3DThickLine( node->triList[i]->v1, node->triList[i]->v3,1,0,0);
    if(RayInTriangle(cam, downvect, node->triList[i]->v1, node->triList[i]->v2, node->triList[i]->v3, &TempS) == -1)
    {
      self->s.z=TempS.z+2;
        
      break;
    }
  }
  //sprintf(dm,"%f %f",self->s.x, self->s.y);
  //NewMessage(dm,IndexColor(White));
if(self->health <=0 || self->s.x > 310.0f || self->s.x < -190.0f || self->s.y > 310.0f || self->s.y < -220.0f)
{
  freeEntity(self);
  playdead=1;
  NewMessage("Game Over! Press Escape to exit",IndexColor(White));
}

}
Exemplo n.º 20
0
void GiveInfo()
{
  NewMessage("Press Esc to Quit",IndexColor(White));
  NewMessage("Press F1 For Options Menu",IndexColor(White));
}
Exemplo n.º 21
0
// CheckSerial
// Checks for commands on the serial port
int Panel8x8Serial::CheckSerial() {
  static int i,j,k;
  static int iReceiveBuffer;
  static int iBufferBlock;
  uint8_t     sr;
  uint16_t    *ptr;  
  static byte sCommand = 0;
  static byte inbuffer[16];
  
  if (Serial.available()>0) {
   while (Serial.available()>0) {
     sr  = Serial.read();
     
     // Look for start of command
     if (sr==27 && sCommand==0) {
       sCommand = 255;
     }
     
     // Command processing
     // If HaveCommand then we saw an escape which is a start of command sequence character
     // Look for Esc-C, Esc-F, Esc-L, or ESC-S
     else if (sCommand == 255) {
       if      (sr=='C') {WriteByte(0,0); iBufferLen=0; NewMessage(); sCommand=0;}
       else if (sr=='T') {PanelMode=11; sCommand=1;} //Loading Text
       else if (sr=='F') {PanelMode=12; sCommand=2;} //Loading Animation
       else if (sr=='L') {PanelMode=13; sCommand=3;} //Live Animation
       else if (sr=='S') {              sCommand=4;} //Settings mode
#ifdef DEBUG8X8SERIAL
       (*_debug) << "Command Decoded " << _DEC(sCommand) << crlf;
#endif
	   i=0;  //Index into char text buffer
       j=0;  //Packet length
       k=0;  //Parameters buffer length
     }
     
     // Text Loading 
     else if (sCommand == 1) { //Text Loading Mode
      if (k<=3) {
#ifdef DEBUG8X8SERIAL
	   (*_debug) << "Param: " << _DEC(k) << " = " << _DEC(sr) << crlf;
#endif
	   inbuffer[k++]=char(sr);  
       if (k==4) {
	    k++;
        ClearOutput();
        bIsScrolling=true;
        ptr = (uint16_t *)inbuffer;
	    frameDelay = *ptr++;
        iReceiveBuffer = *ptr;
#ifdef DEBUG8X8SERIAL
        (*_debug) << "frameDelay: " << frameDelay << crlf;
        (*_debug) << "Length: " << iReceiveBuffer << crlf;
#endif
		iBufferLen=0;
		iBufferBlock=0;
	    if  (iReceiveBuffer>iBufferSize) {iReceiveBuffer=0;}
        if (iReceiveBuffer==0) {Serial.print(char(1)); PanelMode=1; NewMessage(); sCommand=0;}   // End of processing if 0 length buffer
       }
	  }
      else {
       WriteByte(iBufferLen++,sr); 
#ifdef DEBUG8X8SERIAL
	   (*_debug) << iBufferLen << "/" << iReceiveBuffer << ": " <<  sr << crlf;
#endif
	   if (++iBufferBlock==64) {Serial.print(char(0)); iBufferBlock=0;}
       if (iBufferLen>=iReceiveBuffer) {Serial.print(char(0)); WriteByte(iBufferLen,0); PanelMode=1; NewMessage(); sCommand=0;} // End of processing if no more text
      }
     }
     
     // Animation Loading
     else if (sCommand == 2) { // Animation Load Mode
      // Parameter Processing
      if (k<=7) {
#ifdef DEBUG8X8SERIAL
        (*_debug) << "Param: " << _DEC(k) << " = " << _DEC(sr) << crlf;
#endif
		inbuffer[k++]=char(sr);  
        if (k==8) { // Parameters
         idxScroll=0;     //Reset buffer pointer
         bIsScrolling=false;
         ptr = (uint16_t *)inbuffer;
         i = *(ptr++);
#ifdef DEBUG8X8SERIAL
         (*_debug) << "Version: " << _DEC(i) << crlf;
#endif
		 if (i!=PANEL8X8SERIALFILE) {Serial.print(char(1)); PanelMode=2; sCommand=0;}  //Send back a 1 as error, wrong version.
         iPanels = *(ptr++);
         iFrames = *(ptr++);
         frameDelay = *(ptr);
#ifdef DEBUG8X8SERIAL
		 (*_debug) << "Panels: " << iPanels << crlf;
         (*_debug) << "Fames: " << iFrames << crlf;
         (*_debug) << "Delay: " << frameDelay << crlf;
#endif
		 l = iPanels * 8 * iFrames;
		 i=0;
		 iBufferBlock =0;
		 if (isBufferProgMem || l > iBufferSize) {l=0;}
         if (l==0) {Serial.print(char(1)); PanelMode=2; sCommand=0;}   // End of processing if 0 length buffer
        }
      }
      // Data Processing
      else {
#ifdef DEBUG8X8SERIAL
	  (*_debug) << i << "/" << l << ": " <<  sr << crlf;
#endif
	   WriteByte(i++,sr); 
	   if (++iBufferBlock==8) {Serial.print(char(0)); iBufferBlock=0;}
       if (i==l) {Serial.print(char(0)); PanelMode=2; sCommand=0;} // End of processing no more data.
      }
     }
     
     // Live Animation Loading
     else if (sCommand == 3) { // Live Animation Load Mode
      // Parameter Processing
      if (k<=5) {
#ifdef DEBUG8X8SERIAL
  	   (*_debug) << "Param: " << _DEC(k) << " = " << _DEC(sr) << crlf;
#endif
	    inbuffer[k++]=char(sr);  
        if (k==6) { // Parameters
         idxScroll=0;     //Reset buffer pointer
         bIsScrolling=false;
         ptr = (uint16_t *)inbuffer;
         i = *(ptr++);
#ifdef DEBUG8X8SERIAL
         (*_debug) << "Version: " << _DEC(i) << crlf;
#endif
		 if (i!=PANEL8X8SERIALFILE) {Serial.print(char(1)); PanelMode=3; sCommand=0;}  //Send back a 1 as error, wrong version.
         iPanels = *(ptr++);
         iFrames = 1;
         frameDelay = *(ptr);
#ifdef DEBUG8X8SERIAL
		 (*_debug) << "Panels: " << iPanels << crlf;
         (*_debug) << "Fames: " << iFrames << crlf;
         (*_debug) << "Delay: " << frameDelay << crlf;
#endif
		 l = iPanels * 8;
         j = 0;
         i = 0;
         if (l==0) {PanelMode=3; sCommand=0;}   // End of processing if 0 length buffer
        }
      }
      // Data Processing
      else {
#ifdef DEBUG8X8SERIAL
	   (*_debug) << i << "/" << l << ": " <<  sr << crlf;
#endif
	   iScroll[j][i++] = sr;
       if (i==8) {i=0; j++;} 
       --l;
       if (l==0) {Serial.print(char(0)); PanelMode=3; sCommand=0; Scroll();} // End of processing no more data.
      }
     }
     
     // Settings commands
     else if (sCommand == 4) {
         if      (sr==0) {Begin((char *)ramBuffer,iBufferSize,iBufferLen,(int)isBufferProgMem); sCommand=0;}
         else if (sr==1) {frameDelay = sr; sCommand=0;}
         else if (sr==2) {sCommand=0;}
     }
   }
  }
}