- Joined
- Apr 8, 2011
- Messages
- 108
JASS:
library Book initializer Init requires GUI, Buttons, Sliders, MainEngine, ArrowsRegister
//globals
private trigger Esc = CreateTrigger()
private destructable Background, BookModel
public bool IsOpened = false
private texttag Title
private texttag Left_Page[15], Right_Page[15]
private texttag PageIndex[2]
private int CurrentPage, BookId
private timer DelayTimer = CT
//=============================================
define BOOK_MODEL_ID = 'B037'
private void ShowTitle(){ SetTextTagVisibility(Title, true) }
private void RemovePagesContent(){
int index = 0
while(index++ < 15){
DestroyTextTag(Left_Page[index])
}
}
private void ShowPagesContent(){
int index = 0, sub_string_mod = 0
real y_mod = 25.
string s = LoadStr(hash, BookId, CurrentPage)
while(index++ < 25){
Left_Page[index] = CreateTextTag()
SetTextTagText(Left_Page[index], SubString(s, sub_string_mod, (sub_string_mod) + 45), (10. * 0.023) / 10.)
SetTextTagPos(Left_Page[index], GUI_X(1), GUI_Y(10) - (y_mod * index), 0.)
SetTextTagColor(Left_Page[index], 65, 65, 65, 25)
sub_string_mod += 44
}
}
private void RightArrow(){
if (IsOpened and TimerGetRemaining(DelayTimer) <= 0.) {
if CurrentPage == 0 {
SetDestructableAnimation(BookModel, "morph")
SetTextTagVisibility(Title, false)
TimerStart(DelayTimer, 1.666, false, function ShowPagesContent)
}
else {
RemovePagesContent()
SetDestructableAnimation(BookModel, "attack")
TimerStart(DelayTimer, 0.666, false, function ShowPagesContent)
}
CurrentPage++
}
}
private void LeftArrow(){
if (IsOpened and TimerGetRemaining(DelayTimer) <= 0.) {
if CurrentPage - 1 == 0 {
CurrentPage = 0
SetDestructableAnimation(BookModel, "morph alternate")
TimerStart(DelayTimer, 1.166, false, function ShowTitle)
}
else {
RemovePagesContent()
SetDestructableAnimation(BookModel, "attack alternate")
TimerStart(DelayTimer, 0.666, false, function ShowPagesContent)
}
if CurrentPage > 0 { CurrentPage-- }
}
}
void OpenBook(int book_id){
int index = 0
if IsOpened { return }
else {
IsOpened = true
Background = CreateDestructable('B001', BASE_X, BASE_Y, 90., 6.5, 0)
BookModel = CreateDestructable(BOOK_MODEL_ID, BASE_X, BASE_Y, 270., 3.35, 0)
GUI_TurnOnCamera()
FogModifierStart(GUI_Visibility)
Title = CreateTextTag()
SetTextTagText(Title, BookName[book_id], (13.5 * 0.023) / 10.)
SetTextTagPos(Title, GUI_X(14), GUI_Y(6), 5.)
SetTextTagColor(Title, 65, 65, 65, 25)
CurrentPage = 0
BookId = book_id
}
}
void ExitBook(){
if not IsOpened { return }
else {
RemoveDestructable(Background)
RemoveDestructable(BookModel)
IsOpened = false
FogModifierStop(GUI_Visibility)
GUI_ResetCamera()
DestroyTextTag(Title)
RemovePagesContent()
}
}
private void Init(){
gg_trg_Book = CreateTrigger()
TriggerRegisterPlayerEvent(Esc, Player(0), EVENT_PLAYER_END_CINEMATIC)
TriggerAddAction(Esc, function ExitBook)
TriggerAddAction(ArrowsRegister_Right_Up, function RightArrow)
TriggerAddAction(ArrowsRegister_Left_Up, function LeftArrow)
SetPlayerTechMaxAllowed(Player(0), 'HERO', 3)
SetPlayerTechMaxAllowed(Player(0), 'H002', 1)
SetPlayerTechMaxAllowed(Player(0), 'Hpal', 1)
SetPlayerTechMaxAllowed(Player(0), 'Hblm', 1)
SetPlayerTechMaxAllowed(Player(0), 'Hamg', 1)
SetPlayerTechMaxAllowed(Player(0), 'Hmkg', 1)
}
endlibrary