-
Notifications
You must be signed in to change notification settings - Fork 0
/
Script.cpp
71 lines (61 loc) · 2.14 KB
/
Script.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#include "Script.h"
void cScriptEngine::UpdateScripts(float fElapsedTime)
{
// jeżeli lista nie jest pusta to aktualizuj pierwszy skrypt w kolejce
if (!listScripts.empty())
{
// jeśli pierwszy skrypt w kolejce się jeszcze nie rozpoczął to go rozpocznij
if (listScripts.front()->bHasStarted == false)
{
// rozpocznij skrypt i obliczanie potrzebnych mu danych
listScripts.front()->Start();
// ustaw możliwość ruchu gracza w trakcie wykonywania skryptu
// w zależności od własności skryptu
if (listScripts.front()->bAllowForUserControl == false)
bPlayerInControl = false;
else
bPlayerInControl = true;
// ustaw zamrożenie czasu w zależności od skryptu
if (listScripts.front()->bFreezeTime == false)
bTimeIsFreezed = false;
else
bTimeIsFreezed = true;
// ustaw możliwość pominięcia skryptu wyłącznie manualnie
if (listScripts.front()->bWaitForSkip == false)
bWaitForManualSkip = false;
else
bWaitForManualSkip = true;
// ustaw śledzenie gracza kamerą
if (listScripts.front()->nCameraOnPlayer == cScript::CAMERA_STICK_TO_PLAYER)
bCameraFollowsPlayer = true;
if (listScripts.front()->nCameraOnPlayer == cScript::CAMERA_FREE)
bCameraFollowsPlayer = false;
}
if(listScripts.front()->bHasStarted == true) // jeśli przy rozpoczęciu obsługi skryptów zostały dodane jakieś nowe na początku kolejki to zostanie to wychwycone
if(bWaitForManualSkip == false) // jeśli obecnie wykonywany skrypt nie musi zostać zakończony wyłącznie ręcznym pominięciem
if (listScripts.front()->Update(fElapsedTime)) // jeśli skrypt uza że się skończył to go usuń
listScripts.pop_front();
}
else
{
bPlayerInControl = true;
bTimeIsFreezed = false;
bWaitForManualSkip = false;
//kamera samodzielnie nie przykleja się do gracza!
}
}
void cScriptEngine::SkipAllScripts()
{
for (int i = 0; i < listScripts.size(); i ++)
{
listScripts.front()->Start();
listScripts.pop_front();
}
}
cScriptEngine::cScriptEngine()
{
bPlayerInControl = true;
bTimeIsFreezed = false;
bWaitForManualSkip = false;
bCameraFollowsPlayer = true;
}