diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser
index c212c12..1d1275b 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 8d40625..02b0f1a 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -30,7 +30,7 @@
dependencies {
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.constraint:constraint-layout:1.1.1'
implementation 'com.android.support:support-v4:27.1.1'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
@@ -38,5 +38,6 @@
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'
-// implementation files('/Users/matsumotoayaju/AndroidStudioProjects/Cactus2/lib/jsonic-1.3.9/jsonic-1.3.9.jar')
+ implementation group: 'org.apache.commons', name: 'commons-lang3', version: '3.0'
+
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index bd77dc5..388aa06 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -22,7 +22,7 @@
android:theme="@style/AppTheme">
-
@@ -30,18 +30,17 @@
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
+
diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/Account.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/Account.java
new file mode 100644
index 0000000..8fe2513
--- /dev/null
+++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/Account.java
@@ -0,0 +1,68 @@
+package org.ntlab.radishforandroidstudio.cactusClient.models;
+
+import net.arnx.jsonic.JSONHint;
+
+public class Account {
+ private String id, name, token, pass, uniqueID;
+ private boolean login = false;
+
+ public Account(String userID, String userName, String userPass, String uniqueID) {
+ setId(userID);
+ setName(userName);
+ setPass(userPass);
+ setUniqueID(uniqueID);
+ formToken();
+ login = true;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ @JSONHint(ignore=true)
+ public String getPass() {
+ return pass;
+ }
+
+ public void setPass(String pass) {
+ this.pass = pass;
+ }
+
+ public boolean isLogin() {
+ return login;
+ }
+
+ public void setLogin(boolean login) {
+ this.login = login;
+ }
+
+ public String getToken() {
+ return token;
+ }
+
+ public String formToken() {
+ token = RandomStringGenerator.generateRandomString(64, RandomStringGenerator.ALPHA_NUMERIC);
+ return token;
+ }
+
+ @JSONHint(ignore=true)
+ public String getUniqueID() {
+ return uniqueID;
+ }
+
+ public void setUniqueID(String uniqueID) {
+ this.uniqueID = uniqueID;
+ }
+}
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
deleted file mode 100644
index 791dfda..0000000
--- a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/AddressedEntity.java
+++ /dev/null
@@ -1,26 +0,0 @@
-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
deleted file mode 100644
index 59e4eb0..0000000
--- a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/Entity.java
+++ /dev/null
@@ -1,10 +0,0 @@
-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/RandomStringGenerator.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/RandomStringGenerator.java
new file mode 100644
index 0000000..6796d1d
--- /dev/null
+++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/RandomStringGenerator.java
@@ -0,0 +1,29 @@
+package org.ntlab.radishforandroidstudio.cactusClient.models;
+
+import java.util.Set;
+
+import org.apache.commons.lang3.RandomStringUtils;
+
+public class RandomStringGenerator {
+ public static final String ALPHA_NUMERIC = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
+
+ private RandomStringGenerator() {
+
+ }
+
+ static public String generateRandomString(int num, String seed) {
+ return RandomStringUtils.random(num, seed);
+ }
+
+ static public boolean checkString(String str, Set set) {
+ return set.contains(str);
+ }
+
+ static public String generateUniqueString(int num, String seed, Set set) {
+ String str;
+ do {
+ str = generateRandomString(num, seed);
+ } while (checkString(str, set));
+ return str;
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/URIAddressedAccount.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/URIAddressedAccount.java
new file mode 100644
index 0000000..634ccaf
--- /dev/null
+++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/URIAddressedAccount.java
@@ -0,0 +1,39 @@
+package org.ntlab.radishforandroidstudio.cactusClient.models;
+
+import java.net.URI;
+
+public class URIAddressedAccount{
+ private URI uri;
+ private Account account;
+
+ private URIAddressedAccount() {
+ // JSONDecode時の呼び出し用
+ }
+
+ public URIAddressedAccount(URI uri, Account body) {
+ setAccount(body);
+ setUri(uri);
+ }
+
+ public URIAddressedAccount(String str, Account body) {
+ setAccount(body);
+ setUri(URI.create(str));
+ }
+
+ public URI getUri() {
+ return uri;
+ }
+
+ public void setUri(URI uri) {
+ this.uri = uri;
+ }
+
+ public Account getAccount() {
+ return account;
+ }
+
+ public void setAccount(Account account) {
+ this.account = account;
+ }
+
+}
\ No newline at end of file
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
deleted file mode 100644
index fddd54d..0000000
--- a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/URIAddressedEntity.java
+++ /dev/null
@@ -1,30 +0,0 @@
-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/tests/SampleActivity.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/tests/SampleActivity.java
index 24d5bad..5b6d935 100644
--- a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/tests/SampleActivity.java
+++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/tests/SampleActivity.java
@@ -16,8 +16,7 @@
FragmentManager manager = getSupportFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
- transaction.add(R.id.fragment_field, new StartFragment());
- transaction.addToBackStack(null);
+ transaction.add(R.id.framelayout_field, new StartFragment());
transaction.commit();
}
diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/tests/SampleGame2Fragment.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/tests/SampleGame2Fragment.java
index b36586c..3d358c6 100644
--- a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/tests/SampleGame2Fragment.java
+++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/tests/SampleGame2Fragment.java
@@ -2,12 +2,19 @@
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.RWT.RWTUIFragment;
import org.ntlab.radishforandroidstudio.framework.animation.Animation3D;
import org.ntlab.radishforandroidstudio.framework.gameMain.OvergroundActor;
import org.ntlab.radishforandroidstudio.framework.gameMain.RealTime3DFragment;
@@ -97,30 +104,16 @@
start(1000L, 50L, true);
}
- @Override
- protected 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());
- }
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
- // Inflate the layout for this fragment
- View view = inflater.inflate(R.layout.fragment_sample_game2, container, false);
- view.setOnTouchListener(new View.OnTouchListener() {
+ super.onCreateView(inflater, container, savedInstanceState);
+ initGameWindowView();
+
+
+ parentView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
@@ -138,6 +131,36 @@
return true;
}
});
- return view;
+ return parentView;
}
+
+ @Override
+ protected 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());
+ }
+
+ //sampleUiFragmentからそのまま持ってきた
+ public void initGameWindowView() {
+ FragmentManager fragmentManager = getFragmentManager();
+ FragmentTransaction transaction = fragmentManager.beginTransaction();
+
+ Fragment f = new RWTUIFragment();
+ View uiLayout = parentView.findViewById(R.id.ui_layout);
+ uiLayout.setOnTouchListener((RWTUIFragment) f);
+ transaction.add(R.id.ui_layout, f);
+ transaction.commit();
+ }
+
}
\ No newline at end of file
diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/tests/SampleGameFragment.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/tests/SampleGameFragment.java
index 720a447..8e8ac2b 100644
--- a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/tests/SampleGameFragment.java
+++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/tests/SampleGameFragment.java
@@ -4,11 +4,18 @@
import android.os.Bundle;
import android.support.annotation.NonNull;
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.MenuItem;
import android.view.View;
import android.view.ViewGroup;
+import android.widget.FrameLayout;
+import android.widget.LinearLayout;
+import org.ntlab.radishforandroidstudio.framework.RWT.RWTSurfaceView;
+import org.ntlab.radishforandroidstudio.framework.RWT.RWTUIFragment;
import org.ntlab.radishforandroidstudio.framework.gameMain.OvergroundActor;
import org.ntlab.radishforandroidstudio.framework.gameMain.RealTime3DFragment;
import org.ntlab.radishforandroidstudio.framework.model3D.BaseObject3D;
@@ -55,7 +62,7 @@
Box b1 = new Box(1.0f, 1.0f, 1.0f, ap1);
final Object3D obj1 = new Object3D("box", b1);
obj1.scale(2.0, 2.0, 2.0);
- obj1.apply(new Position3D(0.0 , 30.0, 0.0), false);
+ obj1.apply(new Position3D(0.0, 30.0, 0.0), false);
OvergroundActor actor = new OvergroundActor(obj1, null);
universe.place(actor);
@@ -101,7 +108,9 @@
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
- return inflater.inflate(R.layout.fragment_sample_game, container, false);
+ super.onCreateView(inflater, container, savedInstanceState);
+ initGameWindowView();
+ return parentView;
}
@Override
@@ -110,13 +119,25 @@
super.onDestroy();
}
- public boolean onOptionsItemSelected(MenuItem item){
+ public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
- if(id == R.id.action_settings){
+ if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
+
+ //sampleUiFragmentからそのまま持ってきた
+ public void initGameWindowView() {
+ FragmentManager fragmentManager = getFragmentManager();
+ FragmentTransaction transaction = fragmentManager.beginTransaction();
+
+ Fragment f = new RWTUIFragment();
+ View uiLayout = parentView.findViewById(R.id.ui_layout);
+ uiLayout.setOnTouchListener((RWTUIFragment) f);
+ transaction.add(R.id.ui_layout, f);
+ transaction.commit();
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/tests/SampleUiFragment.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/tests/SampleUiFragment.java
index 5d084ef..ad59c16 100644
--- a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/tests/SampleUiFragment.java
+++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/tests/SampleUiFragment.java
@@ -62,7 +62,7 @@
Box b1 = new Box(1.0f, 1.0f, 1.0f, ap1);
final Object3D obj1 = new Object3D("box", b1);
obj1.scale(2.0, 2.0, 2.0);
- obj1.apply(new Position3D(0.0 , 30.0, 0.0), false);
+ obj1.apply(new Position3D(0.0, 30.0, 0.0), false);
OvergroundActor actor = new OvergroundActor(obj1, null);
universe.place(actor);
@@ -111,10 +111,10 @@
super.onDestroy();
}
- public boolean onOptionsItemSelected(MenuItem item){
+ public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
- if(id == R.id.action_settings){
+ if (id == R.id.action_settings) {
return true;
}
@@ -124,10 +124,10 @@
public void initGameWindowView() {
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction transaction = fragmentManager.beginTransaction();
- Fragment f = new RWTUIFragment();
+ Fragment f = new RWTUIFragment();
View uiLayout = parentView.findViewById(R.id.ui_layout);
- uiLayout.setOnTouchListener((RWTUIFragment)f);
+ uiLayout.setOnTouchListener((RWTUIFragment) f);
transaction.add(R.id.ui_layout, f);
transaction.commit();
}
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 a5ffa6c..61c2011 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
@@ -11,6 +11,7 @@
import android.widget.Button;
import org.ntlab.radishforandroidstudio.R;
+import org.ntlab.radishforandroidstudio.cactusClient.views.PlayerFragment;
public class StartFragment extends Fragment {
@@ -31,7 +32,10 @@
public void onClick(View view) {
FragmentManager manager = getFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
- transaction.replace(R.id.fragment_field, new SampleUiFragment());
+// 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.addToBackStack(null);
transaction.commit();
}
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
index 100114b..fdbc2d5 100644
--- a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/CharactersFragment.java
+++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/CharactersFragment.java
@@ -8,12 +8,22 @@
import android.view.ViewGroup;
import android.support.v4.app.Fragment;
import android.widget.Button;
+import android.widget.Toast;
import org.ntlab.radishforandroidstudio.R;
public class CharactersFragment extends Fragment {
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ String test = getArguments().getString("test");
+ Toast.makeText(getActivity(), test, Toast.LENGTH_SHORT).show();
+ // Inflate the layout for this fragment
+ return inflater.inflate(R.layout.characters_fragment, container, false);
+ }
+
public void onStart() {
super.onStart();
@@ -33,5 +43,22 @@
transaction.commit();
}
});
+
+ Button Nobita = (Button) getActivity().findViewById(R.id.NOBITA);
+ //↓↓↓↓↓↓↓↓画面遷移↓↓↓↓↓↓↓↓
+ Nobita.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 PlayerFragment());
+ transaction.addToBackStack(null);
+ 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
index 3c678f2..d8fed11 100644
--- a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/InstancesFragment.java
+++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/InstancesFragment.java
@@ -1,7 +1,6 @@
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;
@@ -9,41 +8,64 @@
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import android.widget.AdapterView;
+import android.widget.ArrayAdapter;
import android.widget.Button;
-import android.widget.EditText;
-import android.widget.Toast;
-
+import android.widget.ListView;
import org.ntlab.radishforandroidstudio.R;
+import java.util.ArrayList;
+import java.util.List;
+
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);
}
+ @Override
+ public void onViewCreated(View view, Bundle savedInstanceState) {
+ // ListViewに表示するデータ
+ final ArrayList items = new ArrayList<>();
+ items.add("データ1");
+ items.add("データ2");
+ items.add("データ3");
- public void onStart() {
- super.onStart();
-
- Button button = (Button) getActivity().findViewById(R.id.Instance1);
- //↓↓↓↓↓↓↓↓画面遷移↓↓↓↓↓↓↓↓
- button.setOnClickListener(new View.OnClickListener() {
-
+ // ListViewをセット
+ final ArrayAdapter adapter = new ArrayAdapter(this.getContext(), android.R.layout.simple_list_item_1, items);
+ ListView listView = (ListView) view.findViewById(R.id.list_view);
+ listView.setAdapter(adapter);
+ // セルを選択されたら詳細画面フラグメント呼び出す
+ listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
- public void onClick(View v) {
- //Toast.makeText(getActivity(), "hoge!", Toast.LENGTH_SHORT).show();
+ public void onItemClick(AdapterView> parent, View v, int position, long id) {
+
+ //ここでサーバーに何番のインスタンスが選ばれたのかを送信して、受け取った値に応じてキャラクターを送信しなければならない
+ //...................................................
+ //
FragmentManager manager = getFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
-
- transaction.replace(R.id.fragment_place, new CharactersFragment());
-
+ CharactersFragment fragment = new CharactersFragment();
+ Bundle bundle = new Bundle();
+ bundle.putSerializable("test","これはテストです");
+ fragment.setArguments(bundle);
+ transaction.replace(R.id.fragment_place, fragment,"characters_fragment");
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
index 4cc9675..93f93d4 100644
--- a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/LoginFragment.java
+++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/LoginFragment.java
@@ -1,7 +1,5 @@
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;
@@ -11,16 +9,9 @@
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;
@@ -44,13 +35,10 @@
@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();
}
});
@@ -63,51 +51,48 @@
EditText userName = (EditText)getActivity().findViewById(R.id.inputUserName);
EditText passWord = (EditText)getActivity().findViewById(R.id.checkPassword);
+// /****************************************************************
+// テストするなら以下を実行するとパスの入力をしなくても画面遷移します
+ FragmentManager manager = getFragmentManager();
+ FragmentTransaction transaction = manager.beginTransaction();
+ transaction.replace(R.id.fragment_place, new InstancesFragment());
- 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 {
+ transaction.commit();
+// **********************************************************************/
- 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();
- }
+//
+// 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);
+//
+// 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/PlayerFragment.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/PlayerFragment.java
new file mode 100644
index 0000000..d019d30
--- /dev/null
+++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/PlayerFragment.java
@@ -0,0 +1,182 @@
+package org.ntlab.radishforandroidstudio.cactusClient.views;
+
+
+import android.os.Bundle;
+import android.support.annotation.Nullable;
+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 org.ntlab.radishforandroidstudio.R;
+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;
+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 PlayerFragment extends RealTime3DFragment 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;
+
+ public PlayerFragment() {
+ // Required empty public constructor
+ }
+
+ @Override
+ public 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();
+ }
+
+ 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);
+ }
+
+
+ @Nullable
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ super.onCreateView(inflater, container, savedInstanceState);
+ initGameWindowView();
+ return parentView;
+ }
+
+ @Override
+ protected 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));//視線
+ }
+
+
+ //sampleUiFragmentからそのまま持ってきた
+ public void initGameWindowView() {
+ FragmentManager fragmentManager = getFragmentManager();
+ FragmentTransaction transaction = fragmentManager.beginTransaction();
+
+ RWTUIFragment f = new RWTUIFragment();
+ f.setListener(this);
+ View uiLayout = parentView.findViewById(R.id.ui_layout);
+ uiLayout.setOnTouchListener(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((PadListener) this);
+ }
+
+ @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;
+ }
+}
+
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
index 4506291..938ade5 100644
--- a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/SignUpFragment.java
+++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/SignUpFragment.java
@@ -11,9 +11,11 @@
import android.widget.EditText;
import android.widget.Toast;
import net.arnx.jsonic.JSON;
+import net.arnx.jsonic.TypeReference;
+
import org.ntlab.radishforandroidstudio.R;
import org.ntlab.radishforandroidstudio.cactusClient.connections.SignUpFragmentConnection;
-import org.ntlab.radishforandroidstudio.cactusClient.models.URIAddressedEntity;
+import org.ntlab.radishforandroidstudio.cactusClient.models.URIAddressedAccount;
import org.ntlab.radishforandroidstudio.framework.network.CallBack;
public class SignUpFragment extends Fragment {
@@ -78,8 +80,10 @@
@Override
public void onResponse(String response) {
//通信した時の処理を書くのだよ
- URIAddressedEntity ac = JSON.decode(response, URIAddressedEntity.class);
- System.out.println(ac.getUri());
+ URIAddressedAccount ac = JSON.decode(response, URIAddressedAccount.class);
+ URIAddressedAccount ac2 = JSON.decode(response, new TypeReference(){});
+ System.out.println("JSON.decode(response, URIAddressedAccount.class);\n"+ac.getUri());
+ System.out.println("JSON.decode(response, new TypeReference(){});\n"+ac2.getUri());
System.out.println(response);
Toast.makeText(getActivity(),response, Toast.LENGTH_SHORT).show();
}
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 e528f91..5082cd9 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
@@ -1,35 +1,62 @@
package org.ntlab.radishforandroidstudio.framework.RWT;
-import android.support.annotation.NonNull;
-import android.support.v4.app.Fragment;
+
import android.os.Bundle;
+import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
+
import org.ntlab.radishforandroidstudio.R;
+import org.ntlab.radishforandroidstudio.cactusClient.views.PlayerFragment;
+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 {
+public class RWTUIFragment extends Fragment implements OnTouchListener,PadListener {
+ PlayerFragment listener = null;
+ View v = null;
public RWTUIFragment() {}
@Override
public void onCreate(Bundle savedInstanceState) {
+
super.onCreate(savedInstanceState);
+
}
@Override
- public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
- return inflater.inflate(R.layout.ui_fragment, container, false);
+ 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);
}
@Override
public boolean onTouch(View v, MotionEvent event) {
System.out.println("RWTUIFragment touch");
- v.performClick();
return false;
}
+
+ @Override
+ public boolean onEvent(PadEvent event) {
+ return false;
+ }
+
+ public View findViewById(int id) {
+ return v.findViewById(id);
+ }
+
+ public void setListener(PlayerFragment playerFragment) {
+ listener = playerFragment;
+ }
}
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 8e5d25e..3b81015 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
@@ -23,11 +23,11 @@
this.angle = angle;
}
- public final float getLength() {
+ public float getLength() {
return length;
}
- public final float getAngle() {
+ public float getAngle() {
return angle;
}
}
diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/gameMain/BaseActor.java b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/gameMain/BaseActor.java
index a6190ed..b7817f2 100644
--- a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/gameMain/BaseActor.java
+++ b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/gameMain/BaseActor.java
@@ -1,7 +1,5 @@
package org.ntlab.radishforandroidstudio.framework.gameMain;
-import android.view.animation.Animation;
-
import org.ntlab.radishforandroidstudio.framework.animation.Animation3D;
import org.ntlab.radishforandroidstudio.framework.model3D.Object3D;
import org.ntlab.radishforandroidstudio.framework.model3D.Placeable;
@@ -21,7 +19,7 @@
}
- public void addCollidableList(ArrayList pList){
+ public void addCollidableList(ArrayList pList) {
collidableListList.add(pList);
}
}
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 0a85e18..b3841a0 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
@@ -2,11 +2,12 @@
import android.app.Activity;
import android.os.Bundle;
+import android.support.v7.app.AppCompatActivity;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
-public abstract class RealTimeActivity extends Activity implements Runnable {
+public abstract class RealTimeActivity extends AppCompatActivity implements Runnable {
//インターバル確認用変数
private long interval = 15L;
private long prevTime = 0L;
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 fe6d53a..3ebd41d 100644
--- a/app/src/main/java/org/ntlab/radishforandroidstudio/sample/SampleGameActivity.java
+++ b/app/src/main/java/org/ntlab/radishforandroidstudio/sample/SampleGameActivity.java
@@ -1,12 +1,18 @@
package org.ntlab.radishforandroidstudio.sample;
import android.annotation.SuppressLint;
+import android.app.Fragment;
import android.os.Bundle;
import android.view.MotionEvent;
+import org.ntlab.radishforandroidstudio.R;
+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.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;
@@ -20,7 +26,7 @@
import org.ntlab.radishforandroidstudio.java3d.Vector3f;
-public class SampleGameActivity extends RealTime3DActivity {
+public class SampleGameActivity extends RealTime3DActivity{
private OvergroundActor pocha;
private Ground stage;
private boolean isTouched = false;
@@ -94,8 +100,8 @@
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));
+ 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);
diff --git a/app/src/main/res/layout/activity_sample.xml b/app/src/main/res/layout/activity_sample.xml
index ac0f24f..fe0e4b9 100644
--- a/app/src/main/res/layout/activity_sample.xml
+++ b/app/src/main/res/layout/activity_sample.xml
@@ -8,7 +8,7 @@
tools:context=".cactusClient.tests.SampleActivity">
+ app:layout_constraintBaseline_toBaselineOf="@+id/NOBITA"
+ app:layout_constraintStart_toEndOf="@+id/NOBITA" />
+ app:layout_constraintBaseline_toBaselineOf="@+id/Jyaian"
+ app:layout_constraintStart_toEndOf="@+id/Jyaian" />