Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Include 'Defs.ST'
- Include 'KeybDefs.ST'
- ={DialogInit}=
- Str DBack[7], DPort[7], DPic[7]
- TakeControl
- Create(DPic, OT_Pic, 320, 75, 2)
- Control(DPic, 0, Fill)
- MoveTo(DPic, 0, 200)
- Load(FName_DBack GetStr, DBack, OT_Pic, 2)
- Control(DBack, DPic, DrawOn)
- Load(FName_DPort GetStr, DPort, OT_Pic, 2)
- Control(DPort, DPic, DrawOn)
- Null(DPort FGetInfo DBack FGetInfo)
- ReleaseControl
- **
- ={DialogDone}=
- TakeControl
- Unload(DBack)
- Unload(DPort)
- Unload(DPic)
- ReleaseControl
- **
- ={Say}=
- LocInt StrN, Side, Temp, AvatarFName, IsLast
- Str Avatar[7], AvatarText[7], AvatarName[7], Scene[7]
- TakeControl
- ;--------Получаем параметры---------
- $(IsLast)(G)
- $(Side)(G)
- $(StrN)(G)
- $(AvatarName)(G)
- $(AvatarFName)(G)
- ;--------Грузимся----------------
- Load(AvatarFName$ GetStr, Avatar, OT_Pic, 2)
- Control(Avatar, DPic, DrawOn)
- Load(AvatarName$, AvatarName, OT_Label, 3)
- Control(AvatarName, DPic, DrawOn)
- Load(StrN$, AvatarText, OT_Label, 3)
- Control(AvatarText, DPic, DrawOn)
- ;---------Resize требуется для инициализации объектов OT_Label--------
- Resize(AvatarName, 200, 6)
- Resize(AvatarText, 224, 60)
- ;--------В зависимости от стороны выводим в нужных местах текст--------
- If(Side$)
- MoveTo(DPort, 0, 0)
- MoveTo(Avatar, 8, DBack _Top$^8+)
- Null(Avatar FGetInfo DPort FGetInfo)
- MoveTo(AvatarText, DPort _Right$^4+, Avatar _Top$^13+)
- MoveTo(AvatarName, DPort _Right$^5+, DPort _Top$^8+)
- Else
- Align(DPort, tHA_Right, tVA_None)
- SetFlip(Avatar, 1, 0)
- SetFlip(DPort, 1, 0)
- MoveTo(DPort FGetInfo Avatar, DPort _Left$^8+, DPort _Top$^8+)
- Null(Avatar FGetInfo DPort FGetInfo AvatarName FGetInfo)
- MoveTo(AvatarText, 16, Avatar _Top$^13+)
- MoveTo(AvatarName, DPort _Left$^AvatarName _Width$-^4-, DPort _Top$^8+)
- End
- ;-----Вот тут выполняем оптимизацию---------
- ;После ReleaseControl у нас отрисуется панелька
- Control(DPort, Show)
- Control(DBack, Show)
- ReleaseControl
- While(IsDrawed)
- ReleaseControl
- WEnd
- ;А сейчас прячем все элементы, для того, чтобы больше не тратить время на их отрисовку
- TakeControl
- Control(Avatar, Hide)
- Control(DPort, Hide)
- Control(DBack, Hide)
- Control(AvatarText, Hide)
- Control(AvatarName, Hide)
- ;------Ожидание нажатия и отпускания клавиши ввода-------
- While(Choice IsKeyPressed)
- Move(Scene, 0, 1^Scene _Bottom$^200=|+, Scene FGetInfo Scene _Bottom$, 199^DPort _Height$+ <*)
- *<ProcessWhileDialog>
- WEnd
- While(Choice IsKeyPressed|)
- ;-----Если последняя реплика - уберем панель с сообщением------------
- While(IsLast$, Scene FGetInfo Scene _Bottom$, 200 > And|)
- Move(Scene, 0, 0^2-)
- *<ProcessWhileDialog>
- WEnd
- *<ProcessWhileDialog>
- WEnd
- ;------Выгрузка ресурсов------------
- Unload(AvatarText)
- Unload(Avatar)
- Unload(AvatarName)
- **
- MemReq 1024 64 64
- TimeReq 50
- Include 'RUS.ST'
- Include 'Dialogs.ST'
- ;Vars
- Str PVBack[7], PVFro[7]
- Str Cloud1[7], Cloud2[7], Sun[7]
- Str Celestia[7], Luna[7], Tavi[7], Lyra[7], Fred[7]
- ={ProcessWhileDialog}=
- Int I = (I$^1+)
- ReleaseControl
- **
- Program
- ;------Палитра темная-------
- FillPal(0, 255, 0, 0, 0);
- ApplyPal
- ;-------Грузимся--------
- TakeControl
- Load(FName_Sun GetStr, Sun, OT_Pic, 1)
- Load(FName_PVBack GetStr, PVBack, OT_Pic, 1)
- Load(FName_PVFro GetStr, PVFro, OT_Pic, 2)
- Load(Anim_Celestia_States GetStr, Anim_Celestia_Base GetStr, Celestia, OT_Multi, 2)
- ;Load(Anim_Stand_Luna GetStr, Anim_Luna_Base GetStr, Luna, OT_Multi, 2)
- MoveTo(Celestia, 5, 110)
- ;MoveTo(Luna, 5, 130)
- Load(Anim_Tavi_Play GetStr, Anim_Tavi_Base GetStr, Tavi, OT_Multi, 2)
- Load(Anim_Fred_Play GetStr, Anim_Fred_Base GetStr, Fred, OT_Multi, 2)
- Load(Anim_Lyra_States GetStr, Anim_Lyra_Base GetStr, Lyra, OT_Multi, 2)
- SetFlip(Lyra, 1, 0)
- SetFrameDelay(Lyra, 0, 1)
- SetFrameDelay(Lyra, 8, 25)
- SetFrameDelay(Tavi, 0, 1)
- SetFrameDelay(Tavi, 1, 20000)
- SetFrameDelay(Fred, 0, 1)
- SetFrameDelay(Fred, 1, 20000)
- SetFrame(Fred, 1)
- SetFrame(Tavi, 1)
- MoveTo(Sun, 0^100-, 0)
- MoveTo(Tavi, 80, 120)
- MoveTo(Fred, 130, 105)
- MoveTo(Lyra, 165, 118)
- ReleaseControl
- ;---------Высвечиваем экран---------
- Int PalRes
- While(PalRes$)
- FadeToPal(PalRes, FadeSpeed)
- ApplyPal
- ReleaseControl
- WEnd
- ;--------Запускаем диалог-----------
- *<DialogInit>
- *[Conv_Celestia_Pic1, Conv_Celestia_Name, Conv_Celestia_Say1, 0, 0]<Say>
- *[Conv_Celestia_Pic1, Conv_Celestia_Name, Conv_Celestia_Say2, 0, 0]<Say>
- *[Conv_Celestia_Pic1, Conv_Celestia_Name, Conv_Celestia_Say3, 0, 0]<Say>
- *[Conv_Snips_Pic1, Conv_Snips_Name, Conv_Snips_Say1, 1, 0]<Say>
- *[Conv_Celestia_Pic1, Conv_Celestia_Name, Conv_Celestia_Say4, 0, 0]<Say>
- *[Conv_Lyra_Pic1, Conv_Lyra_Name, Conv_Lyra_Say1, 1, 0]<Say>
- *[Conv_Snips_Pic1, Conv_Snips_Name, Conv_Snips_Say2, 0, 0]<Say>
- *[Conv_Lyra_Pic1, Conv_Lyra_Name, Conv_Lyra_Say2, 1, 0]<Say>
- *[Conv_Celestia_Pic1, Conv_Celestia_Name, Conv_Celestia_Say5, 0, 0]<Say>
- *[Conv_Celestia_Pic1, Conv_Celestia_Name, Conv_Celestia_Say6, 0, 0]<Say>
- *[Conv_Tavi_Pic1, Conv_MBand_Name, Conv_MBand_Say1, 1, 0]<Say>
- SetFrameDelay(Tavi, 1, 1)
- SetFrameDelay(Fred, 1, 1)
- SetState(Lyra, 2)
- Move(Lyra, 7, 7)
- ;---------Оркестр играет 3 секунды---------
- Int II = (GetTimeS)
- While(II$^3+, GetTimeS>|)
- If(GetTimeS, 1<|) ;Защищает от переполнения таймера
- Break
- End
- *<ProcessWhileDialog>
- WEnd
- SetFrameDelay(Tavi, 1, 20000)
- SetFrameDelay(Fred, 1, 20000)
- SetState(Lyra, 1)
- Move(Lyra, 0^7-, 0^7-)
- ;----------Все офигевают---------
- *[Conv_Everypony_Pic1, Conv_Everypony_Name, Conv_Everypony_Say1, 0, 0]<Say>
- *[Conv_Tavi_Pic1, Conv_Tavi_Name, Conv_Tavi_Say1, 1, 0]<Say>
- *[Conv_Everypony_Pic1, Conv_Everypony_Name, Conv_Everypony_Say2, 0, 0]<Say>
- *[Conv_Discord_Pic1, Conv_Discord_Name, Conv_Discord_Say1, 1, 0]<Say>
- *[Conv_Flut_Pic1, Conv_Flut_Name, Conv_Flut_Say1, 0, 0]<Say>
- *[Conv_Celestia_Pic1, Conv_Celestia_Name, Conv_Celestia_Say7, 1, 1]<Say>
- *<DialogDone>
- SetState(Celestia, 2)
- MoveTo(Sun, 145, 50)
- Int PI = (0^1-)
- $(PI)(PI, 160, 0 GetPixelI)
- Int BackI = (1)
- While(BackI$, 5<|)
- FillPal(PI$, 1, BackI$^13*, BackI$^11*, BackI$^9*);
- ApplyPal
- $(II)(5)
- While(II$|)
- $(II)(II$^1-)
- Move(Sun, 0, 0^2-)
- ReleaseControl
- WEnd
- TakeControl
- Unload(PVBack)
- Unload(PVFro)
- Load(FName_PVBack^BackI$+ GetStr, PVBack, OT_Pic, 1)
- Load(FName_PVFro^BackI$+ GetStr, PVFro, OT_Pic, 1)
- $(BackI)(BackI$^1+)
- ReleaseControl
- WEnd
- SetState(Celestia, 1)
- *<DialogInit>
- *[Conv_Everypony_Pic1, Conv_Everypony_Name, Conv_Everypony_Say3, 0, 1]<Say>
- *<DialogDone>
- ;---------Затеняем экран-------------
- $(PalRes)(0)
- While(PalRes$)
- ChangeBrPal(PalRes, 0^FadeSpeed-)
- ApplyPal
- ReleaseControl
- WEnd
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement