/**
* Copyright 2008 - 2011
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*
* @project loonframework
* @author chenpeng
* @email:ceponline@yahoo.com.cn
* @version 0.1
*/
package loon.srpg.effect;
import loon.canvas.LColor;
import loon.opengl.GLEx;
import loon.utils.MathUtils;
// 令角色身体冒出火花,可用于升级,治疗等特效
public class SRPGSparkEffect extends SRPGEffect {
private int left;
private int top;
private int width;
private int height;
private int value;
private LColor color;
private int[][] effpos;
private int[] effframe;
private int max;
private int wait;
public SRPGSparkEffect(int x, int y, int w, int h, int v, int wait) {
this(x, y, w, h, v, wait, new LColor(220, 220, 0));
}
public SRPGSparkEffect(int x, int y, int w, int h, int v, int wait,
LColor color) {
this.setExist(true);
this.left = x;
this.top = y;
this.width = w;
this.height = h;
this.value = v;
this.wait = wait;
this.color = color;
this.effpos = new int[v][2];
this.effframe = new int[v];
for (int i = 0; i < v; i++) {
effframe[i] = -1;
}
this.max = 0;
}
@Override
public void draw(GLEx g, int x, int y) {
next();
g.setColor(color);
if (value > max && super.frame % wait == 0) {
effpos[max][0] = left + MathUtils.random.nextInt(width);
effpos[max][1] = top + MathUtils.random.nextInt(height);
effframe[max] = 0;
max++;
}
for (int i = 0; i < max; i++) {
if (effframe[i] != -1 && effframe[i] < 10) {
effframe[i]++;
int nx = effpos[i][0] - x;
int ny = effpos[i][1] - y;
int f = effframe[i];
g.drawLine(nx, ny - f, nx, ny + f);
g.drawLine(nx - f, ny, nx + f, ny);
}
}
if (super.frame > 10 + value * wait) {
setExist(false);
}
}
}