Advertisement
Abaduaber

SNS

Feb 23rd, 2014
483
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 7.63 KB | None | 0 0
  1. Include 'Defs.ST'
  2. Include 'KeybDefs.ST'
  3. ={DialogInit}=
  4.   Str DBack[7], DPort[7], DPic[7]
  5.   TakeControl
  6.   Create(DPic, OT_Pic, 320, 75, 2)
  7.   Control(DPic, 0, Fill)
  8.   MoveTo(DPic, 0, 200)
  9.   Load(FName_DBack GetStr, DBack, OT_Pic, 2)
  10.   Control(DBack, DPic, DrawOn)
  11.   Load(FName_DPort GetStr, DPort, OT_Pic, 2)
  12.   Control(DPort, DPic, DrawOn)
  13.   Null(DPort FGetInfo DBack FGetInfo)
  14.   ReleaseControl  
  15. **
  16.  
  17. ={DialogDone}=
  18.   TakeControl
  19.   Unload(DBack)
  20.   Unload(DPort)  
  21.   Unload(DPic)
  22.   ReleaseControl
  23. **
  24.  
  25. ={Say}=
  26.   LocInt StrN, Side, Temp, AvatarFName, IsLast
  27.   Str Avatar[7], AvatarText[7], AvatarName[7], Scene[7]
  28.   TakeControl  
  29.   ;--------Получаем параметры---------
  30.   $(IsLast)(G)
  31.   $(Side)(G)
  32.   $(StrN)(G)
  33.   $(AvatarName)(G)
  34.   $(AvatarFName)(G)  
  35.   ;--------Грузимся----------------
  36.   Load(AvatarFName$ GetStr, Avatar, OT_Pic, 2)
  37.   Control(Avatar, DPic, DrawOn)
  38.   Load(AvatarName$, AvatarName, OT_Label, 3)
  39.   Control(AvatarName, DPic, DrawOn)
  40.   Load(StrN$, AvatarText, OT_Label, 3)
  41.   Control(AvatarText, DPic, DrawOn)
  42.   ;---------Resize требуется для инициализации объектов OT_Label--------
  43.   Resize(AvatarName, 200, 6)
  44.   Resize(AvatarText, 224, 60)
  45.   ;--------В зависимости от стороны выводим в нужных местах текст--------
  46.   If(Side$)
  47.     MoveTo(DPort, 0, 0)
  48.     MoveTo(Avatar, 8, DBack _Top$^8+)
  49.     Null(Avatar FGetInfo DPort FGetInfo)
  50.     MoveTo(AvatarText, DPort _Right$^4+, Avatar _Top$^13+)
  51.     MoveTo(AvatarName, DPort _Right$^5+, DPort _Top$^8+)    
  52.   Else
  53.     Align(DPort, tHA_Right, tVA_None)
  54.     SetFlip(Avatar, 1, 0)
  55.     SetFlip(DPort, 1, 0)
  56.     MoveTo(DPort FGetInfo Avatar, DPort _Left$^8+, DPort _Top$^8+)
  57.     Null(Avatar FGetInfo DPort FGetInfo AvatarName FGetInfo)
  58.     MoveTo(AvatarText, 16, Avatar _Top$^13+)
  59.     MoveTo(AvatarName, DPort _Left$^AvatarName _Width$-^4-, DPort _Top$^8+)
  60.   End
  61.   ;-----Вот тут выполняем оптимизацию---------
  62.   ;После ReleaseControl у нас отрисуется панелька
  63.   Control(DPort, Show)
  64.   Control(DBack, Show)
  65.   ReleaseControl
  66.   While(IsDrawed)
  67.     ReleaseControl
  68.   WEnd
  69.   ;А сейчас прячем все элементы, для того, чтобы больше не тратить время на их отрисовку
  70.   TakeControl
  71.   Control(Avatar, Hide)
  72.   Control(DPort, Hide)
  73.   Control(DBack, Hide)
  74.   Control(AvatarText, Hide)
  75.   Control(AvatarName, Hide)
  76.   ;------Ожидание нажатия и отпускания клавиши ввода-------
  77.   While(Choice IsKeyPressed)
  78.     Move(Scene, 0, 1^Scene _Bottom$^200=|+, Scene FGetInfo Scene _Bottom$, 199^DPort _Height$+ <*)
  79.     *<ProcessWhileDialog>
  80.   WEnd
  81.   While(Choice IsKeyPressed|)
  82.     ;-----Если последняя реплика - уберем панель с сообщением------------
  83.     While(IsLast$, Scene FGetInfo Scene _Bottom$, 200 > And|)
  84.       Move(Scene, 0, 0^2-)
  85.       *<ProcessWhileDialog>
  86.     WEnd    
  87.     *<ProcessWhileDialog>
  88.   WEnd
  89.   ;------Выгрузка ресурсов------------
  90.   Unload(AvatarText)
  91.   Unload(Avatar)  
  92.   Unload(AvatarName)
  93. **
  94.  
  95. MemReq 1024 64 64
  96. TimeReq 50
  97. Include 'RUS.ST'
  98. Include 'Dialogs.ST'
  99.  
  100. ;Vars
  101.     Str PVBack[7], PVFro[7]
  102.     Str Cloud1[7], Cloud2[7], Sun[7]
  103.     Str Celestia[7], Luna[7], Tavi[7], Lyra[7], Fred[7]
  104.  
  105. ={ProcessWhileDialog}=
  106.     Int I = (I$^1+)
  107.     ReleaseControl
  108. **
  109.  
  110. Program
  111.     ;------Палитра темная-------
  112.     FillPal(0, 255, 0, 0, 0);
  113.     ApplyPal    
  114.     ;-------Грузимся--------
  115.     TakeControl
  116.       Load(FName_Sun GetStr, Sun, OT_Pic, 1)
  117.       Load(FName_PVBack GetStr, PVBack, OT_Pic, 1)
  118.       Load(FName_PVFro GetStr, PVFro, OT_Pic, 2)
  119.       Load(Anim_Celestia_States GetStr, Anim_Celestia_Base GetStr, Celestia, OT_Multi, 2)
  120.       ;Load(Anim_Stand_Luna GetStr, Anim_Luna_Base GetStr, Luna, OT_Multi, 2)
  121.       MoveTo(Celestia, 5, 110)
  122.       ;MoveTo(Luna, 5, 130)  
  123.       Load(Anim_Tavi_Play GetStr, Anim_Tavi_Base GetStr, Tavi, OT_Multi, 2)
  124.       Load(Anim_Fred_Play GetStr, Anim_Fred_Base GetStr, Fred, OT_Multi, 2)
  125.       Load(Anim_Lyra_States GetStr, Anim_Lyra_Base GetStr, Lyra, OT_Multi, 2)
  126.       SetFlip(Lyra, 1, 0)
  127.       SetFrameDelay(Lyra, 0, 1)
  128.       SetFrameDelay(Lyra, 8, 25)
  129.       SetFrameDelay(Tavi, 0, 1)
  130.       SetFrameDelay(Tavi, 1, 20000)
  131.       SetFrameDelay(Fred, 0, 1)
  132.       SetFrameDelay(Fred, 1, 20000)  
  133.       SetFrame(Fred, 1)
  134.       SetFrame(Tavi, 1)
  135.       MoveTo(Sun, 0^100-, 0)
  136.       MoveTo(Tavi, 80, 120)
  137.       MoveTo(Fred, 130, 105)
  138.       MoveTo(Lyra, 165, 118)
  139.     ReleaseControl          
  140.     ;---------Высвечиваем экран---------
  141.     Int PalRes
  142.     While(PalRes$)
  143.       FadeToPal(PalRes, FadeSpeed)
  144.       ApplyPal
  145.       ReleaseControl
  146.     WEnd    
  147.     ;--------Запускаем диалог-----------
  148.     *<DialogInit>
  149.     *[Conv_Celestia_Pic1, Conv_Celestia_Name, Conv_Celestia_Say1, 0, 0]<Say>  
  150.     *[Conv_Celestia_Pic1, Conv_Celestia_Name, Conv_Celestia_Say2, 0, 0]<Say>
  151.     *[Conv_Celestia_Pic1, Conv_Celestia_Name, Conv_Celestia_Say3, 0, 0]<Say>
  152.     *[Conv_Snips_Pic1, Conv_Snips_Name, Conv_Snips_Say1, 1, 0]<Say>
  153.     *[Conv_Celestia_Pic1, Conv_Celestia_Name, Conv_Celestia_Say4, 0, 0]<Say>  
  154.     *[Conv_Lyra_Pic1, Conv_Lyra_Name, Conv_Lyra_Say1, 1, 0]<Say>  
  155.     *[Conv_Snips_Pic1, Conv_Snips_Name, Conv_Snips_Say2, 0, 0]<Say>
  156.     *[Conv_Lyra_Pic1, Conv_Lyra_Name, Conv_Lyra_Say2, 1, 0]<Say>
  157.     *[Conv_Celestia_Pic1, Conv_Celestia_Name, Conv_Celestia_Say5, 0, 0]<Say>
  158.     *[Conv_Celestia_Pic1, Conv_Celestia_Name, Conv_Celestia_Say6, 0, 0]<Say>
  159.     *[Conv_Tavi_Pic1, Conv_MBand_Name, Conv_MBand_Say1, 1, 0]<Say>    
  160.     SetFrameDelay(Tavi, 1, 1)
  161.     SetFrameDelay(Fred, 1, 1)    
  162.     SetState(Lyra, 2)
  163.     Move(Lyra, 7, 7)
  164.     ;---------Оркестр играет 3 секунды---------
  165.     Int II = (GetTimeS)
  166.     While(II$^3+, GetTimeS>|)
  167.       If(GetTimeS, 1<|) ;Защищает от переполнения таймера
  168.         Break
  169.       End
  170.       *<ProcessWhileDialog>
  171.     WEnd
  172.     SetFrameDelay(Tavi, 1, 20000)
  173.     SetFrameDelay(Fred, 1, 20000)  
  174.     SetState(Lyra, 1)
  175.     Move(Lyra, 0^7-, 0^7-)  
  176.     ;----------Все офигевают---------
  177.     *[Conv_Everypony_Pic1, Conv_Everypony_Name, Conv_Everypony_Say1, 0, 0]<Say>  
  178.     *[Conv_Tavi_Pic1, Conv_Tavi_Name, Conv_Tavi_Say1, 1, 0]<Say>
  179.     *[Conv_Everypony_Pic1, Conv_Everypony_Name, Conv_Everypony_Say2, 0, 0]<Say>
  180.     *[Conv_Discord_Pic1, Conv_Discord_Name, Conv_Discord_Say1, 1, 0]<Say>
  181.     *[Conv_Flut_Pic1, Conv_Flut_Name, Conv_Flut_Say1, 0, 0]<Say>
  182.     *[Conv_Celestia_Pic1, Conv_Celestia_Name, Conv_Celestia_Say7, 1, 1]<Say>  
  183.     *<DialogDone>  
  184.     SetState(Celestia, 2)
  185.     MoveTo(Sun, 145, 50)
  186.     Int PI = (0^1-)
  187.     $(PI)(PI, 160, 0 GetPixelI)
  188.     Int BackI = (1)
  189.     While(BackI$, 5<|)
  190.       FillPal(PI$, 1, BackI$^13*, BackI$^11*, BackI$^9*);
  191.       ApplyPal    
  192.       $(II)(5)      
  193.       While(II$|)
  194.         $(II)(II$^1-)
  195.         Move(Sun, 0, 0^2-)
  196.         ReleaseControl
  197.       WEnd
  198.       TakeControl
  199.       Unload(PVBack)
  200.       Unload(PVFro)
  201.       Load(FName_PVBack^BackI$+ GetStr, PVBack, OT_Pic, 1)
  202.       Load(FName_PVFro^BackI$+ GetStr, PVFro, OT_Pic, 1)
  203.       $(BackI)(BackI$^1+)
  204.       ReleaseControl
  205.     WEnd
  206.     SetState(Celestia, 1)
  207.     *<DialogInit>
  208.     *[Conv_Everypony_Pic1, Conv_Everypony_Name, Conv_Everypony_Say3, 0, 1]<Say>  
  209.     *<DialogDone>      
  210.     ;---------Затеняем экран-------------
  211.     $(PalRes)(0)
  212.     While(PalRes$)
  213.       ChangeBrPal(PalRes, 0^FadeSpeed-)
  214.       ApplyPal
  215.       ReleaseControl
  216.     WEnd
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement