Merge pull request #16 from nitta-lab-2018/changeFragment
OK
commit 3ace58f8d68e647a499f215c1bed10c2740fbd24
2 parents b11e7ae + bcf2692
Hiromu Matsumoto authored on 21 Jun 2018
Showing 18 changed files
View
.idea/caches/build_file_checksums.ser
Not supported
View
3
■■
app/build.gradle
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: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 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'
}
View
29
app/src/main/AndroidManifest.xml
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
 
<!-- 無効化の際に<activity></activity>コメントアウトか消すといい -->
 
<!--&lt;!&ndash;サンプルのゲーム&ndash;&gt;-->
<!--<activity-->
<!--android:name=".sample.SampleGameActivity"-->
<!--android:label="@string/app_name"-->
<!--android:screenOrientation="landscape">-->
<!--<category android:name="android.intent.category.LAUNCHER" />-->
<!--</intent-filter>-->
<!--</activity>-->
 
<activity android:name=".cactusClient.MainActivity"
<!--&lt;!&ndash;CactusのMainActivity&ndash;&gt;-->
<!--<activity android:name=".cactusClient.MainActivity"-->
<!--android:label="@string/app_name"-->
<!--android:screenOrientation="landscape">-->
<!--<intent-filter>-->
<!--<action android:name="android.intent.action.MAIN" />-->
 
<!--<category android:name="android.intent.category.LAUNCHER" />-->
<!--</intent-filter>-->
<!--</activity>-->
 
<!--フラグメント画面遷移のやつ-->
<activity android:name=".cactusClient.tests.SampleActivity"
android:label="@string/app_name"
android:screenOrientation="landscape">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
 
<!--&lt;!&ndash;ボタン操作のやつ&ndash;&gt;-->
<!--<activity android:name=".sample.SampleActivity"-->
<!--android:label="@string/app_name"-->
<!--android:screenOrientation="landscape">-->
<!--<intent-filter>-->
View
15
app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/tests/SampleActivity.java 0 → 100644
package org.ntlab.radishforandroidstudio.cactusClient.tests;
 
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
 
import org.ntlab.radishforandroidstudio.R;
 
public class SampleActivity extends AppCompatActivity {
 
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sample);
}
}
View
141
app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/tests/SampleGame2Fragment.java 0 → 100644
package org.ntlab.radishforandroidstudio.cactusClient.tests;
 
import android.os.Bundle;
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.animation.Animation3D;
import org.ntlab.radishforandroidstudio.framework.gameMain.OvergroundActor;
import org.ntlab.radishforandroidstudio.framework.gameMain.RealTime3DFragment;
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;
 
public class SampleGame2Fragment extends RealTime3DFragment {
private OvergroundActor pocha;
private Ground stage;
private boolean isTouched = false;
private float touchX = 0.0f;
private float touchY = 0.0f;
 
public SampleGame2Fragment() {
// 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);
}
 
@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());
}
 
@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() {
@Override
public boolean onTouch(View v, MotionEvent event) {
 
if (event.getAction() == MotionEvent.ACTION_DOWN || event.getAction() == MotionEvent.ACTION_MOVE) {
isTouched = true;
float maxX = event.getDevice().getMotionRange(MotionEvent.AXIS_X).getMax();
float minX = event.getDevice().getMotionRange(MotionEvent.AXIS_X).getMin();
float maxY = event.getDevice().getMotionRange(MotionEvent.AXIS_Y).getMax();
float minY = event.getDevice().getMotionRange(MotionEvent.AXIS_Y).getMin();
touchX = (event.getX() - minX) / (maxX - minX);
touchY = (event.getY() - minY) / (maxY - minY);
} else if (event.getAction() == MotionEvent.ACTION_UP) {
isTouched = false;
}
return true;
}
});
return view;
}
}
View
122
app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/tests/SampleGameFragment.java 0 → 100644
package org.ntlab.radishforandroidstudio.cactusClient.tests;
 
 
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
 
