Newer
Older
Cactus-CleanArchitecture / app / src / main / java / org / ntlab / radishforandroidstudio / framework / RWT / RWTShotButton.java
package org.ntlab.radishforandroidstudio.framework.RWT;

import android.content.Context;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.view.MotionEvent;

import org.ntlab.radishforandroidstudio.cactusClient.factory.NormalBulletFactory;
import org.ntlab.radishforandroidstudio.framework.event.BulletShotEvent;
import org.ntlab.radishforandroidstudio.framework.listener.BulletShotListener;
import org.ntlab.radishforandroidstudio.framework.subject.BulletShotSubject;

public class RWTShotButton extends RWTButton {
    private BulletShotSubject subject = new BulletShotSubject();

    public RWTShotButton(Context context) {
        super(context);
    }

    public RWTShotButton(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
    }

    public RWTShotButton(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        // 弾の種類を取得
        // 今は無し

        // 弾のモデルを作成
        if (event.getAction() == MotionEvent.ACTION_DOWN) {
            NormalBulletFactory f = new NormalBulletFactory();
            BulletShotEvent e = new BulletShotEvent(event, f.create(getResources()));
            subject.notifyListeners(e);
            System.out.println("shot!");
        }
        invalidate();
        return true;
    }

    /**
     * 弾発射ボタン操作時に発生するイベントのリスナを追加する
     *
     * @param listener
     */
    public void addListener(BulletShotListener listener) {
        subject.addListener(listener);
    }
}