Ajout du projet sur GitLab

master
cldupland 6 years ago
commit a54325bc0b

405
.gitignore vendored

@ -0,0 +1,405 @@
# globs
Makefile.in
*.userprefs
*.usertasks
config.make
config.status
aclocal.m4
install-sh
autom4te.cache/
*.tar.gz
tarballs/
test-results/
# Mac bundle stuff
*.dmg
*.app
# content below from: https://github.com/github/gitignore/blob/master/Global/macOS.gitignore
# General
.DS_Store
.AppleDouble
.LSOverride
# Icon must end with two \r
Icon
# Thumbnails
._*
# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent
# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk
# content below from: https://github.com/github/gitignore/blob/master/Global/Windows.gitignore
# Windows thumbnail cache files
Thumbs.db
ehthumbs.db
ehthumbs_vista.db
# Dump file
*.stackdump
# Folder config file
[Dd]esktop.ini
# Recycle Bin used on file shares
$RECYCLE.BIN/
# Windows Installer files
*.cab
*.msi
*.msix
*.msm
*.msp
# Windows shortcuts
*.lnk
# content below from: https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
# User-specific files
*.suo
*.user
*.userosscache
*.sln.docstates
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/
# Visual Studio 2015/2017 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
# Visual Studio 2017 auto generated files
Generated\ Files/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUNIT
*.VisualState.xml
TestResult.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# Benchmark Results
BenchmarkDotNet.Artifacts/
# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/
# StyleCop
StyleCopReport.xml
# Files built by Visual Studio
*_i.c
*_p.c
*_h.h
*.ilk
*.meta
*.obj
*.iobj
*.pch
*.pdb
*.ipdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*_wpftmp.csproj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb
# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap
# Visual Studio Trace Files
*.e2e
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# JustCode is a .NET coding add-in
.JustCode
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# AxoCover is a Code Coverage Tool
.axoCover/*
!.axoCover/settings.json
# Visual Studio code coverage results
*.coverage
*.coveragexml
# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/
# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
!**/[Pp]ackages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/[Pp]ackages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets
# Microsoft Azure Build Output
csx/
*.build.csdef
# Microsoft Azure Emulator
ecf/
rcf/
# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
*.appx
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!*.[Cc]ache/
# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs
# Including strong name files can present a security risk
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
#*.snk
# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
ServiceFabricBackup/
*.rptproj.bak
# SQL Server files
*.mdf
*.ldf
*.ndf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
*.rptproj.rsuser
# Microsoft Fakes
FakesAssemblies/
# GhostDoc plugin setting file
*.GhostDoc.xml
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions
# Paket dependency manager
.paket/paket.exe
paket-files/
# FAKE - F# Make
.fake/
# JetBrains Rider
.idea/
*.sln.iml
# CodeRush personal settings
.cr/personal
# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc
# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config
# Tabs Studio
*.tss
# Telerik's JustMock configuration file
*.jmconfig
# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs
# OpenCover UI analysis results
OpenCover/
# Azure Stream Analytics local run output
ASALocalRun/
# MSBuild Binary and Structured Log
*.binlog
# NVidia Nsight GPU debugger configuration file
*.nvuser
# MFractors (Xamarin productivity tool) working folder
.mfractor/
# Local History for Visual Studio
.localhistory/

@ -0,0 +1,19 @@
Any raw assets you want to be deployed with your application can be placed in
this directory (and child directories) and given a Build Action of "AndroidAsset".
These files will be deployed with your package and will be accessible using Android's
AssetManager, like this:
public class ReadAsset : Activity
{
protected override void OnCreate (Bundle bundle)
{
base.OnCreate (bundle);
InputStream input = Assets.Open ("my_asset.txt");
}
}
Additionally, some Android functions will automatically load asset files:
Typeface tf = Typeface.CreateFromAsset (Context.Assets, "fonts/samplefont.ttf");

@ -0,0 +1,33 @@
using System;
using Android.App;
using Android.Content.PM;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;
namespace TheGameExtreme.Droid
{
[Activity(Label = "TheGameExtreme", Icon = "@mipmap/icon", Theme = "@style/MainTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{
protected override void OnCreate(Bundle savedInstanceState)
{
TabLayoutResource = Resource.Layout.Tabbar;
ToolbarResource = Resource.Layout.Toolbar;
base.OnCreate(savedInstanceState);
Xamarin.Essentials.Platform.Init(this, savedInstanceState);
global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
LoadApplication(new App());
}
public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults)
{
Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults);
base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
}
}
}

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0" package="com.uca.thegameextreme">
<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="28" />
<application android:label="TheGameExtreme.Android"></application>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
</manifest>

