Initial commit

I cleared the project history to start fresh on the public version
This commit is contained in:
Renan LE CARO 2025-02-15 19:21:00 +01:00
commit d2cfce2a0e
34 changed files with 11578 additions and 0 deletions

View file

@ -0,0 +1,26 @@
<?xml version="1.0" encoding ="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<application
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@drawable/icon"
android:roundIcon="@drawable/icon"
android:label="@string/app_name"
android:supportsRtl="true"
tools:targetApi="31">
<activity
android:name=".MainActivity"
android:screenOrientation="portrait"
android:exported="true"
android:label="Breakout 71">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>

2200
app/src/main/assets/game.js Normal file

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,146 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="64"
height="64"
viewBox="0 0 16.933333 16.933333"
version="1.1"
id="svg5"
xml:space="preserve"
sodipodi:docname="icon.svg"
inkscape:export-filename="icon.png"
inkscape:export-xdpi="768"
inkscape:export-ydpi="768"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview
id="namedview212"
pagecolor="#ffffff"
bordercolor="#999999"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
showgrid="false"
inkscape:zoom="5.84375"
inkscape:cx="30.802139"
inkscape:cy="32.085561"
inkscape:window-width="1920"
inkscape:window-height="1080"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" /><defs
id="defs2" /><g
id="layer1"><rect
style="fill:#030b1f;fill-opacity:1;stroke-width:0.819666;stroke-linecap:round;stroke-linejoin:round;paint-order:markers stroke fill;stop-color:#000000"
id="rect234"
width="16.933332"
height="16.933332"
x="0"
y="0" /><rect
style="fill:#ffffff;fill-opacity:1;stroke-width:0.730758;stroke-linecap:round;stroke-linejoin:round;paint-order:markers stroke fill;stop-color:#000000"
id="rect1706"
width="4.2333331"
height="2.1166666"
x="2.5952761"
y="14.816667" /><path
style="fill:#ffffff;fill-opacity:1;stroke-width:0.840585;stroke-linecap:round;stroke-linejoin:round;paint-order:markers stroke fill;stop-color:#000000"
id="path1760"
d="M 8.6672224,9.1329346 A 1.0583333,1.0583333 0 0 1 7.6113975,10.191265 1.0583333,1.0583333 0 0 1 6.5505677,9.1379514 1.0583333,1.0583333 0 0 1 7.6013639,8.074628 1.0583333,1.0583333 0 0 1 8.6671748,9.122901" /><path
style="fill:#8953e5;fill-opacity:1;stroke-width:0.271844;stroke-linecap:round;stroke-linejoin:round;paint-order:markers stroke fill;stop-color:#000000"
id="path1760-2"
d="M 7.0868055,6.1665268 A 0.34226292,0.34226292 0 0 1 6.7453538,6.5087888 0.34226292,0.34226292 0 0 1 6.4022835,6.1681492 0.34226292,0.34226292 0 0 1 6.7421089,5.8242725 0.34226292,0.34226292 0 0 1 7.0867901,6.1632819" /><path
style="fill:#8953e5;fill-opacity:1;stroke-width:0.271844;stroke-linecap:round;stroke-linejoin:round;paint-order:markers stroke fill;stop-color:#000000"
id="path1760-2-7"
d="M 9.9609095,4.6433425 A 0.34226292,0.34226292 0 0 1 9.6194578,4.9856045 0.34226292,0.34226292 0 0 1 9.2763875,4.6449649 0.34226292,0.34226292 0 0 1 9.616213,4.3010882 0.34226292,0.34226292 0 0 1 9.9608942,4.6400976" /><path
style="fill:#8953e5;fill-opacity:1;stroke-width:0.271844;stroke-linecap:round;stroke-linejoin:round;paint-order:markers stroke fill;stop-color:#000000"
id="path1760-2-0"
d="M 9.4754292,6.0612068 A 0.34226292,0.34226292 0 0 1 9.1339775,6.4034688 0.34226292,0.34226292 0 0 1 8.7909072,6.0628293 0.34226292,0.34226292 0 0 1 9.1307327,5.7189525 0.34226292,0.34226292 0 0 1 9.4754139,6.057962" /><path
style="fill:#8953e5;fill-opacity:1;stroke-width:0.271844;stroke-linecap:round;stroke-linejoin:round;paint-order:markers stroke fill;stop-color:#000000"
id="path1760-2-9"
d="M 8.7935426,7.682621 A 0.34226292,0.34226292 0 0 1 8.4520909,8.024883 0.34226292,0.34226292 0 0 1 8.1090206,7.6842434 0.34226292,0.34226292 0 0 1 8.448846,7.3403667 0.34226292,0.34226292 0 0 1 8.7935272,7.6793762" /><path
style="fill:#8953e5;fill-opacity:1;stroke-width:0.271844;stroke-linecap:round;stroke-linejoin:round;paint-order:markers stroke fill;stop-color:#000000"
id="path1760-2-3"
d="M 10.550572,7.5443454 A 0.34226292,0.34226292 0 0 1 10.20912,7.8866073 0.34226292,0.34226292 0 0 1 9.8660501,7.5459678 0.34226292,0.34226292 0 0 1 10.205876,7.2020911 0.34226292,0.34226292 0 0 1 10.550557,7.5411005" /><path
style="fill:#8953e5;fill-opacity:1;stroke-width:0.271844;stroke-linecap:round;stroke-linejoin:round;paint-order:markers stroke fill;stop-color:#000000"
id="path1760-2-6"
d="m 11.171486,10.027683 a 0.34226292,0.34226292 0 0 1 -0.341452,0.342262 0.34226292,0.34226292 0 0 1 -0.34307,-0.340639 0.34226292,0.34226292 0 0 1 0.339825,-0.343877 0.34226292,0.34226292 0 0 1 0.344681,0.339009" /><path
style="fill:#8953e5;fill-opacity:1;stroke-width:0.271844;stroke-linecap:round;stroke-linejoin:round;paint-order:markers stroke fill;stop-color:#000000"
id="path1760-2-06"
d="M 9.6700341,9.248889 A 0.34226292,0.34226292 0 0 1 9.3285824,9.5911509 0.34226292,0.34226292 0 0 1 8.9855121,9.2505114 0.34226292,0.34226292 0 0 1 9.3253375,8.9066347 0.34226292,0.34226292 0 0 1 9.6700187,9.2456441" /><path
style="fill:#8953e5;fill-opacity:1;stroke-width:0.271844;stroke-linecap:round;stroke-linejoin:round;paint-order:markers stroke fill;stop-color:#000000"
id="path1760-2-2"
d="m 9.8461224,10.381763 a 0.34226292,0.34226292 0 0 1 -0.3414517,0.342262 0.34226292,0.34226292 0 0 1 -0.3430703,-0.340639 0.34226292,0.34226292 0 0 1 0.3398255,-0.343877 0.34226292,0.34226292 0 0 1 0.3446812,0.33901" /><path
style="fill:#8953e5;fill-opacity:1;stroke-width:0.271844;stroke-linecap:round;stroke-linejoin:round;paint-order:markers stroke fill;stop-color:#000000"
id="path1760-2-61"
d="m 10.677446,12.346528 a 0.34226292,0.34226292 0 0 1 -0.341452,0.342262 0.34226292,0.34226292 0 0 1 -0.3430699,-0.34064 0.34226292,0.34226292 0 0 1 0.3398249,-0.343876 0.34226292,0.34226292 0 0 1 0.344682,0.339009" /><path
style="fill:#8953e5;fill-opacity:1;stroke-width:0.271844;stroke-linecap:round;stroke-linejoin:round;paint-order:markers stroke fill;stop-color:#000000"
id="path1760-2-8"
d="m 12.174136,14.576557 a 0.34226292,0.34226292 0 0 1 -0.341452,0.342262 0.34226292,0.34226292 0 0 1 -0.34307,-0.340639 0.34226292,0.34226292 0 0 1 0.339825,-0.343877 0.34226292,0.34226292 0 0 1 0.344681,0.339009" /><path
style="fill:#4aaae5;fill-opacity:1;stroke-width:0.271844;stroke-linecap:round;stroke-linejoin:round;paint-order:markers stroke fill;stop-color:#000000"
id="path1760-2-8-7"
d="m 12.155115,8.4203005 a 0.34226292,0.34226292 0 0 1 -0.341452,0.3422619 0.34226292,0.34226292 0 0 1 -0.34307,-0.3406395 0.34226292,0.34226292 0 0 1 0.339825,-0.3438767 0.34226292,0.34226292 0 0 1 0.344681,0.3390094" /><path
style="fill:#4aaae5;fill-opacity:1;stroke-width:0.271844;stroke-linecap:round;stroke-linejoin:round;paint-order:markers stroke fill;stop-color:#000000"
id="path1760-2-8-7-9"
d="M 13.807412,9.5352793 A 0.34226292,0.34226292 0 0 1 13.46596,9.8775412 0.34226292,0.34226292 0 0 1 13.12289,9.5369017 0.34226292,0.34226292 0 0 1 13.462715,9.193025 0.34226292,0.34226292 0 0 1 13.807396,9.5320344" /><path
style="fill:#4aaae5;fill-opacity:1;stroke-width:0.271844;stroke-linecap:round;stroke-linejoin:round;paint-order:markers stroke fill;stop-color:#000000"
id="path1760-2-8-7-2"
d="M 10.550572,8.4820604 A 0.34226292,0.34226292 0 0 1 10.20912,8.8243224 0.34226292,0.34226292 0 0 1 9.8660501,8.4836829 0.34226292,0.34226292 0 0 1 10.205876,8.1398062 0.34226292,0.34226292 0 0 1 10.550557,8.4788156" /><path
style="fill:#4aaae5;fill-opacity:1;stroke-width:0.271844;stroke-linecap:round;stroke-linejoin:round;paint-order:markers stroke fill;stop-color:#000000"
id="path1760-2-8-7-0"
d="m 11.829275,6.7558122 a 0.34226292,0.34226292 0 0 1 -0.341452,0.3422619 0.34226292,0.34226292 0 0 1 -0.34307,-0.3406395 0.34226292,0.34226292 0 0 1 0.339825,-0.3438767 0.34226292,0.34226292 0 0 1 0.344681,0.3390094" /><path
style="fill:#4aaae5;fill-opacity:1;stroke-width:0.271844;stroke-linecap:round;stroke-linejoin:round;paint-order:markers stroke fill;stop-color:#000000"
id="path1760-2-8-7-23"
d="m 10.76369,5.8607206 a 0.34226292,0.34226292 0 0 1 -0.341452,0.342262 0.34226292,0.34226292 0 0 1 -0.34307,-0.3406395 0.34226292,0.34226292 0 0 1 0.339825,-0.3438767 0.34226292,0.34226292 0 0 1 0.344681,0.3390094" /><path
style="fill:#4aaae5;fill-opacity:1;stroke-width:0.271844;stroke-linecap:round;stroke-linejoin:round;paint-order:markers stroke fill;stop-color:#000000"
id="path1760-2-8-7-7"
d="M 8.3128425,4.9443169 A 0.34226292,0.34226292 0 0 1 7.9713908,5.2865788 0.34226292,0.34226292 0 0 1 7.6283205,4.9459393 0.34226292,0.34226292 0 0 1 7.968146,4.6020626 0.34226292,0.34226292 0 0 1 8.3128272,4.941072" /><path
style="fill:#4aaae5;fill-opacity:1;stroke-width:0.271844;stroke-linecap:round;stroke-linejoin:round;paint-order:markers stroke fill;stop-color:#000000"
id="path1760-2-8-7-5"
d="M 8.5685832,6.3082666 A 0.34226292,0.34226292 0 0 1 8.2271315,6.6505286 0.34226292,0.34226292 0 0 1 7.8840612,6.3098891 0.34226292,0.34226292 0 0 1 8.2238866,5.9660124 0.34226292,0.34226292 0 0 1 8.5685678,6.3050218" /><path
style="fill:#4aaae5;fill-opacity:1;stroke-width:0.271844;stroke-linecap:round;stroke-linejoin:round;paint-order:markers stroke fill;stop-color:#000000"
id="path1760-2-8-7-92"
d="M 9.7620389,7.0115528 A 0.34226292,0.34226292 0 0 1 9.4205872,7.3538148 0.34226292,0.34226292 0 0 1 9.0775169,7.0131753 0.34226292,0.34226292 0 0 1 9.4173423,6.6692985 0.34226292,0.34226292 0 0 1 9.7620235,7.008308" /><rect
style="fill:#4aaae5;fill-opacity:1;stroke-width:1.46181;stroke-linecap:round;stroke-linejoin:round;paint-order:markers stroke fill;stop-color:#000000"
id="rect1762"
width="4.2333331"
height="4.2333331"
x="0"
y="-6.9388939e-18" /><rect
style="fill:#8953e5;fill-opacity:1;stroke-width:1.46181;stroke-linecap:round;stroke-linejoin:round;paint-order:markers stroke fill;stop-color:#000000"
id="rect1762-3"
width="4.2333331"
height="4.2333331"
x="4.2333331"
y="0" /><rect
style="fill:#4aaae5;fill-opacity:1;stroke-width:1.46181;stroke-linecap:round;stroke-linejoin:round;paint-order:markers stroke fill;stop-color:#000000"
id="rect1762-5"
width="4.2333331"
height="4.2333331"
x="8.4666662"
y="3.469447e-18" /><rect
style="fill:#8953e5;fill-opacity:1;stroke-width:1.46181;stroke-linecap:round;stroke-linejoin:round;paint-order:markers stroke fill;stop-color:#000000"
id="rect1762-3-3"
width="4.2333331"
height="4.2333331"
x="12.699999"
y="3.469447e-18" /><rect
style="fill:#4aaae5;fill-opacity:1;stroke-width:1.46181;stroke-linecap:round;stroke-linejoin:round;paint-order:markers stroke fill;stop-color:#000000"
id="rect1762-56"
width="4.2333331"
height="4.2333331"
x="-16.933332"
y="4.2333331"
transform="scale(-1,1)" /><rect
style="fill:#8953e5;fill-opacity:1;stroke-width:1.46181;stroke-linecap:round;stroke-linejoin:round;paint-order:markers stroke fill;stop-color:#000000"
id="rect1762-3-3-1"
width="4.2333331"
height="4.2333331"
x="-4.2333331"
y="4.2333331"
transform="scale(-1,1)" /></g></svg>

