diff --git a/src/app/build.gradle b/src/app/build.gradle index 74bed1d..5841a0d 100644 --- a/src/app/build.gradle +++ b/src/app/build.gradle @@ -21,13 +21,14 @@ android { dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) - compile 'com.android.support:support-v4:28.0.0' androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) + compile 'com.android.support:support-v4:28.0.0' compile 'com.android.support:appcompat-v7:28.+' compile 'com.squareup.okhttp3:okhttp:3.10.0' compile 'com.google.code.gson:gson:2.8.5' compile 'com.android.support.constraint:constraint-layout:1.0.2' + compile 'com.android.support:design:28.+' testCompile 'junit:junit:4.12' } diff --git a/src/app/src/main/AndroidManifest.xml b/src/app/src/main/AndroidManifest.xml index dc8f6a6..44e678b 100644 --- a/src/app/src/main/AndroidManifest.xml +++ b/src/app/src/main/AndroidManifest.xml @@ -16,6 +16,10 @@ + \ No newline at end of file diff --git a/src/app/src/main/java/com/games/mkvs/interstellarmanager/base/contracts/BaseContracts.java b/src/app/src/main/java/com/games/mkvs/interstellarmanager/base/contracts/BaseContracts.java index 49a713f..b4b09ee 100644 --- a/src/app/src/main/java/com/games/mkvs/interstellarmanager/base/contracts/BaseContracts.java +++ b/src/app/src/main/java/com/games/mkvs/interstellarmanager/base/contracts/BaseContracts.java @@ -10,4 +10,8 @@ public interface Presenter{ void subscribe(T view); void unsubscribe(); } + + public interface Navigator { + void navigate(Class clazz); + } } diff --git a/src/app/src/main/java/com/games/mkvs/interstellarmanager/views/game_menu/GameMenuActivity.java b/src/app/src/main/java/com/games/mkvs/interstellarmanager/views/game_menu/GameMenuActivity.java new file mode 100644 index 0000000..8e45c3d --- /dev/null +++ b/src/app/src/main/java/com/games/mkvs/interstellarmanager/views/game_menu/GameMenuActivity.java @@ -0,0 +1,85 @@ +package com.games.mkvs.interstellarmanager.views.game_menu; +import android.support.v7.app.AppCompatActivity; + +import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentManager; +import android.support.v4.app.FragmentPagerAdapter; +import android.support.v4.view.ViewPager; +import android.os.Bundle; +import android.view.Menu; +import android.view.Window; +import android.view.WindowManager; + +import com.games.mkvs.interstellarmanager.R; +import com.games.mkvs.interstellarmanager.views.game_menu.overview.OverviewFragment; + +public class GameMenuActivity extends AppCompatActivity { + + /** + * The {@link android.support.v4.view.PagerAdapter} that will provide + * fragments for each of the sections. We use a + * {@link FragmentPagerAdapter} derivative, which will keep every + * loaded fragment in memory. If this becomes too memory intensive, it + * may be best to switch to a + * {@link android.support.v4.app.FragmentStatePagerAdapter}. + */ + private SectionsPagerAdapter mSectionsPagerAdapter; + + /** + * The {@link ViewPager} that will host the section contents. + */ + private ViewPager mViewPager; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + this.requestWindowFeature(Window.FEATURE_NO_TITLE); + getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); + setContentView(R.layout.activity_game_menu); + // Create the adapter that will return a fragment for each of the three + // primary sections of the activity. + mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager()); + + // Set up the ViewPager with the sections adapter. + mViewPager = findViewById(R.id.container); + mViewPager.setAdapter(mSectionsPagerAdapter); + } + + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + // Inflate the menu; this adds items to the action bar if it is present. + getMenuInflater().inflate(R.menu.menu_game_menu, menu); + return true; + } + + /** + * A {@link FragmentPagerAdapter} that returns a fragment corresponding to + * one of the sections/tabs/pages. + */ + public class SectionsPagerAdapter extends FragmentPagerAdapter { + + public SectionsPagerAdapter(FragmentManager fm) { + super(fm); + } + + @Override + public Fragment getItem(int position) { + Fragment fragment; + switch (position) { + case 0: + fragment = new OverviewFragment(); + break; + default: + fragment = new OverviewFragment(); + break; + } + return fragment; + } + + @Override + public int getCount() { + return 4; + } + } +} diff --git a/src/app/src/main/java/com/games/mkvs/interstellarmanager/views/game_menu/overview/OverviewContracts.java b/src/app/src/main/java/com/games/mkvs/interstellarmanager/views/game_menu/overview/OverviewContracts.java new file mode 100644 index 0000000..f3b66b8 --- /dev/null +++ b/src/app/src/main/java/com/games/mkvs/interstellarmanager/views/game_menu/overview/OverviewContracts.java @@ -0,0 +1,17 @@ +package com.games.mkvs.interstellarmanager.views.game_menu.overview; + +import com.games.mkvs.interstellarmanager.base.contracts.BaseContracts; + +/** + * Created by Martin on 3.1.2019 г.. + */ + +public class OverviewContracts { + public interface IOverviewView extends BaseContracts.View { + + } + + public interface IOverviewPresenter extends BaseContracts.Presenter { + + } +} diff --git a/src/app/src/main/java/com/games/mkvs/interstellarmanager/views/game_menu/overview/OverviewFragment.java b/src/app/src/main/java/com/games/mkvs/interstellarmanager/views/game_menu/overview/OverviewFragment.java new file mode 100644 index 0000000..4ae00ca --- /dev/null +++ b/src/app/src/main/java/com/games/mkvs/interstellarmanager/views/game_menu/overview/OverviewFragment.java @@ -0,0 +1,36 @@ +package com.games.mkvs.interstellarmanager.views.game_menu.overview; + + +import android.os.Bundle; +import android.support.v4.app.Fragment; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import com.games.mkvs.interstellarmanager.R; +import com.games.mkvs.interstellarmanager.base.contracts.BaseContracts; + +/** + * A simple {@link Fragment} subclass. + */ +public class OverviewFragment extends Fragment implements OverviewContracts.IOverviewView { + private View root; + private OverviewContracts.IOverviewPresenter mPresenter; + + public OverviewFragment() { + // Required empty public constructor + } + + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + root = inflater.inflate(R.layout.fragment_overview, container, false); + return root; + } + + @Override + public void setPresenter(BaseContracts.Presenter presenter) { + this.mPresenter = (OverviewContracts.IOverviewPresenter) presenter; + } +} diff --git a/src/app/src/main/java/com/games/mkvs/interstellarmanager/views/game_menu/overview/OverviewPresenter.java b/src/app/src/main/java/com/games/mkvs/interstellarmanager/views/game_menu/overview/OverviewPresenter.java new file mode 100644 index 0000000..7a2bd8f --- /dev/null +++ b/src/app/src/main/java/com/games/mkvs/interstellarmanager/views/game_menu/overview/OverviewPresenter.java @@ -0,0 +1,25 @@ +package com.games.mkvs.interstellarmanager.views.game_menu.overview; + +import com.games.mkvs.interstellarmanager.base.contracts.BaseContracts; +import com.games.mkvs.interstellarmanager.web.repositories.base.CompanyRepository; + +/** + * Created by Martin on 3.1.2019 г.. + */ + +public class OverviewPresenter implements OverviewContracts.IOverviewPresenter { + private final CompanyRepository companyRepository; + private OverviewContracts.IOverviewView mView; + public OverviewPresenter(CompanyRepository companyRepository) { + this.companyRepository = companyRepository; + } + @Override + public void subscribe(BaseContracts.View view) { + this.mView = (OverviewContracts.IOverviewView) view; + } + + @Override + public void unsubscribe() { + this.mView = null; + } +} diff --git a/src/app/src/main/java/com/games/mkvs/interstellarmanager/views/start/StartContracts.java b/src/app/src/main/java/com/games/mkvs/interstellarmanager/views/start/StartContracts.java index 71b7a05..da1a69e 100644 --- a/src/app/src/main/java/com/games/mkvs/interstellarmanager/views/start/StartContracts.java +++ b/src/app/src/main/java/com/games/mkvs/interstellarmanager/views/start/StartContracts.java @@ -4,11 +4,15 @@ public class StartContracts{ - public interface IStartPresenter extends BaseContracts.Presenter{ + public interface IStartPresenter extends BaseContracts.Presenter { } - public interface IStartView extends BaseContracts.View{ + public interface IStartView extends BaseContracts.View, BaseContracts.Navigator { void addBackground(); + + void addButtonListeners(); + + void startGameBtnClicked(); } } diff --git a/src/app/src/main/java/com/games/mkvs/interstellarmanager/views/start/StartFragment.java b/src/app/src/main/java/com/games/mkvs/interstellarmanager/views/start/StartFragment.java index 2a86568..fde64e4 100644 --- a/src/app/src/main/java/com/games/mkvs/interstellarmanager/views/start/StartFragment.java +++ b/src/app/src/main/java/com/games/mkvs/interstellarmanager/views/start/StartFragment.java @@ -1,14 +1,15 @@ package com.games.mkvs.interstellarmanager.views.start; +import android.content.Intent; import android.os.Bundle; import android.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.Button; import android.widget.LinearLayout; import android.widget.RelativeLayout; -import android.widget.TextView; import com.games.mkvs.interstellarmanager.R; import com.games.mkvs.interstellarmanager.base.contracts.BaseContracts; @@ -17,13 +18,14 @@ import com.games.mkvs.interstellarmanager.engine.models.menu_background.StarsBackgroundPanel; import com.games.mkvs.interstellarmanager.engine.services.DrawingService; import com.games.mkvs.interstellarmanager.engine.services.SortingService; +import com.games.mkvs.interstellarmanager.views.game_menu.GameMenuActivity; import java.util.ArrayList; /** * A simple {@link Fragment} subclass. */ -public class StartFragment extends Fragment implements StartContracts.IStartView { +public class StartFragment extends Fragment implements StartContracts.IStartView, View.OnClickListener { private View root; private StartContracts.IStartPresenter mPresenter; private RelativeLayout mMainContainer; @@ -43,6 +45,7 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, mContentContainer = root.findViewById(R.id.content_container); addBackground(); mContentContainer.bringToFront(); + addButtonListeners(); return root; } @@ -60,4 +63,34 @@ public void addBackground() { objects); mMainContainer.addView(panel); } + + @Override + public void addButtonListeners() { + Button startGameBtn = root.findViewById(R.id.start_game_btn); + startGameBtn.setOnClickListener(this); + } + + @Override + public void startGameBtnClicked() { + this.navigate(GameMenuActivity.class); + } + + @Override + public void navigate(Class clazz) { + Intent intent; + if(clazz == GameMenuActivity.class) { + intent = new Intent(getActivity(), clazz); + startActivity(intent); + getActivity().finish(); + } + } + + @Override + public void onClick(View view) { + switch (view.getId()) { + case R.id.start_game_btn: + startGameBtnClicked(); + break; + } + } } diff --git a/src/app/src/main/res/layout/activity_game_menu.xml b/src/app/src/main/res/layout/activity_game_menu.xml new file mode 100644 index 0000000..293160e --- /dev/null +++ b/src/app/src/main/res/layout/activity_game_menu.xml @@ -0,0 +1,17 @@ + + + + + + diff --git a/src/app/src/main/res/layout/fragment_game_menu.xml b/src/app/src/main/res/layout/fragment_game_menu.xml new file mode 100644 index 0000000..42be42c --- /dev/null +++ b/src/app/src/main/res/layout/fragment_game_menu.xml @@ -0,0 +1,16 @@ + + + + + diff --git a/src/app/src/main/res/layout/fragment_overview.xml b/src/app/src/main/res/layout/fragment_overview.xml new file mode 100644 index 0000000..8c92708 --- /dev/null +++ b/src/app/src/main/res/layout/fragment_overview.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + diff --git a/src/app/src/main/res/menu/menu_game_menu.xml b/src/app/src/main/res/menu/menu_game_menu.xml new file mode 100644 index 0000000..c5c76e6 --- /dev/null +++ b/src/app/src/main/res/menu/menu_game_menu.xml @@ -0,0 +1,10 @@ + + + diff --git a/src/app/src/main/res/values-w820dp/dimens.xml b/src/app/src/main/res/values-w820dp/dimens.xml new file mode 100644 index 0000000..62df187 --- /dev/null +++ b/src/app/src/main/res/values-w820dp/dimens.xml @@ -0,0 +1,6 @@ + + + 64dp + diff --git a/src/app/src/main/res/values/dimens.xml b/src/app/src/main/res/values/dimens.xml index 3e5fb57..12bc4dc 100644 --- a/src/app/src/main/res/values/dimens.xml +++ b/src/app/src/main/res/values/dimens.xml @@ -1,4 +1,9 @@ 30dp + + 16dp + 16dp + 16dp + 8dp \ No newline at end of file diff --git a/src/app/src/main/res/values/strings.xml b/src/app/src/main/res/values/strings.xml index 8683674..37acc94 100644 --- a/src/app/src/main/res/values/strings.xml +++ b/src/app/src/main/res/values/strings.xml @@ -6,5 +6,9 @@ START GAME LOAD GAME OPTIONS + GameMenuActivity + Settings + Hello World from section: %1$d + Loading... diff --git a/src/app/src/main/res/values/styles.xml b/src/app/src/main/res/values/styles.xml index 2801a15..83f051f 100644 --- a/src/app/src/main/res/values/styles.xml +++ b/src/app/src/main/res/values/styles.xml @@ -25,4 +25,13 @@ #7f7f7f #FFFFFF + + + +