@ -0,0 +1,34 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using Android.App;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("TheGameExtreme.Android")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("TheGameExtreme.Android")]
[assembly: AssemblyCopyright("Copyright © 2014")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
// Add some common permissions, these can be removed if not needed
[assembly: UsesPermission(Android.Manifest.Permission.Internet)]
[assembly: UsesPermission(Android.Manifest.Permission.WriteExternalStorage)]

@ -0,0 +1,50 @@
Images, layout descriptions, binary blobs and string dictionaries can be included
in your application as resource files. Various Android APIs are designed to
operate on the resource IDs instead of dealing with images, strings or binary blobs
directly.
For example, a sample Android app that contains a user interface layout (main.xml),
an internationalization string table (strings.xml) and some icons (drawable-XXX/icon.png)
would keep its resources in the "Resources" directory of the application:
Resources/
drawable-hdpi/
icon.png
drawable-ldpi/
icon.png
drawable-mdpi/
icon.png
layout/
main.xml
values/
strings.xml
In order to get the build system to recognize Android resources, set the build action to
"AndroidResource". The native Android APIs do not operate directly with filenames, but
instead operate on resource IDs. When you compile an Android application that uses resources,
the build system will package the resources for distribution and generate a class called
"Resource" that contains the tokens for each one of the resources included. For example,
for the above Resources layout, this is what the Resource class would expose:
public class Resource {
public class drawable {
public const int icon = 0x123;
}
public class layout {
public const int main = 0x456;
}
public class strings {
public const int first_string = 0xabc;
public const int second_string = 0xbcd;
}
}
You would then use R.drawable.icon to reference the drawable/icon.png file, or Resource.layout.main
to reference the layout/main.xml file, or Resource.strings.first_string to reference the first
string in the dictionary file values/strings.xml.

File diff suppressed because it is too large Load Diff

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.TabLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/sliding_tabs" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?attr/colorPrimary" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" app:tabIndicatorColor="@android:color/white" app:tabGravity="fill" app:tabMode="fixed" />

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?attr/colorPrimary" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" android:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/launcher_background" />
<foreground android:drawable="@mipmap/launcher_foreground" />
</adaptive-icon>

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/launcher_background" />
<foreground android:drawable="@mipmap/launcher_foreground" />
</adaptive-icon>

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8" ?>

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="launcher_background">#FFFFFF</color>
<color name="colorPrimary">#3F51B5</color>
<color name="colorPrimaryDark">#303F9F</color>
<color name="colorAccent">#FF4081</color>
</resources>

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="MainTheme" parent="MainTheme.Base">
</style>
<!-- Base theme applied no matter what API -->
<style name="MainTheme.Base" parent="Theme.AppCompat.Light.DarkActionBar">
<!--If you are using revision 22.1 please use just windowNoTitle. Without android:-->
<item name="windowNoTitle">true</item>
<!--We will be using the toolbar so no need to show ActionBar-->
<item name="windowActionBar">false</item>
<!-- Set theme colors from https://aka.ms/material-colors -->
<!-- colorPrimary is used for the default action bar background -->
<item name="colorPrimary">#2196F3</item>
<!-- colorPrimaryDark is used for the status bar -->
<item name="colorPrimaryDark">#1976D2</item>
<!-- colorAccent is used as the default value for colorControlActivated
which is used to tint widgets -->
<item name="colorAccent">#FF4081</item>
<!-- You can also set colorControlNormal, colorControlActivated
colorControlHighlight and colorSwitchThumbNormal. -->
<item name="windowActionModeOverlay">true</item>
<item name="android:datePickerDialogTheme">@style/AppCompatDialogStyle</item>
</style>
<style name="AppCompatDialogStyle" parent="Theme.AppCompat.Light.Dialog">
<item name="colorAccent">#FF4081</item>
</style>
</resources>

@ -0,0 +1,97 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{DD6C4FD6-058C-41F9-824F-84DABA5DD444}</ProjectGuid>
<ProjectTypeGuids>{EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<TemplateGuid>{c9e5eea5-ca05-42a1-839b-61506e0a37df}</TemplateGuid>
<OutputType>Library</OutputType>
<RootNamespace>TheGameExtreme.Droid</RootNamespace>
<AssemblyName>TheGameExtreme.Android</AssemblyName>
<AndroidApplication>True</AndroidApplication>
<AndroidResgenFile>Resources\Resource.designer.cs</AndroidResgenFile>
<AndroidResgenClass>Resource</AndroidResgenClass>
<AndroidManifest>Properties\AndroidManifest.xml</AndroidManifest>
<MonoAndroidResourcePrefix>Resources</MonoAndroidResourcePrefix>
<MonoAndroidAssetsPrefix>Assets</MonoAndroidAssetsPrefix>
<TargetFrameworkVersion>v9.0</TargetFrameworkVersion>
<AndroidEnableSGenConcurrent>true</AndroidEnableSGenConcurrent>
<AndroidUseAapt2>true</AndroidUseAapt2>
<AndroidHttpClientHandlerType>Xamarin.Android.Net.AndroidClientHandler</AndroidHttpClientHandlerType>
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>portable</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug</OutputPath>
<DefineConstants>DEBUG;</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<AndroidLinkMode>None</AndroidLinkMode>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>portable</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release</OutputPath>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<AndroidManagedSymbols>true</AndroidManagedSymbols>
<AndroidUseSharedRuntime>false</AndroidUseSharedRuntime>
</PropertyGroup>
<ItemGroup>
<Reference Include="Mono.Android" />
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Xml" />
<Reference Include="System.Numerics" />
<Reference Include="System.Numerics.Vectors" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Xamarin.Forms" Version="4.2.0.709249" />
<PackageReference Include="Xamarin.Android.Support.Core.Utils" Version="28.0.0.1" />
<PackageReference Include="Xamarin.Essentials" Version="1.2.0" />
</ItemGroup>
<ItemGroup>
<Compile Include="MainActivity.cs" />
<Compile Include="Resources\Resource.designer.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\AboutResources.txt" />
<None Include="Assets\AboutAssets.txt" />
<None Include="Properties\AndroidManifest.xml" />
</ItemGroup>
<ItemGroup>
<AndroidResource Include="Resources\layout\Tabbar.xml" />
<AndroidResource Include="Resources\layout\Toolbar.xml" />
<AndroidResource Include="Resources\values\styles.xml" />
<AndroidResource Include="Resources\values\colors.xml" />
<AndroidResource Include="Resources\mipmap-anydpi-v26\icon.xml" />
<AndroidResource Include="Resources\mipmap-anydpi-v26\icon_round.xml" />
<AndroidResource Include="Resources\mipmap-hdpi\icon.png" />
<AndroidResource Include="Resources\mipmap-hdpi\launcher_foreground.png" />
<AndroidResource Include="Resources\mipmap-mdpi\icon.png" />
<AndroidResource Include="Resources\mipmap-mdpi\launcher_foreground.png" />
<AndroidResource Include="Resources\mipmap-xhdpi\icon.png" />
<AndroidResource Include="Resources\mipmap-xhdpi\launcher_foreground.png" />
<AndroidResource Include="Resources\mipmap-xxhdpi\icon.png" />
<AndroidResource Include="Resources\mipmap-xxhdpi\launcher_foreground.png" />
<AndroidResource Include="Resources\mipmap-xxxhdpi\icon.png" />
<AndroidResource Include="Resources\mipmap-xxxhdpi\launcher_foreground.png" />
</ItemGroup>
<ItemGroup>
<Folder Include="Resources\drawable\" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\TheGameExtreme\TheGameExtreme.csproj">
<Project>{8DE6C881-FF77-4CC4-B8C4-CDEDD9AB13B3}</Project>
<Name>TheGameExtreme</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.CSharp.targets" />
</Project>

@ -0,0 +1,31 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Foundation;
using UIKit;
namespace TheGameExtreme.iOS
{
// The UIApplicationDelegate for the application. This class is responsible for launching the
// User Interface of the application, as well as listening (and optionally responding) to
// application events from iOS.
[Register("AppDelegate")]
public partial class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate
{
//
// This method is invoked when the application has loaded and is ready to run. In this
// method you should instantiate the window, load the UI into it and then make the window
// visible.
//
// You have 17 seconds to return from this method, or iOS will terminate your application.
//
public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
global::Xamarin.Forms.Forms.Init();
LoadApplication(new App());
return base.FinishedLaunching(app, options);
}
}
}

@ -0,0 +1,117 @@
{
"images": [
{
"scale": "2x",
"size": "20x20",
"idiom": "iphone",
"filename": "Icon40.png"
},
{
"scale": "3x",
"size": "20x20",
"idiom": "iphone",
"filename": "Icon60.png"
},
{
"scale": "2x",
"size": "29x29",
"idiom": "iphone",
"filename": "Icon58.png"
},
{
"scale": "3x",
"size": "29x29",
"idiom": "iphone",
"filename": "Icon87.png"
},
{
"scale": "2x",
"size": "40x40",
"idiom": "iphone",
"filename": "Icon80.png"
},
{
"scale": "3x",
"size": "40x40",
"idiom": "iphone",
"filename": "Icon120.png"
},
{
"scale": "2x",
"size": "60x60",
"idiom": "iphone",
"filename": "Icon120.png"
},
{
"scale": "3x",
"size": "60x60",
"idiom": "iphone",
"filename": "Icon180.png"
},
{
"scale": "1x",
"size": "20x20",
"idiom": "ipad",
"filename": "Icon20.png"
},
{
"scale": "2x",
"size": "20x20",
"idiom": "ipad",
"filename": "Icon40.png"
},
{
"scale": "1x",
"size": "29x29",
"idiom": "ipad",
"filename": "Icon29.png"
},
{
"scale": "2x",
"size": "29x29",
"idiom": "ipad",
"filename": "Icon58.png"
},
{
"scale": "1x",
"size": "40x40",
"idiom": "ipad",
"filename": "Icon40.png"
},
{
"scale": "2x",
"size": "40x40",
"idiom": "ipad",
"filename": "Icon80.png"
},
{
"scale": "1x",
"size": "76x76",
"idiom": "ipad",
"filename": "Icon76.png"
},
{
"scale": "2x",
"size": "76x76",
"idiom": "ipad",
"filename": "Icon152.png"
},
{
"scale": "2x",
"size": "83.5x83.5",
"idiom": "ipad",
"filename": "Icon167.png"
},
{
"scale": "1x",
"size": "1024x1024",
"idiom": "ios-marketing",
"filename": "Icon1024.png"
}
],
"properties": {},
"info": {
"version": 1,
"author": "xcode"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 845 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
</dict>
</plist>

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>UIDeviceFamily</key>
<array>
<integer>1</integer>
<integer>2</integer>
</array>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>MinimumOSVersion</key>
<string>8.0</string>
<key>CFBundleDisplayName</key>
<string>TheGameExtreme</string>
<key>CFBundleIdentifier</key>
<string>com.uca.TheGameExtreme</string>
<key>CFBundleVersion</key>
<string>1.0</string>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>CFBundleName</key>
<string>TheGameExtreme</string>
<key>XSAppIconAssets</key>
<string>Assets.xcassets/AppIcon.appiconset</string>
</dict>
</plist>

@ -0,0 +1,20 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Foundation;
using UIKit;
namespace TheGameExtreme.iOS
{
public class Application
{
// This is the main entry point of the application.
static void Main(string[] args)
{
// if you want to use a different Application Delegate class from "AppDelegate"
// you can specify it here.
UIApplication.Main(args, null, "AppDelegate");
}
}
}

@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("TheGameExtreme.iOS")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("TheGameExtreme.iOS")]
[assembly: AssemblyCopyright("Copyright © 2014")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("72bdc44f-c588-44f3-b6df-9aace7daafdd")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

@ -0,0 +1,39 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="6245" systemVersion="13F34" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="X5k-f2-b5h">
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="6238" />
</dependencies>
<scenes>
<!--View Controller-->
<scene sceneID="gAE-YM-kbH">
<objects>
<viewController id="X5k-f2-b5h" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="Y8P-hJ-Z43" />
<viewControllerLayoutGuide type="bottom" id="9ZL-r4-8FZ" />
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="yd7-JS-zBw">
<rect key="frame" x="0.0" y="0.0" width="600" height="600" />
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES" />
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" misplaced="YES" image="Icon-60.png" translatesAutoresizingMaskIntoConstraints="NO" id="23">
<rect key="frame" x="270" y="270" width="60" height="60" />
<rect key="contentStretch" x="0.0" y="0.0" width="0.0" height="0.0" />
</imageView>
</subviews>
<color key="backgroundColor" red="0.20392156862745098" green="0.59607843137254901" blue="0.85882352941176465" alpha="1" colorSpace="calibratedRGB" />
<constraints>
<constraint firstItem="23" firstAttribute="centerY" secondItem="yd7-JS-zBw" secondAttribute="centerY" priority="1" id="39" />
<constraint firstItem="23" firstAttribute="centerX" secondItem="yd7-JS-zBw" secondAttribute="centerX" priority="1" id="41" />
</constraints>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="XAI-xm-WK6" userLabel="First Responder" sceneMemberID="firstResponder" />
</objects>
<point key="canvasLocation" x="349" y="339" />
</scene>
</scenes>
<resources>
<image name="Icon-60.png" width="180" height="180" />
</resources>
</document>

@ -0,0 +1,133 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">iPhoneSimulator</Platform>
<ProductVersion>8.0.30703</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{37A0EC21-60A9-43D2-8B43-3851E1CB7932}</ProjectGuid>
<ProjectTypeGuids>{FEACFBD2-3405-455C-9665-78FE426C6842};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<TemplateGuid>{6143fdea-f3c2-4a09-aafa-6e230626515e}</TemplateGuid>
<OutputType>Exe</OutputType>
<RootNamespace>TheGameExtreme.iOS</RootNamespace>
<IPhoneResourcePrefix>Resources</IPhoneResourcePrefix>
<AssemblyName>TheGameExtreme.iOS</AssemblyName>
<MtouchEnableSGenConc>true</MtouchEnableSGenConc>
<MtouchHttpClientHandler>NSUrlSessionHandler</MtouchHttpClientHandler>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|iPhoneSimulator' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\iPhoneSimulator\Debug</OutputPath>
<DefineConstants>DEBUG</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<MtouchArch>x86_64</MtouchArch>
<MtouchLink>None</MtouchLink>
<MtouchDebug>true</MtouchDebug>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhoneSimulator' ">
<DebugType>none</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\iPhoneSimulator\Release</OutputPath>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<MtouchLink>None</MtouchLink>
<MtouchArch>x86_64</MtouchArch>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|iPhone' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\iPhone\Debug</OutputPath>
<DefineConstants>DEBUG</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<MtouchArch>ARM64</MtouchArch>
<CodesignKey>iPhone Developer</CodesignKey>
<MtouchDebug>true</MtouchDebug>
<CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhone' ">
<DebugType>none</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\iPhone\Release</OutputPath>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<MtouchArch>ARM64</MtouchArch>
<CodesignKey>iPhone Developer</CodesignKey>
<CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
</PropertyGroup>
<ItemGroup>
<Compile Include="Main.cs" />
<Compile Include="AppDelegate.cs" />
<None Include="Entitlements.plist" />
<None Include="Info.plist" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<InterfaceDefinition Include="Resources\LaunchScreen.storyboard" />
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Contents.json">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon1024.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon180.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon167.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon152.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon120.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon87.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon80.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon76.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon60.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon58.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon40.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon29.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon20.png">
<Visible>false</Visible>
</ImageAsset>
</ItemGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Xml" />
<Reference Include="System.Core" />
<Reference Include="Xamarin.iOS" />
<Reference Include="System.Numerics" />
<Reference Include="System.Numerics.Vectors" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Xamarin.Forms" Version="4.2.0.709249" />
<PackageReference Include="Xamarin.Essentials" Version="1.2.0" />
</ItemGroup>
<Import Project="$(MSBuildExtensionsPath)\Xamarin\iOS\Xamarin.iOS.CSharp.targets" />
<ItemGroup>
<ProjectReference Include="..\TheGameExtreme\TheGameExtreme.csproj">
<Project>{8DE6C881-FF77-4CC4-B8C4-CDEDD9AB13B3}</Project>
<Name>TheGameExtreme</Name>
</ProjectReference>
</ItemGroup>
</Project>

@ -0,0 +1,57 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TheGameExtreme.Android", "TheGameExtreme.Android\TheGameExtreme.Android.csproj", "{DD6C4FD6-058C-41F9-824F-84DABA5DD444}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TheGameExtreme.iOS", "TheGameExtreme.iOS\TheGameExtreme.iOS.csproj", "{37A0EC21-60A9-43D2-8B43-3851E1CB7932}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TheGameExtreme", "TheGameExtreme\TheGameExtreme.csproj", "{8DE6C881-FF77-4CC4-B8C4-CDEDD9AB13B3}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
Debug|iPhoneSimulator = Debug|iPhoneSimulator
Release|iPhoneSimulator = Release|iPhoneSimulator
Debug|iPhone = Debug|iPhone
Release|iPhone = Release|iPhone
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{DD6C4FD6-058C-41F9-824F-84DABA5DD444}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DD6C4FD6-058C-41F9-824F-84DABA5DD444}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DD6C4FD6-058C-41F9-824F-84DABA5DD444}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DD6C4FD6-058C-41F9-824F-84DABA5DD444}.Release|Any CPU.Build.0 = Release|Any CPU
{DD6C4FD6-058C-41F9-824F-84DABA5DD444}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{DD6C4FD6-058C-41F9-824F-84DABA5DD444}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{DD6C4FD6-058C-41F9-824F-84DABA5DD444}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{DD6C4FD6-058C-41F9-824F-84DABA5DD444}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{DD6C4FD6-058C-41F9-824F-84DABA5DD444}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{DD6C4FD6-058C-41F9-824F-84DABA5DD444}.Debug|iPhone.Build.0 = Debug|Any CPU
{DD6C4FD6-058C-41F9-824F-84DABA5DD444}.Release|iPhone.ActiveCfg = Release|Any CPU
{DD6C4FD6-058C-41F9-824F-84DABA5DD444}.Release|iPhone.Build.0 = Release|Any CPU
{37A0EC21-60A9-43D2-8B43-3851E1CB7932}.Debug|Any CPU.ActiveCfg = Debug|iPhoneSimulator
{37A0EC21-60A9-43D2-8B43-3851E1CB7932}.Debug|Any CPU.Build.0 = Debug|iPhoneSimulator
{37A0EC21-60A9-43D2-8B43-3851E1CB7932}.Release|Any CPU.ActiveCfg = Release|iPhoneSimulator
{37A0EC21-60A9-43D2-8B43-3851E1CB7932}.Release|Any CPU.Build.0 = Release|iPhoneSimulator
{37A0EC21-60A9-43D2-8B43-3851E1CB7932}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator
{37A0EC21-60A9-43D2-8B43-3851E1CB7932}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator
{37A0EC21-60A9-43D2-8B43-3851E1CB7932}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
{37A0EC21-60A9-43D2-8B43-3851E1CB7932}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
{37A0EC21-60A9-43D2-8B43-3851E1CB7932}.Debug|iPhone.ActiveCfg = Debug|iPhone
{37A0EC21-60A9-43D2-8B43-3851E1CB7932}.Debug|iPhone.Build.0 = Debug|iPhone
{37A0EC21-60A9-43D2-8B43-3851E1CB7932}.Release|iPhone.ActiveCfg = Release|iPhone
{37A0EC21-60A9-43D2-8B43-3851E1CB7932}.Release|iPhone.Build.0 = Release|iPhone
{8DE6C881-FF77-4CC4-B8C4-CDEDD9AB13B3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8DE6C881-FF77-4CC4-B8C4-CDEDD9AB13B3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8DE6C881-FF77-4CC4-B8C4-CDEDD9AB13B3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8DE6C881-FF77-4CC4-B8C4-CDEDD9AB13B3}.Release|Any CPU.Build.0 = Release|Any CPU
{8DE6C881-FF77-4CC4-B8C4-CDEDD9AB13B3}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{8DE6C881-FF77-4CC4-B8C4-CDEDD9AB13B3}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{8DE6C881-FF77-4CC4-B8C4-CDEDD9AB13B3}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{8DE6C881-FF77-4CC4-B8C4-CDEDD9AB13B3}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{8DE6C881-FF77-4CC4-B8C4-CDEDD9AB13B3}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{8DE6C881-FF77-4CC4-B8C4-CDEDD9AB13B3}.Debug|iPhone.Build.0 = Debug|Any CPU
{8DE6C881-FF77-4CC4-B8C4-CDEDD9AB13B3}.Release|iPhone.ActiveCfg = Release|Any CPU
{8DE6C881-FF77-4CC4-B8C4-CDEDD9AB13B3}.Release|iPhone.Build.0 = Release|Any CPU
EndGlobalSection
EndGlobal

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<Application xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:d="http://xamarin.com/schemas/2014/forms/design" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" x:Class="TheGameExtreme.App">
<Application.Resources>
</Application.Resources>
</Application>