After

Width:  |  Height:  |  Size: 11 KiB

View file

@ -0,0 +1,21 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta
name="viewport"
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"
/>
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>Breakout 𝟕𝟏</title>
<link rel="stylesheet" href="style.css?v=5388" />
<link rel="icon" href="./icon.svg" />
</head>
<body>
<button id="menu"><span> menu</span></button>
<button id="score"></button>
<canvas id="game"></canvas>
<script src="levels.js?v=5388"></script>
<script src="game.js?v=5388"></script>
</body>
</html>

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,39 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta
name="viewport"
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"
/>
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>Breakout privacy policy</title>
<link rel="icon" href="./icon.svg" />
<style type="text/css">
body {
max-width: 800px;
margin: 40px auto;
font-family: sans-serif;
}
</style>
</head>
<body>
<h1>Privacy policy</h1>
<p>
<a href="https://breakout.lecaro.me">Breakout 71</a> is published
by Renan LE CARO, a French citizen and programmer. You can contact me at
this adress : breakout71@lecaro.me
</p>
<p>
If you access breakout.lecaro.me though a web browser, your IP address
will be logged on my server to prevent abuses.
<a href="https://staging.lecaro.me/">My server</a> is hosted by Hetzner
Online GmbH in germany.
</p>
<p>
If you install the app through google play, no information will
be collected at all by me.
</p>
</body>
</html>

