/*--------------------------------------------------------------------------*/ 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); } }
/*--------------------------------------------------------------------------*/ 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); }
/*--------------------------------------------------------------------------*/ 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); }
/*--------------------------------------------------------------------------*/ 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); }
/* 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; }
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); } }
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())); } }
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(); }
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); }
/*--------------------------------------------------------------------------*/ 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); } } } }
/*--------------------------------------------------------------------------*/ 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(); } }
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; }
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; }
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"); }
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,
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; } } }
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; }
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, ®s, ®s); ScanCode = regs.h.ah; regs.h.ah = 2; int86 (0x16, ®s, ®s); 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, ®s, ®s); int Buttons = regs.x.bx; regs.x.ax = 0x0b; int86 (0x33, ®s, ®s); 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; }
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)); } }
void GiveInfo() { NewMessage("Press Esc to Quit",IndexColor(White)); NewMessage("Press F1 For Options Menu",IndexColor(White)); }
// 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;} } } } }