@ -0,0 +1,31 @@
using System;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;
namespace TheGameExtreme
{
public partial class App : Application
{
public App()
{
InitializeComponent();
MainPage = new MainPage();
}
protected override void OnStart()
{
// Handle when your app starts
}
protected override void OnSleep()
{
// Handle when your app sleeps
}
protected override void OnResume()
{
// Handle when your app resumes
}
}
}

@ -0,0 +1,56 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace TheGameExtreme {
using System;
using System.Reflection;
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
[System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
public class AppResources {
private static System.Resources.ResourceManager resourceMan;
private static System.Globalization.CultureInfo resourceCulture;
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal AppResources() {
}
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
public static System.Resources.ResourceManager ResourceManager {
get {
if (object.Equals(null, resourceMan)) {
System.Resources.ResourceManager temp = new System.Resources.ResourceManager("TheGameExtreme.AppResources", typeof(AppResources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
public static System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
public static string coucou {
get {
return ResourceManager.GetString("coucou", resourceCulture);
}
}
}
}

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="coucou" xml:space="preserve">
<value>coucou</value>
<comment>Valeur de test</comment>
</data>
</root>

@ -0,0 +1,3 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
</configuration>

@ -0,0 +1,3 @@
using Xamarin.Forms.Xaml;
[assembly: XamlCompilation(XamlCompilationOptions.Compile)]

@ -0,0 +1,43 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<ProduceReferenceAssembly>true</ProduceReferenceAssembly>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Xamarin.Forms" Version="4.2.0.709249" />
<PackageReference Include="Xamarin.Essentials" Version="1.2.0" />
</ItemGroup>
<ItemGroup>
<Folder Include="model\" />
<Folder Include="model\effect\" />
<Folder Include="model\effect\fastEffect\" />
<Folder Include="model\effect\infiniteEffect\" />
<Folder Include="model\manager\" />
<Folder Include="model\manager\multiplayer\" />
<Folder Include="model\event\" />
<Folder Include="viewmodel\" />
<Folder Include="view\" />
</ItemGroup>
<ItemGroup>
<Compile Remove="model\effect\StopColm.cs" />
<Compile Remove="model\effect\StopCom.cs" />
<Compile Remove="model\manager.cs" />
<Compile Remove="model\manager\GameManagerSolo.cs" />
</ItemGroup>
<ItemGroup>
<None Remove="AppRessources.config" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Update="AppResources.resx">
<Generator>PublicResXFileCodeGenerator</Generator>
<LastGenOutput>AppResources.Designer.cs</LastGenOutput>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<Compile Update="AppResources.Designer.cs">
<DependentUpon>AppResources.resx</DependentUpon>
</Compile>
</ItemGroup>
</Project>

@ -0,0 +1,17 @@
using System;
namespace TheGameExtreme.model
{
public class Card
{
public int Value { get; private set;}
public Effect Effect { get; private set;}
public Card(int value)
{
Value = value;
}
}
}

@ -0,0 +1,49 @@
using System;
using System.Collections.Generic;
using TheGameExtreme.model.effect;
using TheGameExtreme.model.@event;
namespace TheGameExtreme.model
{
public class Player
{
public string Pseudo { get; set; }
private List<Card> cardList = new List<Card>();
public event EventHandler<HandCardChangedEventArgs> HandCardChanged;
public Player(string pseudo)
{
Pseudo = pseudo;
}
public void pioche(Card card)
{
cardList.Add(card);
OnCardDrawable(new HandCardChangedEventArgs(card, null));
}
public void joue(Card card)
{
cardList.Remove(card);
OnCardDrawable(new HandCardChangedEventArgs(null, card));
}
//public IReadOnlyList<Card> getCardList()
//{
// return cardList.AsReadOnly();
//}
public List<Card> getCardList()
{
return cardList;
}
protected internal void OnCardDrawable(HandCardChangedEventArgs args)
{
HandCardChanged?.Invoke(this, args);
}
}
}

@ -0,0 +1,10 @@
using System;
namespace TheGameExtreme.model
{
public class Effect
{
public Effect()
{
}
}
}

@ -0,0 +1,10 @@
using System;
namespace TheGameExtreme.model.effect
{
public class FastEffect : Effect
{
public FastEffect()
{
}
}
}

@ -0,0 +1,10 @@
using System;
namespace TheGameExtreme.model.effect
{
public class InfiniteEffect : Effect
{
public InfiniteEffect()
{
}
}
}

@ -0,0 +1,10 @@
using System;
namespace TheGameExtreme.model.effect
{
public class StopCom
{
public StopCom()
{
}
}
}

@ -0,0 +1,10 @@
using System;
namespace TheGameExtreme.model.effect
{
public class EndGame : FastEffect
{
public EndGame()
{
}
}
}

@ -0,0 +1,10 @@
using System;
namespace TheGameExtreme.model.effect
{
public class GameTurnStop : FastEffect
{
public GameTurnStop()
{
}
}
}

@ -0,0 +1,10 @@
using System;
namespace TheGameExtreme.model.effect
{
public class ThreeCard : FastEffect
{
public ThreeCard()
{
}
}
}

@ -0,0 +1,10 @@
using System;
namespace TheGameExtreme.model.effect
{
public class CommunicationStop : InfiniteEffect
{
public CommunicationStop()
{
}
}
}

@ -0,0 +1,10 @@
using System;
namespace TheGameExtreme.model.effect
{
public class OneCardDrawable : InfiniteEffect
{
public OneCardDrawable()
{
}
}
}

@ -0,0 +1,10 @@
using System;
namespace TheGameExtreme.model.effect
{
public class OneStack : InfiniteEffect
{
public OneStack()
{
}
}
}

@ -0,0 +1,10 @@
using System;
namespace TheGameExtreme.model.effect
{
public class RetroStop : InfiniteEffect
{
public RetroStop()
{
}
}
}

@ -0,0 +1,15 @@
using System;
namespace TheGameExtreme.model.@event
{
public class CurrentPlayerChangedEventArgs
{
public int NewCurrentPlayer { get; set; }
public CurrentPlayerChangedEventArgs(int newCurrentPlayer)
{
NewCurrentPlayer = newCurrentPlayer;
}
}
}

@ -0,0 +1,16 @@
using System;
namespace TheGameExtreme.model.@event
{
public class HandCardChangedEventArgs
{
public Card NewHandCard { get; set; }
public Card OldHandCard { get; set; }
public HandCardChangedEventArgs(Card newHandCard, Card oldHandCard)
{
NewHandCard = newHandCard;
OldHandCard = oldHandCard;
}
}
}

@ -0,0 +1,18 @@
using System;
namespace TheGameExtreme.model.@event
{
public class TopRangeChangedEventArgs : EventArgs
{
public Card NewTopRangeCard { get; set; }
public Card OldTopRangeCard { get; set; }
public int NumStackChanged { get; set; }
public TopRangeChangedEventArgs(Card newTopRangeCard, Card oldTopRangeCard, int numStackChanged)
{
NewTopRangeCard = newTopRangeCard;
OldTopRangeCard = oldTopRangeCard;
NumStackChanged = numStackChanged;
}
}
}

@ -0,0 +1,10 @@
using System;
namespace TheGameExtreme.model
{
public class manager
{
public manager()
{
}
}
}

@ -0,0 +1,155 @@
using System;
using System.Collections.Generic;
using TheGameExtreme.model.effect;
using TheGameExtreme.model.@event;
namespace TheGameExtreme.model.manager
{
public abstract class GameManager
{
public readonly int nbPlayer;
protected int nbMaxCard;
protected int currentIndexPlayer = 0;
protected List<Player> playerList = new List<Player>();
protected List<InfiniteEffect> infiniteEffectsConstraintsList = new List<InfiniteEffect>();
protected List<Stack<Card>> listOrderedStacks = new List<Stack<Card>>();
protected List<Card> deck = new List<Card>();
protected bool win = true;
public event EventHandler<TopRangeChangedEventArgs> TopRangeChanged;
public event EventHandler<CurrentPlayerChangedEventArgs> CurrentPlayerChanged;
public GameManager(int nbPlayer, List<Player> players)
{
this.nbPlayer = nbPlayer;
players.ForEach(player => playerList.Add(player));
for (int i = 0; i < 4; i++)
{
listOrderedStacks.Add(new Stack<Card>());
if (i < 2)
{
listOrderedStacks[i].Push(new Card(100));
}
else
{
listOrderedStacks[i].Push(new Card(1));
}
}
createDeck();
defineNbMaxCard();
distribueCard();
}
protected void createDeck()
{
for (int i = 2; i <= 99; i++)
{
deck.Add(new Card(i));
}
melangeDeck();
}
protected void melangeDeck()
{
Random random = new Random();
int place1;
int place2;
Card tmp;
for (int i = 0; i < 1000; i++)
{
place1 = random.Next(0, 98);
place2 = random.Next(0, 98);
tmp = deck[place1];
deck[place1] = deck[place2];
deck[place2] = tmp;
}
}
protected void defineNbMaxCard()
{
switch (nbPlayer)
{
case 1:
nbMaxCard = 8;
break;
case 2:
nbMaxCard = 7;
break;
default:
nbMaxCard = 6;
break;
}
}
protected void distribueCard()
{
for (int i = 0; i < nbMaxCard; i++)
{
playerList.ForEach(player => {
player.pioche(deck[deck.Count - 1]);
deck.RemoveAt(deck.Count - 1);
});
}
}
public void joue(Card card, int orderedStackSelected)
{
if (orderedStackSelected >= 0 && orderedStackSelected < 4)
{
if (orderedStackSelected < 2)
{
testPossibility(card, listOrderedStacks[orderedStackSelected], false);
}
else
{
testPossibility(card, listOrderedStacks[orderedStackSelected], true);
}
}
}
protected void testPossibility(Card card, Stack<Card> orderedStack, bool bottomUp)
{
if ((bottomUp && card.Value > orderedStack.Peek().Value) || (!bottomUp && card.Value < orderedStack.Peek().Value))
{
Card oldCard = orderedStack.Peek();
playerList[currentIndexPlayer].joue(card);
orderedStack.Push(card);
OnTopRangeChanged(new TopRangeChangedEventArgs(card, oldCard, listOrderedStacks.IndexOf(orderedStack)));
}
else
{
// Throw Exception
}
}
protected internal void OnTopRangeChanged(TopRangeChangedEventArgs args)
{
TopRangeChanged?.Invoke(this, args);
}
protected internal void OnCurrentPlayerChanged(CurrentPlayerChangedEventArgs args)
{
CurrentPlayerChanged?.Invoke(this, args);
}
abstract public void endTurn();
abstract protected void pioche();
abstract protected bool isEndGame();
abstract protected List<Card> tryToFindSoluce(List<Card> playableCard, Player currentPlayer);
abstract protected bool testEndGame(List<Card> playableCard);
abstract protected bool effectLose();
public int getCurentIndexPlayer()
{
return currentIndexPlayer;
}
}
}

@ -0,0 +1,10 @@
using System;
namespace TheGameExtreme.model.manager
{
public class GameManagerSolo
{
public GameManagerSolo()
{
}
}
}

@ -0,0 +1,10 @@
using System;
namespace TheGameExtreme.model.manager
{
public abstract class MultiplayerGameManager
{
public MultiplayerGameManager()
{
}
}
}

@ -0,0 +1,159 @@
using System;
using System.Collections.Generic;
using TheGameExtreme.model.effect;
using TheGameExtreme.model.@event;
namespace TheGameExtreme.model.manager
{
public class SoloGameManager : GameManager
{
public SoloGameManager(int nbPlayer, List<Player> players)
: base(nbPlayer, players)
{
}
public override void endTurn()
{
pioche();
currentIndexPlayer += 1;
if (currentIndexPlayer == playerList.Count)
{
currentIndexPlayer = 0;
}
OnCurrentPlayerChanged(new CurrentPlayerChangedEventArgs(currentIndexPlayer));
if (isEndGame()) // Ajouter le score en calculant les cartes restantes dans la pile et dans les mains des joueurs
{
if (win)
{
Console.WriteLine("Le jeu est terminé!\n Bravo vous avez gagné!");
}
else
{
Console.WriteLine("Le jeu est terminé!\n Désolé, vous avez perdu... Essayez encore!");
}
}
}
protected override void pioche()
{
int nbPickedCard = nbMaxCard - playerList[currentIndexPlayer].getCardList().Count;
for (int i = 0; i < nbPickedCard; i++)
{
int random = new Random().Next(0, deck.Count - 1);
playerList[currentIndexPlayer].pioche(deck[random]);
deck.RemoveAt(random);
}
}
protected override bool isEndGame()
{
Player currentPlayer = playerList[currentIndexPlayer];
if (currentPlayer.getCardList().Count != 0)
{
List<Card> playableCard = new List<Card>();
tryToFindSoluce(playableCard, currentPlayer);
return testEndGame(playableCard);
}
return false;
//playerList.ForEach(player =>
//{
// if (player.getCardList().Count != 0)
// {
// List<Card> playableCard = new List<Card>();
// List<Card> cardList = new List<Card>(player.getCardList());
// cardList.ForEach(card =>
// {
// if (card.Value < descendingCardListOrder1.Peek().Value || card.Value < descendingCardListOrder2.Peek().Value || card.Value > ascendingCardListOrder1.Peek().Value || card.Value > ascendingCardListOrder2.Peek().Value)
// {
// playableCard.Add(card);
// }
// });
// if (playableCard.Count < 3 && playableCard.Count >= 2)
// {
// foreach (Card c in playableCard)
// {
// // Tester si c'est une classe ThreeCard
// // Si oui:
// if (currentPlayer == playerList.IndexOf(player))
// {
// win = false;
// endGame = true;
// return;
// }
// }
// }
// else if (playableCard.Count < 2)
// {
// if (currentPlayer == playerList.IndexOf(player))
// {
// win = false;
// endGame = true;
// return;
// }
// }
// }
//});
}
protected override List<Card> tryToFindSoluce(List<Card> playableCard, Player currentPlayer)
{
List<Card> cardList = new List<Card>(currentPlayer.getCardList());
cardList.ForEach(card =>
{
if (card.Value < listOrderedStacks[0].Peek().Value || card.Value < listOrderedStacks[1].Peek().Value || card.Value > listOrderedStacks[2].Peek().Value || card.Value > listOrderedStacks[3].Peek().Value)
{
playableCard.Add(card);
}
});
return playableCard;
}
protected override bool testEndGame(List<Card> playableCard)
{
if (playableCard.Count < 3 && playableCard.Count >= 2)
{
foreach (Card c in playableCard)
{
if (c.Equals(typeof(ThreeCard)))
{
win = false;
return true;
}
}
}
else if (playableCard.Count < 2)
{
win = false;
return true;
}
else if (effectLose())
{
win = false;
return true;
}
return false;
}
protected override bool effectLose()
{
foreach (Stack<Card> orderedStack in listOrderedStacks)
{
if (orderedStack.Peek().GetType() == typeof(EndGame))
{
return true;
}
}
return false;
}
}
}

@ -0,0 +1,10 @@
using System;
namespace TheGameExtreme.model.manager
{
public class LocalGameManager : MultiplayerGameManager
{
public LocalGameManager()
{
}
}
}

@ -0,0 +1,10 @@
using System;
namespace TheGameExtreme.model.manager.multiplayer
{
public class RemoteGameManager : MultiplayerGameManager
{
public RemoteGameManager()
{
}
}
}

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:d="http://xamarin.com/schemas/2014/forms/design" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" x:Class="TheGameExtreme.MainPage">
<StackLayout>
<!-- Place new controls here -->
<StackLayout
Orientation="Horizontal">
<Label x:Name="pile0" Text="coucou:" />
<Label x:Name="pile1" Text="hey"/>
<Label x:Name="pile2" Text="hi"/>
<Label x:Name="pile3" Text="hello"/>
</StackLayout>
<StackLayout x:Name="handCard"
Orientation="Horizontal">
<Button x:Uid="card1" x:Name="card1" Clicked="played" Text="Card 1" />
<Button x:Uid="card2" x:Name="card2" Clicked="played" Text="Card 2" />
<Button x:Uid="card3" x:Name="card3" Clicked="played" Text="Card 3" />
<Button x:Uid="card4" x:Name="card4" Clicked="played" Text="Card 4" />
<Button x:Uid="card5" x:Name="card5" Clicked="played" Text="Card 5" />
<Button x:Uid="card6" x:Name="card6" Clicked="played" Text="Card 6" />
<Button x:Uid="card7" x:Name="card7" Clicked="played" Text="Card 7" />
</StackLayout>
<Button Text="End Turn" Clicked="endTurn"/>
</StackLayout>
</ContentPage>

@ -0,0 +1,46 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using TheGameExtreme.model;
using TheGameExtreme.model.manager;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;
using TheGameExtreme.model.@event;
using TheGameExtreme.viewmodel;
namespace TheGameExtreme
{
// Learn more about making custom code visible in the Xamarin.Forms previewer
// by visiting https://aka.ms/xamarinforms-previewer
[DesignTimeVisible(false)]
public partial class MainPage : ContentPage
{
private Main viewmodel = new Main();
public MainPage()
{
InitializeComponent();
pile0.SetBinding(Label.TextProperty, new Binding("Text", source: viewmodel.Stack0));
pile1.SetBinding(Label.TextProperty, new Binding("Text", source: viewmodel.Stack1));
pile2.SetBinding(Label.TextProperty, new Binding("Text", source: viewmodel.Stack2));
//pile3.SetBinding(Label.TextProperty, new Binding("Value", source: viewmodel.Stack3));
//card1.SetBinding(Button.TextProperty, new Binding("Text", source: viewmodel.))
}
private void played(object sender, EventArgs args)
{
string text = (sender as Button).Text;
viewmodel.played(text);
}
private void endTurn(object sender, EventArgs args)
{
viewmodel.endTurn();
}
}
}

@ -0,0 +1,120 @@
using System;
using System.Collections.Generic;
using TheGameExtreme.model;
using TheGameExtreme.model.@event;
using TheGameExtreme.model.manager;
using Xamarin.Forms;
namespace TheGameExtreme.viewmodel
{
public class Main
{
private List<Player> players;
private GameManager gameManager;
private int currentIndexPlayer;
public string Stack0 { get; set; } = "1";
public string Stack1 { get; set; } = "1";
public string Stack2 { get; set; } = "100";
public string Stack3 { get; set; } = "100";
public Main()
{
players = new List<Player> { new Player("Clément"), new Player("Baptiste") };
gameManager = new SoloGameManager(2, players);
gameManager.TopRangeChanged += OnTopRangeChanged;
players.ForEach(player =>
{
player.HandCardChanged += OnHandCardChanged;
});
gameManager.CurrentPlayerChanged += OnCurrentPlayerChanged;
// Ecoute le changement de vue
}
public void OnTopRangeChanged(object source, TopRangeChangedEventArgs args)
{
switch (args.NumStackChanged)
{
case 0:
Stack0 = args.NewTopRangeCard.Value.ToString();
break;
case 1:
Stack1 = args.NewTopRangeCard.Value.ToString();
break;
case 2:
Stack2 = args.NewTopRangeCard.Value.ToString();
break;
case 3:
Stack3 = args.NewTopRangeCard.Value.ToString();
break;
}
}
private void OnHandCardChanged(object source, HandCardChangedEventArgs args)
{
//if (args.NewHandCard == null)
//{
// players[currentIndexPlayer].getCardList().Remove(args.OldHandCard);
//}
//else
//{
// players[currentIndexPlayer].getCardList().Add(args.NewHandCard);
//}
}
private void OnCurrentPlayerChanged(object source, CurrentPlayerChangedEventArgs args)
{
currentIndexPlayer = args.NewCurrentPlayer;
}
public void played(string text)
{
if (players[currentIndexPlayer].getCardList().Count != 0)
{
int r = new Random().Next(0, 3);
playOneCard(text, r);
}
else
{
// Throw Exception
}
}
private void playOneCard(string text, int r)
{
switch (text)
{
case "Card 1":
gameManager.joue(players[currentIndexPlayer].getCardList()[0], r);
break;
case "Card 2":
gameManager.joue(players[currentIndexPlayer].getCardList()[1], r);
break;
case "Card 3":
gameManager.joue(players[currentIndexPlayer].getCardList()[2], r);
break;
case "Card 4":
gameManager.joue(players[currentIndexPlayer].getCardList()[3], r);
break;
case "Card 5":
gameManager.joue(players[currentIndexPlayer].getCardList()[4], r);
break;
case "Card 6":
gameManager.joue(players[currentIndexPlayer].getCardList()[5], r);
break;
case "Card 7":
gameManager.joue(players[currentIndexPlayer].getCardList()[6], r);
break;
}
}
public void endTurn()
{
gameManager.endTurn();
}
}
}
Loading…
Cancel
Save