View file

@ -0,0 +1,227 @@
* {
font-family:
Courier New,
Courier,
Lucida Sans Typewriter,
Lucida Typewriter,
monospace;
box-sizing: border-box;
}
body {
margin: 0;
padding: 0;
overflow: hidden;
width: 100vw;
height: 100vh;
color: white;
background-size: 120px 120px;
background-color: var(--background1);
--background1: #030c23;
--background2: #03112a;
}
#game {
position: absolute;
top: 0;
left: 0;
height: 100vh;
width: 100vw;
}
#score,
#menu {
position: absolute;
top: 0;
z-index: 1;
padding: 10px;
appearance: none;
background: none;
border: none;
font: inherit;
color: white;
min-width: 40px;
min-height: 40px;
line-height: 20px;
}
body.black_puck #score,
body.black_puck #menu {
color:black;
}
#score:hover,
#score:focus,
#menu:hover,
#menu:focus {
background: rgba(0,0,0,0.3);
cursor: pointer;
}
#score {
right: 0;
}
#menu {
left: 0;
}
@media screen and (orientation: portrait) {
#menu > span {
display: none;
}
}
.popup {
position: fixed;
inset: 0;
background: rgba(0, 0, 0, 0.95);
z-index: 10;
display: flex;
overflow: auto;
}
.popup > div {
margin: auto;
padding: 20px;
/*border: 1px solid white;*/
transform-origin: center;
display: flex;
flex-direction: column;
align-items: stretch;
width: 90%;
max-width: 450px;
}
.popup > div > * {
padding: 0;
margin: 0;
}
.popup > div > h2,
.popup > div > p {
margin-bottom: 20px;
}
.popup > div > button {
font:inherit;
background: rgba(0, 0, 0, 0.8);
color: white;
padding: 10px;
cursor: pointer;
border: 1px solid white;
text-align: left;
display: flex;
gap: 10px;
margin-top: -1px;
}
.popup > div > button:not([disabled]):hover,
.popup > div > button:not([disabled]):focus {
border-color: #f1d33b;
position: relative;
z-index: 1;
}
.popup button.close-modale {
color:white;
position: absolute;
top:0;
right:0;
width: 60px;
height: 60px;
background:none;
border: none;
cursor: pointer;
background: rgba(0,0,0,0.2);
overflow: hidden;
}
.popup button.close-modale:before {
content: "+";
position: absolute;
transform: translate(-50%, -50%) rotate(45deg) ;
font-size: 80px;
display: inline-block;
}
.popup button.close-modale:hover {
font-weight: bold;
}
.popup > div > button[disabled] {
/*border: 1px solid #666;*/
opacity: 0.5;
}
.popup > div > button > div {
flex-grow: 1;
}
.popup > div > button > div > em {
display: block;
opacity: 0.8;
}
.popup > div > button > span.checks {
width: 40px;
height: 40px;
display: inline-flex;
gap:5px;
flex-grow: 0;
flex-shrink: 0;
}
.popup > div > button > span.checks>span {
flex-basis: 10px;
flex-grow: 1;
flex-shrink: 1;
/*border: 1px solid white;*/
background: white;
opacity: 0.1;
border-radius: 4px;
align-self: stretch;
}
.popup > div > button > span.checks>span.checked {
opacity: 1;
}
.popup .textAfterButtons{
color: rgba(255, 255, 255, 0.58);
}
.popup a[href]{
color:inherit;
}
.popup a[href]:hover,
.popup a[href]:focus
{
color:white;
}
/*Unlocks progress bar*/
.progress {
display: block;
padding: 5px 10px;
background: #1c1c2f;
color:#fff;
box-shadow: inset 3px 3px 5px rgba(0,0,0,0.5);
border-radius: 5px;
text-align: center;
position: relative;
overflow: hidden;
}
.progress >.progress_bar_part{
display: block;
background: #4049ca;
box-shadow: inset 3px 3px 5px rgba(0,0,0,0.5);
left: 0;
position: absolute;
right: 0;
top: 0;
bottom: 0;
transform-origin: top left;
animation: grow 1s both ease-out;
z-index: 1;
}
.progress> span {
display: block;
position: relative;
z-index: 2;
}
@keyframes grow {
0%{
transform: scale(0,1);
}
}

