SideMessage (Notifikace)

Sem vkládejte editovatelné kusy kódu a tutoriály.
Post Reply
SaberCZ
Posts: 5
Joined: November 25, 2013, 5:32 pm
Facebook: http://facebook.com/pavelka.dave
Location: Ostrava, Czech republic
Contact:

SideMessage (Notifikace)

Post by SaberCZ »

Image
!!! POZOR: Pouze pro GameMaker: Studio !!!

Image O co jde?
Tak jsem pro Vás vytvořil takový vlastní systém notifikací (já tomu říkám side message :D), jako je tomu ve Windows 8. Snažil jsem se jej napodobit z klasických Win8, ale zároveň nechat programátorům plnou konfiguraci jeho vzhledu a nastavení. Vše je dokonale zakomentované, takže si myslím, že problém s užíváním mít nebudete. Komentáře jsou sice v angličtině (snažím se, aby tomuto rozuměl i cizinec), ale to pro Vás zajisté problém nebude :)

Image Co je důležité?
  • Aby jste jakýmkoliv způsobem nepřejmenovávali: objekty, sprity, fonty a skripty
  • Neupravovali si skripty!
  • Ale naopak upravili v obj_sideMessage:
    • v Create eventu defaultní hodnoty pod sekcí USER VARIBLES
    • ve Step eventu akce v sekci USER CONFIGURATION OF ACTIONS
  • V "obj_sideMessageController" upravit:
    • v Create eventu defaultní hodnoty pod sekcí USER VARIBLES
  • A samozřejmě upravit/smazat/vzít si inspiraci z obj_sideMessageTester
  • Fonty měnit můžete, ale zanechte název
Image Použití
Poté co si vložíme do projektu skripty, objekty, fonty a sprity, tak nastává chvíle, kdy musíme do místnosti, kde chceme používat SideMessage přidat objekt obj_sideMessageController. Poté v jakémkoliv objektu voláme skript pomocí:

Code: Select all

scr_sideMessageCreate("nadpis","text",šířka,ohraničení(true/false),
close_timer(true/false),"action","argument");
V tomto případě jde o volání SideMessage, který barvu, čas zavření atd. bere z defaultních hodnot objektu obj_sideMessage. Tyto si můžete přenastavit v Create eventu v sekci USER VARIBLES.
Pokud chcete ale pouze jeden, či několik speciálních SideMessage, tak musíte použít následující skript:

Code: Select all

scr_sideMessageCreateExt("nadpis","text",šířka,ohraničení(true/false),
close_timer(true/false),"action","argument",close_after(room_speed * sekundy),
color(tělo zprávy),color_font(barva textu),color_font_header(barva nadpisu),
color_outline(barva ohraničení),color_close(barva zavíracího tlačítka),
color_close_bg(barva pozadí zavíracího tlačítka));
V tomto skriptu již konfigurujete také čas zavření a také barvy všech částí.

Image Jak nastavit akci
V obj_sideMessage je sekce USER CONFIGURATION OF ACTIONS. Zde je podmínka, která ověřuje, jestli jsme na zprávu klikli a poté se provede následující switch:

Code: Select all

switch (action)
{
    case "open_chat": //demo action
        {
            if (arg != "") //if argument was used
                show_message("Chat with " + string(arg));
            else
                show_message("New chat");
            break;
        }
}
Pokud tedy jako akci nastavíme zprávě "open_chat", tak prvně ověříme, zda-li je přiřazen argument. Pokud je, tak necháme zobrazit hlášku, kde je napsán tento argument. Pokud není, tak necháme zobrazit pouze hlášku "New chat".
Takovýchto akcí si můžete vytvořit kolik chcete.

Image Vlastnosti
  • Program si pamatuje 2 view, tzn. zobrazí pouze tolik zpráv, kolik se vejde na výšku a další požadavky na novou zprávu si zapamatuje a zobrazí je po zavření ostatních zpráv. Těchto zpráv si zapamatuje tolik, kolik se jich vejde na výšku pro další zobrazení.
  • Můžete měnit barvu pozadí, barvu fontu, barvu nadpisu, barvu ohraničení, barvu tlačítka pro zavření, barvu pozadí tlačítka pro zavírání, když na ní najedete myší
  • Program je plně přizpůsoben pro systémy iOS, Android a Windows Phone (tlačítko pro zavření je zobrazeno na těchto zařízeních neustále, ne pouze po najetí na zprávu)
  • Header zprávy se automaticky zkrátí, aby nepřesahoval maximální délku.
  • Tělo se zvětšuje podle délky textu.
  • Můžete nastavit, aby se zpráva dala zavřít pouze po zmáčknutí tlačítka zavřít, nebo se může zavřít po Vámi nastaveném čase.
  • Můžete vypnout / zapnout ohraničení
  • Důležitou vlastností je nastavení akcí a předávání parametrů po kliknutí na zprávu
Image Screenshot
Image
Attachments
SideMessage.rar
SideMessage - Verze 1.0 (GMZ, EXE)
(2.59 MiB) Downloaded 160 times
User avatar
hráč
Posts: 225
Joined: August 6, 2011, 8:52 am
Facebook: http://facebook.com/
Contact:

Re: SideMessage (Notifikace)

Post by hráč »

Zajímavé ale myslím že by bylo fajn kdyby ty zprávy automaticky skákaly nahoru.. třeba nechceš nějakou zprávu zavřít =) a když je jako poslední tak už se žádná neukáže...
Screenshot 2014-03-21 16.29.07.png
Neposedný liškovlk!
Image
SaberCZ
Posts: 5
Joined: November 25, 2013, 5:32 pm
Facebook: http://facebook.com/pavelka.dave
Location: Ostrava, Czech republic
Contact:

Re: SideMessage (Notifikace)

Post by SaberCZ »

Jo, to je určitě problémem :D Vím o něm, ale neměl jsem čas si s tím až tak vyhrát :) Snad v příští verzi :)

PS: Díky za feedback ;) Moc si toho cením :)
User avatar
Firejs
Posts: 743
Joined: August 9, 2011, 10:21 am
Facebook: http://facebook.com/
Location: Brno
Contact:

Re: SideMessage (Notifikace)

Post by Firejs »

Rozhodně zajímavý, ale určitě by se na tom dalo ještě hodně zapracovat. :)

Bohužel mě teď nenapadá žádný nápad na využití, takže víc poznatků nedám.
Stejně dobře, jako jíme zvířecí těla, bychom mohli jíst i lidská. Diogenes
Máme novou krevetu! http://www.kreveta.net
Registrován: Ned 13. Úno 2005 12:04:06
SaberCZ
Posts: 5
Joined: November 25, 2013, 5:32 pm
Facebook: http://facebook.com/pavelka.dave
Location: Ostrava, Czech republic
Contact:

Re: SideMessage (Notifikace)

Post by SaberCZ »

Vidíš :D Zapomněl jsem napsat nápady na využití :D Tak určitě se to dá požít místo show_message_async :) Hodí se třeba pro achivementy. Prakticky vše, co chcete oznámit uživateli :) Určitě se taky dá použít např. jako zpráva od nějakého uživatele, nebo warning (díky změny barev je to velmi jednoduché). Využití je široké. Já se snažím celkově udělat komponenty vlastní pro GML, jelikož dělám například i v C#, kde ve Form, či WPF jsou komponenty jako textbox, radiobutton atd. Snad se to bude někomu hodit :D
Post Reply