diff --git a/.gitignore b/.gitignore
index 5b82029..d9f7d9c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,6 +5,7 @@
/.idea/libraries
/.idea/modules.xml
/.idea/workspace.xml
+/.idea/caches
.DS_Store
/build
/captures
diff --git a/app/build.gradle b/app/build.gradle
index 795325d..c674738 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -31,4 +31,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 '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 e4b29fc..0f15375 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -13,6 +13,7 @@
android:required="false" />
-->
+
+
+
+
+
+
+
+
@@ -46,10 +55,9 @@
-
+ android:screenOrientation="landscape">
@@ -57,6 +65,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/Cactus.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/Cactus.java
new file mode 100644
index 0000000..c4a6c46
--- /dev/null
+++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/Cactus.java
@@ -0,0 +1,64 @@
+package org.ntlab.radishforandroidstudio.cactusClient;
+
+import android.accounts.Account;
+import android.app.Activity;
+import android.app.Application;
+import android.os.Bundle;
+
+public class Cactus extends Application {
+
+ private Account myAccount = null;
+
+ public Cactus() {
+
+ registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
+ @Override
+ public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
+
+ }
+
+ @Override
+ public void onActivityStarted(Activity activity) {
+
+
+ }
+
+ @Override
+ public void onActivityResumed(Activity activity) {
+
+ }
+
+ @Override
+ public void onActivityPaused(Activity activity) {
+
+ }
+
+ @Override
+ public void onActivityStopped(Activity activity) {
+
+ }
+
+ @Override
+ public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
+
+ }
+
+ @Override
+ public void onActivityDestroyed(Activity activity) {
+
+ }
+ });
+ }
+
+ //MyAccountの追加
+ public Account getMyAccount(){
+ return myAccount;
+ }
+
+ public void setMyAccount(Account ac){
+ myAccount = ac;
+ }
+
+}
+
+
diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/MainActivity.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/MainActivity.java
index 909b56b..ca51f9c 100644
--- a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/MainActivity.java
+++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/MainActivity.java
@@ -1,9 +1,12 @@
package org.ntlab.radishforandroidstudio.cactusClient;
-import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
+import android.support.v4.app.Fragment;
+import android.support.v7.app.AppCompatActivity;
import org.ntlab.radishforandroidstudio.R;
+import org.ntlab.radishforandroidstudio.cactusClient.views.LoginFragment;
+
public class MainActivity extends AppCompatActivity {
@@ -11,5 +14,11 @@
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
+
+ Fragment fragment;
+ fragment = new LoginFragment();
+ getSupportFragmentManager().beginTransaction().add(R.id.fragment_place, fragment).commit();
+
}
+
}
diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/connections/LoginFragmentConnection.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/connections/LoginFragmentConnection.java
new file mode 100644
index 0000000..282c22a
--- /dev/null
+++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/connections/LoginFragmentConnection.java
@@ -0,0 +1,11 @@
+package org.ntlab.radishforandroidstudio.cactusClient.connections;
+
+import org.ntlab.radishforandroidstudio.framework.network.HttpAsyncConnection;
+
+public class LoginFragmentConnection extends HttpAsyncConnection {
+
+ public LoginFragmentConnection() {
+ super("http://nitta-lab-www2.is.konan-u.ac.jp:8080/CactusServer/rest/accounts");
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/connections/SignUpFragmentConnection.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/connections/SignUpFragmentConnection.java
new file mode 100644
index 0000000..790156d
--- /dev/null
+++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/connections/SignUpFragmentConnection.java
@@ -0,0 +1,11 @@
+package org.ntlab.radishforandroidstudio.cactusClient.connections;
+
+import org.ntlab.radishforandroidstudio.framework.network.HttpAsyncConnection;
+
+public class SignUpFragmentConnection extends HttpAsyncConnection {
+
+ public SignUpFragmentConnection() {
+ super("http://nitta-lab-www2.is.konan-u.ac.jp:8080/CactusServer/rest/accounts");
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/connections/test.txt b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/connections/test.txt
new file mode 100644
index 0000000..2839ac9
--- /dev/null
+++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/connections/test.txt
@@ -0,0 +1 @@
+ここに、??connection.javaをいれるぅ
\ No newline at end of file
diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/AddressedEntity.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/AddressedEntity.java
new file mode 100644
index 0000000..791dfda
--- /dev/null
+++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/AddressedEntity.java
@@ -0,0 +1,26 @@
+package org.ntlab.radishforandroidstudio.cactusClient.models;
+
+/**
+ * �e���\�[�X��POST�ō쐬�����ۂ�, ���Y���\�[�X�̎��̂�URI���Ăяo�����ɕԂ��Ƃ��ɗp����N���X
+ * @author r-isitani
+ *
+ */
+public abstract class AddressedEntity {
+ private Entity body;
+
+ protected AddressedEntity() {
+ // JSONDecode���̌Ăяo���p
+ }
+
+ public AddressedEntity(Entity body) {
+ setBody(body);
+ }
+
+ public Entity getBody() {
+ return body;
+ }
+
+ public void setBody(Entity body) {
+ this.body = body;
+ }
+}
diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/Entity.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/Entity.java
new file mode 100644
index 0000000..59e4eb0
--- /dev/null
+++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/Entity.java
@@ -0,0 +1,10 @@
+package org.ntlab.radishforandroidstudio.cactusClient.models;
+
+/**
+ * AddressedEntity�N���X�ɂĈ������̂�\�����ۃN���X
+ * @author r-isitani
+ *
+ */
+public abstract class Entity {
+
+}
diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/URIAddressedEntity.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/URIAddressedEntity.java
new file mode 100644
index 0000000..fddd54d
--- /dev/null
+++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/URIAddressedEntity.java
@@ -0,0 +1,30 @@
+package org.ntlab.radishforandroidstudio.cactusClient.models;
+
+import java.net.URI;
+
+public class URIAddressedEntity extends AddressedEntity {
+ private URI uri;
+
+ private URIAddressedEntity() {
+ // JSONDecode時の呼び出し用
+ }
+
+ public URIAddressedEntity(URI uri, Entity body) {
+ super(body);
+ setUri(uri);
+ }
+
+ public URIAddressedEntity(String str, Entity body) {
+ super(body);
+ setUri(URI.create(str));
+ }
+
+ public URI getUri() {
+ return uri;
+ }
+
+ public void setUri(URI uri) {
+ this.uri = uri;
+ }
+
+}
diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/test b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/test
deleted file mode 100644
index e69de29..0000000
--- a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/test
+++ /dev/null
diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/viewModels/test b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/viewModels/test
index e69de29..d75fa73 100644
--- a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/viewModels/test
+++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/viewModels/test
@@ -0,0 +1,96 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ 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 c20ee4d..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,11 +1,13 @@
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;
@@ -14,6 +16,7 @@
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+
universe = new Universe();
camera = new Camera3D(universe);
@@ -21,7 +24,9 @@
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) {
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 e44c0ad..ef10842 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -4,27 +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/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/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/build.gradle b/build.gradle
index 1a3d812..741b9e8 100644
--- a/build.gradle
+++ b/build.gradle
@@ -8,8 +8,6 @@
}
dependencies {
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
}