View file

@ -0,0 +1,33 @@
package me.lecaro.breakout
import android.os.Bundle
import android.util.Log
import android.view.Window
import android.view.WindowManager
import android.webkit.ConsoleMessage
import android.webkit.WebChromeClient
import android.webkit.WebView
class MainActivity : android.app.Activity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
requestWindowFeature(Window.FEATURE_NO_TITLE);
window.setFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN
);
// WebView.setWebContentsDebuggingEnabled(true)
val webView = WebView(this)
webView.settings.javaScriptEnabled = true
webView.settings.domStorageEnabled = true
webView.loadUrl("file:///android_asset/index.html")
webView.webChromeClient = object : WebChromeClient() {
override fun onConsoleMessage(consoleMessage: ConsoleMessage): Boolean {
Log.d(
"WebView", "${consoleMessage.message()} -- From line " +
"${consoleMessage.lineNumber()} of ${consoleMessage.sourceId()}"
)
return true
}
}
setContentView(webView)
}
}

View file

@ -0,0 +1,195 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="64dp"
android:height="64dp"
android:viewportWidth="16.933"
android:viewportHeight="16.933">
<path
android:pathData="M0,0h16.933v16.933h-16.933z"
android:strokeLineJoin="round"
android:strokeWidth="0.819666"
android:fillColor="#030b1f"
android:strokeColor="#00000000"
android:strokeLineCap="round"/>
<path
android:pathData="M0,14.817h4.233v2.117h-4.233z"
android:strokeLineJoin="round"
android:strokeWidth="0.730758"
android:fillColor="#ffffff"
android:strokeColor="#00000000"
android:strokeLineCap="round"/>
<path
android:pathData="M8.667,9.133A1.058,1.058 0,0 1,7.611 10.191,1.058 1.058,0 0,1 6.551,9.138 1.058,1.058 0,0 1,7.601 8.075,1.058 1.058,0 0,1 8.667,9.123"
android:strokeLineJoin="round"
android:strokeWidth="0.840585"
android:fillColor="#ffffff"
android:strokeColor="#00000000"
android:strokeLineCap="round"/>
<path
android:pathData="M7.087,6.167A0.342,0.342 0,0 1,6.745 6.509,0.342 0.342,0 0,1 6.402,6.168 0.342,0.342 0,0 1,6.742 5.824,0.342 0.342,0 0,1 7.087,6.163"
android:strokeLineJoin="round"
android:strokeWidth="0.271844"
android:fillColor="#8953e5"
android:strokeColor="#00000000"
android:strokeLineCap="round"/>
<path
android:pathData="M9.961,4.643A0.342,0.342 0,0 1,9.619 4.986,0.342 0.342,0 0,1 9.276,4.645 0.342,0.342 0,0 1,9.616 4.301,0.342 0.342,0 0,1 9.961,4.64"
android:strokeLineJoin="round"
android:strokeWidth="0.271844"
android:fillColor="#8953e5"
android:strokeColor="#00000000"
android:strokeLineCap="round"/>
<path
android:pathData="M9.475,6.061A0.342,0.342 0,0 1,9.134 6.403,0.342 0.342,0 0,1 8.791,6.063 0.342,0.342 0,0 1,9.131 5.719,0.342 0.342,0 0,1 9.475,6.058"
android:strokeLineJoin="round"
android:strokeWidth="0.271844"
android:fillColor="#8953e5"
android:strokeColor="#00000000"
android:strokeLineCap="round"/>
<path
android:pathData="M8.794,7.683A0.342,0.342 0,0 1,8.452 8.025,0.342 0.342,0 0,1 8.109,7.684 0.342,0.342 0,0 1,8.449 7.34,0.342 0.342,0 0,1 8.794,7.679"
android:strokeLineJoin="round"
android:strokeWidth="0.271844"
android:fillColor="#8953e5"
android:strokeColor="#00000000"
android:strokeLineCap="round"/>
<path
android:pathData="M10.551,7.544A0.342,0.342 0,0 1,10.209 7.887,0.342 0.342,0 0,1 9.866,7.546 0.342,0.342 0,0 1,10.206 7.202,0.342 0.342,0 0,1 10.551,7.541"
android:strokeLineJoin="round"
android:strokeWidth="0.271844"
android:fillColor="#8953e5"
android:strokeColor="#00000000"
android:strokeLineCap="round"/>
<path
android:pathData="m11.171,10.028a0.342,0.342 0,0 1,-0.341 0.342,0.342 0.342,0 0,1 -0.343,-0.341 0.342,0.342 0,0 1,0.34 -0.344,0.342 0.342,0 0,1 0.345,0.339"
android:strokeLineJoin="round"
android:strokeWidth="0.271844"
android:fillColor="#8953e5"
android:strokeColor="#00000000"
android:strokeLineCap="round"/>
<path
android:pathData="M9.67,9.249A0.342,0.342 0,0 1,9.329 9.591,0.342 0.342,0 0,1 8.986,9.251 0.342,0.342 0,0 1,9.325 8.907,0.342 0.342,0 0,1 9.67,9.246"
android:strokeLineJoin="round"
android:strokeWidth="0.271844"
android:fillColor="#8953e5"
android:strokeColor="#00000000"
android:strokeLineCap="round"/>
<path
android:pathData="m9.846,10.382a0.342,0.342 0,0 1,-0.341 0.342,0.342 0.342,0 0,1 -0.343,-0.341 0.342,0.342 0,0 1,0.34 -0.344,0.342 0.342,0 0,1 0.345,0.339"
android:strokeLineJoin="round"
android:strokeWidth="0.271844"
android:fillColor="#8953e5"
android:strokeColor="#00000000"
android:strokeLineCap="round"/>
<path
android:pathData="m10.677,12.347a0.342,0.342 0,0 1,-0.341 0.342,0.342 0.342,0 0,1 -0.343,-0.341 0.342,0.342 0,0 1,0.34 -0.344,0.342 0.342,0 0,1 0.345,0.339"
android:strokeLineJoin="round"
android:strokeWidth="0.271844"
android:fillColor="#8953e5"
android:strokeColor="#00000000"
android:strokeLineCap="round"/>
<path
android:pathData="m12.174,14.577a0.342,0.342 0,0 1,-0.341 0.342,0.342 0.342,0 0,1 -0.343,-0.341 0.342,0.342 0,0 1,0.34 -0.344,0.342 0.342,0 0,1 0.345,0.339"
android:strokeLineJoin="round"
android:strokeWidth="0.271844"
android:fillColor="#8953e5"
android:strokeColor="#00000000"
android:strokeLineCap="round"/>
<path
android:pathData="m12.155,8.42a0.342,0.342 0,0 1,-0.341 0.342,0.342 0.342,0 0,1 -0.343,-0.341 0.342,0.342 0,0 1,0.34 -0.344,0.342 0.342,0 0,1 0.345,0.339"
android:strokeLineJoin="round"
android:strokeWidth="0.271844"
android:fillColor="#4aaae5"
android:strokeColor="#00000000"
android:strokeLineCap="round"/>
<path
android:pathData="M13.807,9.535A0.342,0.342 0,0 1,13.466 9.878,0.342 0.342,0 0,1 13.123,9.537 0.342,0.342 0,0 1,13.463 9.193,0.342 0.342,0 0,1 13.807,9.532"
android:strokeLineJoin="round"
android:strokeWidth="0.271844"
android:fillColor="#4aaae5"
android:strokeColor="#00000000"
android:strokeLineCap="round"/>
<path
android:pathData="M10.551,8.482A0.342,0.342 0,0 1,10.209 8.824,0.342 0.342,0 0,1 9.866,8.484 0.342,0.342 0,0 1,10.206 8.14,0.342 0.342,0 0,1 10.551,8.479"
android:strokeLineJoin="round"
android:strokeWidth="0.271844"
android:fillColor="#4aaae5"
android:strokeColor="#00000000"
android:strokeLineCap="round"/>
<path
android:pathData="m11.829,6.756a0.342,0.342 0,0 1,-0.341 0.342,0.342 0.342,0 0,1 -0.343,-0.341 0.342,0.342 0,0 1,0.34 -0.344,0.342 0.342,0 0,1 0.345,0.339"
android:strokeLineJoin="round"
android:strokeWidth="0.271844"
android:fillColor="#4aaae5"
android:strokeColor="#00000000"
android:strokeLineCap="round"/>
<path
android:pathData="m10.764,5.861a0.342,0.342 0,0 1,-0.341 0.342,0.342 0.342,0 0,1 -0.343,-0.341 0.342,0.342 0,0 1,0.34 -0.344,0.342 0.342,0 0,1 0.345,0.339"
android:strokeLineJoin="round"
android:strokeWidth="0.271844"
android:fillColor="#4aaae5"
android:strokeColor="#00000000"
android:strokeLineCap="round"/>
<path
android:pathData="M8.313,4.944A0.342,0.342 0,0 1,7.971 5.287,0.342 0.342,0 0,1 7.628,4.946 0.342,0.342 0,0 1,7.968 4.602,0.342 0.342,0 0,1 8.313,4.941"
android:strokeLineJoin="round"
android:strokeWidth="0.271844"
android:fillColor="#4aaae5"
android:strokeColor="#00000000"
android:strokeLineCap="round"/>
<path
android:pathData="M8.569,6.308A0.342,0.342 0,0 1,8.227 6.651,0.342 0.342,0 0,1 7.884,6.31 0.342,0.342 0,0 1,8.224 5.966,0.342 0.342,0 0,1 8.569,6.305"
android:strokeLineJoin="round"
android:strokeWidth="0.271844"
android:fillColor="#4aaae5"
android:strokeColor="#00000000"
android:strokeLineCap="round"/>
<path
android:pathData="M9.762,7.012A0.342,0.342 0,0 1,9.421 7.354,0.342 0.342,0 0,1 9.078,7.013 0.342,0.342 0,0 1,9.417 6.669,0.342 0.342,0 0,1 9.762,7.008"
android:strokeLineJoin="round"
android:strokeWidth="0.271844"
android:fillColor="#4aaae5"
android:strokeColor="#00000000"
android:strokeLineCap="round"/>
<path
android:pathData="M0,-0h4.233v4.233h-4.233z"
android:strokeLineJoin="round"
android:strokeWidth="1.46181"
android:fillColor="#4aaae5"
android:strokeColor="#00000000"
android:strokeLineCap="round"/>
<path
android:pathData="M4.233,0h4.233v4.233h-4.233z"
android:strokeLineJoin="round"
android:strokeWidth="1.46181"
android:fillColor="#8953e5"
android:strokeColor="#00000000"
android:strokeLineCap="round"/>
<path
android:pathData="M8.467,0h4.233v4.233h-4.233z"
android:strokeLineJoin="round"
android:strokeWidth="1.46181"
android:fillColor="#4aaae5"
android:strokeColor="#00000000"
android:strokeLineCap="round"/>
<path
android:pathData="M12.7,0h4.233v4.233h-4.233z"
android:strokeLineJoin="round"
android:strokeWidth="1.46181"
android:fillColor="#8953e5"
android:strokeColor="#00000000"
android:strokeLineCap="round"/>
<path
android:pathData="M16.933,4.233l-4.233,0l-0,4.233l4.233,0z"
android:strokeLineJoin="round"
android:strokeWidth="1.46181"
android:fillColor="#4aaae5"
android:strokeColor="#00000000"
android:strokeLineCap="round"/>
<path
android:pathData="M4.233,4.233l-4.233,0l-0,4.233l4.233,0z"
android:strokeLineJoin="round"
android:strokeWidth="1.46181"
android:fillColor="#8953e5"
android:strokeColor="#00000000"
android:strokeLineCap="round"/>
</vector>

View file

@ -0,0 +1,3 @@
<resources>
<string name="app_name">Breakout</string>
</resources>

View file

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?><!--
Sample backup rules file; uncomment and customize as necessary.
See https://developer.android.com/guide/topics/data/autobackup
for details.
Note: This file is ignored for devices older that API 31
See https://developer.android.com/about/versions/12/backup-restore
-->
<full-backup-content>
<!--
<include domain="sharedpref" path="."/>
<exclude domain="sharedpref" path="device.xml"/>
-->
</full-backup-content>

View file

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?><!--
Sample data extraction rules file; uncomment and customize as necessary.
See https://developer.android.com/about/versions/12/backup-restore#xml-changes
for details.
-->
<data-extraction-rules>
<cloud-backup>
<!-- TODO: Use <include> and <exclude> to control what is backed up.
<include .../>
<exclude .../>
-->
</cloud-backup>
<!--
<device-transfer>
<include .../>
<exclude .../>
</device-transfer>
-->
</data-extraction-rules>