diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser
index 675c8ed..3d2abe6 100644
--- a/.idea/caches/build_file_checksums.ser
+++ b/.idea/caches/build_file_checksums.ser
Binary files differ
diff --git a/app/build.gradle b/app/build.gradle
index 8d58ebc..95545d0 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -8,7 +8,7 @@
compileSdkVersion 27
defaultConfig {
applicationId "org.ntlab.radishforandroidstudio"
- minSdkVersion 16
+ minSdkVersion 19
targetSdkVersion 27
versionCode 1
versionName "1.0"
@@ -25,6 +25,8 @@
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
+ productFlavors {
+ }
}
dependencies {
@@ -35,7 +37,7 @@
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
- implementation group: 'net.arnx', name: 'jsonic', version: '1.3.10'
+ implementation 'net.arnx:jsonic:1.3.10'
implementation 'com.android.support:cardview-v7:27.1.1'
implementation 'com.google.android.gms:play-services-maps:15.0.1'
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 4fb2447..b9f977d 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -39,6 +39,7 @@
+
diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/PlayerActivity.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/PlayerActivity.java
deleted file mode 100644
index 1216892..0000000
--- a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/PlayerActivity.java
+++ /dev/null
@@ -1,202 +0,0 @@
-package org.ntlab.radishforandroidstudio.cactusClient;
-
-import android.annotation.SuppressLint;
-
-import android.os.Bundle;
-
-import android.support.v4.app.FragmentManager;
-import android.support.v4.app.FragmentTransaction;
-import android.view.MotionEvent;
-
-import android.view.View;
-import android.widget.FrameLayout;
-import android.widget.LinearLayout;
-
-import org.ntlab.radishforandroidstudio.R;
-import org.ntlab.radishforandroidstudio.framework.RWT.RWTPad;
-import org.ntlab.radishforandroidstudio.framework.RWT.RWTSurfaceView;
-import org.ntlab.radishforandroidstudio.framework.RWT.RWTUIFragment;
-import org.ntlab.radishforandroidstudio.framework.animation.Animation3D;
-import org.ntlab.radishforandroidstudio.framework.event.PadEvent;
-import org.ntlab.radishforandroidstudio.framework.gameMain.OvergroundActor;
-import org.ntlab.radishforandroidstudio.framework.gameMain.RealTime3DActivity;
-import org.ntlab.radishforandroidstudio.framework.listener.PadListener;
-import org.ntlab.radishforandroidstudio.framework.model3D.ModelFactory;
-import org.ntlab.radishforandroidstudio.framework.model3D.Object3D;
-import org.ntlab.radishforandroidstudio.framework.model3D.Position3D;
-import org.ntlab.radishforandroidstudio.framework.physics.Ground;
-import org.ntlab.radishforandroidstudio.framework.physics.Velocity3D;
-import org.ntlab.radishforandroidstudio.java3d.AmbientLight;
-import org.ntlab.radishforandroidstudio.java3d.Appearance;
-import org.ntlab.radishforandroidstudio.java3d.Color3f;
-import org.ntlab.radishforandroidstudio.java3d.DirectionalLight;
-import org.ntlab.radishforandroidstudio.java3d.Material;
-import org.ntlab.radishforandroidstudio.java3d.Vector3d;
-import org.ntlab.radishforandroidstudio.java3d.Vector3f;
-
-
-public class PlayerActivity extends RealTime3DActivity implements PadListener {
- private OvergroundActor pocha;
- private Ground stage;
- private boolean isTouched = false;
- private float touchX = 0.0f;
- private float touchY = 0.0f;
- RWTPad pad = null;
-
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
-
- //環境光
- AmbientLight amblight = new AmbientLight(new Color3f(1.0f, 1.0f, 1.0f));
-
-// amblight.setInfluencingBounds(new BoundingSphere(new Point3d(), 10000.0));
- universe.placeLight(amblight);
-
- //平行光源
- DirectionalLight dirlight = new DirectionalLight(
- new Color3f(1.0f, 1.0f, 1.0f), //光の色
- new Vector3f(0.0f, -1.0f, -0.5f) //光の方向ベクトル
- );
-// dirlight.setInfluencingBounds(new BoundingSphere(new Point3d(), 10000.0));
- universe.placeLight(dirlight);
-
- Appearance ap1 = new Appearance();
- Material m = new Material();
- m.setDiffuseColor(0.0f, 0.3f, 1.0f);
- m.setAmbientColor(0.0f, 0.0f, 0.0f);
- m.setEmissiveColor(0.0f, 0.0f, 0.0f);
- m.setSpecularColor(0.0f, 0.0f, 0.0f);
- m.setShininess(5.0f);
- ap1.setMaterial(m);
-
- Object3D pochaBody = null;
- try {
- pochaBody = ModelFactory.loadModel(getResources(), "pocha.stl", ap1).createObject();
- Animation3D pochaAnimation = null; //AnimationFactory.loadAnimation("data\\pocha\\walk.wrl");
- pocha = new OvergroundActor(pochaBody, pochaAnimation);
- pocha.setPosition(new Position3D(0.0, -100.0, 250.0));
- universe.place(pocha);
- } catch (Exception e) {
- e.printStackTrace();
- }
-
- Appearance ap2 = new Appearance();
- Material m2 = new Material();
- m2.setDiffuseColor(0.1f, 0.0f, 0.02f);
- m2.setAmbientColor(0.1f, 0.1f, 0.1f);
- m2.setEmissiveColor(0.0f, 0.0f, 0.0f);
- m2.setSpecularColor(0.2f, 0.2f, 0.2f);
- m2.setShininess(5.0f);
- ap2.setMaterial(m2);
-
- Object3D stageObj = null;
- try {
- stageObj = ModelFactory.loadModel(getResources(), "konan/konan.obj").createObject();
- stage = new Ground(stageObj);
- universe.place(stage);
- } catch (Exception e) {
- e.printStackTrace();
- }
-
- //pad 追加部分
-
- setContentView(R.layout.fragment_real_time_3d);
-
- FrameLayout l = findViewById(R.id.game_layout);
- view = new RWTSurfaceView(this);
- view.attachCamera(camera);
- l.addView(view, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
-
- FragmentManager fragmentManager = getSupportFragmentManager();
- FragmentTransaction transaction = fragmentManager.beginTransaction();
- RWTUIFragment f = new RWTUIFragment();
- f.setListener(this);
- View uiLayout = (View) findViewById(R.id.ui_layout);
- uiLayout.setOnTouchListener((RWTUIFragment) f);
- transaction.add(R.id.ui_layout, f);
- transaction.commit();
-
-
- /*camera.setViewPoint(pocha.getPosition().add(0.0, 1.5, 0.0));
- camera.setViewLine(pocha.getDirection());
- camera.setFieldOfView(1.5);
- camera.setBackClipDistance(10000.0);*/
- start(1000L, 50L, true);
- }
-
- @Override
- public void progress(long interval) {
- Velocity3D curV = pocha.getVelocity();
- if (isTouched) {
- pocha.rotY(0.001 * (0.5f - touchX) * (double) (interval / 15.0));
- curV.setX(pocha.getDirection().getX() * 200.0 * (0.5f - touchY));
- curV.setZ(pocha.getDirection().getZ() * 200.0 * (0.5f - touchX));
- pocha.setVelocity(curV);
-
- } else {
- curV.setX(0.0);
- curV.setZ(0.0);
- pocha.setVelocity(curV);
- }
-
-
- Vector3d charaVector3d = pocha.getDirection();
- charaVector3d.normalize();//キャラの向きを単位ベクトルに
- camera.setViewPoint(pocha.getPosition()
- .add(-5.0 * charaVector3d.getX(), charaVector3d.getY() + 5.0, -5.0 * charaVector3d.getZ()));//視点
- camera.setViewLine(new Vector3d(5.0 * charaVector3d.getX(), charaVector3d.getY() - 2.5, 5.0 * charaVector3d.getZ() + touchX));//視線
- }
-
-
- @SuppressLint("NewApi")
- /*@Override
- public boolean onTouchEvent (MotionEvent event){
- Vector3d charaVector3d = pocha.getDirection();
- charaVector3d.normalize();//キャラの向きを単位ベクトルに
- super.onTouchEvent(event);
-
- if (event.getAction() == MotionEvent.ACTION_DOWN || event.getAction() == MotionEvent.ACTION_MOVE) {
- isTouched = true;
- float maxX = event.getDevice().getMotionRange(MotionEvent.AXIS_X).getMax() / 2.0f;
- float minX = event.getDevice().getMotionRange(MotionEvent.AXIS_X).getMin();
- float maxY = event.getDevice().getMotionRange(MotionEvent.AXIS_Y).getMax();
- float minY = event.getDevice().getMotionRange(MotionEvent.AXIS_Y).getMin();
- } else if (event.getAction() == MotionEvent.ACTION_UP) {
- isTouched = false;
- }
- return true;
- }*/
-
- public void onCreateFragmentEvent(RWTUIFragment f) {
- pad = (RWTPad) f.findViewById(org.ntlab.radishforandroidstudio.R.id.pad);
- pad.addListener(this);
- }
-
- @Override
- public boolean onEvent(PadEvent event) {
- Vector3d charaVector3d = pocha.getDirection();
- charaVector3d.normalize();//キャラの向きを単位ベクトルに
- MotionEvent motionEvent = event.getMotionEvent();
- super.onTouchEvent(motionEvent);
-
- if (motionEvent.getAction() == MotionEvent.ACTION_DOWN || motionEvent.getAction() == MotionEvent.ACTION_MOVE) {
- isTouched = true;
- float maxX = motionEvent.getDevice().getMotionRange(MotionEvent.AXIS_X).getMax() / 2.0f;
- float minX = motionEvent.getDevice().getMotionRange(MotionEvent.AXIS_X).getMin();
- float maxY = motionEvent.getDevice().getMotionRange(MotionEvent.AXIS_Y).getMax();
- float minY = motionEvent.getDevice().getMotionRange(MotionEvent.AXIS_Y).getMin();
- touchX = (float) (Math.cos(event.getAngle()) * event.getLength());
- touchY = (float) (Math.sin(event.getAngle()) * event.getLength());
-
- //motion.eventをevent.getLengthみたいに変えればいい?
- //touchYのもとは(motionEvent.getY() - minY) / (maxY - minY),X (motionEvent.getX() - minX) / (maxX - minX)
- camera.setViewPoint(pocha.getPosition()
- .add(-5.0 * charaVector3d.getX(), charaVector3d.getY() + 5.0, -5.0 * charaVector3d.getZ()));//視点
- camera.setViewLine(new Vector3d(5.0 * charaVector3d.getX(), charaVector3d.getY() - 2.5, 5.0 * charaVector3d.getZ() + touchX));//視線
- } else if (motionEvent.getAction() == MotionEvent.ACTION_UP) {
- isTouched = false;
- }
- return false;
- }
-}
diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/tests/StartFragment.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/tests/StartFragment.java
index 61c2011..dda1029 100644
--- a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/tests/StartFragment.java
+++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/tests/StartFragment.java
@@ -35,7 +35,7 @@
// transaction.replace(R.id.framelayout_field, new SampleUiFragment());
// transaction.replace(R.id.framelayout_field, new SampleGameFragment());
// transaction.replace(R.id.framelayout_field,new SampleGame2Fragment());
- transaction.replace(R.id.framelayout_field,new PlayerFragment());
+ transaction.replace(R.id.framelayout_field, new PlayerFragment());
transaction.addToBackStack(null);
transaction.commit();
}
diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/PlayerFragment.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/PlayerFragment.java
index 38aeb56..673bdfd 100644
--- a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/PlayerFragment.java
+++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/PlayerFragment.java
@@ -3,22 +3,23 @@
import android.os.Bundle;
import android.support.annotation.Nullable;
-import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
-import android.widget.FrameLayout;
-import android.widget.LinearLayout;
import org.ntlab.radishforandroidstudio.R;
-import org.ntlab.radishforandroidstudio.framework.RWT.RWTSurfaceView;
+import org.ntlab.radishforandroidstudio.framework.event.RWTFragmentEvent;
+import org.ntlab.radishforandroidstudio.framework.listener.RWTFragmentListener;
+import org.ntlab.radishforandroidstudio.framework.RWT.RWTPad;
import org.ntlab.radishforandroidstudio.framework.RWT.RWTUIFragment;
import org.ntlab.radishforandroidstudio.framework.animation.Animation3D;
+import org.ntlab.radishforandroidstudio.framework.event.PadEvent;
import org.ntlab.radishforandroidstudio.framework.gameMain.OvergroundActor;
import org.ntlab.radishforandroidstudio.framework.gameMain.RealTime3DFragment;
+import org.ntlab.radishforandroidstudio.framework.listener.PadListener;
import org.ntlab.radishforandroidstudio.framework.model3D.ModelFactory;
import org.ntlab.radishforandroidstudio.framework.model3D.Object3D;
import org.ntlab.radishforandroidstudio.framework.model3D.Position3D;
@@ -29,14 +30,16 @@
import org.ntlab.radishforandroidstudio.java3d.Color3f;
import org.ntlab.radishforandroidstudio.java3d.DirectionalLight;
import org.ntlab.radishforandroidstudio.java3d.Material;
+import org.ntlab.radishforandroidstudio.java3d.Vector3d;
import org.ntlab.radishforandroidstudio.java3d.Vector3f;
-public class PlayerFragment extends RealTime3DFragment {
+public class PlayerFragment extends RealTime3DFragment implements PadListener, RWTFragmentListener{
private OvergroundActor pocha;
private Ground stage;
private boolean isTouched = false;
private float touchX = 0.0f;
private float touchY = 0.0f;
+ RWTPad pad = null;
public PlayerFragment() {
// Required empty public constructor
@@ -98,10 +101,6 @@
e.printStackTrace();
}
- camera.setViewPoint(pocha.getPosition().add(0.0, 1.5, 0.0));
- camera.setViewLine(pocha.getDirection());
- camera.setFieldOfView(1.5);
- camera.setBackClipDistance(10000.0);
start(1000L, 50L, true);
}
@@ -113,25 +112,26 @@
super.onCreateView(inflater, container, savedInstanceState);
initGameWindowView();
-
- parentView.setOnTouchListener(new View.OnTouchListener() {
- @Override
- public boolean onTouch(View v, MotionEvent event) {
-
- if (event.getAction() == MotionEvent.ACTION_DOWN || event.getAction() == MotionEvent.ACTION_MOVE) {
- isTouched = true;
- float maxX = event.getDevice().getMotionRange(MotionEvent.AXIS_X).getMax();
- float minX = event.getDevice().getMotionRange(MotionEvent.AXIS_X).getMin();
- float maxY = event.getDevice().getMotionRange(MotionEvent.AXIS_Y).getMax();
- float minY = event.getDevice().getMotionRange(MotionEvent.AXIS_Y).getMin();
- touchX = (event.getX() - minX) / (maxX - minX);
- touchY = (event.getY() - minY) / (maxY - minY);
- } else if (event.getAction() == MotionEvent.ACTION_UP) {
- isTouched = false;
- }
- return true;
- }
- });
+// RWTPad pad = parentView.findViewById(R.id.pad);
+// pad.addListener(this);
+ // parentView.setOnTouchListener(new View.OnTouchListener() {
+// @Override
+// public boolean onTouch(View v, MotionEvent event) {
+//
+// if (event.getAction() == MotionEvent.ACTION_DOWN || event.getAction() == MotionEvent.ACTION_MOVE) {
+// isTouched = true;
+// float maxX = event.getDevice().getMotionRange(MotionEvent.AXIS_X).getMax();
+// float minX = event.getDevice().getMotionRange(MotionEvent.AXIS_X).getMin();
+// float maxY = event.getDevice().getMotionRange(MotionEvent.AXIS_Y).getMax();
+// float minY = event.getDevice().getMotionRange(MotionEvent.AXIS_Y).getMin();
+// touchX = (event.getX() - minX) / (maxX - minX);
+// touchY = (event.getY() - minY) / (maxY - minY);
+// } else if (event.getAction() == MotionEvent.ACTION_UP) {
+// isTouched = false;
+// }
+// return true;
+// }
+// });
return parentView;
}
@@ -139,29 +139,80 @@
protected void progress(long interval) {
Velocity3D curV = pocha.getVelocity();
if (isTouched) {
- pocha.rotY(0.1 * (0.5f - touchX) * (double) (interval / 15.0));
+ pocha.rotY(0.001 * (0.5f - touchX) * (double) (interval / 15.0));
curV.setX(pocha.getDirection().getX() * 200.0 * (0.5f - touchY));
- curV.setZ(pocha.getDirection().getZ() * 200.0 * (0.5f - touchY));
+ curV.setZ(pocha.getDirection().getZ() * 200.0 * (0.5f - touchX));
pocha.setVelocity(curV);
+
} else {
curV.setX(0.0);
curV.setZ(0.0);
pocha.setVelocity(curV);
}
- camera.setViewPoint(pocha.getPosition().add(0.0, 15.0, 0.0));
- camera.setViewLine(pocha.getDirection());
+
+
+ Vector3d charaVector3d = pocha.getDirection();
+ charaVector3d.normalize();//キャラの向きを単位ベクトルに
+ camera.setViewPoint(pocha.getPosition()
+ .add(-5.0 * charaVector3d.getX(), charaVector3d.getY() + 5.0, -5.0 * charaVector3d.getZ()));//視点
+ camera.setViewLine(new Vector3d(5.0 * charaVector3d.getX(), charaVector3d.getY() - 2.5, 5.0 * charaVector3d.getZ() + touchX));//視線
+
+// Velocity3D curV = pocha.getVelocity();
+// if (isTouched) {
+// pocha.rotY(0.1 * (0.5f - touchX) * (double) (interval / 15.0));
+// curV.setX(pocha.getDirection().getX() * 200.0 * (0.5f - touchY));
+// curV.setZ(pocha.getDirection().getZ() * 200.0 * (0.5f - touchY));
+// pocha.setVelocity(curV);
+// } else {
+// curV.setX(0.0);
+// curV.setZ(0.0);
+// pocha.setVelocity(curV);
+// }
+// camera.setViewPoint(pocha.getPosition().add(0.0, 15.0, 0.0));
+// camera.setViewLine(pocha.getDirection());
}
+
//sampleUiFragmentからそのまま持ってきた
public void initGameWindowView() {
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction transaction = fragmentManager.beginTransaction();
- Fragment f = new RWTUIFragment();
+//
+ RWTUIFragment f = new RWTUIFragment();
+ f.addListener(this);
View uiLayout = parentView.findViewById(R.id.ui_layout);
uiLayout.setOnTouchListener((RWTUIFragment) f);
transaction.add(R.id.ui_layout, f);
transaction.commit();
}
+ @Override
+ public boolean onEvent(PadEvent event) {
+ Vector3d charaVector3d = pocha.getDirection();
+ charaVector3d.normalize();//キャラの向きを単位ベクトルに
+ MotionEvent motionEvent = event.getMotionEvent();
+
+ if (motionEvent.getAction() == MotionEvent.ACTION_DOWN || motionEvent.getAction() == MotionEvent.ACTION_MOVE) {
+ isTouched = true;
+ touchX = (float) (Math.cos(event.getAngle()) * event.getLength());
+ touchY = (float) (Math.sin(event.getAngle()) * event.getLength());
+
+ //motion.eventをevent.getLengthみたいに変えればいい?
+ //touchYのもとは(motionEvent.getY() - minY) / (maxY - minY),X (motionEvent.getX() - minX) / (maxX - minX)
+ camera.setViewPoint(pocha.getPosition()
+ .add(-5.0 * charaVector3d.getX(), charaVector3d.getY() + 5.0, -5.0 * charaVector3d.getZ()));//視点
+ camera.setViewLine(new Vector3d(5.0 * charaVector3d.getX(), charaVector3d.getY() - 2.5, 5.0 * charaVector3d.getZ() + touchX));//視線
+ } else if (motionEvent.getAction() == MotionEvent.ACTION_UP) {
+ isTouched = false;
+ }
+ return false;
+ }
+
+ @Override
+ public boolean onEvent(RWTFragmentEvent event) {
+ RWTPad pad = (RWTPad) event.getFragment().findViewById(R.id.pad);
+ pad.addListener(this);
+ return false;
+ }
}
diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/RWT/RWTFragment.java b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/RWT/RWTFragment.java
new file mode 100644
index 0000000..ca0a1ac
--- /dev/null
+++ b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/RWT/RWTFragment.java
@@ -0,0 +1,40 @@
+package org.ntlab.radishforandroidstudio.framework.RWT;
+
+import android.os.Bundle;
+import android.support.v4.app.Fragment;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import org.ntlab.radishforandroidstudio.framework.event.RWTFragmentEvent;
+import org.ntlab.radishforandroidstudio.framework.listener.RWTFragmentListener;
+import org.ntlab.radishforandroidstudio.framework.subject.RWTFragmentSubject;
+
+import java.util.ArrayList;
+
+public abstract class RWTFragment extends Fragment{
+ private RWTFragmentSubject subject = new RWTFragmentSubject();
+ private View v = null;
+
+ public abstract int getUseFragmentId();
+
+ public View getView() {
+ return v;
+ }
+
+ public View findViewById(int id) {
+ return v.findViewById(id);
+ }
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ v = inflater.inflate(getUseFragmentId(), container, false);
+ subject.notifyListeners(new RWTFragmentEvent(this));
+ return v;
+ }
+
+ public void addListener(RWTFragmentListener listener) {
+ subject.addListener(listener);
+ }
+}
diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/RWT/RWTUIFragment.java b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/RWT/RWTUIFragment.java
index 67e4e74..e02fb9e 100644
--- a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/RWT/RWTUIFragment.java
+++ b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/RWT/RWTUIFragment.java
@@ -10,14 +10,12 @@
import org.ntlab.radishforandroidstudio.R;
-import org.ntlab.radishforandroidstudio.cactusClient.PlayerActivity;
import org.ntlab.radishforandroidstudio.framework.event.PadEvent;
import org.ntlab.radishforandroidstudio.framework.listener.PadListener;
import static android.view.View.*;
-public class RWTUIFragment extends Fragment implements OnTouchListener,PadListener {
- PlayerActivity listener = null;
+public class RWTUIFragment extends RWTFragment implements OnTouchListener, PadListener {
View v = null;
public RWTUIFragment() {}
@@ -29,16 +27,15 @@
}
@Override
+ public int getUseFragmentId() {
+ return R.layout.ui_fragment;
+ }
+
+ @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
- v = inflater.inflate(R.layout.ui_fragment, container, false);
- RWTPad pad = v.findViewById(R.id.pad);
- pad.addListener(this);
-
- if (listener != null) {
- listener.onCreateFragmentEvent(this);
- }
- return inflater.inflate(R.layout.ui_fragment, null);
+ super.onCreateView(inflater, container, savedInstanceState);
+ return getView();
}
@Override
@@ -51,13 +48,4 @@
public boolean onEvent(PadEvent event) {
return false;
}
-
- public void setListener(PlayerActivity activity) {
- listener = activity;
- }
-
- public View findViewById(int id) {
- return v.findViewById(id);
- }
-
}
diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/event/MyEvent.java b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/event/MyEvent.java
index 37c04b4..e0c5b00 100644
--- a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/event/MyEvent.java
+++ b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/event/MyEvent.java
@@ -3,13 +3,5 @@
import android.view.MotionEvent;
public class MyEvent {
- MotionEvent e;
-
- public MyEvent(MotionEvent e) {
- this.e = e;
- }
-
- public final MotionEvent getMotionEvent() {
- return e;
- }
+ public MyEvent() {}
}
diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/event/MyMotionEvent.java b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/event/MyMotionEvent.java
new file mode 100644
index 0000000..29aa885
--- /dev/null
+++ b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/event/MyMotionEvent.java
@@ -0,0 +1,15 @@
+package org.ntlab.radishforandroidstudio.framework.event;
+
+import android.view.MotionEvent;
+
+public class MyMotionEvent extends MyEvent {
+ MotionEvent e;
+
+ public MyMotionEvent(MotionEvent e) {
+ this.e = e;
+ }
+
+ public final MotionEvent getMotionEvent() {
+ return e;
+ }
+}
diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/event/PadEvent.java b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/event/PadEvent.java
index 3b81015..0814502 100644
--- a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/event/PadEvent.java
+++ b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/event/PadEvent.java
@@ -2,7 +2,7 @@
import android.view.MotionEvent;
-public class PadEvent extends MyEvent{
+public class PadEvent extends MyMotionEvent{
private MotionEvent e;
/**
diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/event/RWTFragmentEvent.java b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/event/RWTFragmentEvent.java
new file mode 100644
index 0000000..706649b
--- /dev/null
+++ b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/event/RWTFragmentEvent.java
@@ -0,0 +1,15 @@
+package org.ntlab.radishforandroidstudio.framework.event;
+
+import org.ntlab.radishforandroidstudio.framework.RWT.RWTFragment;
+
+public class RWTFragmentEvent extends MyEvent {
+ RWTFragment fragment;
+
+ public RWTFragmentEvent(RWTFragment fragment) {
+ this.fragment = fragment;
+ }
+
+ public RWTFragment getFragment() {
+ return fragment;
+ }
+}
diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/listener/MyListener.java b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/listener/MyListener.java
deleted file mode 100644
index 64943d5..0000000
--- a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/listener/MyListener.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package org.ntlab.radishforandroidstudio.framework.listener;
-
-import org.ntlab.radishforandroidstudio.framework.event.MyEvent;
-
-/**
- * 全リスナの基底クラス
- *
- * @author s.iwatani
- * @param イベントの型
- */
-public interface MyListener {
- /**
- * イベント発生時に実行するメソッド
- *
- * @param event イベントの情報
- * @return
- */
- boolean onEvent(EventType event);
-}
diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/listener/PadListener.java b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/listener/PadListener.java
index 577fce2..47e802b 100644
--- a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/listener/PadListener.java
+++ b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/listener/PadListener.java
@@ -7,4 +7,6 @@
*
* @author s.iwatani
*/
-public interface PadListener extends MyListener {}
+public interface PadListener {
+ boolean onEvent(PadEvent event);
+}
diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/listener/RWTFragmentListener.java b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/listener/RWTFragmentListener.java
new file mode 100644
index 0000000..406f149
--- /dev/null
+++ b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/listener/RWTFragmentListener.java
@@ -0,0 +1,7 @@
+package org.ntlab.radishforandroidstudio.framework.listener;
+
+import org.ntlab.radishforandroidstudio.framework.event.RWTFragmentEvent;
+
+public interface RWTFragmentListener {
+ boolean onEvent(RWTFragmentEvent event);
+}
diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/subject/MySubject.java b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/subject/MySubject.java
index 2ec1f31..195816b 100644
--- a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/subject/MySubject.java
+++ b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/subject/MySubject.java
@@ -1,12 +1,10 @@
package org.ntlab.radishforandroidstudio.framework.subject;
-import android.view.InputEvent;
-
+import java.lang.reflect.Method;
import java.util.Set;
import java.util.concurrent.CopyOnWriteArraySet;
import org.ntlab.radishforandroidstudio.framework.event.MyEvent;
-import org.ntlab.radishforandroidstudio.framework.listener.MyListener;
/**
* Listenerへイベントを通知するクラス
@@ -15,8 +13,9 @@
* @param リスナの型
* @param イベントを保存する型
*/
-public abstract class MySubject {
+public abstract class MySubject {
protected Set listenerSet = new CopyOnWriteArraySet<>();
+ protected String methodName = "onEvent";
public MySubject() {}
@@ -53,7 +52,13 @@
*/
public void notifyListeners(EventType event) {
for (ListenerType listener : listenerSet) {
- listener.onEvent(event);
+ Class> c = listener.getClass();
+ try {
+ Method m = c.getMethod("onEvent", event.getClass());
+ m.invoke(listener, event);
+ } catch (ReflectiveOperationException e) {
+ System.out.println(e);
+ }
}
}
}
diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/subject/PadSubject.java b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/subject/PadSubject.java
index 441dad9..d3cdabf 100644
--- a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/subject/PadSubject.java
+++ b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/subject/PadSubject.java
@@ -3,8 +3,6 @@
import org.ntlab.radishforandroidstudio.framework.event.PadEvent;
import org.ntlab.radishforandroidstudio.framework.listener.PadListener;
-// 実装いらない説
-// Listener側と同じようにC++のテンプレート特殊化的なことだけして中身なしにするかも
public class PadSubject extends MySubject {
public final static PadSubject own = new PadSubject();
diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/subject/RWTFragmentSubject.java b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/subject/RWTFragmentSubject.java
new file mode 100644
index 0000000..1513d54
--- /dev/null
+++ b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/subject/RWTFragmentSubject.java
@@ -0,0 +1,11 @@
+package org.ntlab.radishforandroidstudio.framework.subject;
+
+import org.ntlab.radishforandroidstudio.framework.RWT.RWTFragment;
+import org.ntlab.radishforandroidstudio.framework.listener.RWTFragmentListener;
+import org.ntlab.radishforandroidstudio.framework.event.RWTFragmentEvent;
+
+public class RWTFragmentSubject extends MySubject {
+ public RWTFragmentSubject() {
+ super();
+ }
+}