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/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 3564736..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,20 +3,17 @@ 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.RWTFragmentListener; +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.RWTSurfaceView; import org.ntlab.radishforandroidstudio.framework.RWT.RWTUIFragment; import org.ntlab.radishforandroidstudio.framework.animation.Animation3D; import org.ntlab.radishforandroidstudio.framework.event.PadEvent; @@ -36,7 +33,7 @@ import org.ntlab.radishforandroidstudio.java3d.Vector3d; import org.ntlab.radishforandroidstudio.java3d.Vector3f; -public class PlayerFragment extends RealTime3DFragment implements PadListener ,RWTFragmentListener{ +public class PlayerFragment extends RealTime3DFragment implements PadListener, RWTFragmentListener{ private OvergroundActor pocha; private Ground stage; private boolean isTouched = false; @@ -104,9 +101,6 @@ e.printStackTrace(); } - //pad 追加部分 - - start(1000L, 50L, true); } @@ -186,25 +180,18 @@ // RWTUIFragment f = new RWTUIFragment(); -// f.setListener(this); - f.setListener(this); + f.addListener(this); View uiLayout = parentView.findViewById(R.id.ui_layout); uiLayout.setOnTouchListener((RWTUIFragment) f); transaction.add(R.id.ui_layout, f); transaction.commit(); } - 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.onTouch( v, event); - //super.onTouch(v,motionEvent); if (motionEvent.getAction() == MotionEvent.ACTION_DOWN || motionEvent.getAction() == MotionEvent.ACTION_MOVE) { isTouched = true; @@ -223,9 +210,9 @@ } @Override - public void onCreatedFragmentEvent(Fragment fragment) { - RWTPad pad = parentView.findViewById(R.id.pad); + 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 index 2c21d7b..ca0a1ac 100644 --- a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/RWT/RWTFragment.java +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/RWT/RWTFragment.java @@ -1,7 +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; -public class RWTFragment extends Fragment{ +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/RWTFragmentListener.java b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/RWT/RWTFragmentListener.java deleted file mode 100644 index b1a0fe1..0000000 --- a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/RWT/RWTFragmentListener.java +++ /dev/null @@ -1,11 +0,0 @@ -package org.ntlab.radishforandroidstudio.framework.RWT; - -import android.support.v4.app.Fragment; - -public interface RWTFragmentListener { - - void onCreatedFragmentEvent(Fragment fragment); - - - -} 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 dbe3afd..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 @@ -15,8 +15,7 @@ import static android.view.View.*; -public class RWTUIFragment extends Fragment implements OnTouchListener,PadListener { - RWTFragmentListener listener = null; +public class RWTUIFragment extends RWTFragment implements OnTouchListener, PadListener { View v = null; public RWTUIFragment() {} @@ -28,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.onCreatedFragmentEvent(this); - } - return inflater.inflate(R.layout.ui_fragment, null); + super.onCreateView(inflater, container, savedInstanceState); + return getView(); } @Override @@ -50,13 +48,4 @@ public boolean onEvent(PadEvent event) { return false; } - - public void setListener(RWTFragmentListener 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(); + } +}