import org.ntlab.radishforandroidstudio.framework.gameMain.OvergroundActor;
import org.ntlab.radishforandroidstudio.framework.gameMain.RealTime3DFragment;
import org.ntlab.radishforandroidstudio.framework.model3D.BaseObject3D;
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.java3d.Appearance;
import org.ntlab.radishforandroidstudio.java3d.Box;
import org.ntlab.radishforandroidstudio.java3d.IndexedTriangleArray;
import org.ntlab.radishforandroidstudio.java3d.Material;
import org.ntlab.radishforandroidstudio.java3d.Point3d;
import org.ntlab.radishforandroidstudio.java3d.TextureCubeMap;
import org.ntlab.radishforandroidstudio.java3d.TextureLoader;
import org.ntlab.radishforandroidstudio.R;
import org.ntlab.radishforandroidstudio.java3d.Vector3f;
 
public class SampleGameFragment extends RealTime3DFragment {
 
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
 
// 3Dモデルの作成
 
// サイコロの作成
Appearance ap1 = new Appearance();
Material m = new Material();
m.setDiffuseColor(1.0f, 1.0f, 1.0f);
ap1.setMaterial(m);
TextureCubeMap tex1 = new TextureCubeMap(TextureCubeMap.BASE_LEVEL, TextureCubeMap.RGB, 0);
TextureLoader loader = new TextureLoader(getResources(), R.drawable.dice_1, TextureLoader.BY_REFERENCE | TextureLoader.Y_UP);
tex1.setImage(0, TextureCubeMap.POSITIVE_Z, loader.getImage());
loader = new TextureLoader(getResources(), R.drawable.dice_6, TextureLoader.BY_REFERENCE | TextureLoader.Y_UP);
tex1.setImage(0, TextureCubeMap.NEGATIVE_Z, loader.getImage());
loader = new TextureLoader(getResources(), R.drawable.dice_4, TextureLoader.BY_REFERENCE | TextureLoader.Y_UP);
tex1.setImage(0, TextureCubeMap.POSITIVE_X, loader.getImage());
loader = new TextureLoader(getResources(), R.drawable.dice_3, TextureLoader.BY_REFERENCE | TextureLoader.Y_UP);
tex1.setImage(0, TextureCubeMap.NEGATIVE_X, loader.getImage());
loader = new TextureLoader(getResources(), R.drawable.dice_5, TextureLoader.BY_REFERENCE | TextureLoader.Y_UP);
tex1.setImage(0, TextureCubeMap.POSITIVE_Y, loader.getImage());
loader = new TextureLoader(getResources(), R.drawable.dice_2, TextureLoader.BY_REFERENCE | TextureLoader.Y_UP);
tex1.setImage(0, TextureCubeMap.NEGATIVE_Y, loader.getImage());
ap1.setTexture(tex1);
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);
OvergroundActor actor = new OvergroundActor(obj1, null);
universe.place(actor);
 
// 地面の作成
IndexedTriangleArray groundGeometry = new IndexedTriangleArray(4,
IndexedTriangleArray.COORDINATES | IndexedTriangleArray.NORMALS, 6);
groundGeometry.setCoordinate(0, new Point3d(-20.0, 0.0, -20.0));
groundGeometry.setCoordinate(1, new Point3d(20.0, 0.0, -20.0));
groundGeometry.setCoordinate(2, new Point3d(20.0, 0.0, 20.0));
groundGeometry.setCoordinate(3, new Point3d(-20.0, 0.0, 20.0));
groundGeometry.setNormal(0, new Vector3f(0.0f, 1.0f, 0.0f));
groundGeometry.setNormal(1, new Vector3f(0.0f, 1.0f, 0.0f));
groundGeometry.setNormal(2, new Vector3f(0.0f, 1.0f, 0.0f));
groundGeometry.setNormal(3, new Vector3f(0.0f, 1.0f, 0.0f));
groundGeometry.setCoordinateIndices(0, new int[]{0, 3, 2});
groundGeometry.setCoordinateIndices(3, new int[]{0, 2, 1});
Appearance ap2 = new Appearance();
Material m2 = new Material();
m2.setDiffuseColor(0.5f, 1.0f, 0.2f);
ap2.setMaterial(m2);
Ground ground = new Ground(new BaseObject3D(groundGeometry, ap2));
universe.place(ground);
 
// final OvergroundActor oga = new OvergroundActor(obj1, null) {
// @Override
// public Force3D getGravity() {
// return new Force3D(0.0,0.0,0.0);
// }
// };
// universe.place(oga);
 
// カメラの設定
camera.setViewPoint(new Position3D(0.0, 10.0, -20.0));
camera.addTarget(actor);
 
