package com.lfk.justweengine.engine.Layer;
import android.graphics.Rect;
import android.view.MotionEvent;
import com.lfk.justweengine.drawable.Button.BaseButton;
import java.util.HashMap;
/**
* Created by liufengkai on 16/5/8.
*/
public class ButtonLayer extends Layer {
// 按钮组
private HashMap<String, BaseButton> e_button_group;
private boolean e_is_hit_button;
private BaseButton e_hit_button = null;
public ButtonLayer(Screen layerScreen, Rect layerField) {
super(LayerType.Button, layerScreen, layerField);
init();
}
public ButtonLayer(Screen layerScreen, int x, int y, int w, int h) {
super(LayerType.Button, layerScreen, new Rect(x, y, w, h));
init();
}
private void init() {
e_is_hit_button = false;
e_hit_button = null;
e_button_group = new HashMap<>();
}
@Override
protected void layerUpdate() {
}
@Override
protected void layerDraw() {
for (String o : e_button_group.keySet()) {
BaseButton button = e_button_group.get(o);
button.animation();
button.draw();
}
}
@Override
protected void layerCollision() {
}
@Override
protected void layerClick(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
for (String name : e_button_group.keySet()) {
BaseButton button = e_button_group.get(name);
if (button.getRect().contains((int) event.getX(),
(int) event.getY())) {
button.setNormal(false);
e_is_hit_button = true;
e_hit_button = button;
}
}
break;
case MotionEvent.ACTION_UP:
if (e_hit_button != null && e_is_hit_button &&
e_hit_button.getRect().contains((int) event.getX(),
(int) event.getY())) {
e_hit_button.setNormal(true);
e_hit_button.onClick(true);
resetHitButton();
} else if (e_is_hit_button) {
if (e_hit_button != null) {
e_hit_button.setNormal(true);
resetHitButton();
}
}
break;
}
}
public void addToButtonGroup(BaseButton button) {
e_button_group.put(button.getName(), button);
}
public void removeButtonFromGroup(String name) {
e_button_group.remove(name);
}
private void resetHitButton() {
e_is_hit_button = false;
e_hit_button = null;
}
}