home *** CD-ROM | disk | FTP | other *** search
Wrap
# Source Generated with Decompyle++ # File: in.pyc (Python 1.5) import Bladex import BInput import Raster import math import InitDataField import B3DLib import whrandom import ScriptSkip import darfuncs def Normalize(vector): return B3DLib.Normalize(vector) def Scale(vector, scalar): return B3DLib.Scale(vector, scalar) def Module(vector): return B3DLib.Modulo(vector[0], vector[1], vector[2]) def Pos2PosXZAngle(p1, p2): return B3DLib.Pos2PosXZAngle(p1[0], p1[1], p1[2], p2[0], p2[1], p2[2]) def GetSpot(obj): n_child = obj.GetNChildren() for n in range(n_child): child = Bladex.GetEntity(obj.GetChild(n)) def GetFire(obj): n_child = obj.GetNChildren() for n in range(n_child): child = Bladex.GetEntity(obj.GetChild(n)) def SpotIntensityVariationGrad(light_name, time): light = Bladex.GetEntity(light_name) light.Intensity = light.Intensity + light.Data.IntensityVar if light.Data.SizeVar: light.SizeFactor = light.SizeFactor + light.Data.SizeVar if light.Data.IntensityVar >= 0.0 and light.Intensity >= light.Data.EndIntensity and light.Data.IntensityVar < 0.0 and light.Intensity <= light.Data.EndIntensity: if light.Data.SizeVar: light.SizeFactor = light.Data.EndSize light.Intensity = light.Data.EndIntensity light.RemoveFromList(light.Data.Timer) light.TimerFunc = '' if light.Data.DestroyOnEnd: light.SubscribeToList('Pin') def SpotIntensityVariation(light_name, init_int, end_int, var_time, destroy = 0, init_size = 0.0, end_size = 0.0, timer = 'Timer60', timespersec = 60): light = Bladex.GetEntity(light_name) light.Intensity = init_int InitDataField.Initialise(light) light.Data.EndIntensity = end_int light.Data.IntensityVar = (end_int - init_int) / (timespersec * var_time) light.Data.DestroyOnEnd = destroy light.Data.SizeVar = (end_size - init_size) / (timespersec * var_time) light.Data.EndSize = end_size light.Data.Timer = timer if init_size or end_size: light.SizeFactor = init_size light.TimerFunc = SpotIntensityVariationGrad light.SubscribeToList(timer) def DeactivateKeyboard(): Bladex.DeactivateInput() Bladex.ActivateInput() InputManager = BInput.GetInputManager() InputManager.AddInputActionsSet('EmptySet') InputManager.SetInputActionsSet('EmptySet') Bladex.AddInputAction('Abort', 0) Bladex.AssocKey('Abort', 'Keyboard', 'Enter') Bladex.AssocKey('Abort', 'Keyboard', 'Esc') Bladex.AddBoundFunc('Abort', ScriptSkip.SkipCalled) def ActivateKeyboard(): InputManager = BInput.GetInputManager() InputManager.SetInputActionsSet('Default') def StopCamTravelling(entity_name, camera_element, node): cam = Bladex.GetEntity('Camera') if node == 1: cam.SType = 0 cam.TType = 0 cam.CameraClearPath(0) cam.CameraClearPath(1) if EndFunc: EndFunc() def MoveCamFromTo(ox1, oy1, oz1, ox2, oy2, oz2, tx1, ty1, tz1, tx2, ty2, tz2, time, endfunc = ''): global EndFunc EndFunc = endfunc cam = Bladex.GetEntity('Camera') cam.AddCameraNode(0, time, ox1, oy1, oz1) cam.AddCameraNode(0, time / 2.0, ox2, oy2, oz2) cam.AddCameraNode(0, time / 2.0, (ox1 + ox2) / 2.0, (oy1 + oy2) / 2.0, (oz1 + oz2) / 2.0) cam.AddCameraNode(1, time, tx1, ty1, tz1) cam.AddCameraNode(1, time / 2.0, tx2, ty2, tz2) cam.AddCameraNode(1, time / 2.0, (tx1 + tx2) / 2.0, (ty1 + ty2) / 2.0, (tz1 + tz2) / 2.0) cam.SType = 1 cam.TType = 1 cam.CameraStartPath(0) cam.CameraStartPath(1) cam.ChangeNodeFunc = StopCamTravelling def ResetScene(cut = 1, persndsrc = 1, actinput = 1): cam = Bladex.GetEntity('Camera') cam.SetPersonView('Player1') if cut: cam.Cut() if persndsrc: Bladex.SetListenerPosition(1) if actinput: Bladex.ActivateInput() class ScreenFadeEffect: def __init__(self): self.FadeTime = 1.0 self.InitFadeTime = 1.0 self.EndFadeTime = 1.0 self.TotalFadeTime = 2.0 self.RColor = 0 self.GColor = 0 self.BColor = 0 self.InitAlpha = 1.0 self.EndAlpha = 0.0 self.AlphaVar = -1.0 self.InitTime = Bladex.GetTime() self.ScreenSize = Raster.GetSize() def Fade(time): if Bladex.GetAppMode() == 'Menu': return None pass_time = time - fade_effect.InitTime if pass_time < fade_effect.InitFadeTime: alpha = fade_effect.InitAlpha elif fade_effect.AlphaVar > 0: alpha = min(fade_effect.EndAlpha, fade_effect.InitAlpha + (pass_time - fade_effect.InitFadeTime) * fade_effect.AlphaVar / fade_effect.FadeTime) else: alpha = max(fade_effect.EndAlpha, fade_effect.InitAlpha + (pass_time - fade_effect.InitFadeTime) * fade_effect.AlphaVar / fade_effect.FadeTime) Raster.SetFillColor(fade_effect.RColor, fade_effect.GColor, fade_effect.BColor) Raster.SetAlpha(alpha) Raster.SolidRectangle(0, 0, fade_effect.ScreenSize[0], fade_effect.ScreenSize[1]) if pass_time >= fade_effect.TotalFadeTime: Bladex.RemoveAfterFrameFunc('Fade') def FadeTo(fade_time = 1.0, end_fade_time = 1.0, rcolor = 0, gcolor = 0, bcolor = 0): global fade_effect fade_effect = ScreenFadeEffect() fade_effect.FadeTime = fade_time fade_effect.InitFadeTime = 0.0 fade_effect.EndFadeTime = end_fade_time fade_effect.TotalFadeTime = fade_time + end_fade_time fade_effect.RColor = rcolor fade_effect.GColor = gcolor fade_effect.BColor = bcolor fade_effect.InitAlpha = 0.0 fade_effect.EndAlpha = 1.0 fade_effect.AlphaVar = 1.0 Bladex.SetAfterFrameFunc('Fade', Fade) def FadeFrom(fade_time = 1.0, init_fade_time = 1.0, rcolor = 0, gcolor = 0, bcolor = 0): global fade_effect fade_effect = ScreenFadeEffect() fade_effect.FadeTime = fade_time fade_effect.InitFadeTime = init_fade_time fade_effect.EndFadeTime = 0.0 fade_effect.TotalFadeTime = fade_time + init_fade_time fade_effect.RColor = rcolor fade_effect.GColor = gcolor fade_effect.BColor = bcolor fade_effect.InitAlpha = 1.0 fade_effect.EndAlpha = 0.0 fade_effect.AlphaVar = -1.0 Bladex.SetAfterFrameFunc('Fade', Fade) def FadeFromTo(init_alpha, end_alpha, fade_time = 1.0, init_fade_time = 1.0, end_fade_time = 1.0, rcolor = 0, gcolor = 0, bcolor = 0): global fade_effect fade_effect = ScreenFadeEffect() fade_effect.FadeTime = fade_time fade_effect.InitFadeTime = init_fade_time fade_effect.EndFadeTime = end_fade_time fade_effect.TotalFadeTime = fade_time + init_fade_time + end_fade_time fade_effect.RColor = rcolor fade_effect.GColor = gcolor fade_effect.BColor = bcolor fade_effect.InitAlpha = float(init_alpha) fade_effect.EndAlpha = float(end_alpha) fade_effect.AlphaVar = fade_effect.EndAlpha - fade_effect.InitAlpha Bladex.SetAfterFrameFunc('Fade', Fade) class SingleFrameScreenFadeEffect: def __init__(self): self.RColor = 0 self.GColor = 0 self.BColor = 0 self.ScreenSize = Raster.GetSize() def SingleFrameFadeFunc(time): if Bladex.GetAppMode() == 'Menu': return None Raster.SetFillColor(single_frame_fade_effect.RColor, single_frame_fade_effect.GColor, single_frame_fade_effect.BColor) Raster.SetAlpha(1.0) Raster.SolidRectangle(0, 0, single_frame_fade_effect.ScreenSize[0], single_frame_fade_effect.ScreenSize[1]) Bladex.RemoveAfterFrameFunc('SingleFrameFadeFunc') def SingleFrameFade(rcolor = 0, gcolor = 0, bcolor = 0): global single_frame_fade_effect single_frame_fade_effect = SingleFrameScreenFadeEffect() single_frame_fade_effect.RColor = rcolor single_frame_fade_effect.GColor = gcolor single_frame_fade_effect.BColor = bcolor Bladex.SetAfterFrameFunc('SingleFrameFadeFunc', SingleFrameFadeFunc) DESTROY_METHOD_BIN = 1 DESTROY_METHOD_REMOVE = 2 def FadeObjectGrad(obj_name, time): obj = Bladex.GetEntity(obj_name) obj.Alpha = obj.Alpha + obj.Data.AlphaVar if obj.Data.AlphaVar >= 0.0: if obj.Alpha >= obj.Data.EndAlpha: obj.Alpha = obj.Data.EndAlpha obj.RemoveFromList('Timer60') obj.TimerFunc = '' elif obj.Alpha <= obj.Data.EndAlpha: obj.Alpha = obj.Data.EndAlpha obj.RemoveFromList('Timer60') obj.TimerFunc = '' if obj.Data.DestroyOnEnd: if obj.Data.DestroyOnEnd == DESTROY_METHOD_REMOVE: obj.RemoveFromWorld() if obj.Data.DestroyOnEnd == DESTROY_METHOD_BIN: obj.SubscribeToList('Pin') def FadeObject(obj_name, init_alpha, end_alpha, fade_time, destroy = 0): obj = Bladex.GetEntity(obj_name) obj.Alpha = init_alpha InitDataField.Initialise(obj) obj.Data.EndAlpha = end_alpha obj.Data.AlphaVar = (end_alpha - init_alpha) / (60.0 * fade_time) obj.Data.DestroyOnEnd = destroy obj.TimerFunc = FadeObjectGrad obj.SubscribeToList('Timer60') def ColorObjectGrad(obj_name, time): obj = Bladex.GetEntity(obj_name) (r, g, b) = (obj.Color[0] + obj.Data.RVar, obj.Color[1] + obj.Data.GVar, obj.Color[2] + obj.Data.BVar) if obj.Data.RVar >= 0.0: r = min(r, obj.Data.EndColor[0]) else: r = max(r, obj.Data.EndColor[0]) if obj.Data.GVar >= 0.0: g = min(g, obj.Data.EndColor[1]) else: g = max(g, obj.Data.EndColor[1]) if obj.Data.BVar >= 0.0: b = min(b, obj.Data.EndColor[2]) else: b = max(b, obj.Data.EndColor[2]) obj.Color = (r, g, b) if r == obj.Data.EndColor[0] and g == obj.Data.EndColor[1] and b == obj.Data.EndColor[2]: obj.RemoveFromList('Timer60') obj.TimerFunc = '' if obj.Data.DestroyOnEnd: if obj.Data.DestroyOnEnd & DESTROY_METHOD_REMOVE: obj.RemoveFromWorld() if obj.Data.DestroyOnEnd & DESTROY_METHOD_BIN: obj.SubscribeToList('Pin') def ColorObject(obj_name, init_color, end_color, fade_time, destroy = 0): obj = Bladex.GetEntity(obj_name) init_r = min(max(init_color[0], 0), 255) init_g = min(max(init_color[1], 0), 255) init_b = min(max(init_color[2], 0), 255) end_r = min(max(end_color[0], 0), 255) end_g = min(max(end_color[1], 0), 255) end_b = min(max(end_color[2], 0), 255) obj.Color = (init_r, init_g, init_b) InitDataField.Initialise(obj) obj.Data.EndColor = (end_r, end_g, end_b) obj.Data.RVar = (end_color[0] - init_color[0]) / (60.0 * fade_time) obj.Data.GVar = (end_color[1] - init_color[1]) / (60.0 * fade_time) obj.Data.BVar = (end_color[2] - init_color[2]) / (60.0 * fade_time) obj.Data.DestroyOnEnd = destroy obj.TimerFunc = ColorObjectGrad obj.SubscribeToList('Timer60') def ScaleObjectGrad(obj_name, time): obj = Bladex.GetEntity(obj_name) obj.Scale = obj.Scale + obj.Data.ScaleVar if obj.Data.ScaleVar >= 0.0: if obj.Scale >= obj.Data.EndScale: obj.Scale = obj.Data.EndScale obj.RemoveFromList('Timer60') obj.TimerFunc = '' elif obj.Scale <= obj.Data.EndScale: obj.Scale = obj.Data.EndScale obj.RemoveFromList('Timer60') obj.TimerFunc = '' def ScaleObject(obj_name, init_scale, end_scale, scale_time): obj = Bladex.GetEntity(obj_name) obj.Scale = init_scale InitDataField.Initialise(obj) obj.Data.EndScale = end_scale obj.Data.ScaleVar = (end_scale - init_scale) / (60.0 * scale_time) obj.TimerFunc = ScaleObjectGrad obj.SubscribeToList('Timer60') def GlowSizeVariationGrad(light_name, time): light = Bladex.GetEntity(light_name) light.SizeFactor = light.SizeFactor + light.Data.SizeVar if light.Data.SizeVar >= 0.0 and light.SizeFactor >= light.Data.EndSize and light.Data.SizeVar < 0.0 and light.SizeFactor <= light.Data.EndSize: light.SizeFactor = light.Data.EndSize light.RemoveFromList('Timer30') light.TimerFunc = '' if light.Data.DestroyOnEnd: light.SubscribeToList('Pin') def GlowSizeVariation(light_name, init_size, end_size, var_time, destroy = 0): light = Bladex.GetEntity(light_name) light.SizeFactor = init_size InitDataField.Initialise(light) light.Data.EndSize = end_size light.Data.SizeVar = (end_size - init_size) / (30.0 * var_time) light.Data.DestroyOnEnd = destroy light.TimerFunc = GlowSizeVariationGrad light.SubscribeToList('Timer30') def FadeAndScaleAuraGrad(ent_name, time): aura = Bladex.GetEntity(ent_name) aura.Data.CurrentSize = aura.Data.CurrentSize + aura.Data.SizeVar aura.Data.CurrentAlpha = aura.Data.CurrentAlpha + aura.Data.AlphaVar if aura.Data.CurrentAlpha < 0.0: aura.Data.CurrentAlpha = 0.0 elif aura.Data.CurrentAlpha > 1.0: aura.Data.CurrentAlpha = 1.0 aura.SetAuraParams(aura.Data.CurrentSize, aura.Data.CurrentAlpha, 1, 0, 0, 1) if aura.Data.SizeVar > 0 and aura.Data.CurrentSize >= aura.Data.EndSize and aura.Data.SizeVar < 0 and aura.Data.CurrentSize <= aura.Data.EndSize: aura.RemoveFromList(aura.Data.Timer) aura.TimerFunc = '' if aura.Data.DestroyOnEnd: aura.SubscribeToList('Pin') else: aura.SetAuraParams(aura.Data.EndSize, aura.Data.EndAlpha, 1, 0, 0, 1) if aura.Data.OnEndFunc: apply(aura.Data.OnEndFunc, aura.Data.OnEndArgs) def FadeAndScaleAura(aura_name, init_size, end_size, init_alpha, end_alpha, time, destroy = 0, OnEndFunc = '', OnEndArgs = (), timer = 'Timer30', timespersec = 30): aura = Bladex.GetEntity(aura_name) InitDataField.Initialise(aura) aura.Data.CurrentSize = init_size aura.Data.EndSize = end_size aura.Data.SizeVar = (end_size - init_size) / (time * timespersec) aura.Data.CurrentAlpha = init_alpha aura.Data.EndAlpha = end_alpha aura.Data.AlphaVar = (end_alpha - init_alpha) / (time * timespersec) aura.Data.DestroyOnEnd = destroy aura.Data.OnEndFunc = OnEndFunc aura.Data.OnEndArgs = OnEndArgs aura.Data.Timer = timer aura.TimerFunc = FadeAndScaleAuraGrad aura.SubscribeToList(timer) def FadeAndScaleGrad(obj_name, time): obj = Bladex.GetEntity(obj_name) curr_time = Bladex.GetTime() - obj.Data.InitTime obj.Alpha = obj.Data.InitAlpha + obj.Data.AlphaInitVel * curr_time + 0.5 * obj.Data.AlphaAcc * curr_time ** 2 obj.Scale = obj.Data.InitScale + obj.Data.ScaleInitVel * curr_time + 0.5 * obj.Data.ScaleAcc * curr_time ** 2 if obj.Data.AngleVar: (x, y, z) = obj.Data.Axis ang = whrandom.uniform(-(obj.Data.AngleVar), obj.Data.AngleVar) obj.RotateRel(0, 0, 0, x, y, z, ang) if curr_time >= obj.Data.TotalTime: obj.Alpha = obj.Data.EndAlpha obj.Scale = obj.Data.EndScale obj.RemoveFromList('Timer30') obj.TimerFunc = '' if obj.Data.DestroyOnEnd == DESTROY_METHOD_BIN: obj.SubscribeToList('Pin') elif obj.Data.DestroyOnEnd == DESTROY_METHOD_REMOVE: obj.RemoveFromWorld() def FadeAndScale(obj_name, pos, init_alpha, end_alpha, alpha_acc, init_scl, end_scl, scl_acc, time, ang_var = 0, destroy = 0, axis = (0, 0, 1)): obj = Bladex.GetEntity(obj_name) obj.Alpha = init_alpha obj.Scale = init_scl obj.Position = pos InitDataField.Initialise(obj) obj.Data.InitAlpha = init_alpha obj.Data.EndAlpha = end_alpha obj.Data.AlphaAcc = alpha_acc * 2.0 * (end_alpha - init_alpha) / time ** 2 obj.Data.AlphaInitVel = (end_alpha - init_alpha - alpha_acc * (end_alpha - init_alpha)) / time obj.Data.InitScale = init_scl obj.Data.EndScale = end_scl obj.Data.ScaleAcc = scl_acc * 2.0 * (end_scl - init_scl) / time ** 2 obj.Data.ScaleInitVel = (end_scl - init_scl - scl_acc * (end_scl - init_scl)) / time obj.Data.AngleVar = ang_var obj.Data.Axis = axis obj.Data.DestroyOnEnd = destroy obj.Data.InitTime = Bladex.GetTime() obj.Data.TotalTime = time obj.TimerFunc = FadeAndScaleGrad obj.SubscribeToList('Timer30') def ScaleObjectV2Grad(obj_name, time): obj = Bladex.GetEntity(obj_name) curr_time = Bladex.GetTime() - obj.Data.InitTime obj.Scale = obj.Data.InitScale + obj.Data.ScaleInitVel * curr_time + 0.5 * obj.Data.ScaleAcc * curr_time ** 2 if obj.Data.WhileSclFunc: apply(obj.Data.WhileSclFunc, obj.Data.WhileSclArgs) if curr_time >= obj.Data.TotalTime: obj.Scale = obj.Data.EndScale obj.RemoveFromList('Timer30') obj.TimerFunc = '' if obj.Data.EndSclFunc: apply(obj.Data.EndSclFunc, obj.Data.EndSclArgs) if obj.Data.DestroyOnEnd == DESTROY_METHOD_BIN: obj.SubscribeToList('Pin') elif obj.Data.DestroyOnEnd == DESTROY_METHOD_REMOVE: obj.RemoveFromWorld() def ScaleObjectV2(obj_name, init_scl, end_scl, scl_acc, time, WhileSclFunc = '', WhileSclArgs = (), EndSclFunc = '', EndSclArgs = (), destroy = 0): obj = Bladex.GetEntity(obj_name) obj.Scale = init_scl InitDataField.Initialise(obj) obj.Data.InitScale = init_scl obj.Data.EndScale = end_scl obj.Data.ScaleAcc = scl_acc * 2.0 * (end_scl - init_scl) / time ** 2 obj.Data.ScaleInitVel = (end_scl - init_scl - scl_acc * (end_scl - init_scl)) / time obj.Data.WhileSclFunc = WhileSclFunc obj.Data.WhileSclArgs = WhileSclArgs obj.Data.EndSclFunc = EndSclFunc obj.Data.EndSclArgs = EndSclArgs obj.Data.DestroyOnEnd = destroy obj.Data.InitTime = Bladex.GetTime() obj.Data.TotalTime = time obj.TimerFunc = ScaleObjectV2Grad obj.SubscribeToList('Timer30') def SetRadialFireDamageObject(object_name, radius = 500.0, floor_displ = 1000.0, roof_displ = 2000.0): (x, y, z) = Bladex.GetEntity(object_name).Position dx = radius / 2.0 dz = radius * (math.sqrt(3.0) / 2.0) trsector_name = object_name + '_TrSectorFire' Bladex.AddTriggerSector(trsector_name, 'SectoresTriggerFuego', y + floor_displ, y - roof_displ, [ (x + dx, z + dz), (x - dx, z + dz), (x - radius, z), (x - dx, z - dz), (x + dx, z - dz), (x + radius, z)]) darfuncs.FireOnGS(trsector_name)