-
Notifications
You must be signed in to change notification settings - Fork 1
/
LabyTextFxLightOn.yoann1.py
83 lines (47 loc) · 2.16 KB
/
LabyTextFxLightOn.yoann1.py
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
# -*- coding: utf-8 -*-
import LabyTextFx
import Entity
import SpriteIndex
__author__ = 'Yoann'
"""
Ce package contient la définition de l'effet LightOn
Cela permet d'afficher tout le labyrinthe (en option avec un temps limite)
"""
class LTFxLightOn(LabyTextFx.LabyTextFx):
def __init__(self, delay=0):
self.delay = delay # delais avant fermeture
def initFx(self, ObjLabyTxt, code):
LabyTextFx.LabyTextFx.initFx(self,ObjLabyTxt, code)
self.LigthOnSet = set() # Set des aspirateur
# Scan pour le caractère dans le labyrinthe
# Pour chaque ligne du Labyrinthe
for ly, ligne in enumerate(self._Map.CarteTxt):
# Pour chaque colonne du Labyrinthe
for lx, car in enumerate(ligne):
if car == code:
# Ajout du callBack
ObjLabyTxt._registerFxCb(self.checkFX, lx, ly)
self.LigthOnSet.add((lx,ly))
self.cumul = -1
self._hasChanged = True
print("LTFxLightOn::initFx done, nb trigger =", len(self.LigthOnSet))
return True
def checkFX(self, ObjEntity, type, x=None, y=None):
if type=='check': return True
# Vérification de l'ordre et du type de l'entité
if ((type!='apply') or isinstance(ObjEntity,Entity.Monster)) :
return (x,y)
print("LTFxLightOn::checkFX : Allume le labyrinthe")
self._Map.showAll()
if self.delay > 0: self.cumul = 0
return (x,y)
def renderFx(self, ObjGfx, dt):
if self.delay > 0 and self.cumul >= 0:
self.cumul += dt
if self.cumul > self.delay:
self._Map.blackOut()
self.cumul = -1
if self_hasChnaged :
for (x,y) in self.LigthOnSet:
ObjGfx.addFxTile(x,y,SpriteIndex.SPRITE_LIGTHON)
return True