|
#!/usr/bin/python |
|
#-*- encoding: utf-8 -*- |
|
#coding=utf-8 |
|
|
|
from siraeffanim.EffectAnim_Engine import EffectAnim_Main |
|
from siraeffanim.EffectAnim_Base import * |
|
from siraeffanim.EffectAnim_Template import * |
|
|
|
"""============================================================================ |
|
依存値の簡易指定~~ |
|
|
|
""" |
|
#全体フレーム数。大きくするとエフェクト時間をゆったり引き延ばす。 |
|
TOTALLENGTH = 50 |
|
|
|
#出現オブジェ数 |
|
OBJECTNUM = 32 |
|
|
|
"""============================================================================ |
|
テストエフェクト。 |
|
|
|
エフェクトの総まとめ。 |
|
各エフェクトセルの使用をここで定義する。 |
|
|
|
""" |
|
class EffectFrame_Test(EffectFrame): |
|
def __init__(self, **kwargs ): |
|
EffectFrame.__init__( self, kwargs , |
|
sellSplitSize = (2,3) , #画像ファイルの切り取り数。縦横にそれぞれ何分割するかって値。 |
|
CanvasSizeOfByScale = ( 2.5 , 2.5 ) |
|
) |
|
self.paraminit( TOTALLENGTH ) #エフェクトの長さ。 |
|
#以下セルの定義。 |
|
#指定順番がそのまま描画順番になるよ。 |
|
#▼もやっ |
|
self.AddSell( EffectFrameSell_Template_Simple( |
|
param_SrcImageSellGridPos = ( 0 , 0 ) , |
|
lamb_DrawScale = lambda p,x:( lamb_grad_Sin2Line( p , 1.0 ) * x ) , |
|
lamb_DrawAlpha = lambda p,x:( lamb_grad_Sin2Line( p , 0.6 ) * x ) , |
|
param_DrawScale = ( 1.6 , 1.6 ) |
|
) ) |
|
|
|
#▼中心ピカー! |
|
self.AddSell( EffectFrameSell_Template_Simple( |
|
param_SrcImageSellGridPos = ( 0 , 1 ) , |
|
lamb_DrawScale = lambda p,x:( lamb_grad_Sin2Line( p , 0.6 ) * x ) , |
|
lamb_DrawAlpha = lambda p,x:( lamb_grad_Sin2Line( p , 0.5 ) * x ) , |
|
param_DrawScale = ( 1.0 , 1.0 ) |
|
) ) |
|
|
|
#▼衝撃シュパーン |
|
self.AddSell( EffectFrameSell_Template_Simple( |
|
param_SrcImageSellGridPos = ( 1 , 1 ) , |
|
lamb_DrawScale = lambda p,x:( p * x ) , |
|
lamb_DrawAlpha = lambda p,x:( lamb_grad_Sin2Line( p , 0.8 ) * x ) , |
|
param_DrawScale = ( 6.0 , 2.0 ) , |
|
lamb_SurfTransform = lambda surf:( pygame.transform.rotate( surf , 20.0 ) ) |
|
) ) |
|
|
|
#▼ピカピカぱーてぃこ~ |
|
#中心ピカーにコレが重なってさらにピカーってなる。その後は小さくなってふわっと消える感じで。 |
|
for i in range( OBJECTNUM ) : |
|
#lambdaにそのまま書くと遅延評価されちゃうので、乱数含む値は一旦変数に。 |
|
alphatime = ( random.randint(35,98)*0.01 ) |
|
scale = ( random.randint(75,200)*0.01 ) |
|
xpos = ( random.randint(0,180) - 90 )/2 #中心から最終的に行く位置 |
|
ypos = ( random.randint(0,180) - 90 )/2 |
|
self.AddSell( EffectFrameSell_Template_Simple( |
|
param_SrcImageSellGridPos = ( 1 , 0 ) , |
|
lamb_DrawPos = ( lambda p,x: p * x + sin( ( p + x*0.37 ) * PI * 2 ) * 5 , lambda p,x: p * x ) , |
|
lamb_DrawScale = lambda p,x:( ( 1.0 - p ) * x * ( 0.5 + ( sin( ( p * x )* 5 ) + 1 )/4 ) ) , |
|
lamb_DrawAlpha = lambda p,x:( lamb_grad_Sin2Line( p , x ) / 2 ) , |
|
param_DrawPos = ( xpos , ypos ) , |
|
param_DrawScale = ( scale , scale ) , |
|
param_DrawAlpha = alphatime , |
|
Blend = BLEND_ADD |
|
) ) |
|
|
|
|
|
"""============================================================================ |
|
実行コード。 |
|
|
|
ファイルの指定や描画サイズの決定はここで。 |
|
|
|
""" |
|
if __name__ == '__main__': |
|
getImagePathList = [ |
|
os.path.abspath("Effanimmap_Fire1.png").decode('shift-jis'), |
|
os.path.abspath("Effanimmap_EffHelper.png").decode('shift-jis'), |
|
] |
|
drawEffectFrames = ( #1度に複数のエフェクトを同時描画も可能 |
|
EffectFrame_Test( |
|
imagepathlist = getImagePathList , #エフェクトイメージファイルのリストを指定 |
|
drawRect = DrawRect( (0,0) , (400,400) ) #描画位置、サイズを指定。 |
|
) |
|
, ) |
|
EffectAnim_Main( drawEffectFrames , CanvasSize = (400,400) ) #実行開始。 |