// フレームの間隔(ms)
start(20);
 
//onCreateOptionMenuの呼び出し
setHasOptionsMenu(true);
}
 
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_sample_game, container, false);
}
 
@Override
public void onDestroy() {
 
super.onDestroy();
}
 
public boolean onOptionsItemSelected(MenuItem item){
int id = item.getItemId();
 
if(id == R.id.action_settings){
return true;
 
}
return super.onOptionsItemSelected(item);
}
}
View
41
app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/tests/StartFragment.java 0 → 100644
package org.ntlab.radishforandroidstudio.cactusClient.tests;
 
 
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 org.ntlab.radishforandroidstudio.R;
 
public class StartFragment extends Fragment {
 
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_start, container, false);
}
 
@Override
public void onStart() {
super.onStart();
 
Button button = getActivity().findViewById(R.id.start_button);
button.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view) {
FragmentManager manager = getFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
transaction.replace(R.id.fragment_field,new SampleGame2Fragment());
transaction.addToBackStack(null);
transaction.commit();
}
});
}
}
View
8
app/src/main/java/org/ntlab/radishforandroidstudio/framework/gameMain/RealTime3DActivity.java
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);
 
universe.update(interval);
camera.adjust(interval);
view.requestRender();
}
 
abstract protected void progress(long interval);
}
View
55
app/src/main/java/org/ntlab/radishforandroidstudio/framework/gameMain/RealTime3DFragment.java 0 → 100644
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) {
 
}
}
 
View
18
app/src/main/java/org/ntlab/radishforandroidstudio/framework/gameMain/RealTimeActivity.java
public abstract class RealTimeActivity extends Activity implements Runnable {
//インターバル確認用変数
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;
if (prevTime == 0L || fixedInterval) {
prevTime = curTime;
}
update(interval);
}
 
//intervalミリ秒のインターバルをおいて定期実行
protected abstract void update(long interval);
}
View
75
app/src/main/java/org/ntlab/radishforandroidstudio/framework/gameMain/RealTimeFragment.java 0 → 100644
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);
 
}
View
39
app/src/main/res/layout/activity_sample.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".sample.SampleActivity"
tools:layout_editor_absoluteY="81dp">
tools:context=".cactusClient.tests.SampleActivity">
 
<fragment
android:id="@+id/fragment_field"
android:name="org.ntlab.radishforandroidstudio.cactusClient.tests.StartFragment"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginBottom="8dp"
android:layout_marginEnd="8dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0" />
 
</android.support.constraint.ConstraintLayout>
View
15
app/src/main/res/layout/fragment_real_time.xml 0 → 100644
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".framework.gameMain.RealTimeFragment">
 
<!-- TODO: Update blank fragment layout -->
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="RealTime"
android:textSize="24sp" />
 
</FrameLayout>
View
16
app/src/main/res/layout/fragment_real_time_3d.xml 0 → 100644
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".framework.gameMain.RealTime3DFragment">
 
<!-- TODO: Update blank fragment layout -->
 
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="RealTime3D"
android:textSize="24sp" />
</FrameLayout>
View
8
app/src/main/res/layout/fragment_sample_game.xml 0 → 100644
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/fragment_sample_game"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".cactusClient.tests.SampleGameFragment">
</FrameLayout>
View
15
app/src/main/res/layout/fragment_sample_game2.xml 0 → 100644
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/sample_game_Framelayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".cactusClient.tests.SampleGame2Fragment">
 
<!-- TODO: Update blank fragment layout -->
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/hello_blank_fragment" />
 
</FrameLayout>
View
24
app/src/main/res/layout/fragment_start.xml 0 → 100644
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/fragment_start"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".cactusClient.tests.StartFragment">
 
<!-- TODO: Update blank fragment layout -->
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/holo_orange_light"
android:text="Start"
android:textSize="30sp" />
 
<Button
android:id="@+id/start_button"
android:layout_width="150dp"
android:layout_height="100dp"
android:layout_centerInParent="true"
android:text="Button" />
 
</RelativeLayout>
View
3
■■
app/src/main/res/values/strings.xml
<resources>
<string name="app_name">RadishForAndroidStudio</string>
<string name="action_settings">Settings</string>
 
<!-- TODO: Remove or change this placeholder text -->
<string name="hello_blank_fragment">Hello blank fragment</string>
</resources>