diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser
new file mode 100644
index 0000000..6522ee3
--- /dev/null
+++ b/.idea/caches/build_file_checksums.ser
Binary files differ
diff --git a/app/build.gradle b/app/build.gradle
index b424cec..c6da7ce 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -31,7 +31,11 @@
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support.constraint:constraint-layout:1.1.0'
+ implementation 'com.android.support:support-v4:27.1.1'
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 '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 7c3c703..1f755b2 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -3,6 +3,7 @@
package="org.ntlab.radishforandroidstudio">
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/CharactersFragment.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/CharactersFragment.java
new file mode 100644
index 0000000..100114b
--- /dev/null
+++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/CharactersFragment.java
@@ -0,0 +1,37 @@
+package org.ntlab.radishforandroidstudio.cactusClient.views;
+
+import android.os.Bundle;
+import android.support.v4.app.FragmentManager;
+import android.support.v4.app.FragmentTransaction;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.support.v4.app.Fragment;
+import android.widget.Button;
+
+
+import org.ntlab.radishforandroidstudio.R;
+
+public class CharactersFragment extends Fragment {
+
+ public void onStart() {
+ super.onStart();
+
+ Button button = (Button) getActivity().findViewById(R.id.chooseInstances);
+ //↓↓↓↓↓↓↓↓画面遷移↓↓↓↓↓↓↓↓
+ button.setOnClickListener(new View.OnClickListener() {
+
+ @Override
+ public void onClick(View v) {
+ //Toast.makeText(getActivity(), "hoge!", Toast.LENGTH_SHORT).show();
+
+ FragmentManager manager = getFragmentManager();
+ FragmentTransaction transaction = manager.beginTransaction();
+
+ transaction.replace(R.id.fragment_place, new InstancesFragment());
+
+ transaction.commit();
+ }
+ });
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/InstancesFragment.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/InstancesFragment.java
new file mode 100644
index 0000000..3c678f2
--- /dev/null
+++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/InstancesFragment.java
@@ -0,0 +1,49 @@
+package org.ntlab.radishforandroidstudio.cactusClient.views;
+
+
+import android.accounts.Account;
+import android.os.Bundle;
+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.View;
+import android.view.ViewGroup;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.Toast;
+
+
+
+import org.ntlab.radishforandroidstudio.R;
+
+public class InstancesFragment extends Fragment {
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ // Inflate the layout for this fragment
+ return inflater.inflate(R.layout.instances_fragment, container, false);
+ }
+
+ public void onStart() {
+ super.onStart();
+
+ Button button = (Button) getActivity().findViewById(R.id.Instance1);
+ //↓↓↓↓↓↓↓↓画面遷移↓↓↓↓↓↓↓↓
+ button.setOnClickListener(new View.OnClickListener() {
+
+ @Override
+ public void onClick(View v) {
+ //Toast.makeText(getActivity(), "hoge!", Toast.LENGTH_SHORT).show();
+
+ FragmentManager manager = getFragmentManager();
+ FragmentTransaction transaction = manager.beginTransaction();
+
+ transaction.replace(R.id.fragment_place, new CharactersFragment());
+
+ transaction.commit();
+ }
+ });
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/LoginFragment.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/LoginFragment.java
new file mode 100644
index 0000000..4cc9675
--- /dev/null
+++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/LoginFragment.java
@@ -0,0 +1,116 @@
+package org.ntlab.radishforandroidstudio.cactusClient.views;
+
+
+import android.accounts.Account;
+import android.os.Bundle;
+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.View;
+import android.view.ViewGroup;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.Toast;
+
+import net.arnx.jsonic.JSON;
+
+import org.ntlab.radishforandroidstudio.R;
+import org.ntlab.radishforandroidstudio.cactusClient.Cactus;
+import org.ntlab.radishforandroidstudio.cactusClient.connections.LoginFragmentConnection;
+import org.ntlab.radishforandroidstudio.cactusClient.views.InstancesFragment;
+import org.ntlab.radishforandroidstudio.cactusClient.models.URIAddressedEntity;
+import org.ntlab.radishforandroidstudio.framework.network.CallBack;
+
+public class LoginFragment extends Fragment {
+ private LoginFragmentConnection connection;
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ // Inflate the layout for this fragment
+ return inflater.inflate(R.layout.login_fragment, container, false);
+
+ }
+
+ @Override
+ public void onStart() {
+ super.onStart();
+
+ Button button = (Button)getActivity().findViewById(R.id.signUP1);
+ //↓↓↓↓↓↓↓↓画面遷移↓↓↓↓↓↓↓↓
+ button.setOnClickListener(new View.OnClickListener() {
+
+ @Override
+ public void onClick(View v) {
+ //Toast.makeText(getActivity(), "hoge!", Toast.LENGTH_SHORT).show();
+
+ FragmentManager manager = getFragmentManager();
+ FragmentTransaction transaction = manager.beginTransaction();
+
+ transaction.addToBackStack(null);
+ transaction.replace(R.id.fragment_place, new SignUpFragment());
+
+ transaction.commit();
+ }
+ });
+ //↑↑↑↑↑画面遷移↑↑↑↑↑↑
+
+ Button loginButton = (Button)getActivity().findViewById(R.id.login);
+ loginButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ EditText userName = (EditText)getActivity().findViewById(R.id.inputUserName);
+ EditText passWord = (EditText)getActivity().findViewById(R.id.checkPassword);
+
+
+
+ if (userName.getText().toString().isEmpty()) {
+ Toast.makeText(getActivity(), "ユーザー名が未記入です", Toast.LENGTH_SHORT).show();
+ } else if(passWord.getText().toString().isEmpty()){
+ Toast.makeText(getActivity(), "パスワードが未記入です", Toast.LENGTH_SHORT).show();
+ } else {
+
+ connection = new LoginFragmentConnection();
+ connection.setCallBack(new CallBack() {
+ @Override
+ public void onResponse(String response) {
+ //通信した時の処理を書くのだよ
+ URIAddressedEntity lac = JSON.decode(response, URIAddressedEntity.class);
+
+ System.out.println("///////////////////////////////////////////////");
+
+
+
+
+ System.out.println(response);
+
+ //Cactus.setMyAccount((Account)lac.getBody());
+
+
+ if(response.contains("\"login\":true,")){
+ Toast.makeText(getActivity(),"ログインに成功しました。", Toast.LENGTH_SHORT).show();
+
+ FragmentManager manager = getFragmentManager();
+ FragmentTransaction transaction = manager.beginTransaction();
+
+ transaction.replace(R.id.fragment_place, new InstancesFragment());
+
+ transaction.commit();
+
+ }else {
+ Toast.makeText(getActivity(),"ログインに失敗しました。", Toast.LENGTH_SHORT).show();
+ }
+
+ }
+ });
+ connection.addFormParam("userID", userName.getText().toString());
+ connection.addFormParam("userPass", passWord.getText().toString());
+ connection.doPut();
+ }
+ }
+ });
+
+
+ }
+}
diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/SignUpFragment.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/SignUpFragment.java
new file mode 100644
index 0000000..4506291
--- /dev/null
+++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/SignUpFragment.java
@@ -0,0 +1,99 @@
+package org.ntlab.radishforandroidstudio.cactusClient.views;
+
+import android.os.Bundle;
+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.View;
+import android.view.ViewGroup;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.Toast;
+import net.arnx.jsonic.JSON;
+import org.ntlab.radishforandroidstudio.R;
+import org.ntlab.radishforandroidstudio.cactusClient.connections.SignUpFragmentConnection;
+import org.ntlab.radishforandroidstudio.cactusClient.models.URIAddressedEntity;
+import org.ntlab.radishforandroidstudio.framework.network.CallBack;
+
+public class SignUpFragment extends Fragment {
+ private SignUpFragmentConnection connection;
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ // Inflate the layout for this fragment
+ return inflater.inflate(R.layout.sign_up_fragment, container, false);
+
+ }
+
+ //↓↓↓↓↓↓↓↓画面遷移↓↓↓↓↓↓↓↓
+ @Override
+ public void onStart() {
+
+ super.onStart();
+
+ //ログインボタン
+ Button button = (Button) getActivity().findViewById(R.id.LoginButton2);
+ button.setOnClickListener(new View.OnClickListener() {
+
+ @Override
+ public void onClick(View v) {
+ //Toast.makeText(getActivity(), "hoge!", Toast.LENGTH_SHORT).show();
+
+ FragmentManager manager = getFragmentManager();
+ FragmentTransaction transaction = manager.beginTransaction();
+
+ transaction.addToBackStack(null);
+ //transaction.replace(R.id.fragment_place, new LoginFragment());
+ transaction.replace(R.id.fragment_place, new LoginFragment());
+
+ transaction.commit();
+ }
+ });
+
+ //サインアップ
+ Button signUpButton = (Button) getActivity().findViewById(R.id.signUp2);
+ signUpButton.setOnClickListener(new View.OnClickListener(){
+ @Override
+ public void onClick(View view) {
+ EditText inputPassword = (EditText)getActivity().findViewById(R.id.inputPassword2);
+ EditText checkPassWord = (EditText)getActivity().findViewById(R.id.checkPassword);
+ EditText inputUserName = (EditText)getActivity().findViewById(R.id.inputUserName);
+ EditText inputUserID = (EditText)getActivity().findViewById(R.id.inputUserID);
+
+
+ if(inputUserID.getText().toString().contains(" ") || inputUserID.getText().toString().contains(" ")){
+ Toast.makeText(getActivity(), "空白の含むIDは登録できません", Toast.LENGTH_SHORT).show();
+ }else if (inputPassword.getText().toString().isEmpty()) {
+ Toast.makeText(getActivity(), "パスワードを入力してください", Toast.LENGTH_SHORT).show();
+ } else if (checkPassWord.getText().toString().isEmpty()) {
+ Toast.makeText(getActivity(), "確認用パスワードを入力してください", Toast.LENGTH_SHORT).show();
+ } else if (!inputPassword.getText().toString().equals(checkPassWord.getText().toString() )) {
+ Toast.makeText(getActivity(), "パスワードが一致しません", Toast.LENGTH_SHORT).show();
+ }else{
+
+ connection = new SignUpFragmentConnection();
+ connection.setCallBack(new CallBack() {
+ @Override
+ public void onResponse(String response) {
+ //通信した時の処理を書くのだよ
+ URIAddressedEntity ac = JSON.decode(response, URIAddressedEntity.class);
+ System.out.println(ac.getUri());
+ System.out.println(response);
+ Toast.makeText(getActivity(),response, Toast.LENGTH_SHORT).show();
+ }
+ });
+
+ connection.addFormParam("userID", inputUserID.getText().toString());
+ connection.addFormParam("userPass", inputPassword.getText().toString());
+ connection.addFormParam("userName", inputUserName.getText().toString());
+ connection.doPost();
+
+ }
+ }
+ });
+ }
+
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/test b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/test
deleted file mode 100644
index e69de29..0000000
--- a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/test
+++ /dev/null
diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/gameMain/RealTime3DActivity.java b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/gameMain/RealTime3DActivity.java
index 2e6592d..c5e84eb 100644
--- a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/gameMain/RealTime3DActivity.java
+++ b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/gameMain/RealTime3DActivity.java
@@ -1,27 +1,32 @@
package org.ntlab.radishforandroidstudio.framework.gameMain;
import android.os.Bundle;
+import android.widget.LinearLayout;
import org.ntlab.radishforandroidstudio.framework.RWT.RWTSurfaceView;
import org.ntlab.radishforandroidstudio.framework.model3D.Universe;
import org.ntlab.radishforandroidstudio.framework.view3D.Camera3D;
+//addcontentViewのサンプルとして作成
public abstract class RealTime3DActivity extends RealTimeActivity {
protected Universe universe;
protected Camera3D camera;
protected RWTSurfaceView view;
-
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+
universe = new Universe();
camera = new Camera3D(universe);
-
+
view = new RWTSurfaceView(this);
view.setRenderMode(RWTSurfaceView.RENDERMODE_WHEN_DIRTY);
view.attachCamera(camera);
- setContentView(view);
+
+ addContentView(view,new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
+
}
protected void update(long interval) {
@@ -30,6 +35,6 @@
camera.adjust(interval);
view.requestRender();
}
-
+
abstract protected void progress(long interval);
}
diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/gameMain/RealTime3DFragment.java b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/gameMain/RealTime3DFragment.java
new file mode 100644
index 0000000..9b4024d
--- /dev/null
+++ b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/gameMain/RealTime3DFragment.java
@@ -0,0 +1,54 @@
+package org.ntlab.radishforandroidstudio.framework.gameMain;
+
+
+import android.os.Bundle;
+import android.support.annotation.Nullable;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.LinearLayout;
+
+import org.ntlab.radishforandroidstudio.R;
+import org.ntlab.radishforandroidstudio.framework.RWT.RWTSurfaceView;
+import org.ntlab.radishforandroidstudio.framework.model3D.Universe;
+import org.ntlab.radishforandroidstudio.framework.view3D.Camera3D;
+
+import static android.content.ContentValues.TAG;
+
+public class RealTime3DFragment extends RealTimeFragment{
+ protected Universe universe;
+ protected Camera3D camera;
+ protected RWTSurfaceView view;
+
+ @Override
+ public void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ universe = new Universe();
+
+ camera = new Camera3D(universe);
+
+ view = new RWTSurfaceView(this.getActivity());
+ view.setRenderMode(RWTSurfaceView.RENDERMODE_WHEN_DIRTY);
+ view.attachCamera(camera);
+
+ getActivity().addContentView(view,new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
+ }
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+ return inflater.inflate(R.layout.fragment_real_time_3d, container, false);
+ }
+
+ @Override
+ protected void update(long interval) {
+ progress(interval);
+ universe.update(interval);
+ camera.adjust(interval);
+ view.requestRender();
+ }
+
+ protected void progress(long interval) {
+
+ }
+}
+
diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/gameMain/RealTimeActivity.java b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/gameMain/RealTimeActivity.java
index 0d8c19c..0a85e18 100644
--- a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/gameMain/RealTimeActivity.java
+++ b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/gameMain/RealTimeActivity.java
@@ -10,38 +10,38 @@
//インターバル確認用変数
private long interval = 15L;
private long prevTime = 0L;
-
+
private ScheduledThreadPoolExecutor schedule = new ScheduledThreadPoolExecutor(1);
private boolean fixedInterval;
-
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
-
+
protected void start(long interval){
this.interval = interval;
this.fixedInterval = false;
schedule.scheduleWithFixedDelay(this, interval, interval, TimeUnit.MILLISECONDS);
}
-
+
protected void start(long delay, long interval){
this.interval = interval;
this.fixedInterval = false;
schedule.scheduleWithFixedDelay(this, delay, interval, TimeUnit.MILLISECONDS);
}
-
+
protected void start(long delay, long interval, boolean fixedInterval){
this.interval = interval;
this.fixedInterval = fixedInterval;
schedule.scheduleWithFixedDelay(this, delay, interval, TimeUnit.MILLISECONDS);
}
-
+
protected void stop() {
schedule.shutdown();
}
-
+
//繰り返し実行される部分
public void run(){
long interval;
@@ -55,7 +55,7 @@
}
update(interval);
}
-
+
//intervalミリ秒のインターバルをおいて定期実行
protected abstract void update(long interval);
}
diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/gameMain/RealTimeFragment.java b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/gameMain/RealTimeFragment.java
new file mode 100644
index 0000000..6fa410f
--- /dev/null
+++ b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/gameMain/RealTimeFragment.java
@@ -0,0 +1,74 @@
+package org.ntlab.radishforandroidstudio.framework.gameMain;
+
+import android.os.Bundle;
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
+import android.support.v4.app.Fragment;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import org.ntlab.radishforandroidstudio.R;
+
+import java.util.concurrent.ScheduledThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
+
+public abstract class RealTimeFragment extends Fragment implements Runnable{
+ //インターバル確認用変数
+ private long interval = 15L;
+ private long prevTime = 0L;
+
+ private ScheduledThreadPoolExecutor schedule = new ScheduledThreadPoolExecutor(1);
+ private boolean fixedInterval;
+
+ @Override
+ public void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ }
+
+ @Nullable
+ @Override
+ public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
+ return inflater.inflate(R.layout.fragment_real_time, container, false);
+ }
+
+ protected void start(long interval){
+ this.interval = interval;
+ this.fixedInterval = false;
+ schedule.scheduleWithFixedDelay(this, interval, interval, TimeUnit.MILLISECONDS);
+ }
+
+ protected void start(long delay, long interval){
+ this.interval = interval;
+ this.fixedInterval = false;
+ schedule.scheduleWithFixedDelay(this, delay, interval, TimeUnit.MILLISECONDS);
+ }
+
+ protected void start(long delay, long interval, boolean fixedInterval){
+ this.interval = interval;
+ this.fixedInterval = fixedInterval;
+ schedule.scheduleWithFixedDelay(this, delay, interval, TimeUnit.MILLISECONDS);
+ }
+
+
+ protected void stop() {
+ schedule.shutdown();
+ }
+
+ //繰り返し実行される部分
+ public void run(){
+ long interval;
+ if (prevTime == 0L || fixedInterval) {
+ interval = this.interval;
+ prevTime = System.currentTimeMillis();
+ } else {
+ long curTime = System.currentTimeMillis();
+ interval = curTime - prevTime;
+ prevTime = curTime;
+ }
+ update(interval);
+ }
+ //intervalミリ秒のインターバルをおいて定期実行
+ protected abstract void update(long interval);
+
+}
diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/network/CallBack.java b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/network/CallBack.java
new file mode 100644
index 0000000..1e9238b
--- /dev/null
+++ b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/network/CallBack.java
@@ -0,0 +1,6 @@
+package org.ntlab.radishforandroidstudio.framework.network;
+
+
+public interface CallBack {
+ public void onResponse(String response);
+}
diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/network/HttpAsyncConnection.java b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/network/HttpAsyncConnection.java
index 2f1fb80..cd6bf85 100644
--- a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/network/HttpAsyncConnection.java
+++ b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/network/HttpAsyncConnection.java
@@ -1,101 +1,111 @@
package org.ntlab.radishforandroidstudio.framework.network;
-import android.app.Activity;
-import android.os.AsyncTask;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.xml.sax.InputSource;
+import android.os.AsyncTask;
+import android.util.Log;
import java.io.BufferedReader;
-import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
-import java.io.OutputStreamWriter;
-import java.io.StringReader;
+import java.io.OutputStream;
import java.net.HttpURLConnection;
-import java.net.MalformedURLException;
import java.net.URL;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-
abstract public class HttpAsyncConnection extends AsyncTask {
- private HttpURLConnection conn;
- private StringBuffer message = new StringBuffer();
- protected Activity activity = null;
+ private HttpURLConnection conn = null;
+ private String baseUrl = null;
+ private String queryParams = "";
+ private String pathParams = "";
+ private String formParams = "";
+ private CallBack callBack = null;
+
+
+ private String method;
private static String clientSessionID = null;
-
public HttpAsyncConnection(String url) {
- try {
- conn = (HttpURLConnection) new URL(url).openConnection();
- } catch (MalformedURLException e) {
-
- e.printStackTrace();
- } catch (IOException e) {
-
- e.printStackTrace();
- }
+ baseUrl = url;
}
- public HttpAsyncConnection(String url, Activity activity) {
- this(url);
- this.activity = activity;
- try {
- conn = (HttpURLConnection) new URL(url).openConnection();
- } catch (MalformedURLException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
+ public void doPost() {
+ setMethod("POST");
+ execute();
+ }
+
+ public void doGet() {
+ setMethod("GET");
+ execute();
+ }
+
+ public void doPut() {
+ setMethod("PUT");
+ execute();
+ }
+
+ public void doDelete() {
+ setMethod("DELETE");
+ execute();
+ }
+
+ public void setCallBack(CallBack callBack) {
+ this.callBack = callBack;
+ }
+
+ private void setMethod(String method) {
+ this.method = method;
}
@Override
protected String doInBackground(Void... urls) {
- doPost();
- return doGet();
+ doAnything();
+ return doReceive();
}
- // Parse XML
- public void onPostExecute(String result) {
- // CLLog.debug(""+result);
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+ /* (non-Javadoc)
+ * @see android.os.AsyncTask#onPostExecute(java.lang.Object)
+ */
+ public void onPostExecute(String response) {
try {
- DocumentBuilder builder = factory.newDocumentBuilder();
- InputSource is = new InputSource();
- is.setCharacterStream(new StringReader(result));
- Document dom = builder.parse(is);
- Element root = dom.getDocumentElement();
- receive(root);
- }catch(Exception e) {
- e.printStackTrace();
+ if (callBack != null) callBack.onResponse(response);
+ } catch (Exception e) {
+ // TODO: handle exception
+ Log.d("error", "�G���[�I");
}
}
- abstract protected void receive(Element root);
// request
- public void doPost() {
+ public void doAnything() {
try {
+ if(conn == null) {
+ if(queryParams == null || queryParams.length() == 0){
+ conn = (HttpURLConnection) new URL(baseUrl + pathParams).openConnection();
+ } else {
+ conn = (HttpURLConnection) new URL(baseUrl + pathParams + "?" + queryParams).openConnection();
+ }
+ }
conn.setReadTimeout(10000 /* milliseconds */);
conn.setConnectTimeout(15000 /* milliseconds */);
- // POST or GET
- conn.setRequestMethod("POST");
- //conn.setRequestMethod("GET");
+ // POST or GET or PUT or DELETE
+ conn.setRequestMethod(method);
- conn.setDoOutput(true);
- if(clientSessionID != null) {
- conn.setRequestProperty("Cookie", clientSessionID);
+ if (formParams.length() > 0) {
+ conn.setDoOutput(true);
+ if(clientSessionID != null) {
+ conn.setRequestProperty("Cookie", clientSessionID);
+ }
+ OutputStream out = conn.getOutputStream();
+ out.write(formParams.getBytes("UTF-8"));
+ out.flush();
+ out.close();
+ formParams = "";
}
- BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(conn.getOutputStream(), "UTF-8"));
- writer.write(message.toString());
- message.delete(0,message.length());
- writer.flush();
- writer.close();
+ pathParams = "";
+ queryParams = "";
+ conn.connect();
if(clientSessionID == null ) {
clientSessionID = conn.getHeaderField("Set-Cookie");
@@ -108,7 +118,7 @@
}
// response
- public String doGet() {
+ public String doReceive() {
BufferedReader reader;
try {
reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
@@ -117,9 +127,11 @@
while((line = reader.readLine()) != null)
builder.append(line);
reader.close();
+ if (conn != null) conn.disconnect();
return builder.toString();
} catch (IOException e) {
e.printStackTrace();
+ if (conn != null) conn.disconnect();
return null;
}
@@ -132,20 +144,21 @@
* @param key
* @param value
*/
- public void addParam(String key, String value) {
- if(message.length() > 0) {
- message.append("&");
+ public void addQueryParam(String key, String value) {
+ if(queryParams.length() > 0) {
+ queryParams += ("&");
}
- message.append(key+"="+value);
+ queryParams += (key + "=" + value);
}
- public Activity getActivity() {
- return activity;
+ public void addFormParam(String key, String value) {
+ if(formParams.length() > 0) {
+ formParams += "&";
+ }
+ formParams += (key + "=" + value);
}
- public void setActivity(Activity activity) {
- this.activity = activity;
-
-
+ public void addPathParam(String param){
+ pathParams += "/" + param;
}
}
diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/sample/SampleActivity.java b/app/src/main/java/org/ntlab/radishforandroidstudio/sample/SampleActivity.java
new file mode 100644
index 0000000..76f1430
--- /dev/null
+++ b/app/src/main/java/org/ntlab/radishforandroidstudio/sample/SampleActivity.java
@@ -0,0 +1,178 @@
+package org.ntlab.radishforandroidstudio.sample;
+
+import android.annotation.SuppressLint;
+import android.support.v7.app.AppCompatActivity;
+import android.os.Bundle;
+import android.view.MotionEvent;
+import android.view.View;
+import android.widget.Button;
+import android.widget.LinearLayout;
+
+import org.ntlab.radishforandroidstudio.R;
+import org.ntlab.radishforandroidstudio.framework.animation.Animation3D;
+import org.ntlab.radishforandroidstudio.framework.gameMain.OvergroundActor;
+import org.ntlab.radishforandroidstudio.framework.gameMain.RealTime3DActivity;
+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.Vector3f;
+
+//addContentViewの追加のためにSampleを作成
+public class SampleActivity extends RealTime3DActivity {
+
+ private OvergroundActor pocha;
+ private Ground stage;
+ private boolean isTouched = false;
+ private float touchX = 0.0f;
+ private float touchY = 0.0f;
+
+
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ //ボタンの重ね合わせ
+ View view1 = getLayoutInflater().inflate(R.layout.button_layout, null);
+ addContentView(view1, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
+
+ //環境光
+ 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();
+ }
+
+ 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);
+
+
+ //top-button操作
+ Button top_button = findViewById(R.id.top_button);
+ top_button.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ System.out.println("top-button");
+ }
+ });
+ //down-button操作
+ Button down_button = findViewById(R.id.down_button);
+ down_button.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ System.out.println("down-button");
+ }
+ });
+ //left_button操作
+ Button left_button = findViewById(R.id.left_button);
+ left_button.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ System.out.println("left_button");
+ }
+ });
+ //right_button操作
+ Button right_button = findViewById(R.id.right_button);
+ right_button.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ System.out.println("right_button");
+ }
+ });
+ }
+
+ @Override
+ public void progress(long interval) {
+ 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());
+ }
+
+ @SuppressLint("NewApi")
+ @Override
+ public boolean onTouchEvent(MotionEvent event){
+ super.onTouchEvent(event);
+
+ //ACTION_MOVE:タッチしたまま移動,ACTION_DOWN:タッチダウン
+ 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);
+ System.out.println("touch");
+ } else if (event.getAction() == MotionEvent.ACTION_UP) {
+ isTouched = false;
+ System.out.println("Not-touch");
+ }
+ return true;
+ }
+}
diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/sample/SampleGameActivity.java b/app/src/main/java/org/ntlab/radishforandroidstudio/sample/SampleGameActivity.java
index 3a61419..fe6d53a 100644
--- a/app/src/main/java/org/ntlab/radishforandroidstudio/sample/SampleGameActivity.java
+++ b/app/src/main/java/org/ntlab/radishforandroidstudio/sample/SampleGameActivity.java
@@ -30,7 +30,6 @@
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
-
//環境光
AmbientLight amblight = new AmbientLight(new Color3f(1.0f, 1.0f, 1.0f));
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 77628c5..ef10842 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -4,25 +4,20 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
- tools:context=".cactusClient.MainActivity">
+ tools:context=".cactusClient.MainActivity"
+ android:id="@+id/fragment_place"
+ tools:layout_editor_absoluteY="73dp">
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_sample.xml b/app/src/main/res/layout/activity_sample.xml
new file mode 100644
index 0000000..6883ce2
--- /dev/null
+++ b/app/src/main/res/layout/activity_sample.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/button_layout.xml b/app/src/main/res/layout/button_layout.xml
new file mode 100644
index 0000000..cb143fa
--- /dev/null
+++ b/app/src/main/res/layout/button_layout.xml
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/characters_fragment.xml b/app/src/main/res/layout/characters_fragment.xml
new file mode 100644
index 0000000..bfaa80a
--- /dev/null
+++ b/app/src/main/res/layout/characters_fragment.xml
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_real_time.xml b/app/src/main/res/layout/fragment_real_time.xml
new file mode 100644
index 0000000..899bc36
--- /dev/null
+++ b/app/src/main/res/layout/fragment_real_time.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_real_time_3d.xml b/app/src/main/res/layout/fragment_real_time_3d.xml
new file mode 100644
index 0000000..bb6264a
--- /dev/null
+++ b/app/src/main/res/layout/fragment_real_time_3d.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_sample_game.xml b/app/src/main/res/layout/fragment_sample_game.xml
new file mode 100644
index 0000000..03fd74f
--- /dev/null
+++ b/app/src/main/res/layout/fragment_sample_game.xml
@@ -0,0 +1,8 @@
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_sample_game2.xml b/app/src/main/res/layout/fragment_sample_game2.xml
new file mode 100644
index 0000000..f1649e6
--- /dev/null
+++ b/app/src/main/res/layout/fragment_sample_game2.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_start.xml b/app/src/main/res/layout/fragment_start.xml
new file mode 100644
index 0000000..f9d8f19
--- /dev/null
+++ b/app/src/main/res/layout/fragment_start.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/instances_fragment.xml b/app/src/main/res/layout/instances_fragment.xml
new file mode 100644
index 0000000..f86651a
--- /dev/null
+++ b/app/src/main/res/layout/instances_fragment.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/login_fragment.xml b/app/src/main/res/layout/login_fragment.xml
new file mode 100644
index 0000000..b1a3de6
--- /dev/null
+++ b/app/src/main/res/layout/login_fragment.xml
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/sign_up_fragment.xml b/app/src/main/res/layout/sign_up_fragment.xml
new file mode 100644
index 0000000..b4e6114
--- /dev/null
+++ b/app/src/main/res/layout/sign_up_fragment.xml
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index d30ee8e..7ae17f3 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -1,4 +1,7 @@
RadishForAndroidStudio
Settings
+
+
+ Hello blank fragment
diff --git a/build.gradle b/build.gradle
index 43c0708..741b9e8 100644
--- a/build.gradle
+++ b/build.gradle
@@ -7,9 +7,7 @@
jcenter()
}
dependencies {
- classpath 'com.android.tools.build:gradle:3.1.3'
-
-
+ classpath 'com.android.tools.build:gradle:3.1.2'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}