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 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
|
import pygame
import os
from pygame.locals import *
from locals import *
import data
from util import dir_from_str
from log import log_message
from variables import Variables
class Scripted_event_element:
def __init__(self, event_type, text = "", orientation = RIGHT, animation = ""):
self.event_type = event_type
self.finished = False
self.text = text
self.orientation = orientation
self.animation = animation
return
def to_str(self):
if self.event_type == "dialogue":
return self.event_type + " " + self.text
if self.event_type == "player" and self.text == "orientation":
string = self.event_type + " " + self.text + " "
if self.orientation == RIGHT:
string += "RIGHT"
elif self.orientation == LEFT:
string += "LEFT"
elif self.orientation == DOWN:
string += "DOWN"
elif self.orientation == UP:
string += "UP"
return string
if self.event_type == "player" and self.text == "animation":
return self.event_type + " " + self.text + " " + self.animation
else:
return self.event_type
class Scripted_event:
def __init__(self, trigger_type, times = 1):
self.trigger_type = trigger_type
self.elements = []
self.counter = -1
self.last_dir = RIGHT
self.repeated = 0
self.times = times
return
def add_element(self, text):
values = text.split(" ", 1)
etype = values[0]
etype = etype.strip()
if etype == "dialogue":
element = Scripted_event_element(etype, values[1].strip())
else:
if etype == "player":
values = values[1].split()
if values[0] == "orientation":
self.last_dir = dir_from_str(values[1])
element = Scripted_event_element(etype, values[0], self.last_dir)
if values[0] == "animation":
element = Scripted_event_element(etype, values[0], self.last_dir, values[1])
else:
element = Scripted_event_element(etype)
self.elements.append(element)
return
def next_element(self):
if self.repeated == self.times:
#The event has repeated enough times
return Scripted_event_element("end")
#Returning one element
self.counter += 1
if self.counter < len(self.elements):
return self.elements[self.counter]
else:
#Event finished
self.repeated += 1
self.counter = -1
return Scripted_event_element("end")
def to_str(self):
string = "\ntrigger " + self.trigger_type + " " + str(self.times) + "\n"
for el in self.elements:
string += el.to_str() + "\n"
string += "end trigger"
return string
|