Compare commits
41 Commits
develop
...
3.0.1-5664
Author | SHA1 | Date |
---|---|---|
![]() |
2df34341d9 | |
![]() |
32bf2ab7c3 | |
![]() |
8040e8a210 | |
![]() |
d647cd8ea6 | |
![]() |
873970d18e | |
![]() |
8277421556 | |
![]() |
1942416dd0 | |
![]() |
699d4bb301 | |
![]() |
a1ab96fec4 | |
![]() |
a44ab96f6a | |
![]() |
744f5bd2b8 | |
![]() |
6970c72718 | |
![]() |
d6ff745603 | |
![]() |
58394d9119 | |
![]() |
527ad040b0 | |
![]() |
3d472f23e0 | |
![]() |
fa8fdf1daa | |
![]() |
65e42355ae | |
![]() |
929635c6de | |
![]() |
6ed7d613e2 | |
![]() |
d7eb1e9e21 | |
![]() |
80afb80925 | |
![]() |
194564ee26 | |
![]() |
2c7f18212b | |
![]() |
bf06721b47 | |
![]() |
aa05e02337 | |
![]() |
f83bee91d9 | |
![]() |
7368802c00 | |
![]() |
77f4e4b101 | |
![]() |
77c266f1b5 | |
![]() |
c9999afc51 | |
![]() |
0a61cbb1e3 | |
![]() |
c3ccf08f8d | |
![]() |
69e78a7d3e | |
![]() |
af6cbf48f2 | |
![]() |
d446775053 | |
![]() |
aab2dc63c2 | |
![]() |
06ad543ff0 | |
![]() |
7d86e892fa | |
![]() |
476d2dbc22 | |
![]() |
d2cef0dc3f |
|
@ -1,28 +1,9 @@
|
|||
# Introduction
|
||||
|
||||
First of all, thank you for considering contributing to Project64! Project64 is an open-source project, and we love to receive contributions from the community. Contributions help fix bugs, add new features, and improve the project. There are many ways to contribute, from writing and improving the documentation, testing, submitting bug reports and feature requests, or writing code that can be incorporated into Project64 itself.
|
||||
First of all, thank you for considering contributing to Project64! Project64 is an open-source project and contributions by the community help fix bugs, add new features, and improve the project.
|
||||
|
||||
If you are looking for support or need help, please join the [Discord](https://discord.gg/Cg3zquF)! It's the best way to get your questions answered quickly. Please do not open a GitHub issue without first reading through the [support document](../Docs/SUPPORT.md).
|
||||
Following these guidelines will help make sure that users and developers alike can work together to achieve the projects goals.
|
||||
|
||||
Following these guidelines will help ensure that users and developers alike can work together to achieve the project's goals.
|
||||
|
||||
Please do NOT post any copyrighted materials. This includes (but is not limited to) ROMs, ROM hacks, IPL and firmware files, etc.
|
||||
|
||||
Save states and game saves do not fall under this category, so please post them only if they are applicable to your issue!
|
||||
|
||||
# Github Contribution Guide
|
||||
|
||||
1. Create a fork of this repository on your own account.
|
||||
2. Create a new branch from the `develop` branch.
|
||||
* Choose a meaningful name for the branch (e.g. `fix`, `documentation`).
|
||||
3. Commit any changes onto your new branch.
|
||||
4. If sensible, squash all commits into one. This helps clean up the vetting process.
|
||||
* Ensure that commit messages are clear, concise, and informative. They should include information about all changes made, especially when squashing multiple commits into one.
|
||||
5. Once all commits have been made and squashed, rebase all changes in your branch.
|
||||
* Rebasing will resolve any merge confilcts that your changes may cause.
|
||||
6. Create a pull request to the `develop` branch
|
||||
* The pull request should be descriptive and include all changes made to the code base. If multiple files have been changed, organize them such that they can be easily followed by a reviewer.
|
||||
* Make sure that you **allow edits** by maintainers when making the Pull Request.
|
||||
7. Your changes should be reviewed and fixes may be made to your changes.
|
||||
* If fixes are made please make sure to address them.
|
||||
Project64 is an open-source project and we love to receive contributions from the community. There are many ways to contribute, from writing and improving the documentation, testing, submitting bug reports and feature requests, or writing code which can be incorporated into Project64 itself.
|
||||
|
||||
Please don't use the issue tracker for support questions. Please join the Discord so the community can help with your issue!
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
## Expected behavior
|
||||
|
||||
|
||||
## Actual behavior
|
||||
|
||||
|
||||
## Steps to reproduce the problem
|
||||
|
||||
1.
|
||||
1.
|
||||
1.
|
||||
1.
|
||||
1.
|
||||
|
||||
## Specifications
|
||||
|
||||
- Windows version:
|
||||
- Project64 version:
|
||||
- Plugins used:
|
|
@ -1,147 +0,0 @@
|
|||
name: Bug report
|
||||
description: >-
|
||||
If you experience a bug in Project64 and/or its maintained plugins, please open an
|
||||
issue here and fill out the template.
|
||||
title: '[Bug]: '
|
||||
labels:
|
||||
- bug
|
||||
- triage
|
||||
assignees:
|
||||
- null
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: '## FAQs and a warning'
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: >-
|
||||
|
||||
Please read the support document in this repository before opening an issue!
|
||||
|
||||
|
||||
If you are having issues with a plugin that isn't included with or
|
||||
supported by the Project64 team, we cannot support you other then pointing
|
||||
you to the developer or repository for those plugins.
|
||||
|
||||
|
||||
Please join the Discord first and ask questions and ask for support there
|
||||
first. If the issue should require an open GitHub issue, somebody will ask
|
||||
you to open one.
|
||||
|
||||
We have a lot of people in the Discord who are more then
|
||||
happy to help you with any issues you may be having!
|
||||
|
||||
|
||||
Please avoid opening issues if you do not meet the minimum requirements
|
||||
for Project64. These are outlined in the README for this repository.
|
||||
- type: textarea
|
||||
id: what-should-happen
|
||||
attributes:
|
||||
label: Expected behavior?
|
||||
description: How was the emulator supposed to behave
|
||||
placeholder: Tell us what you expect to see!; use screenshots if necessary.
|
||||
value: null
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: what-happened
|
||||
attributes:
|
||||
label: Actual behavior?
|
||||
description: Describe in detail the issue you encountered.
|
||||
placeholder: Tell us what you see!; use screenshots if necessary.
|
||||
value: null
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: repro
|
||||
attributes:
|
||||
label: Steps to reproduce the problem
|
||||
description: How do you trigger this bug? Please walk us through it step by step.
|
||||
value: |
|
||||
1.
|
||||
2.
|
||||
3.
|
||||
4.
|
||||
5.
|
||||
...
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: error-messages
|
||||
attributes:
|
||||
label: Error messages?
|
||||
description: Was there an error message?
|
||||
placeholder: List any error messages here!; use screenshots if necessary.
|
||||
value: null
|
||||
validations:
|
||||
required: false
|
||||
- type: textarea
|
||||
id: ROM_details
|
||||
attributes:
|
||||
label: What game were you playing?
|
||||
description: What is the specific game/ROM that you encountered an issue with?
|
||||
value: |
|
||||
Title:
|
||||
|
||||
Nintendo 64 game or Nintendo 64 Disk Drive:
|
||||
|
||||
ROM information (First you must uncheck "hide advanced settings" in the settings menu, then File > ROM info should show up, post the information contained there in this field. Alternatively, you can right click the ROM in the ROM browser and hit "ROM information".):
|
||||
Save type: (attach game save or save state here)
|
||||
|
||||
Original or modified ROM?:(attach patch if applicable here)
|
||||
validations:
|
||||
required: false
|
||||
- type: textarea
|
||||
id: SysInfo
|
||||
attributes:
|
||||
label: Specifications and build details
|
||||
description: >-
|
||||
List your PC specifications/information, you can obtain this from MSINFO32 and the
|
||||
emulators title bar and about page.
|
||||
value: |
|
||||
Project64: (include commit version number and whether you are using the
|
||||
32-bit or 64-bit version)
|
||||
|
||||
OS: (include version and OS build number using WinVer):
|
||||
|
||||
CPU:
|
||||
|
||||
RAM:
|
||||
|
||||
Graphics:
|
||||
validations:
|
||||
required: true
|
||||
- type: checkboxes
|
||||
id: DefaultPlugins
|
||||
attributes:
|
||||
label: Using included plugins
|
||||
description: >-
|
||||
Please make sure you are using the included plugins before opening an
|
||||
issue:
|
||||
options:
|
||||
- label: >-
|
||||
I can confirm I am using the included RSP, audio, input, and graphics
|
||||
plugins
|
||||
required: true
|
||||
- type: textarea
|
||||
id: PluginsUsed
|
||||
attributes:
|
||||
label: Plugins used while the issue occurred
|
||||
description: What plugins is the issue occuring with?
|
||||
value: |
|
||||
Graphics plugin (and HLE or LLE):
|
||||
Audio plugin:
|
||||
Input plugin:
|
||||
RSP plugin:
|
||||
validations:
|
||||
required: true
|
||||
- type: checkboxes
|
||||
id: Copyright_Compliance
|
||||
attributes:
|
||||
label: Copyright Compliance
|
||||
description: >-
|
||||
Please do not attach any files that infringe on the copyright of any
|
||||
party.
|
||||
options:
|
||||
- label: There are no infringing files attached to this bug report.
|
||||
required: true
|
|
@ -1,38 +0,0 @@
|
|||
name: Feature request
|
||||
description: >-
|
||||
If you would like a new feature in Project64 or its default plugins, please
|
||||
open an issue here and fill out the template.
|
||||
title: '[Feature request]: '
|
||||
labels:
|
||||
- feature request
|
||||
- enhancement
|
||||
assignees:
|
||||
- null
|
||||
body:
|
||||
- type: textarea
|
||||
id: feature-request
|
||||
attributes:
|
||||
label: Request box
|
||||
description: What feature would you like to see added?
|
||||
placeholder: Tell us what you would like to see added to Project64!
|
||||
value: null
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: reason-why
|
||||
attributes:
|
||||
label: Reason box
|
||||
description: Provide reasoning for the new feature
|
||||
placeholder: Tell us why you'd like to see this feature added
|
||||
value: null
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: Examples
|
||||
attributes:
|
||||
label: Examples
|
||||
description: Provide examples of this feature
|
||||
placeholder: Provide examples or screenshots of this feature in other software
|
||||
value: null
|
||||
validations:
|
||||
required: true
|
|
@ -1,5 +1,5 @@
|
|||
blank_issues_enabled: false
|
||||
blank_issues_enabled: true
|
||||
contact_links:
|
||||
- name: Project64 Community Support
|
||||
url: https://discord.gg/Cg3zquF
|
||||
about: For general questions and support please join the Discord!
|
||||
about: Please ask and answer questions on our Discord!
|
||||
|
|
|
@ -1,13 +1,7 @@
|
|||
[Add description of the PR here]
|
||||
|
||||
Fixes #
|
||||
|
||||
### Proposed changes
|
||||
## Proposed Changes
|
||||
|
||||
-
|
||||
-
|
||||
-
|
||||
|
||||
### Does this make breaking changes?
|
||||
|
||||
|
||||
### Does this version of Project64 compile and run without issue?
|
||||
|
|
|
@ -20,11 +20,11 @@
|
|||
|
||||
Thumbs.db
|
||||
/.vs
|
||||
/Bin/Debug
|
||||
/Bin/Debug64
|
||||
/Bin/Package
|
||||
/Bin/Win32/Debug
|
||||
/Bin/Win32/Release
|
||||
/Bin/x64/Debug
|
||||
/Bin/x64/Release
|
||||
/Bin/Release
|
||||
/Bin/Release64
|
||||
/build
|
||||
/Config/Cheats-User
|
||||
/Config/Enhancements-User
|
||||
|
@ -36,64 +36,31 @@ Thumbs.db
|
|||
/git.properties
|
||||
/ipch
|
||||
/Package
|
||||
/Plugin/Win32/Audio/AndroidAudio_d.dll
|
||||
/Plugin/Win32/Audio/AndroidAudio.dll
|
||||
/Plugin/Win32/Audio/Project64-Audio_d.dll
|
||||
/Plugin/Win32/Audio/Project64-Audio.dll
|
||||
/Plugin/Win32/GFX/lib
|
||||
/Plugin/Win32/GFX/map
|
||||
/Plugin/Win32/GFX/pdb
|
||||
/Plugin/Win32/GFX/Project64-Video_d.dll
|
||||
/Plugin/Win32/GFX/Project64-Video.dll
|
||||
/Plugin/Win32/Input/AndroidInput_d.dll
|
||||
/Plugin/Win32/Input/AndroidInput.dll
|
||||
/Plugin/Win32/Input/lib
|
||||
/Plugin/Win32/Input/map
|
||||
/Plugin/Win32/Input/pdb
|
||||
/Plugin/Win32/Input/PJ64_NRage_d.dll
|
||||
/Plugin/Win32/Input/PJ64_NRage.dll
|
||||
/Plugin/Win32/Input/Project64-Input_d.dll
|
||||
/Plugin/Win32/Input/Project64-Input.dll
|
||||
/Plugin/Win32/RSP/lib
|
||||
/Plugin/Win32/RSP/map
|
||||
/Plugin/Win32/RSP/pdb
|
||||
/Plugin/Win32/RSP/Project64-RSP_d.dll
|
||||
/Plugin/Win32/RSP/Project64-RSP.dll
|
||||
/Plugin/Win32/RSP/RSP 1.7.dll
|
||||
/Plugin/Win32/RSP/RSP_d 1.7.dll
|
||||
/Plugin/Win32/RSP/RSP-HLE_d.dll
|
||||
/Plugin/Win32/RSP/RSP-HLE.dll
|
||||
/Plugin/Win32/RSP/Project64-RSP-Basic_d.dll
|
||||
/Plugin/Win32/RSP/Project64-RSP-Basic.dll
|
||||
/Plugin/x64/Audio/AndroidAudio_d.dll
|
||||
/Plugin/x64/Audio/AndroidAudio.dll
|
||||
/Plugin/x64/Audio/Project64-Audio_d.dll
|
||||
/Plugin/x64/Audio/Project64-Audio.dll
|
||||
/Plugin/x64/GFX/lib
|
||||
/Plugin/x64/GFX/map
|
||||
/Plugin/x64/GFX/pdb
|
||||
/Plugin/x64/GFX/Project64-Video_d.dll
|
||||
/Plugin/x64/GFX/Project64-Video.dll
|
||||
/Plugin/x64/Input/AndroidInput_d.dll
|
||||
/Plugin/x64/Input/AndroidInput.dll
|
||||
/Plugin/x64/Input/lib
|
||||
/Plugin/x64/Input/map
|
||||
/Plugin/x64/Input/pdb
|
||||
/Plugin/x64/Input/PJ64_NRage_d.dll
|
||||
/Plugin/x64/Input/PJ64_NRage.dll
|
||||
/Plugin/x64/Input/Project64-Input_d.dll
|
||||
/Plugin/x64/Input/Project64-Input.dll
|
||||
/Plugin/x64/RSP/lib
|
||||
/Plugin/x64/RSP/map
|
||||
/Plugin/x64/RSP/pdb
|
||||
/Plugin/x64/RSP/Project64-RSP_d.dll
|
||||
/Plugin/x64/RSP/Project64-RSP.dll
|
||||
/Plugin/x64/RSP/RSP 1.7.dll
|
||||
/Plugin/x64/RSP/RSP_d 1.7.dll
|
||||
/Plugin/x64/RSP/RSP-HLE_d.dll
|
||||
/Plugin/x64/RSP/RSP-HLE.dll
|
||||
/Plugin/x64/RSP/Project64-RSP-Basic_d.dll
|
||||
/Plugin/x64/RSP/Project64-RSP-Basic.dll
|
||||
/Plugin/Audio/AndroidAudio_d.dll
|
||||
/Plugin/Audio/AndroidAudio.dll
|
||||
/Plugin/Audio/Project64-Audio_d.dll
|
||||
/Plugin/Audio/Project64-Audio.dll
|
||||
/Plugin/GFX/lib
|
||||
/Plugin/GFX/map
|
||||
/Plugin/GFX/pdb
|
||||
/Plugin/GFX/Project64-Video_d.dll
|
||||
/Plugin/GFX/Project64-Video.dll
|
||||
/Plugin/Input/AndroidInput_d.dll
|
||||
/Plugin/Input/AndroidInput.dll
|
||||
/Plugin/Input/lib
|
||||
/Plugin/Input/map
|
||||
/Plugin/Input/pdb
|
||||
/Plugin/Input/PJ64_NRage_d.dll
|
||||
/Plugin/Input/PJ64_NRage.dll
|
||||
/Plugin/Input/Project64-Input_d.dll
|
||||
/Plugin/Input/Project64-Input.dll
|
||||
/Plugin/RSP/lib
|
||||
/Plugin/RSP/map
|
||||
/Plugin/RSP/pdb
|
||||
/Plugin/RSP/RSP 1.7.dll
|
||||
/Plugin/RSP/RSP_d 1.7.dll
|
||||
/Plugin/RSP/RSP-HLE_d.dll
|
||||
/Plugin/RSP/RSP-HLE.dll
|
||||
/Plugin64/AndroidAudio
|
||||
/Plugin64/Audio/AndroidAudio_d.dll
|
||||
/Plugin64/Audio/AndroidAudio.dll
|
||||
|
@ -128,6 +95,4 @@ Thumbs.db
|
|||
/Source/Project64-core/Version.h
|
||||
/Source/Project64-input/Version.h
|
||||
/Source/Project64-video/Version.h
|
||||
/Source/Project64-rsp-core/Version.h
|
||||
/Plugin/Win32/GFX/GLideN64
|
||||
/Plugin/x64/GFX/GLideN64
|
||||
/Source/RSP/Version.h
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
[submodule "Source/GLideN64/Source"]
|
||||
path = Source/GLideN64/Source
|
||||
url = https://github.com/gonetz/GLideN64.git
|
|
@ -0,0 +1,17 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<launchConfiguration type="org.eclipse.ant.AntBuilderLaunchConfigurationType">
|
||||
<booleanAttribute key="org.eclipse.ant.ui.ATTR_TARGETS_UPDATED" value="true"/>
|
||||
<booleanAttribute key="org.eclipse.ant.ui.DEFAULT_VM_INSTALL" value="false"/>
|
||||
<stringAttribute key="org.eclipse.debug.core.ATTR_REFRESH_SCOPE" value="${working_set:<?xml version="1.0" encoding="UTF-8"?> <resources> <item path="/Project64/assets" type="2"/> </resources>}"/>
|
||||
<booleanAttribute key="org.eclipse.debug.core.capture_output" value="false"/>
|
||||
<booleanAttribute key="org.eclipse.debug.ui.ATTR_CONSOLE_OUTPUT_ON" value="false"/>
|
||||
<booleanAttribute key="org.eclipse.debug.ui.ATTR_LAUNCH_IN_BACKGROUND" value="false"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
|
||||
<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="true"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="Project64"/>
|
||||
<booleanAttribute key="org.eclipse.ui.externaltools.ATTR_BUILDER_ENABLED" value="true"/>
|
||||
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:/Project64/buildAssets.xml}"/>
|
||||
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_RUN_BUILD_KINDS" value="clean"/>
|
||||
<booleanAttribute key="org.eclipse.ui.externaltools.ATTR_TRIGGERS_CONFIGURED" value="true"/>
|
||||
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY" value="${workspace_loc:/Project64}"/>
|
||||
</launchConfiguration>
|
|
@ -0,0 +1,15 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<launchConfiguration type="org.eclipse.ant.AntBuilderLaunchConfigurationType">
|
||||
<booleanAttribute key="org.eclipse.ant.ui.ATTR_TARGETS_UPDATED" value="true"/>
|
||||
<booleanAttribute key="org.eclipse.ant.ui.DEFAULT_VM_INSTALL" value="false"/>
|
||||
<stringAttribute key="org.eclipse.debug.core.ATTR_REFRESH_SCOPE" value="${working_set:<?xml version="1.0" encoding="UTF-8"?> <resources> <item path="/Project64/jni" type="2"/> </resources>}"/>
|
||||
<booleanAttribute key="org.eclipse.debug.ui.ATTR_LAUNCH_IN_BACKGROUND" value="false"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
|
||||
<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="true"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="Project64"/>
|
||||
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_BUILD_SCOPE" value="${working_set:<?xml version="1.0" encoding="UTF-8"?> <resources> <item path="/Project64" type="4"/> </resources>}"/>
|
||||
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:/Project64/copySource.xml}"/>
|
||||
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_RUN_BUILD_KINDS" value="clean"/>
|
||||
<booleanAttribute key="org.eclipse.ui.externaltools.ATTR_TRIGGERS_CONFIGURED" value="true"/>
|
||||
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY" value="${workspace_loc:/Project64}"/>
|
||||
</launchConfiguration>
|
|
@ -1,14 +1,17 @@
|
|||
assets/Config
|
||||
assets/Lang
|
||||
config/version.gradle
|
||||
app/src/main/assets/assets.zip
|
||||
*.iml
|
||||
.gradle
|
||||
local.properties
|
||||
.idea/
|
||||
.DS_Store
|
||||
/build
|
||||
/captures
|
||||
.externalNativeBuild
|
||||
.cxx
|
||||
build
|
||||
# Generated and temporary files
|
||||
assets/project64_data/Config
|
||||
assets/project64_data/Lang
|
||||
bin/
|
||||
gen/
|
||||
obj/
|
||||
*.d
|
||||
*.o
|
||||
*.so
|
||||
Version.h.in
|
||||
|
||||
# Eclipse project files
|
||||
.settings/
|
||||
.classpath
|
||||
.cproject
|
||||
.project
|
||||
|
||||
|
|
|
@ -0,0 +1,53 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>Project64</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>com.android.ide.eclipse.adt.ApkBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.ui.externaltools.ExternalToolBuilder</name>
|
||||
<triggers>clean,</triggers>
|
||||
<arguments>
|
||||
<dictionary>
|
||||
<key>LaunchConfigHandle</key>
|
||||
<value><project>/.externalToolBuilders/Copy Project64 C++ Source.launch</value>
|
||||
</dictionary>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.ui.externaltools.ExternalToolBuilder</name>
|
||||
<triggers>clean,</triggers>
|
||||
<arguments>
|
||||
<dictionary>
|
||||
<key>LaunchConfigHandle</key>
|
||||
<value><project>/.externalToolBuilders/Build Assets.launch</value>
|
||||
</dictionary>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>com.android.ide.eclipse.adt.AndroidNature</nature>
|
||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
|
@ -1,34 +1,34 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
package="emu.project64">
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="emu.project64" android:versionCode="11" android:versionName="2.3.3" >
|
||||
|
||||
<uses-feature android:glEsVersion="0x00020000" android:required="true" />
|
||||
<uses-feature android:name="android.hardware.touchscreen" android:required="false" />
|
||||
<uses-sdk android:minSdkVersion="17" android:targetSdkVersion="26" />
|
||||
|
||||
<uses-permission android:name="com.android.vending.BILLING" />
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||
<uses-permission android:name="android.permission.VIBRATE" />
|
||||
<uses-feature android:name="android.software.leanback" android:required="false" />
|
||||
<uses-feature android:name="android.hardware.touchscreen" android:required="false" />
|
||||
|
||||
<application
|
||||
android:name="emu.project64.Project64Application"
|
||||
android:allowBackup="false"
|
||||
android:allowBackup="true"
|
||||
android:isGame="true"
|
||||
android:hardwareAccelerated="true"
|
||||
android:icon="@drawable/icon"
|
||||
android:label="@string/app_name"
|
||||
android:banner="@drawable/banner"
|
||||
android:theme="@style/Theme.Project64"
|
||||
android:requestLegacyExternalStorage="true" >
|
||||
android:theme="@style/Theme.Project64" >
|
||||
<activity
|
||||
android:name="emu.project64.SplashActivity"
|
||||
android:label="@string/SplashActivity_title"
|
||||
android:theme="@style/Theme.Project64.Splash"
|
||||
android:configChanges="keyboardHidden|orientation|screenSize"
|
||||
android:noHistory="true" >
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LEANBACK_LAUNCHER" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
<category android:name="tv.ouya.intent.category.GAME" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<activity
|
||||
|
@ -36,33 +36,54 @@
|
|||
android:exported="false"
|
||||
android:label="@string/GalleryActivity_title"
|
||||
android:launchMode="singleTask"
|
||||
android:theme="@style/Theme.Project64.Gallery" >
|
||||
android:theme="@style/Theme.Project64.Apearance" >
|
||||
</activity>
|
||||
<activity
|
||||
android:name="emu.project64.ScanRomsActivity"
|
||||
android:exported="false"
|
||||
android:label="@string/ScanRomsActivity_title"
|
||||
android:theme="@style/Theme.Project64.Apearance" >
|
||||
android:theme="@style/Theme.AppCompat" >
|
||||
</activity>
|
||||
<activity
|
||||
android:name="emu.project64.profile.ControllerProfileActivity"
|
||||
android:exported="false"
|
||||
android:label="@string/ControllerProfileActivity_title"
|
||||
android:theme="@style/Theme.Project64.Apearance" >
|
||||
<intent-filter>
|
||||
<action android:name=".profile.ControllerProfileActivity" />
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
|
||||
<!--
|
||||
For the GameActivities, do not restart the activity when the phone's slider
|
||||
opens or closes, or when the orientation (and thereby screen size) changes.
|
||||
This behavior is specified in android:configChanges below.
|
||||
-->
|
||||
<activity
|
||||
android:name="emu.project64.game.GameActivity"
|
||||
android:configChanges="keyboardHidden|orientation|screenSize"
|
||||
android:label="@string/GameActivity_title"
|
||||
android:theme="@style/Theme.Project64.GameActivity" >
|
||||
</activity>
|
||||
<activity
|
||||
android:name="emu.project64.game.GameActivityXperiaPlay"
|
||||
android:configChanges="keyboardHidden|orientation|screenSize"
|
||||
android:label="@string/GameActivity_title"
|
||||
android:theme="@style/Theme.Project64.GameActivity" >
|
||||
<meta-data
|
||||
android:name="android.app.lib_name"
|
||||
android:value="xperia-touchpad" />
|
||||
</activity>
|
||||
<activity
|
||||
android:name="emu.project64.AboutActivity"
|
||||
android:theme="@style/Theme.Project64.About" />
|
||||
<activity
|
||||
<activity
|
||||
android:name="emu.project64.settings.SettingsActivity"
|
||||
android:theme="@style/Theme.Project64.Settings"/>
|
||||
android:theme="@style/Theme.Project64.Apearance" />
|
||||
<activity
|
||||
android:name="emu.project64.settings.GameSettingsActivity"
|
||||
android:theme="@style/Theme.Project64.Settings" />
|
||||
android:theme="@style/Theme.Project64.Apearance" />
|
||||
|
||||
</application>
|
||||
</manifest>
|
|
@ -1,36 +0,0 @@
|
|||
@ECHO OFF
|
||||
SETLOCAL
|
||||
|
||||
set origdir=%cd%
|
||||
cd /d %~dp0..\..\
|
||||
set base_dir=%cd%
|
||||
cd /d %origdir%
|
||||
|
||||
echo buildAssets
|
||||
call "%base_dir%\Android\Script\buildAssets.cmd"
|
||||
set Result=%ERRORLEVEL%
|
||||
echo Done - ERRORLEVEL: %Result%
|
||||
IF %Result% NEQ 0 goto :EndErr
|
||||
|
||||
echo UpdateVersionNumber
|
||||
call "%base_dir%\Android\Script\UpdateVersionNumber.cmd"
|
||||
set Result=%ERRORLEVEL%
|
||||
echo Done - ERRORLEVEL: %Result%
|
||||
IF %Result% NEQ 0 goto :EndErr
|
||||
|
||||
echo copySource
|
||||
call "%base_dir%\Android\Script\copySource.cmd"
|
||||
set Result=%ERRORLEVEL%
|
||||
echo Done - ERRORLEVEL: %Result%
|
||||
IF %Result% NEQ 0 goto :EndErr
|
||||
|
||||
goto :end
|
||||
|
||||
:EndErr
|
||||
ENDLOCAL
|
||||
echo Build failed
|
||||
exit /B 1
|
||||
|
||||
:End
|
||||
ENDLOCAL
|
||||
exit /B 0
|
|
@ -1,18 +0,0 @@
|
|||
@ECHO OFF
|
||||
SETLOCAL
|
||||
|
||||
set origdir=%cd%
|
||||
cd /d %~dp0..\..\
|
||||
set base_dir=%cd%
|
||||
cd /d %origdir%
|
||||
|
||||
"%base_dir%\Android\Script\UpdateVersion.exe" "%base_dir%\Android\config\version.gradle.in" "%base_dir%\Android\config\version.gradle"
|
||||
"%base_dir%\Android\Script\UpdateVersion.exe" "%base_dir%\Source\Project64-core\Version.h.in" "%base_dir%\Source\Project64-core\Version.h"
|
||||
"%base_dir%\Android\Script\UpdateVersion.exe" "%base_dir%\Source\Project64-rsp-core\Version.h.in" "%base_dir%\Source\Project64-rsp-core\Version.h"
|
||||
"%base_dir%\Android\Script\UpdateVersion.exe" "%base_dir%\Source\Project64-audio\Version.h.in" "%base_dir%\Source\Project64-audio\Version.h"
|
||||
"%base_dir%\Android\Script\UpdateVersion.exe" "%base_dir%\Source\Project64-video\Version.h.in" "%base_dir%\Source\Project64-video\Version.h"
|
||||
"%base_dir%\Android\Script\UpdateVersion.exe" "%base_dir%\Source\RSP\Version.h.in" "%base_dir%\Source\RSP\Version.h"
|
||||
|
||||
:End
|
||||
ENDLOCAL
|
||||
exit /B 0
|
|
@ -0,0 +1,63 @@
|
|||
@ECHO OFF
|
||||
SETLOCAL
|
||||
|
||||
set origdir=%cd%
|
||||
cd /d %~dp0..\..\
|
||||
set base_dir=%cd%
|
||||
cd /d %origdir%
|
||||
|
||||
set VersionName=
|
||||
if not "%1" == "" set VersionName= %1
|
||||
|
||||
set NDK-BUILDER=""
|
||||
if exist "C:\Android\android-ndk-r10d\ndk-build.cmd" ( set NDK-BUILDER="C:\Android\android-ndk-r10d\ndk-build.cmd" )
|
||||
if exist "C:\Android\android-ndk-r11c\ndk-build.cmd" ( set NDK-BUILDER="C:\Android\android-ndk-r11c\ndk-build.cmd" )
|
||||
if exist "C:\Android\android-ndk-r13b\ndk-build.cmd" ( set NDK-BUILDER="C:\Android\android-ndk-r13b\ndk-build.cmd" )
|
||||
if %NDK-BUILDER% == "" (
|
||||
echo can not find android NDK
|
||||
goto :EndErr
|
||||
)
|
||||
|
||||
set ANDROID_SDK=""
|
||||
if exist "C:\Android\android-sdk" ( set ANDROID_SDK="C:\Android\android-sdk" )
|
||||
if %ANDROID_SDK% == "" (
|
||||
echo can not find android SDK
|
||||
goto :EndErr
|
||||
)
|
||||
|
||||
call "%base_dir%\Android\Script\buildAssets.cmd"
|
||||
IF %ERRORLEVEL% NEQ 0 goto :EndErr
|
||||
|
||||
call "%base_dir%\Android\Script\copySource.cmd"
|
||||
IF %ERRORLEVEL% NEQ 0 goto :EndErr
|
||||
|
||||
cd /d %base_dir%\Android
|
||||
call %NDK-BUILDER% clean
|
||||
IF %ERRORLEVEL% NEQ 0 goto :EndErr
|
||||
call %NDK-BUILDER%
|
||||
IF %ERRORLEVEL% NEQ 0 goto :EndErr
|
||||
call ant clean release -Dsdk.dir=%ANDROID_SDK%
|
||||
IF %ERRORLEVEL% NEQ 0 goto :EndErr
|
||||
cd /d %origdir%
|
||||
|
||||
:: Make sure the sign environment variables exist
|
||||
IF NOT DEFINED project64_cert_keystore ( exit /B 0 )
|
||||
IF NOT DEFINED project64_cert_password ( exit /B 0 )
|
||||
|
||||
:: Sign the APK
|
||||
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -tsa http://timestamp.digicert.com -keystore "%project64_cert_keystore%" -storepass %project64_cert_password% -keypass %project64_cert_password% "%base_dir%\Android\bin\Project64-release-unsigned.apk" project64
|
||||
|
||||
:: Align the APK
|
||||
zipalign -v 4 "%base_dir%\Android\bin\Project64-release-unsigned.apk" "%base_dir%\Package\Project64%VersionName%.apk"
|
||||
|
||||
echo Build ok
|
||||
goto :end
|
||||
|
||||
:EndErr
|
||||
ENDLOCAL
|
||||
echo Build failed
|
||||
exit /B 1
|
||||
|
||||
:End
|
||||
ENDLOCAL
|
||||
exit /B 0
|
|
@ -8,35 +8,26 @@ set base_dir=%cd%
|
|||
cd /d %origdir%
|
||||
|
||||
echo Building Lang files
|
||||
xcopy "%base_dir%/Lang" "%base_dir%/Android/assets/Lang/" /D /I /F /Y /E
|
||||
xcopy "%base_dir%/Lang" "%base_dir%/Android/assets/project64_data/Lang/" /D /I /F /Y /E
|
||||
IF %ERRORLEVEL% NEQ 0 (exit /B 1)
|
||||
|
||||
echo Copy config files
|
||||
IF NOT EXIST "%base_dir%/Android/assets/Config/" mkdir "%base_dir%/Android/assets/Config/"
|
||||
copy "%base_dir%\Config\Audio.rdb" "%base_dir%\Android\assets\Config\"
|
||||
IF NOT EXIST "%base_dir%/Android/assets/project64_data/Config/" mkdir "%base_dir%/Android/assets/project64_data/Config/"
|
||||
copy "%base_dir%\Config\Audio.rdb" "%base_dir%\Android\assets\project64_data\Config\"
|
||||
IF %ERRORLEVEL% NEQ 0 (exit /B 1)
|
||||
|
||||
copy "%base_dir%\Config\Video.rdb" "%base_dir%\Android\assets\Config\"
|
||||
copy "%base_dir%\Config\Video.rdb" "%base_dir%\Android\assets\project64_data\Config\"
|
||||
IF %ERRORLEVEL% NEQ 0 (exit /B 1)
|
||||
|
||||
copy "%base_dir%\Config\Project64.rdb" "%base_dir%\Android\assets\Config\"
|
||||
copy "%base_dir%\Config\Project64.cht" "%base_dir%\Android\assets\project64_data\Config\"
|
||||
IF %ERRORLEVEL% NEQ 0 (exit /B 1)
|
||||
|
||||
copy "%base_dir%\Config\Project64.rdx" "%base_dir%\Android\assets\Config\"
|
||||
copy "%base_dir%\Config\Project64.rdb" "%base_dir%\Android\assets\project64_data\Config\"
|
||||
IF %ERRORLEVEL% NEQ 0 (exit /B 1)
|
||||
|
||||
IF NOT EXIST "%base_dir%/Android/assets/Config/Cheats/" mkdir "%base_dir%/Android/assets/Config/Cheats/"
|
||||
xcopy "%base_dir%/Config/Cheats" "%base_dir%/Android/assets/Config/Cheats/" /D /I /F /Y /E
|
||||
copy "%base_dir%\Config\Project64.rdx" "%base_dir%\Android\assets\project64_data\Config\"
|
||||
IF %ERRORLEVEL% NEQ 0 (exit /B 1)
|
||||
|
||||
IF NOT EXIST "%base_dir%/Android/assets/Config/Enhancements/" mkdir "%base_dir%/Android/assets/Config/Enhancements/"
|
||||
xcopy "%base_dir%/Config/Enhancements" "%base_dir%/Android/assets/Config/Enhancements/" /D /I /F /Y /E
|
||||
IF %ERRORLEVEL% NEQ 0 (exit /B 1)
|
||||
|
||||
IF NOT EXIST "%base_dir%/Android/app/src/main/assets/" mkdir "%base_dir%/Android/app/src/main/assets/"
|
||||
IF EXIST "%base_dir%/Android/app/src/main/assets/assets.zip" del "%base_dir%\Android\app\src\main\assets\assets.zip"
|
||||
powershell Compress-Archive "%base_dir%/Android/assets/*" "%base_dir%/Android/app/src/main/assets/assets.zip"
|
||||
|
||||
goto :end
|
||||
|
||||
:End
|
||||
|
|
|
@ -11,10 +11,6 @@ echo copy 3rdParty/7zip
|
|||
xcopy "%base_dir%/Source/3rdParty/7zip" "%base_dir%/Android/jni/3rdParty/7zip/" /D /I /F /Y /E
|
||||
IF %ERRORLEVEL% NEQ 0 (exit /B 1)
|
||||
|
||||
echo copy 3rdParty/asmjit
|
||||
xcopy "%base_dir%/Source/3rdParty/asmjit" "%base_dir%/Android/jni/3rdParty/asmjit/" /D /I /F /Y /E
|
||||
IF %ERRORLEVEL% NEQ 0 (exit /B 1)
|
||||
|
||||
echo copy 3rdParty/png
|
||||
xcopy "%base_dir%/Source/3rdParty/png" "%base_dir%/Android/jni/3rdParty/png/" /D /I /F /Y /E
|
||||
IF %ERRORLEVEL% NEQ 0 (exit /B 1)
|
||||
|
@ -28,11 +24,11 @@ xcopy "%base_dir%/Source/Common" "%base_dir%/Android/jni/Common/" /D /I /F /Y /E
|
|||
IF %ERRORLEVEL% NEQ 0 (exit /B 1)
|
||||
|
||||
echo copy PluginInput
|
||||
xcopy "%base_dir%/Source/Android/PluginInput" "%base_dir%/Android/jni/Plugin-Input/" /D /I /F /Y /E
|
||||
xcopy "%base_dir%/Source/Android/PluginInput" "%base_dir%/Android/jni/PluginInput/" /D /I /F /Y /E
|
||||
IF %ERRORLEVEL% NEQ 0 (exit /B 1)
|
||||
|
||||
echo copy PluginRSP
|
||||
xcopy "%base_dir%/Source/Android/PluginRSP" "%base_dir%/Android/jni/Plugin-Rsp/" /D /I /F /Y /E
|
||||
xcopy "%base_dir%/Source/Android/PluginRSP" "%base_dir%/Android/jni/PluginRSP/" /D /I /F /Y /E
|
||||
IF %ERRORLEVEL% NEQ 0 (exit /B 1)
|
||||
|
||||
echo copy Project64-bridge
|
||||
|
@ -43,18 +39,10 @@ echo copy Project64-audio
|
|||
xcopy "%base_dir%/Source/Project64-audio" "%base_dir%/Android/jni/Project64-audio/" /D /I /F /Y /E
|
||||
IF %ERRORLEVEL% NEQ 0 (exit /B 1)
|
||||
|
||||
echo copy Project64-plugin-spec
|
||||
xcopy "%base_dir%/Source/Project64-plugin-spec" "%base_dir%/Android/jni/Project64-plugin-spec/" /D /I /F /Y /E
|
||||
IF %ERRORLEVEL% NEQ 0 (exit /B 1)
|
||||
|
||||
echo copy Project64-core
|
||||
xcopy "%base_dir%/Source/Project64-core" "%base_dir%/Android/jni/Project64-core/" /D /I /F /Y /E
|
||||
IF %ERRORLEVEL% NEQ 0 (exit /B 1)
|
||||
|
||||
echo copy Project64-rsp-core
|
||||
xcopy "%base_dir%/Source/Project64-rsp-core" "%base_dir%/Android/jni/Project64-rsp-core/" /D /I /F /Y /E
|
||||
IF %ERRORLEVEL% NEQ 0 (exit /B 1)
|
||||
|
||||
echo copy Project64-video
|
||||
xcopy "%base_dir%/Source/Project64-video" "%base_dir%/Android/jni/Project64-video/" /D /I /F /Y /E
|
||||
IF %ERRORLEVEL% NEQ 0 (exit /B 1)
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
/build
|
|
@ -1,49 +0,0 @@
|
|||
plugins {
|
||||
id 'com.android.application'
|
||||
}
|
||||
|
||||
apply from: '../config/version.gradle'
|
||||
|
||||
android {
|
||||
|
||||
defaultConfig {
|
||||
applicationId = "emu.Project64"
|
||||
|
||||
externalNativeBuild {
|
||||
cmake {
|
||||
cppFlags '-std=c++11'
|
||||
}
|
||||
}
|
||||
}
|
||||
buildTypes {
|
||||
release {
|
||||
minifyEnabled true
|
||||
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
|
||||
}
|
||||
}
|
||||
|
||||
compileOptions {
|
||||
sourceCompatibility = 1.8
|
||||
targetCompatibility = 1.8
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation fileTree(dir: 'libs', include: ['*.jar'])
|
||||
|
||||
implementation 'com.google.android.material:material:1.1.0'
|
||||
implementation "androidx.drawerlayout:drawerlayout:1.0.0"
|
||||
implementation 'androidx.preference:preference:1.1.1'
|
||||
testImplementation 'junit:junit:4.12'
|
||||
implementation project(':jni:3rdParty:png')
|
||||
implementation project(':jni:3rdParty:zlib')
|
||||
implementation project(':jni:Common')
|
||||
implementation project(':jni:Settings')
|
||||
implementation project(':jni:Project64-rsp-core')
|
||||
implementation project(':jni:Project64-core')
|
||||
implementation project(':jni:Project64-bridge')
|
||||
implementation project(':jni:Project64-video')
|
||||
implementation project(':jni:Project64-audio')
|
||||
implementation project(':jni:Plugin-input')
|
||||
implementation project(':jni:Plugin-rsp')
|
||||
}
|
|
@ -1,21 +0,0 @@
|
|||
# Add project specific ProGuard rules here.
|
||||
# You can control the set of applied configuration files using the
|
||||
# proguardFiles setting in build.gradle.
|
||||
#
|
||||
# For more details, see
|
||||
# http://developer.android.com/guide/developing/tools/proguard.html
|
||||
|
||||
# If your project uses WebView with JS, uncomment the following
|
||||
# and specify the fully qualified class name to the JavaScript interface
|
||||
# class:
|
||||
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
|
||||
# public *;
|
||||
#}
|
||||
|
||||
# Uncomment this to preserve the line number information for
|
||||
# debugging stack traces.
|
||||
#-keepattributes SourceFile,LineNumberTable
|
||||
|
||||
# If you keep the line number information, uncomment this to
|
||||
# hide the original source file name.
|
||||
#-renamesourcefileattribute SourceFile
|
|
@ -1,615 +0,0 @@
|
|||
package emu.project64;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import emu.project64.R;
|
||||
import emu.project64.dialog.ProgressDialog;
|
||||
import emu.project64.game.GameActivity;
|
||||
import emu.project64.jni.LanguageStringID;
|
||||
import emu.project64.jni.NativeExports;
|
||||
import emu.project64.jni.SettingsID;
|
||||
import emu.project64.jni.UISettingID;
|
||||
import emu.project64.settings.GameSettingsActivity;
|
||||
import emu.project64.settings.SettingsActivity;
|
||||
import emu.project64.util.Strings;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.annotation.TargetApi;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.res.Configuration;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import android.util.DisplayMetrics;
|
||||
import android.util.Log;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.ListAdapter;
|
||||
import android.widget.ListView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.appcompat.view.ContextThemeWrapper;
|
||||
import androidx.appcompat.view.menu.MenuBuilder;
|
||||
import androidx.appcompat.app.ActionBar;
|
||||
import androidx.appcompat.app.ActionBarDrawerToggle;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import androidx.core.content.res.ResourcesCompat;
|
||||
import androidx.core.view.GravityCompat;
|
||||
import androidx.drawerlayout.widget.DrawerLayout;
|
||||
import androidx.recyclerview.widget.GridLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
public class GalleryActivity extends AppCompatActivity
|
||||
{
|
||||
//Progress dialog for ROM scan
|
||||
private ProgressDialog mProgress = null;
|
||||
|
||||
// Widgets
|
||||
private RecyclerView mGridView;
|
||||
private DrawerLayout mDrawerLayout;
|
||||
private ActionBarDrawerToggle mDrawerToggle;
|
||||
private MenuListView mDrawerList;
|
||||
|
||||
// Resizable gallery thumb nails
|
||||
public int galleryWidth;
|
||||
public int galleryMaxWidth;
|
||||
public int galleryHalfSpacing;
|
||||
public int galleryColumns = 2;
|
||||
|
||||
// Misc.
|
||||
private static List<GalleryItem> mGalleryItems = new ArrayList<GalleryItem>();
|
||||
private static List<GalleryItem> mRecentItems = new ArrayList<GalleryItem>();
|
||||
private static GalleryActivity mActiveGalleryActivity = null;
|
||||
|
||||
public static final int GAME_DIR_REQUEST_CODE = 1;
|
||||
static final int RC_SETTINGS = 10002;
|
||||
|
||||
@Override
|
||||
protected void onNewIntent( Intent intent )
|
||||
{
|
||||
// If the activity is already running and is launched again (e.g. from a file manager app),
|
||||
// the existing instance will be reused rather than a new one created. This behavior is
|
||||
// specified in the manifest (launchMode = singleTask). In that situation, any activities
|
||||
// above this on the stack (e.g. GameActivity, GamePrefsActivity) will be destroyed
|
||||
// gracefully and onNewIntent() will be called on this instance. onCreate() will NOT be
|
||||
// called again on this instance. Currently, the only info that may be passed via the intent
|
||||
// is the selected game path, so we only need to refresh that aspect of the UI. This will
|
||||
// happen anyhow in onResume(), so we don't really need to do much here.
|
||||
super.onNewIntent( intent );
|
||||
|
||||
// Only remember the last intent used
|
||||
setIntent( intent );
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onCreate( Bundle savedInstanceState )
|
||||
{
|
||||
super.onCreate( savedInstanceState );
|
||||
mActiveGalleryActivity = this;
|
||||
|
||||
Log.d("GalleryActivity", "Starting setup.");
|
||||
// Lay out the content
|
||||
setContentView( R.layout.gallery_activity );
|
||||
mGridView = (RecyclerView) findViewById( R.id.gridview );
|
||||
mProgress = new ProgressDialog(this, getString( R.string.scanning_title ), getString( R.string.toast_pleaseWait ), false );
|
||||
|
||||
// Load Cached Rom List
|
||||
NativeExports.LoadRomList();
|
||||
refreshGrid();
|
||||
|
||||
// Update the grid layout
|
||||
galleryMaxWidth = (int) getResources().getDimension( R.dimen.galleryImageWidth );
|
||||
galleryHalfSpacing = (int) getResources().getDimension( R.dimen.galleryHalfSpacing );
|
||||
|
||||
DisplayMetrics metrics = new DisplayMetrics();
|
||||
getWindowManager().getDefaultDisplay().getMetrics( metrics );
|
||||
|
||||
int width = metrics.widthPixels - galleryHalfSpacing * 2;
|
||||
galleryColumns = (int) Math.ceil( width * 1.0 / ( galleryMaxWidth + galleryHalfSpacing * 2 ) );
|
||||
galleryWidth = width / galleryColumns - galleryHalfSpacing * 2;
|
||||
|
||||
GridLayoutManager layoutManager = (GridLayoutManager) mGridView.getLayoutManager();
|
||||
layoutManager.setSpanCount( galleryColumns );
|
||||
|
||||
Toolbar toolbar = (Toolbar) findViewById( R.id.toolbar );
|
||||
toolbar.setTitle( R.string.app_name );
|
||||
setSupportActionBar( toolbar );
|
||||
ActionBar actionBar = getSupportActionBar();
|
||||
actionBar.setDisplayHomeAsUpEnabled(false);
|
||||
actionBar.setHomeButtonEnabled(false);
|
||||
actionBar.setDisplayShowTitleEnabled(false);
|
||||
}
|
||||
|
||||
void UpdateMenuLanguage(Menu menu)
|
||||
{
|
||||
Strings.SetMenuTitle(menu, R.id.menuItem_GameDir, LanguageStringID.ANDROID_GAMEDIR);
|
||||
Strings.SetMenuTitle(menu, R.id.menuItem_settings, LanguageStringID.ANDROID_SETTINGS);
|
||||
Strings.SetMenuTitle(menu, R.id.menuItem_discord, LanguageStringID.ANDROID_DISCORD);
|
||||
Strings.SetMenuTitle(menu, R.id.menuItem_about, LanguageStringID.ANDROID_ABOUT);
|
||||
}
|
||||
|
||||
void alert(String message)
|
||||
{
|
||||
AlertDialog.Builder bld = new AlertDialog.Builder(this);
|
||||
bld.setMessage(message);
|
||||
bld.setNeutralButton("OK", null);
|
||||
Log.d("GalleryActivity", "Showing alert dialog: " + message);
|
||||
bld.create().show();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPostCreate( Bundle savedInstanceState )
|
||||
{
|
||||
super.onPostCreate( savedInstanceState );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onConfigurationChanged( Configuration newConfig )
|
||||
{
|
||||
super.onConfigurationChanged( newConfig );
|
||||
}
|
||||
|
||||
@SuppressLint("RestrictedApi")
|
||||
@Override
|
||||
public boolean onCreateOptionsMenu( Menu menu )
|
||||
{
|
||||
super.onCreateOptionsMenu( menu );
|
||||
getMenuInflater().inflate( R.menu.gallery, menu );
|
||||
UpdateMenuLanguage(menu);
|
||||
if(menu instanceof MenuBuilder)
|
||||
{
|
||||
MenuBuilder menuBuilder = (MenuBuilder) menu;
|
||||
menuBuilder.setOptionalIconsVisible(true);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected( MenuItem item )
|
||||
{
|
||||
switch( item.getItemId() )
|
||||
{
|
||||
case R.id.menuItem_GameDir:
|
||||
Intent ScanRomsIntent = new Intent(this, ScanRomsActivity.class);
|
||||
startActivityForResult( ScanRomsIntent, GAME_DIR_REQUEST_CODE );
|
||||
return true;
|
||||
case R.id.menuItem_settings:
|
||||
Intent SettingsIntent = new Intent(this, SettingsActivity.class);
|
||||
startActivity( SettingsIntent );
|
||||
return true;
|
||||
case R.id.menuItem_discord:
|
||||
Intent DiscordIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://discord.gg/Cg3zquF"));
|
||||
startActivity(DiscordIntent);
|
||||
return true;
|
||||
case R.id.menuItem_about:
|
||||
Intent AboutIntent = new Intent(this, AboutActivity.class);
|
||||
startActivity( AboutIntent );
|
||||
return true;
|
||||
}
|
||||
return super.onOptionsItemSelected( item );
|
||||
}
|
||||
|
||||
private boolean HasAutoSave(File GameSaveDir)
|
||||
{
|
||||
if (!GameSaveDir.exists() || !GameSaveDir.isDirectory())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
File[] fList = GameSaveDir.listFiles();
|
||||
for (File file : fList)
|
||||
{
|
||||
String extension = "";
|
||||
|
||||
int i = file.getName().lastIndexOf('.');
|
||||
if (i > 0)
|
||||
{
|
||||
extension = file.getName().substring(i+1);
|
||||
}
|
||||
if (extension.equals("zip"))
|
||||
{
|
||||
i = file.getName().lastIndexOf('.', i - 1);
|
||||
if (i > 0)
|
||||
{
|
||||
extension = file.getName().substring(i+1);
|
||||
}
|
||||
}
|
||||
if (extension.equals("pj.zip") ||
|
||||
extension.equals("pj"))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private void StartGameMenu (boolean ShowSettings)
|
||||
{
|
||||
File InstantSaveDir = new File(NativeExports.SettingsLoadString(SettingsID.Directory_InstantSave.toString()));
|
||||
final File GameSaveDir = new File(InstantSaveDir,NativeExports.SettingsLoadString(SettingsID.Game_UniqueSaveDir.toString()));
|
||||
|
||||
class Item
|
||||
{
|
||||
public final String text;
|
||||
public final int icon;
|
||||
public Item(String text, Integer icon)
|
||||
{
|
||||
this.text = text;
|
||||
this.icon = icon;
|
||||
}
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
return text;
|
||||
}
|
||||
}
|
||||
|
||||
List<Item>menuItemLst = new ArrayList<Item>();
|
||||
menuItemLst.add(new Item("Resume from Native save", R.drawable.ic_controller));
|
||||
menuItemLst.add(new Item("Resume from Auto save", R.drawable.ic_play));
|
||||
menuItemLst.add(new Item("Restart", R.drawable.ic_refresh));
|
||||
if (ShowSettings && !NativeExports.SettingsLoadBool(SettingsID.UserInterface_BasicMode.toString()))
|
||||
{
|
||||
menuItemLst.add(new Item("Settings", R.drawable.ic_sliders));
|
||||
}
|
||||
|
||||
Item[] itemsDynamic = new Item[menuItemLst .size()];
|
||||
itemsDynamic = menuItemLst.toArray(itemsDynamic);
|
||||
|
||||
final Item[] items = itemsDynamic;
|
||||
final File SaveDir = GameSaveDir;
|
||||
ListAdapter adapter = new ArrayAdapter<Item>( this, android.R.layout.select_dialog_item, android.R.id.text1, items)
|
||||
{
|
||||
public View getView(int position, View convertView, android.view.ViewGroup parent)
|
||||
{
|
||||
//Use super class to create the View
|
||||
View v = super.getView(position, convertView, parent);
|
||||
TextView tv = (TextView)v.findViewById(android.R.id.text1);
|
||||
|
||||
// Get Drawable icon
|
||||
Drawable d = items[position].icon != 0 ? ResourcesCompat.getDrawable(getResources(), items[position].icon, null) : null;
|
||||
tv.setTextColor(Color.parseColor("#000000"));
|
||||
if (d != null)
|
||||
{
|
||||
d.setColorFilter(Color.parseColor("#000000"), android.graphics.PorterDuff.Mode.SRC_ATOP);
|
||||
}
|
||||
if (!isEnabled(position))
|
||||
{
|
||||
tv.setTextColor(Color.parseColor("#AAAAAA"));
|
||||
if (d != null)
|
||||
{
|
||||
d.setColorFilter(Color.parseColor("#AAAAAA"), android.graphics.PorterDuff.Mode.SRC_ATOP);
|
||||
}
|
||||
}
|
||||
tv.setCompoundDrawablesWithIntrinsicBounds(d, null, null, null);
|
||||
tv.setCompoundDrawablePadding((int) (15 * getResources().getDisplayMetrics().density + 0.5f));
|
||||
return v;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean areAllItemsEnabled()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEnabled(int position)
|
||||
{
|
||||
if (position == 1 && HasAutoSave(SaveDir) == false)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (position == 2 && SaveDir.exists() == false)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
final LayoutInflater inflater = (LayoutInflater) getSystemService( Context.LAYOUT_INFLATER_SERVICE );
|
||||
View layout = inflater.inflate( R.layout.dialog_menu, null );
|
||||
|
||||
final Context finalContext = this;
|
||||
AlertDialog.Builder GameMenu = new AlertDialog.Builder(new ContextThemeWrapper(finalContext,R.style.Theme_Project64_Dialog_Alert));
|
||||
GameMenu.setView( layout);
|
||||
|
||||
TextView DlgTitle = (TextView)layout.findViewById(R.id.dlg_title);
|
||||
DlgTitle.setText(NativeExports.SettingsLoadString(SettingsID.Rdb_GoodName.toString()));
|
||||
|
||||
ListView ListOptions = (ListView)layout.findViewById(R.id.list_options);
|
||||
ListOptions.setAdapter(adapter);
|
||||
AlertDialog dialog = GameMenu.create();
|
||||
|
||||
ListOptions.setOnItemClickListener(new AdapterView.OnItemClickListener()
|
||||
{
|
||||
@Override
|
||||
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
|
||||
{
|
||||
if (position == 0)
|
||||
{
|
||||
launchGameActivity(false);
|
||||
}
|
||||
else if (position == 1)
|
||||
{
|
||||
launchGameActivity(true);
|
||||
}
|
||||
else if (position == 2)
|
||||
{
|
||||
/*AlertDialog.Builder ResetPrompt = new AlertDialog.Builder(finalContext);
|
||||
ResetPrompt
|
||||
.setTitle(getText(R.string.confirmResetGame_title))
|
||||
.setMessage(getText(R.string.confirmResetGame_message))
|
||||
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener()
|
||||
{
|
||||
public void onClick(DialogInterface dialog, int id)
|
||||
{
|
||||
String[]entries = SaveDir.list();
|
||||
for(String s: entries)
|
||||
{
|
||||
File currentFile = new File(SaveDir.getPath(),s);
|
||||
currentFile.delete();
|
||||
}
|
||||
SaveDir.delete();
|
||||
launchGameActivity(false);
|
||||
}
|
||||
})
|
||||
.setNegativeButton(android.R.string.cancel, this)
|
||||
.show();*/
|
||||
}
|
||||
else if (position == 3)
|
||||
{
|
||||
Intent SettingsIntent = new Intent(finalContext, GameSettingsActivity.class);
|
||||
startActivityForResult( SettingsIntent, RC_SETTINGS );
|
||||
dialog.dismiss();
|
||||
}
|
||||
}
|
||||
});
|
||||
dialog.show();
|
||||
}
|
||||
|
||||
public void onGalleryItemClick( GalleryItem item )
|
||||
{
|
||||
NativeExports.LoadGame(item.romFile.getAbsolutePath());
|
||||
File InstantSaveDir = new File(NativeExports.SettingsLoadString(SettingsID.Directory_InstantSave.toString()));
|
||||
File GameSaveDir = new File(InstantSaveDir,NativeExports.SettingsLoadString(SettingsID.Game_UniqueSaveDir.toString()));
|
||||
Boolean ResumeGame = HasAutoSave(GameSaveDir);
|
||||
launchGameActivity(ResumeGame);
|
||||
}
|
||||
|
||||
public boolean onGalleryItemLongClick( GalleryItem item )
|
||||
{
|
||||
NativeExports.LoadGame(item.romFile.getAbsolutePath());
|
||||
StartGameMenu(true);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onActivityResult(int requestCode, int resultCode, Intent data)
|
||||
{
|
||||
super.onActivityResult(requestCode, resultCode, data);
|
||||
|
||||
Log.d("GalleryActivity", "onActivityResult(" + requestCode + "," + resultCode + "," + data);
|
||||
|
||||
// Check which request we're responding to
|
||||
if (requestCode == GAME_DIR_REQUEST_CODE)
|
||||
{
|
||||
// Make sure the request was successful
|
||||
if (resultCode == RESULT_OK && data != null)
|
||||
{
|
||||
Bundle extras = data.getExtras();
|
||||
String searchPath = extras.getString( ScanRomsActivity.GAME_DIR_PATH );
|
||||
boolean searchRecursively = extras.getBoolean( ScanRomsActivity.GAME_DIR_RECURSIVELY );
|
||||
|
||||
if (searchPath != null)
|
||||
{
|
||||
NativeExports.RefreshRomDir(searchPath, searchRecursively);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void refreshGrid( )
|
||||
{
|
||||
List<GalleryItem> items;
|
||||
items = new ArrayList<GalleryItem>();
|
||||
|
||||
if (mRecentItems.size() > 0)
|
||||
{
|
||||
items.add( new GalleryItem( this, Strings.GetString(LanguageStringID.ANDROID_GALLERY_RECENTLYPLAYED)));
|
||||
items.addAll( mRecentItems );
|
||||
|
||||
items.add( new GalleryItem( this, Strings.GetString(LanguageStringID.ANDROID_GALLERY_LIBRARY)));
|
||||
}
|
||||
Collections.sort( mGalleryItems, new GalleryItem.NameComparator() );
|
||||
items.addAll( mGalleryItems );
|
||||
|
||||
mGridView.setAdapter( new GalleryItem.Adapter( this, items ) );
|
||||
|
||||
// Allow the headings to take up the entire width of the layout
|
||||
final List<GalleryItem> finalItems = items;
|
||||
GridLayoutManager layoutManager = new GridLayoutManager( this, galleryColumns );
|
||||
layoutManager.setSpanSizeLookup( new GridLayoutManager.SpanSizeLookup()
|
||||
{
|
||||
@Override
|
||||
public int getSpanSize( int position )
|
||||
{
|
||||
// Headings will take up every span (column) in the grid
|
||||
if( finalItems.get( position ).isHeading )
|
||||
return galleryColumns;
|
||||
|
||||
// Games will fit in a single column
|
||||
return 1;
|
||||
}
|
||||
} );
|
||||
|
||||
mGridView.setLayoutManager( layoutManager );
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onResume()
|
||||
{
|
||||
super.onResume();
|
||||
refreshViews();
|
||||
}
|
||||
|
||||
@TargetApi( 11 )
|
||||
private void refreshViews()
|
||||
{
|
||||
// Refresh the gallery
|
||||
refreshGrid();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onKeyDown( int keyCode, KeyEvent event )
|
||||
{
|
||||
if( keyCode == KeyEvent.KEYCODE_MENU )
|
||||
{
|
||||
if( mDrawerLayout.isDrawerOpen( GravityCompat.START ) )
|
||||
{
|
||||
mDrawerLayout.closeDrawer( GravityCompat.START );
|
||||
}
|
||||
else
|
||||
{
|
||||
mDrawerLayout.openDrawer( GravityCompat.START );
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return super.onKeyDown( keyCode, event );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBackPressed()
|
||||
{
|
||||
if( mDrawerLayout.isDrawerOpen( GravityCompat.START ) )
|
||||
{
|
||||
mDrawerLayout.closeDrawer( GravityCompat.START );
|
||||
}
|
||||
else
|
||||
{
|
||||
moveTaskToBack(true);
|
||||
}
|
||||
}
|
||||
|
||||
// Enables or disables the "please wait" screen.
|
||||
public void launchGameActivity(boolean ResumeGame)
|
||||
{
|
||||
if (ResumeGame)
|
||||
{
|
||||
NativeExports.SettingsSaveDword(SettingsID.Game_CurrentSaveState.toString(), 0);
|
||||
}
|
||||
NativeExports.SettingsSaveBool(SettingsID.Game_LoadSaveAtStart.toString(), ResumeGame);
|
||||
Intent intent = new Intent( this, GameActivity.class );
|
||||
this.startActivity( intent );
|
||||
}
|
||||
|
||||
public static void LanguageChanged()
|
||||
{
|
||||
if (mActiveGalleryActivity != null)
|
||||
{
|
||||
mActiveGalleryActivity.finish();
|
||||
mActiveGalleryActivity.startActivity( mActiveGalleryActivity.getIntent() );
|
||||
}
|
||||
}
|
||||
|
||||
public static void RomListReset ()
|
||||
{
|
||||
mGalleryItems = new ArrayList<GalleryItem>();
|
||||
if (mActiveGalleryActivity != null && mActiveGalleryActivity.mProgress != null)
|
||||
{
|
||||
Handler h = new Handler(Looper.getMainLooper());
|
||||
h.post(new Runnable()
|
||||
{
|
||||
public void run()
|
||||
{
|
||||
mActiveGalleryActivity.mProgress.show();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
public static void RomListAddItem (String FullFileName, String FileName, String GoodName, int TextColor)
|
||||
{
|
||||
GalleryItem item = new GalleryItem( mActiveGalleryActivity, GoodName, FileName, FullFileName, TextColor );
|
||||
mGalleryItems.add( item );
|
||||
if (mActiveGalleryActivity != null && mActiveGalleryActivity.mProgress != null)
|
||||
{
|
||||
Handler h = new Handler(Looper.getMainLooper());
|
||||
final String ProgressMessage = new String("Added " + GoodName);
|
||||
|
||||
h.post(new Runnable()
|
||||
{
|
||||
public void run()
|
||||
{
|
||||
mActiveGalleryActivity.mProgress.setMessage(ProgressMessage);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
private static void refreshRecentRoms()
|
||||
{
|
||||
mRecentItems = new ArrayList<GalleryItem>();
|
||||
|
||||
for (int i = 0, n = NativeExports.SettingsLoadDword(UISettingID.FileRecentGameFileCount.toString()); i < n; i++)
|
||||
{
|
||||
String RecentFile = NativeExports.SettingsLoadStringIndex(UISettingID.FileRecentGameFileIndex.toString(), i);
|
||||
if (RecentFile.length() == 0)
|
||||
{
|
||||
break;
|
||||
}
|
||||
for (int z = 0; z < mGalleryItems.size(); z++)
|
||||
{
|
||||
if (RecentFile.equals(mGalleryItems.get(z).romFile.getAbsolutePath()))
|
||||
{
|
||||
mRecentItems.add(mGalleryItems.get(z));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void RomListLoadDone()
|
||||
{
|
||||
refreshRecentRoms();
|
||||
if (mActiveGalleryActivity != null && mActiveGalleryActivity.mProgress != null)
|
||||
{
|
||||
Handler h = new Handler(Looper.getMainLooper());
|
||||
h.post(new Runnable()
|
||||
{
|
||||
public void run()
|
||||
{
|
||||
mActiveGalleryActivity.refreshGrid();
|
||||
mActiveGalleryActivity.mProgress.dismiss();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
public static void RecentRomsUpdated()
|
||||
{
|
||||
refreshRecentRoms();
|
||||
Handler h = new Handler(Looper.getMainLooper());
|
||||
h.post(new Runnable()
|
||||
{
|
||||
public void run()
|
||||
{
|
||||
mActiveGalleryActivity.refreshGrid();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
|
@ -1,26 +0,0 @@
|
|||
package emu.project64;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.res.Resources;
|
||||
|
||||
public class Project64Application extends android.app.Application
|
||||
{
|
||||
private static Project64Application m_instance;
|
||||
|
||||
@Override
|
||||
public void onCreate()
|
||||
{
|
||||
super.onCreate();
|
||||
m_instance = this;
|
||||
}
|
||||
|
||||
public static Context getAppContext()
|
||||
{
|
||||
return m_instance;
|
||||
}
|
||||
|
||||
public static Resources getAppResources()
|
||||
{
|
||||
return m_instance.getResources();
|
||||
}
|
||||
}
|
|
@ -1,66 +0,0 @@
|
|||
package emu.project64.dialog;
|
||||
|
||||
import emu.project64.R;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.Activity;
|
||||
import android.app.AlertDialog;
|
||||
import android.app.AlertDialog.Builder;
|
||||
import android.content.Context;
|
||||
import android.graphics.Color;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.WindowManager;
|
||||
import android.widget.TextView;
|
||||
|
||||
public class ProgressDialog
|
||||
{
|
||||
|
||||
private final Activity mActivity;
|
||||
private final TextView mTextMessage;
|
||||
private AlertDialog mDialog;
|
||||
|
||||
@SuppressLint( "InflateParams" )
|
||||
public ProgressDialog( Activity activity, CharSequence title, CharSequence message, boolean cancelable )
|
||||
{
|
||||
mActivity = activity;
|
||||
|
||||
final LayoutInflater inflater = (LayoutInflater) mActivity.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
|
||||
View layout = inflater.inflate( R.layout.progress_dialog, null );
|
||||
|
||||
TextView DlgTitle = (TextView)layout.findViewById(R.id.dlg_title);
|
||||
DlgTitle.setText(title);
|
||||
mTextMessage = (TextView) layout.findViewById( R.id.textMessage );
|
||||
mTextMessage.setText( message );
|
||||
|
||||
Builder builder = new Builder( activity, R.style.Theme_Project64_Dialog_Alert );
|
||||
builder.setView( layout);
|
||||
builder.setCancelable( cancelable );
|
||||
builder.setPositiveButton( null, null );
|
||||
builder.setNegativeButton( null, null );
|
||||
mDialog = builder.create();
|
||||
mDialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
|
||||
}
|
||||
|
||||
public void show()
|
||||
{
|
||||
mDialog.show();
|
||||
}
|
||||
|
||||
public void dismiss()
|
||||
{
|
||||
mDialog.dismiss();
|
||||
}
|
||||
|
||||
public void setMessage( final CharSequence text )
|
||||
{
|
||||
mActivity.runOnUiThread( new Runnable()
|
||||
{
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
mTextMessage.setText( text );
|
||||
}
|
||||
} );
|
||||
}
|
||||
}
|
|
@ -1,40 +0,0 @@
|
|||
package emu.project64.jni;
|
||||
|
||||
import android.app.Activity;
|
||||
import emu.project64.game.GameSurface;
|
||||
|
||||
public class NativeExports
|
||||
{
|
||||
static
|
||||
{
|
||||
System.loadLibrary( "Project64-bridge" );
|
||||
}
|
||||
|
||||
public static native boolean appInit (String BaseDir );
|
||||
public static native String appVersion();
|
||||
public static native void StopEmulation();
|
||||
public static native void StartEmulation();
|
||||
public static native void CloseSystem();
|
||||
public static native void SettingsSaveBool(String Type, boolean Value);
|
||||
public static native void SettingsSaveDword(String Type, int Value);
|
||||
public static native void SettingsSaveString(String Type, String Value);
|
||||
public static native boolean SettingsLoadBool(String Type);
|
||||
public static native int SettingsLoadDword(String Type);
|
||||
public static native String SettingsLoadString(String Type);
|
||||
public static native String SettingsLoadStringIndex(String Type, int Index);
|
||||
public static native boolean IsSettingSet(String Type);
|
||||
public static native void LoadGame(String FileLoc);
|
||||
public static native void StartGame(Activity activity, GameSurface.GLThread thread);
|
||||
public static native void LoadRomList();
|
||||
public static native void RefreshRomDir(String RomDir, boolean Recursive);
|
||||
public static native void ExternalEvent(int Type);
|
||||
public static native byte[] GetString(int StringId);
|
||||
|
||||
public static native void SetSpeed(int Speed);
|
||||
public static native int GetSpeed();
|
||||
public static native int GetBaseSpeed();
|
||||
|
||||
public static native void onSurfaceCreated();
|
||||
public static native void onSurfaceChanged(int width, int height);
|
||||
public static native void onDrawFrame();
|
||||
}
|
|
@ -1,15 +0,0 @@
|
|||
package emu.project64.jni;
|
||||
|
||||
public class NativeVideo
|
||||
{
|
||||
static
|
||||
{
|
||||
System.loadLibrary( "Project64-video" );
|
||||
}
|
||||
|
||||
public static native void UpdateScreenRes(int ScreenWidth, int ScreenHeight);
|
||||
public static native int getResolutionCount();
|
||||
public static native String getResolutionName(int Index);
|
||||
public static native int GetScreenResWidth(int Index);
|
||||
public static native int GetScreenResHeight(int Index);
|
||||
}
|
|
@ -1,17 +0,0 @@
|
|||
package emu.project64.jni;
|
||||
|
||||
import android.content.Context;
|
||||
import android.view.View;
|
||||
|
||||
public class NativeXperiaTouchpad extends View
|
||||
{
|
||||
/**
|
||||
* Instantiates a new native input source.
|
||||
*
|
||||
* @param context The context associated with the input events.
|
||||
*/
|
||||
public NativeXperiaTouchpad( Context context )
|
||||
{
|
||||
super( context );
|
||||
}
|
||||
}
|
|
@ -1,31 +0,0 @@
|
|||
package emu.project64.jni;
|
||||
|
||||
public enum UISettingID
|
||||
{
|
||||
AssertsVersion,
|
||||
BuildVersion,
|
||||
ScreenOrientation,
|
||||
|
||||
//Recent Game
|
||||
FileRecentGameFileCount,
|
||||
FileRecentGameFileIndex,
|
||||
|
||||
//Touch Screen
|
||||
TouchScreenButtonScale,
|
||||
TouchScreenLayout,
|
||||
|
||||
//Controller Config
|
||||
ControllerConfigFile,
|
||||
ControllerCurrentProfile,
|
||||
ControllerDeadzone,
|
||||
ControllerSensitivity,
|
||||
|
||||
//App Info
|
||||
AppInfoRunCount,
|
||||
;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "UISettingID." + super.toString();
|
||||
}
|
||||
}
|
|
@ -1,19 +0,0 @@
|
|||
package emu.project64.settings;
|
||||
|
||||
import emu.project64.R;
|
||||
import androidx.preference.Preference;
|
||||
|
||||
public class AdvancedFragment extends BaseSettingsFragment
|
||||
{
|
||||
@Override
|
||||
protected int getXml()
|
||||
{
|
||||
return R.xml.settings_advanced;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getTitleId()
|
||||
{
|
||||
return R.string.advanced_screen_title;
|
||||
}
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
package emu.project64.settings;
|
||||
|
||||
import emu.project64.R;
|
||||
|
||||
public class AudioFragment extends BaseSettingsFragment
|
||||
{
|
||||
@Override
|
||||
protected int getXml()
|
||||
{
|
||||
return R.xml.setting_audio;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getTitleId()
|
||||
{
|
||||
return R.string.audio_screen_title;
|
||||
}
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
package emu.project64.settings;
|
||||
|
||||
import emu.project64.R;
|
||||
|
||||
public class GameListFragment extends BaseSettingsFragment
|
||||
{
|
||||
@Override
|
||||
protected int getXml()
|
||||
{
|
||||
return R.xml.setting_gamelist;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getTitleId()
|
||||
{
|
||||
return R.string.game_list_title;
|
||||
}
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
package emu.project64.settings;
|
||||
|
||||
import emu.project64.R;
|
||||
|
||||
public class GameSettingsFragment extends BaseSettingsFragment
|
||||
{
|
||||
@Override
|
||||
protected int getXml()
|
||||
{
|
||||
return R.xml.game_settings;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getTitleId()
|
||||
{
|
||||
return R.string.preferences;
|
||||
}
|
||||
}
|
|
@ -1,25 +0,0 @@
|
|||
package emu.project64.settings;
|
||||
|
||||
import android.os.Bundle;
|
||||
import emu.project64.R;
|
||||
|
||||
public class GamepadScreenFragment extends BaseSettingsFragment
|
||||
{
|
||||
@Override
|
||||
protected int getXml()
|
||||
{
|
||||
return R.xml.setting_gamepad;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getTitleId()
|
||||
{
|
||||
return R.string.gamepad_title;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreatePreferences(Bundle bundle, String s)
|
||||
{
|
||||
super.onCreatePreferences(bundle, s);
|
||||
}
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
package emu.project64.settings;
|
||||
|
||||
import emu.project64.R;
|
||||
|
||||
public class InputFragment extends BaseSettingsFragment
|
||||
{
|
||||
@Override
|
||||
protected int getXml()
|
||||
{
|
||||
return R.xml.setting_input;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getTitleId()
|
||||
{
|
||||
return R.string.input_screen_title;
|
||||
}
|
||||
}
|
|
@ -1,139 +0,0 @@
|
|||
package emu.project64.settings;
|
||||
|
||||
import emu.project64.R;
|
||||
import emu.project64.jni.NativeExports;
|
||||
import emu.project64.jni.SettingsID;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.res.TypedArray;
|
||||
import android.util.AttributeSet;
|
||||
import android.util.Log;
|
||||
import android.util.TypedValue;
|
||||
import android.text.TextUtils;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.appcompat.view.ContextThemeWrapper;
|
||||
import androidx.core.content.res.TypedArrayUtils;
|
||||
import androidx.preference.Preference;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.DialogInterface.OnClickListener;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.ListAdapter;
|
||||
import android.widget.ListView;
|
||||
import android.widget.TextView;
|
||||
|
||||
public class ListPreference extends Preference {
|
||||
private CharSequence[] mEntries;
|
||||
private CharSequence[] mEntryValues;
|
||||
private CharSequence[] mEntriesSubtitles;
|
||||
private String mValue;
|
||||
private String mTitle;
|
||||
private int mValueIndex;
|
||||
private boolean mValueSet;
|
||||
|
||||
public ListPreference(Context context, AttributeSet attrs)
|
||||
{
|
||||
super(context, attrs, getAttr(context, R.attr.ListPreferenceStyle, android.R.attr.preferenceStyle));
|
||||
|
||||
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.ListPreference);
|
||||
mEntries = a.getTextArray(R.styleable.ListPreference_entries);
|
||||
mEntryValues = a.getTextArray(R.styleable.ListPreference_entryValues);
|
||||
mTitle = String.valueOf(getTitle());
|
||||
mValueIndex = 0;
|
||||
a.recycle();
|
||||
updateSummary();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onClick()
|
||||
{
|
||||
String[] mEntriesString = new String[mEntries.length];
|
||||
int i=0;
|
||||
for(CharSequence ch: mEntries)
|
||||
{
|
||||
mEntriesString[i++] = ch.toString();
|
||||
}
|
||||
|
||||
final LayoutInflater inflater = (LayoutInflater) getContext().getSystemService( Context.LAYOUT_INFLATER_SERVICE );
|
||||
View layout = inflater.inflate( R.layout.dialog_menu, null );
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(new ContextThemeWrapper(getContext(),R.style.Theme_Project64_Dialog_Alert));
|
||||
TextView DlgTitle = (TextView)layout.findViewById(R.id.dlg_title);
|
||||
DlgTitle.setText(mTitle);
|
||||
ListView ListOptions = (ListView)layout.findViewById(R.id.list_options);
|
||||
ListAdapter adapter = new ArrayAdapter<String>(getContext(), R.layout.simple_list_item_single_choice,mEntriesString);
|
||||
ListOptions.setAdapter(adapter);
|
||||
ListOptions.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
|
||||
ListOptions.setItemChecked(mValueIndex,true);
|
||||
builder.setView( layout);
|
||||
builder.setPositiveButton( null, null );
|
||||
builder.setNegativeButton( null, null );
|
||||
AlertDialog dialog = builder.create();
|
||||
ListOptions.setOnItemClickListener(new AdapterView.OnItemClickListener()
|
||||
{
|
||||
@Override
|
||||
public void onItemClick(AdapterView parent, View view, int position, long id)
|
||||
{
|
||||
setValueIndex(position);
|
||||
dialog.dismiss();
|
||||
}
|
||||
});
|
||||
dialog.show();
|
||||
}
|
||||
|
||||
private void updateSummary()
|
||||
{
|
||||
if (mValueIndex < 0 && mValueIndex < mEntries.length)
|
||||
{
|
||||
return;
|
||||
}
|
||||
setSummary(mEntries[mValueIndex].toString());
|
||||
}
|
||||
|
||||
private void setValueIndex(int index)
|
||||
{
|
||||
String value = mEntryValues[index].toString();
|
||||
final boolean changed = !TextUtils.equals(mValue, value);
|
||||
if (changed || !mValueSet)
|
||||
{
|
||||
mValueIndex = index;
|
||||
mValue = value;
|
||||
mValueSet = true;
|
||||
persistString(value);
|
||||
if (changed)
|
||||
{
|
||||
notifyChanged();
|
||||
}
|
||||
updateSummary();
|
||||
}
|
||||
}
|
||||
|
||||
private static int getAttr(Context context, int attr, int fallbackAttr)
|
||||
{
|
||||
TypedValue value = new TypedValue();
|
||||
context.getTheme().resolveAttribute(attr, value, true);
|
||||
if (value.resourceId != 0)
|
||||
{
|
||||
return attr;
|
||||
}
|
||||
return fallbackAttr;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onSetInitialValue(Object defaultValue)
|
||||
{
|
||||
if (getSharedPreferences().contains(getKey()))
|
||||
{
|
||||
String Value = getPersistedString( Integer.toString(mValueIndex));
|
||||
for (int i = 0, n = mEntryValues.length; i < n; i++)
|
||||
{
|
||||
if (mEntryValues[i].equals(Value))
|
||||
{
|
||||
mValueIndex = i;
|
||||
updateSummary();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,108 +0,0 @@
|
|||
package emu.project64.settings;
|
||||
|
||||
import emu.project64.R;
|
||||
import android.content.Context;
|
||||
import android.content.res.TypedArray;
|
||||
import android.util.AttributeSet;
|
||||
import android.util.TypedValue;
|
||||
import android.text.TextUtils;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.preference.Preference;
|
||||
import android.content.DialogInterface;
|
||||
|
||||
public class LogLevelPreference extends Preference {
|
||||
private CharSequence[] mEntries;
|
||||
private CharSequence[] mEntryValues;
|
||||
private CharSequence[] mEntriesSubtitles;
|
||||
private String mValue;
|
||||
private int mValueIndex;
|
||||
private boolean mValueSet;
|
||||
|
||||
public LogLevelPreference(Context context, AttributeSet attrs)
|
||||
{
|
||||
super(context, attrs, getAttr(context, R.attr.LogLevelPreferenceStyle, android.R.attr.preferenceStyle));
|
||||
|
||||
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.TwoLinesListPreference);
|
||||
mEntriesSubtitles = a.getTextArray(R.styleable.TwoLinesListPreference_entriesSubtitles);
|
||||
mEntries = context.getResources().getStringArray(R.array.trace_severity_list);
|
||||
mEntryValues = context.getResources().getStringArray(R.array.trace_severity_values);
|
||||
a.recycle();
|
||||
|
||||
updateSummary();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onClick() {
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
|
||||
builder.setTitle(getTitle())
|
||||
.setSingleChoiceItems(mEntries, mValueIndex, new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int index) {
|
||||
setValueIndex(index);
|
||||
dialog.dismiss();
|
||||
}
|
||||
})
|
||||
.setPositiveButton("Go", new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int index) {
|
||||
setValueIndex(index);
|
||||
dialog.dismiss();
|
||||
}
|
||||
});
|
||||
AlertDialog dialog = builder.create();
|
||||
dialog.show();
|
||||
}
|
||||
|
||||
private void updateSummary()
|
||||
{
|
||||
if (mValueIndex < 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
setSummary(mEntries[mValueIndex].toString());
|
||||
}
|
||||
|
||||
private void setValueIndex(int index)
|
||||
{
|
||||
String value = mEntryValues[index].toString();
|
||||
final boolean changed = !TextUtils.equals(mValue, value);
|
||||
if (changed || !mValueSet) {
|
||||
mValueIndex = index;
|
||||
mValue = value;
|
||||
mValueSet = true;
|
||||
persistString(value);
|
||||
if (changed) {
|
||||
notifyChanged();
|
||||
}
|
||||
updateSummary();
|
||||
}
|
||||
}
|
||||
|
||||
private static int getAttr(Context context, int attr, int fallbackAttr)
|
||||
{
|
||||
TypedValue value = new TypedValue();
|
||||
context.getTheme().resolveAttribute(attr, value, true);
|
||||
if (value.resourceId != 0)
|
||||
{
|
||||
return attr;
|
||||
}
|
||||
return fallbackAttr;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onSetInitialValue(Object defaultValue)
|
||||
{
|
||||
if (getSharedPreferences().contains(getKey()))
|
||||
{
|
||||
String Value = getPersistedString( Integer.toString(mValueIndex));
|
||||
for (int i = 0, n = mEntryValues.length; i < n; i++)
|
||||
{
|
||||
if (mEntryValues[i].equals(Value))
|
||||
{
|
||||
mValueIndex = i;
|
||||
updateSummary();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
package emu.project64.settings;
|
||||
|
||||
import emu.project64.R;
|
||||
|
||||
public class LoggingAudio extends BaseSettingsFragment
|
||||
{
|
||||
@Override
|
||||
protected int getXml()
|
||||
{
|
||||
return R.xml.logging_audio;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getTitleId()
|
||||
{
|
||||
return R.string.logging_Audio;
|
||||
}
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
package emu.project64.settings;
|
||||
|
||||
import emu.project64.R;
|
||||
|
||||
public class LoggingProject64Core extends BaseSettingsFragment
|
||||
{
|
||||
@Override
|
||||
protected int getXml()
|
||||
{
|
||||
return R.xml.logging_project64core;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getTitleId()
|
||||
{
|
||||
return R.string.logging_project64core;
|
||||
}
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
package emu.project64.settings;
|
||||
|
||||
import emu.project64.R;
|
||||
|
||||
public class LoggingVideo extends BaseSettingsFragment
|
||||
{
|
||||
@Override
|
||||
protected int getXml()
|
||||
{
|
||||
return R.xml.logging_video;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getTitleId()
|
||||
{
|
||||
return R.string.logging_Video;
|
||||
}
|
||||
}
|
|
@ -1,24 +0,0 @@
|
|||
package emu.project64.settings;
|
||||
|
||||
import emu.project64.R;
|
||||
import emu.project64.jni.NativeExports;
|
||||
import emu.project64.jni.SettingsID;
|
||||
|
||||
public class SettingsFragment extends BaseSettingsFragment
|
||||
{
|
||||
@Override
|
||||
protected int getXml()
|
||||
{
|
||||
if (NativeExports.SettingsLoadBool(SettingsID.UserInterface_BasicMode.toString()))
|
||||
{
|
||||
return R.xml.settings_basic;
|
||||
}
|
||||
return R.xml.settings;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getTitleId()
|
||||
{
|
||||
return R.string.preferences;
|
||||
}
|
||||
}
|
|
@ -1,230 +0,0 @@
|
|||
package emu.project64.task;
|
||||
|
||||
import java.io.BufferedInputStream;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.zip.ZipEntry;
|
||||
import java.util.zip.ZipInputStream;
|
||||
|
||||
import android.content.res.AssetManager;
|
||||
import android.os.AsyncTask;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
|
||||
public class ExtractAssetZipTask extends AsyncTask<Void, String, List<ExtractAssetZipTask.Failure>>
|
||||
{
|
||||
public interface ExtractAssetZipListener
|
||||
{
|
||||
public void onExtractAssetsProgress( String nextFileToExtract );
|
||||
public void onExtractAssetsFinished( List<Failure> failures );
|
||||
}
|
||||
|
||||
public ExtractAssetZipTask( AssetManager assetManager, String dstPath, ExtractAssetZipListener listener)
|
||||
{
|
||||
if (assetManager == null )
|
||||
throw new IllegalArgumentException( "Asset manager cannot be null" );
|
||||
if( TextUtils.isEmpty( dstPath ) )
|
||||
throw new IllegalArgumentException( "Destination path cannot be null or empty" );
|
||||
|
||||
mAssetManager = assetManager;
|
||||
mDstPath = dstPath;
|
||||
mListener = listener;
|
||||
}
|
||||
|
||||
private final AssetManager mAssetManager;
|
||||
private final String mDstPath;
|
||||
private final ExtractAssetZipListener mListener;
|
||||
|
||||
@Override
|
||||
protected List<Failure> doInBackground( Void... params )
|
||||
{
|
||||
return extractAssets( mDstPath );
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onProgressUpdate( String... values )
|
||||
{
|
||||
mListener.onExtractAssetsProgress( values[0] );
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPostExecute( List<ExtractAssetZipTask.Failure> result )
|
||||
{
|
||||
mListener.onExtractAssetsFinished( result );
|
||||
}
|
||||
|
||||
public static final class Failure
|
||||
{
|
||||
public enum Reason
|
||||
{
|
||||
FILE_UNWRITABLE,
|
||||
FILE_UNCLOSABLE,
|
||||
ASSET_UNCLOSABLE,
|
||||
ASSET_IO_EXCEPTION,
|
||||
FILE_IO_EXCEPTION,
|
||||
}
|
||||
|
||||
public final String srcPath;
|
||||
public final String dstPath;
|
||||
public final Reason reason;
|
||||
public Failure( String srcPath, String dstPath, Reason reason )
|
||||
{
|
||||
this.srcPath = srcPath;
|
||||
this.dstPath = dstPath;
|
||||
this.reason = reason;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
switch( reason )
|
||||
{
|
||||
case FILE_UNWRITABLE:
|
||||
return "Failed to open file " + dstPath;
|
||||
case FILE_UNCLOSABLE:
|
||||
return "Failed to close file " + dstPath;
|
||||
case ASSET_UNCLOSABLE:
|
||||
return "Failed to close asset " + srcPath;
|
||||
case ASSET_IO_EXCEPTION:
|
||||
return "Failed to extract asset " + srcPath + " to file " + dstPath;
|
||||
case FILE_IO_EXCEPTION:
|
||||
return "Failed to add file " + srcPath + " to file " + dstPath;
|
||||
default:
|
||||
return "Failed using source " + srcPath + " and destination " + dstPath;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private List<Failure> extractAssets( String dstPath )
|
||||
{
|
||||
final List<Failure> failures = new ArrayList<Failure>();
|
||||
|
||||
// Ensure the parent directories exist
|
||||
File root = new File(dstPath + "/");
|
||||
if (!root.exists()) {
|
||||
root.mkdirs();
|
||||
}
|
||||
|
||||
String dstFile = dstPath + "/assets.zip";
|
||||
String srcFile = "assets.zip";
|
||||
// Call the progress listener before extracting
|
||||
publishProgress( dstPath );
|
||||
|
||||
// IO objects, initialize null to eliminate lint error
|
||||
OutputStream out = null;
|
||||
InputStream in = null;
|
||||
|
||||
Boolean ExtractZip = false;
|
||||
// Extract the file
|
||||
try
|
||||
{
|
||||
out = new FileOutputStream( dstFile );
|
||||
in = mAssetManager.open( srcFile);
|
||||
byte[] buffer = new byte[1024];
|
||||
int read;
|
||||
|
||||
mListener.onExtractAssetsProgress( "copying asset zip file" );
|
||||
while( ( read = in.read( buffer ) ) != -1 )
|
||||
{
|
||||
out.write( buffer, 0, read );
|
||||
}
|
||||
mListener.onExtractAssetsProgress( "Finished copying assset zip" );
|
||||
out.flush();
|
||||
ExtractZip = true;
|
||||
}
|
||||
catch( FileNotFoundException e )
|
||||
{
|
||||
Failure failure = new Failure( srcFile, dstPath, Failure.Reason.FILE_UNWRITABLE );
|
||||
Log.e( "ExtractAssetZipTask", failure.toString() );
|
||||
failures.add( failure );
|
||||
}
|
||||
catch( IOException e )
|
||||
{
|
||||
Failure failure = new Failure( srcFile, dstPath, Failure.Reason.ASSET_IO_EXCEPTION );
|
||||
Log.e( "ExtractAssetZipTask", failure.toString() );
|
||||
failures.add( failure );
|
||||
}
|
||||
finally
|
||||
{
|
||||
if( out != null )
|
||||
{
|
||||
try
|
||||
{
|
||||
out.close();
|
||||
}
|
||||
catch( IOException e )
|
||||
{
|
||||
Failure failure = new Failure( srcFile, dstPath, Failure.Reason.FILE_UNCLOSABLE );
|
||||
Log.e( "ExtractAssetZipTask", failure.toString() );
|
||||
failures.add( failure );
|
||||
}
|
||||
}
|
||||
if( in != null )
|
||||
{
|
||||
try
|
||||
{
|
||||
in.close();
|
||||
}
|
||||
catch( IOException e )
|
||||
{
|
||||
Failure failure = new Failure( srcFile, dstPath, Failure.Reason.ASSET_UNCLOSABLE );
|
||||
Log.e( "ExtractAssetZipTask", failure.toString() );
|
||||
failures.add( failure );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (ExtractZip)
|
||||
{
|
||||
String zipFilePath = dstPath + "/assets.zip";
|
||||
String destDir = dstPath + "/";
|
||||
File dir = new File(destDir);
|
||||
// create output directory if it doesn't exist
|
||||
if(!dir.exists()) dir.mkdirs();
|
||||
FileInputStream fis;
|
||||
//buffer for read and write data to file
|
||||
byte[] buffer = new byte[1024];
|
||||
try {
|
||||
fis = new FileInputStream(zipFilePath);
|
||||
ZipInputStream zis = new ZipInputStream(fis);
|
||||
ZipEntry ze = zis.getNextEntry();
|
||||
while(ze != null){
|
||||
String fileName = ze.getName();
|
||||
File newFile = new File(destDir + File.separator + fileName.replace("\\", "/"));
|
||||
mListener.onExtractAssetsProgress( "Unzipping "+fileName );
|
||||
|
||||
//create directories for sub directories in zip
|
||||
new File(newFile.getParent()).mkdirs();
|
||||
if (ze.getSize() != 0) {
|
||||
FileOutputStream fos = new FileOutputStream(newFile);
|
||||
int len;
|
||||
while ((len = zis.read(buffer)) > 0) {
|
||||
fos.write(buffer, 0, len);
|
||||
}
|
||||
fos.close();
|
||||
}
|
||||
//close this ZipEntry
|
||||
zis.closeEntry();
|
||||
ze = zis.getNextEntry();
|
||||
}
|
||||
//close last ZipEntry
|
||||
zis.closeEntry();
|
||||
zis.close();
|
||||
fis.close();
|
||||
} catch (IOException e) {
|
||||
Failure failure = new Failure( srcFile, dstPath, Failure.Reason.ASSET_IO_EXCEPTION );
|
||||
Log.e( "ExtractAssetZipTask", failure.toString() );
|
||||
failures.add( failure );
|
||||
}
|
||||
}
|
||||
return failures;
|
||||
}
|
||||
}
|
|
@ -1,66 +0,0 @@
|
|||
package emu.project64.util;
|
||||
|
||||
import android.content.Context;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.BaseAdapter;
|
||||
import android.widget.Button;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import emu.project64.R;
|
||||
|
||||
public class NotifierAdapter extends BaseAdapter
|
||||
{
|
||||
Context con;
|
||||
String[] data;
|
||||
Runnable DisplayMessager;
|
||||
|
||||
public NotifierAdapter (Context context, Runnable DisplayMessager, String[] data)
|
||||
{
|
||||
this.con = context;
|
||||
this.data = data;
|
||||
this.DisplayMessager = DisplayMessager;
|
||||
}
|
||||
@Override
|
||||
public int getCount() {
|
||||
return data.length;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getItem(int position) {
|
||||
return data[position];
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getItemId(int position) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public View getView(int position, View view, ViewGroup parent) {
|
||||
LayoutInflater inflater = (LayoutInflater) con.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
|
||||
view = inflater.inflate(R.layout.notifier_adapter, parent, false);
|
||||
TextView text = (TextView) view.findViewById(R.id.text);
|
||||
text.setText(data[position]);
|
||||
|
||||
Button button = (Button) view.findViewById(R.id.button);
|
||||
button.setOnClickListener(
|
||||
new View.OnClickListener()
|
||||
{
|
||||
public void onClick(View view)
|
||||
{
|
||||
synchronized(DisplayMessager)
|
||||
{
|
||||
DisplayMessager.notify();
|
||||
};
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
return view;
|
||||
}
|
||||
|
||||
}
|
|
@ -1,61 +0,0 @@
|
|||
package emu.project64.util;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.Closeable;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import emu.project64.Project64Application;
|
||||
|
||||
public final class Utility
|
||||
{
|
||||
public static boolean close(Closeable closeable)
|
||||
{
|
||||
if (closeable != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
closeable.close();
|
||||
return true;
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static String readAsset(String assetName, String defaultS)
|
||||
{
|
||||
InputStream is = null;
|
||||
BufferedReader r = null;
|
||||
try
|
||||
{
|
||||
is = Project64Application.getAppResources().getAssets().open(assetName);
|
||||
r = new BufferedReader(new InputStreamReader(is, "UTF8"));
|
||||
StringBuilder sb = new StringBuilder();
|
||||
String line = r.readLine();
|
||||
if(line != null)
|
||||
{
|
||||
sb.append(line);
|
||||
line = r.readLine();
|
||||
while(line != null)
|
||||
{
|
||||
sb.append('\n');
|
||||
sb.append(line);
|
||||
line = r.readLine();
|
||||
}
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
return defaultS;
|
||||
}
|
||||
finally
|
||||
{
|
||||
close(is);
|
||||
close(r);
|
||||
}
|
||||
}
|
||||
}
|
Before Width: | Height: | Size: 136 B |
Before Width: | Height: | Size: 218 KiB |
Before Width: | Height: | Size: 218 KiB |
Before Width: | Height: | Size: 148 KiB |
|
@ -1,24 +0,0 @@
|
|||
<shape
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="rectangle"
|
||||
>
|
||||
<solid
|
||||
android:color="@android:color/white" >
|
||||
</solid>
|
||||
|
||||
<stroke
|
||||
android:width="5dp"
|
||||
android:color="@color/colorPrimary" />
|
||||
|
||||
<padding
|
||||
android:left="12dp"
|
||||
android:top="12dp"
|
||||
android:right="12dp"
|
||||
android:bottom="12dp" >
|
||||
</padding>
|
||||
|
||||
<corners
|
||||
android:radius="15dp" >
|
||||
</corners>
|
||||
|
||||
</shape>
|
|
@ -1,28 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
|
||||
<corners
|
||||
android:radius="14dp"
|
||||
/>
|
||||
<gradient
|
||||
android:angle="45"
|
||||
android:centerX="35%"
|
||||
android:centerColor="@color/ButtonCenterColor"
|
||||
android:startColor="@color/ButtonStartColor"
|
||||
android:endColor="@color/ButtonEndColor"
|
||||
android:type="linear"
|
||||
/>
|
||||
<padding
|
||||
android:left="0dp"
|
||||
android:top="0dp"
|
||||
android:right="0dp"
|
||||
android:bottom="0dp"
|
||||
/>
|
||||
<size
|
||||
android:width="270dp"
|
||||
android:height="60dp"
|
||||
/>
|
||||
<stroke
|
||||
android:width="3dp"
|
||||
android:color="@color/buttonBorderColor"
|
||||
/>
|
||||
</shape>
|
|
@ -1,15 +0,0 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="30dp"
|
||||
android:height="30dp"
|
||||
android:viewportWidth="128"
|
||||
android:viewportHeight="128">
|
||||
<path
|
||||
android:pathData="M64,1C29.3,1 1,29.3 1,64s28.3,63 63,63s63,-28.3 63,-63S98.7,1 64,1zM64,119C33.7,119 9,94.3 9,64S33.7,9 64,9s55,24.7 55,55S94.3,119 64,119z"
|
||||
android:fillColor="#000000"/>
|
||||
<path
|
||||
android:pathData="M60,54.5h8v40h-8z"
|
||||
android:fillColor="#000000"/>
|
||||
<path
|
||||
android:pathData="M60,35.5h8v8h-8z"
|
||||
android:fillColor="#000000"/>
|
||||
</vector>
|
|
@ -1,5 +0,0 @@
|
|||
<vector android:height="48dp" android:viewportHeight="507.5"
|
||||
android:viewportWidth="507.5" android:width="48dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#000000" android:pathData="M254.88,262.34c8.67,-12.81 14.8,-27.5 17.75,-43.23h43.55v-0.02V174.81h-43.55c-3.02,-15.83 -9.1,-30.46 -17.77,-43.25l30.69,-30.72l-31.34,-31.36l-30.74,30.72c-12.77,-8.72 -27.46,-14.8 -43.25,-17.84V38.85h-44.28v43.51c-15.79,3.09 -30.46,9.12 -43.21,17.84L61.99,69.48L30.61,100.8l30.74,30.76c-8.67,12.79 -14.78,27.4 -17.8,43.25H0v44.31h43.55c3.06,15.73 9.15,30.42 17.8,43.23l-30.74,30.74l31.39,31.32l30.69,-30.76c12.79,8.67 27.46,14.84 43.25,17.86v43.55h44.33v-43.55c15.75,-3.04 30.46,-9.19 43.25,-17.82l30.74,30.72l31.34,-31.32L254.88,262.34zM158.07,245.26c-26.66,0 -48.32,-21.68 -48.32,-48.36c0,-26.7 21.66,-48.32 48.32,-48.32c26.68,0 48.36,21.61 48.36,48.32C206.43,223.58 184.75,245.26 158.07,245.26z"/>
|
||||
<path android:fillColor="#000000" android:pathData="M507.5,365.28v-33.69h-33.09c-2.24,-12.02 -6.88,-23.12 -13.52,-32.85l23.34,-23.34l-23.84,-23.84l-23.32,23.34c-9.73,-6.62 -20.92,-11.24 -32.85,-13.57v-33.11h-33.69v33.09c-12.02,2.35 -23.15,6.95 -32.83,13.57l-23.43,-23.34l-23.84,23.81l23.34,23.38c-6.62,9.73 -11.24,20.92 -13.57,32.87h-33.07v33.69h33.07c2.31,11.95 6.95,23.17 13.57,32.85l-23.34,23.34l23.84,23.81l23.34,-23.38c9.69,6.66 20.88,11.28 32.83,13.61v33.11h33.69v-33.11c11.99,-2.29 23.12,-6.95 32.83,-13.52l23.34,23.3l23.81,-23.81l-23.34,-23.34c6.66,-9.69 11.24,-20.97 13.52,-32.85L507.5,365.28L507.5,365.28zM387.3,385.19c-20.25,0 -36.76,-16.48 -36.76,-36.78c0,-20.28 16.5,-36.74 36.76,-36.74c20.3,0 36.76,16.46 36.76,36.74C424.06,368.73 407.6,385.19 387.3,385.19z"/>
|
||||
</vector>
|
|
@ -1,4 +0,0 @@
|
|||
<vector android:height="32dp" android:viewportHeight="512.01"
|
||||
android:viewportWidth="512.01" android:width="32dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#000000" android:pathData="M505.76,123.59c-8.34,-8.34 -21.82,-8.34 -30.17,0L256.01,343.18L36.42,123.59c-8.34,-8.34 -21.82,-8.34 -30.17,0s-8.34,21.82 0,30.17l234.67,234.67c4.16,4.16 9.62,6.25 15.08,6.25c5.46,0 10.92,-2.09 15.08,-6.25l234.67,-234.67C514.1,145.42 514.1,131.93 505.76,123.59z"/>
|
||||
</vector>
|
|
@ -1,4 +0,0 @@
|
|||
<vector android:height="32dp" android:viewportHeight="512.01"
|
||||
android:viewportWidth="512.01" android:width="32dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#000000" android:pathData="M388.42,475.59L168.83,256.01L388.42,36.42c8.34,-8.34 8.34,-21.82 0,-30.17s-21.82,-8.34 -30.17,0L123.59,240.92c-8.34,8.34 -8.34,21.82 0,30.17l234.67,234.67c4.16,4.16 9.62,6.25 15.08,6.25c5.46,0 10.92,-2.09 15.08,-6.25C396.76,497.41 396.76,483.93 388.42,475.59z"/>
|
||||
</vector>
|
|
@ -1,4 +0,0 @@
|
|||
<vector android:height="32dp" android:viewportHeight="512.01"
|
||||
android:viewportWidth="512.01" android:width="32dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#000000" android:pathData="M388.42,240.92L153.75,6.26c-8.34,-8.34 -21.82,-8.34 -30.17,0s-8.34,21.82 0,30.17L343.17,256.01L123.59,475.59c-8.34,8.34 -8.34,21.82 0,30.17c4.16,4.16 9.62,6.25 15.08,6.25c5.46,0 10.92,-2.09 15.08,-6.25l234.67,-234.67C396.76,262.75 396.76,249.26 388.42,240.92z"/>
|
||||
</vector>
|
|
@ -1,4 +0,0 @@
|
|||
<vector android:height="32dp" android:viewportHeight="512.01"
|
||||
android:viewportWidth="512.01" android:width="32dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#000000" android:pathData="M505.76,358.26L271.09,123.59c-8.34,-8.34 -21.82,-8.34 -30.17,0L6.26,358.26c-8.34,8.34 -8.34,21.82 0,30.17s21.82,8.34 30.17,0l219.58,-219.58l219.58,219.58c4.16,4.16 9.62,6.25 15.08,6.25c5.46,0 10.92,-2.09 15.08,-6.25C514.1,380.08 514.1,366.6 505.76,358.26z"/>
|
||||
</vector>
|
|
@ -1,6 +0,0 @@
|
|||
<vector android:height="48dp" android:viewportHeight="24"
|
||||
android:viewportWidth="24" android:width="48dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#f9fbff"
|
||||
android:pathData="M6,0.5L18,0.5A5.5,5.5 0,0 1,23.5 6L23.5,18A5.5,5.5 0,0 1,18 23.5L6,23.5A5.5,5.5 0,0 1,0.5 18L0.5,6A5.5,5.5 0,0 1,6 0.5z"
|
||||
android:strokeColor="#868c8f" android:strokeWidth="1"/>
|
||||
</vector>
|
|
@ -1,7 +0,0 @@
|
|||
<vector android:height="48dp" android:viewportHeight="24"
|
||||
android:viewportWidth="24" android:width="48dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#f9fbff"
|
||||
android:pathData="M6,0.5L18,0.5A5.5,5.5 0,0 1,23.5 6L23.5,18A5.5,5.5 0,0 1,18 23.5L6,23.5A5.5,5.5 0,0 1,0.5 18L0.5,6A5.5,5.5 0,0 1,6 0.5z"
|
||||
android:strokeColor="#868c8f" android:strokeWidth="1"/>
|
||||
<path android:fillColor="#494c4e" android:pathData="M19.707,7.293a1,1 0,0 0,-1.414 0L10,15.586 6.707,12.293a1,1 0,0 0,-1.414 1.414l4,4a1,1 0,0 0,1.414 0l9,-9A1,1 0,0 0,19.707 7.293Z"/>
|
||||
</vector>
|
|
@ -1,51 +0,0 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="48dp"
|
||||
android:height="48dp"
|
||||
android:viewportWidth="587.03"
|
||||
android:viewportHeight="587.03">
|
||||
<path
|
||||
android:pathData="M402.37,186.22c-10.97,0 -19.9,8.92 -19.9,19.9s8.92,19.9 19.9,19.9c10.97,0 19.9,-8.93 19.9,-19.9S413.35,186.22 402.37,186.22z"
|
||||
android:fillColor="#000000"/>
|
||||
<path
|
||||
android:pathData="M360.36,67.14c-2.7,-1.5 -5.65,-2.03 -8.72,-2.03c-38.74,0 -77.5,0 -116.24,0c-1.72,0 -3.42,0.16 -5.09,0.61c-3.71,0.99 -6.73,2.96 -8.81,6.25c-1.97,3.12 -2.58,6.55 -2.04,10.16c0.75,4.99 3.4,8.62 7.94,10.83c2.52,1.23 5.21,1.63 7.98,1.63c19.38,0 38.76,0 58.14,0c19.37,0 38.73,0 58.1,0c1.65,0 3.29,-0.14 4.9,-0.54c3.5,-0.87 6.43,-2.63 8.54,-5.59c2.33,-3.27 3.09,-6.95 2.51,-10.89C366.91,72.94 364.48,69.43 360.36,67.14zM249.37,88.98c-0.35,0 -0.68,0 -1,0c-1.39,0 -2.8,-0.01 -4.19,0.01c-0.31,0.01 -0.47,-0.1 -0.63,-0.35c-2.47,-3.99 -4.94,-7.97 -7.42,-11.96c-0.08,-0.13 -0.17,-0.26 -0.25,-0.39c-0.04,0.01 -0.07,0.01 -0.1,0.02c0,2.1 0,4.2 0,6.3c0,2.11 0,4.21 0,6.35c-1.88,0 -3.71,0 -5.59,0c0,-6.08 0,-12.17 0,-18.3c0.15,0 0.29,0 0.42,0c1.59,0 3.16,0.01 4.75,-0.01c0.34,-0.01 0.53,0.09 0.72,0.39c2.44,3.98 4.89,7.94 7.34,11.91c0.08,0.14 0.17,0.26 0.34,0.38c0,-4.21 0,-8.42 0,-12.65c1.9,0 3.74,0 5.61,0C249.37,76.77 249.37,82.86 249.37,88.98zM252.59,70.65c0.92,0 1.82,0 2.73,0c0.89,0 1.79,0 2.72,0c0,1.22 0,2.42 0,3.67c-1.79,0 -3.61,0 -5.45,0C252.59,73.1 252.59,71.89 252.59,70.65zM258.06,88.95c-1.82,0 -3.61,0 -5.44,0c0,-4.03 0,-8.06 0,-12.11c1.81,0 3.61,0 5.44,0C258.06,80.9 258.06,84.91 258.06,88.95zM277.19,88.95c-1.79,0 -3.56,0 -5.4,0c0,-0.15 0,-0.3 0,-0.45c0,-2.41 0,-4.82 0,-7.23c0,-1.26 -0.76,-2.24 -1.95,-2.49c-1.27,-0.27 -2.6,0.34 -3.07,1.46c-0.14,0.32 -0.18,0.69 -0.18,1.03c-0.01,2.4 0,4.8 0.01,7.2c0,0.15 0,0.31 0,0.49c-1.84,0 -3.6,0 -5.4,0c0,-4.04 0,-8.07 0,-12.12c1.78,0 3.56,0 5.4,0c0,0.38 0,0.76 0,1.24c0.2,-0.16 0.31,-0.24 0.42,-0.33c2.52,-2.11 6.36,-1.95 8.64,0.37c1.06,1.08 1.53,2.42 1.55,3.9c0.04,2.25 0.01,4.51 0.01,6.76C277.21,88.83 277.19,88.88 277.19,88.95zM285.78,88.94c-1.84,0 -3.65,0 -5.51,0c0,-4.03 0,-8.07 0,-12.14c-1.01,0 -1.96,0 -2.99,0c0,-0.56 -0.01,-1.1 0.02,-1.63c0,-0.06 0.21,-0.15 0.34,-0.15c0.86,-0.01 1.71,-0.01 2.62,-0.01c0,-0.82 0,-1.62 0,-2.44c1.85,0 3.65,0 5.51,0c0,0.8 0,1.59 0,2.42c1,0 1.97,0 2.96,0c0,0.62 0,1.19 0,1.8c-0.99,0 -1.94,0 -2.93,0C285.78,80.86 285.78,84.88 285.78,88.94zM294.02,86.4c0.17,1.18 1.16,1.85 2.33,1.81c1.07,-0.04 1.94,-0.86 2.1,-2.01c0.07,-0.47 0.07,-0.94 0.12,-1.46c0.89,0 1.78,0 2.67,0c0.88,0 1.76,0 2.7,0c-0.07,0.2 -0.12,0.37 -0.2,0.53c-0.95,2.06 -2.6,3.34 -4.72,3.98c-3.07,0.94 -5.96,0.54 -8.51,-1.48c-1.7,-1.35 -2.59,-3.13 -2.44,-5.35c0.12,-1.71 0.91,-3.1 2.17,-4.21c1.89,-1.66 4.13,-2.3 6.62,-2.12c2.14,0.15 4.01,0.94 5.53,2.48c1.19,1.21 1.91,2.89 1.85,4.36c-3.46,0 -6.89,0 -10.42,0C293.89,84.12 293.85,85.28 294.02,86.4zM322,88.94c-1.77,0 -3.54,0 -5.37,0c-0.01,-0.15 -0.03,-0.32 -0.03,-0.48c0,-2.38 0,-4.75 0,-7.12c0,-1.25 -0.59,-2.12 -1.68,-2.49c-1.1,-0.37 -2.35,0 -3.05,0.91c-0.33,0.42 -0.47,0.9 -0.47,1.44c0.01,2.4 0.01,4.8 0.01,7.2c0,0.17 0,0.34 0,0.54c-1.81,0 -3.59,0 -5.4,0c0,-4.03 0,-8.05 0,-12.1c1.79,0 3.56,0 5.4,0c0,0.39 0,0.77 0,1.27c0.21,-0.17 0.32,-0.27 0.44,-0.37c2.66,-2.22 6.79,-1.9 8.92,0.71c0.75,0.92 1.19,1.98 1.22,3.15c0.05,2.38 0.03,4.74 0.04,7.12C322.04,88.79 322.02,88.85 322,88.94zM339.36,88.95c-1.79,0 -3.56,0 -5.37,0c-0.02,-0.2 -0.04,-0.4 -0.05,-0.67c-1.85,1.08 -3.78,1.35 -5.8,0.66c-1.32,-0.45 -2.37,-1.3 -3.17,-2.44c-1.53,-2.17 -1.51,-5.16 0.07,-7.38c0.66,-0.93 1.49,-1.66 2.52,-2.18c1.02,-0.51 2.09,-0.7 3.21,-0.62c1.14,0.07 2.15,0.52 3.2,1.09c0,-1.17 0,-2.28 0,-3.38c0,-1.11 0,-2.21 0,-3.37c1.82,0 3.59,0 5.39,0C339.36,76.77 339.36,82.85 339.36,88.95zM354.84,87.72c-1.63,1.33 -3.52,1.91 -5.78,1.92c-2.03,-0.03 -4.02,-0.68 -5.68,-2.17c-2.9,-2.62 -2.86,-6.79 0.07,-9.38c3.18,-2.79 8.4,-2.82 11.56,-0.05C358.13,80.76 358.05,85.11 354.84,87.72z"
|
||||
android:fillColor="#000000"/>
|
||||
<path
|
||||
android:pathData="M440.3,228.14c-10.97,0 -19.9,8.92 -19.9,19.9s8.92,19.9 19.9,19.9c10.97,0 19.9,-8.92 19.9,-19.9S451.28,228.14 440.3,228.14z"
|
||||
android:fillColor="#000000"/>
|
||||
<path
|
||||
android:pathData="M535.02,94.32V76.35c-36.94,-28.95 -120.28,-30.45 -120.28,-30.45l-4.49,-6.98C358.82,7.77 294.7,9.93 293.52,9.97C292.33,9.93 228.21,7.77 176.79,38.92l-4.49,6.99c0,0 -83.35,1.5 -120.28,30.45v17.97c0,0 -41.09,36.27 -41.09,81.52s-30.61,188.32 10.65,266.84c41.26,78.51 77.85,-61.23 81.85,-87.18c4,-25.95 17.97,-57.9 26.62,-62.55c0,0 76.52,-5.32 79.85,54.56c3.32,59.85 24.93,226.7 83.57,229.57v0.01c0.02,0 0.04,-0.01 0.05,-0.01s0.04,0.01 0.06,0.01v-0.01c58.64,-2.87 80.25,-169.72 83.57,-229.57c3.33,-59.89 79.85,-54.56 79.85,-54.56c8.65,4.66 22.63,36.6 26.62,62.55s40.59,165.7 81.85,87.17c41.26,-78.53 10.65,-221.59 10.65,-266.84C576.11,130.59 535.02,94.32 535.02,94.32zM161.05,192.8c0,4.99 -4.06,9.05 -9.05,9.05H130.1v21.89c0,4.99 -4.06,9.05 -9.05,9.05h-15.97c-4.99,0 -9.05,-4.06 -9.05,-9.05v-21.89H74.13c-4.99,0 -9.05,-4.06 -9.05,-9.05v-15.97c0,-4.99 4.06,-9.05 9.05,-9.05H96.03v-21.89c0,-4.99 4.06,-9.05 9.05,-9.05h15.97c4.99,0 9.05,4.06 9.05,9.05v21.89h21.9c4.99,0 9.05,4.06 9.05,9.05V192.8zM485.22,114.72c11.05,0 20.03,8.98 20.03,20.02c0,11.04 -8.98,20.02 -20.03,20.02c-11.04,0 -20.02,-8.98 -20.02,-20.02C465.2,123.7 474.18,114.72 485.22,114.72zM451.28,148.65c11.05,0 20.03,8.98 20.03,20.02s-8.98,20.03 -20.03,20.03c-11.04,0 -20.02,-8.99 -20.02,-20.03S440.24,148.65 451.28,148.65zM293.52,388.07c-34.65,0 -62.84,-28.19 -62.84,-62.84s28.19,-62.85 62.84,-62.85c34.65,0 62.84,28.19 62.84,62.85C356.36,359.88 328.17,388.07 293.52,388.07zM267.5,211.1c0,-14.35 11.67,-26.02 26.02,-26.02s26.02,11.67 26.02,26.02c0,14.35 -11.67,26.02 -26.02,26.02S267.5,225.45 267.5,211.1zM371.84,85.35c-2.11,7.41 -8.4,12.66 -16.54,13.75c-0.75,0.1 -1.51,0.17 -2.27,0.25c-39.66,0 -79.32,0 -118.98,0c-0.5,-0.05 -0.99,-0.11 -1.49,-0.16c-2.83,-0.28 -5.54,-1.03 -8.04,-2.4c-5.59,-3.08 -8.89,-7.79 -9.86,-14.11c-0.1,-0.69 -0.16,-1.38 -0.24,-2.08c0,-0.48 0,-0.95 0,-1.43c0.08,-0.7 0.14,-1.41 0.24,-2.11c0.72,-4.9 2.96,-8.97 6.8,-12.1c3.93,-3.21 8.52,-4.58 13.53,-4.58c39.03,-0.01 78.05,-0.01 117.07,-0.01c2.05,0 4.07,0.25 6.05,0.79C369.24,64.16 374.76,75.05 371.84,85.35zM376.36,206.11c0,-14.35 11.67,-26.02 26.02,-26.02c14.35,0 26.02,11.67 26.02,26.02c0,14.35 -11.67,26.02 -26.02,26.02C388.03,232.13 376.36,220.46 376.36,206.11zM440.3,274.05c-14.35,0 -26.02,-11.67 -26.02,-26.02s11.67,-26.02 26.02,-26.02c14.35,0 26.02,11.67 26.02,26.02S454.65,274.05 440.3,274.05zM485.22,222.65c-11.04,0 -20.02,-8.98 -20.02,-20.02s8.98,-20.02 20.02,-20.02c11.05,0 20.03,8.98 20.03,20.02S496.27,222.65 485.22,222.65zM519.16,188.71c-11.04,0 -20.02,-8.99 -20.02,-20.03s8.98,-20.02 20.02,-20.02c11.05,0 20.03,8.98 20.03,20.02S530.21,188.71 519.16,188.71z"
|
||||
android:fillColor="#000000"/>
|
||||
<path
|
||||
android:pathData="M351.21,78.8c-0.33,-0.89 -1.05,-1.35 -2,-1.35c-0.92,0 -1.64,0.44 -1.98,1.32c-0.18,0.48 -0.29,1.02 -0.29,1.54c-0.04,1.67 -0.02,3.35 -0.01,5.02c0,0.29 0.03,0.58 0.08,0.86c0.2,1.13 1.03,1.92 2.07,1.95c1.29,0.05 2.28,-0.83 2.36,-2.19c0.06,-1.05 0.01,-2.11 0.01,-3.16c0.02,0 0.03,0 0.05,0c0,-0.79 0.04,-1.59 -0.01,-2.38C351.46,79.87 351.4,79.31 351.21,78.8z"
|
||||
android:fillColor="#000000"/>
|
||||
<path
|
||||
android:pathData="M485.22,202.62m-13.9,0a13.9,13.9 0,1 1,27.81 0a13.9,13.9 0,1 1,-27.81 0"
|
||||
android:fillColor="#000000"/>
|
||||
<path
|
||||
android:pathData="M519.16,168.68m-13.91,0a13.91,13.91 0,1 1,27.82 0a13.91,13.91 0,1 1,-27.82 0"
|
||||
android:fillColor="#000000"/>
|
||||
<path
|
||||
android:pathData="M293.52,268.51c-31.27,0 -56.72,25.45 -56.72,56.73s25.45,56.72 56.72,56.72s56.72,-25.44 56.72,-56.72S324.79,268.51 293.52,268.51zM293.52,355.8c-16.85,0 -30.56,-13.71 -30.56,-30.56s13.71,-30.56 30.56,-30.56c16.85,0 30.56,13.71 30.56,30.56S310.37,355.8 293.52,355.8z"
|
||||
android:fillColor="#000000"/>
|
||||
<path
|
||||
android:pathData="M451.28,168.68m-13.91,0a13.91,13.91 0,1 1,27.82 0a13.91,13.91 0,1 1,-27.82 0"
|
||||
android:fillColor="#000000"/>
|
||||
<path
|
||||
android:pathData="M293.52,300.78c-13.48,0 -24.44,10.97 -24.44,24.44s10.97,24.44 24.44,24.44s24.44,-10.97 24.44,-24.44S306.99,300.78 293.52,300.78z"
|
||||
android:fillColor="#000000"/>
|
||||
<path
|
||||
android:pathData="M485.22,134.75m-13.9,0a13.9,13.9 0,1 1,27.81 0a13.9,13.9 0,1 1,-27.81 0"
|
||||
android:fillColor="#000000"/>
|
||||
<path
|
||||
android:pathData="M296.28,77.51c-1.09,-0.04 -2.06,0.72 -2.27,1.81c-0.09,0.46 -0.07,0.94 -0.12,1.41c-0.02,0.26 0.08,0.35 0.34,0.34c0.66,-0.01 1.32,-0.01 1.98,-0.01c0.66,0 1.32,-0.01 1.98,0.01c0.28,0.01 0.38,-0.09 0.35,-0.37c-0.04,-0.42 -0.03,-0.84 -0.09,-1.26C298.28,78.35 297.36,77.54 296.28,77.51z"
|
||||
android:fillColor="#000000"/>
|
||||
<path
|
||||
android:pathData="M152,173.9h-28.02v-28.01c0,-1.62 -1.32,-2.93 -2.93,-2.93h-15.97c-1.62,0 -2.93,1.32 -2.93,2.93v28.01H74.13c-1.62,0 -2.93,1.32 -2.93,2.93v15.97c0,1.62 1.32,2.93 2.93,2.93h28.02v28.01c0,1.62 1.32,2.93 2.93,2.93h15.97c1.62,0 2.93,-1.32 2.93,-2.93v-28.01h28.02c1.62,0 2.93,-1.32 2.93,-2.93v-15.97C154.93,175.22 153.61,173.9 152,173.9z"
|
||||
android:fillColor="#000000"/>
|
||||
<path
|
||||
android:pathData="M313.42,211.1c0,-10.97 -8.92,-19.9 -19.9,-19.9c-10.97,0 -19.9,8.92 -19.9,19.9s8.92,19.9 19.9,19.9C304.49,231 313.42,222.07 313.42,211.1z"
|
||||
android:fillColor="#000000"/>
|
||||
<path
|
||||
android:pathData="M331.8,78.27c-1.21,0.02 -2.09,0.81 -2.12,2c-0.04,1.7 -0.04,3.4 0,5.1c0.03,1.18 0.91,2 2.1,2.04c1.16,0.04 2.1,-0.75 2.18,-1.94c0.06,-0.86 0.01,-1.74 0.01,-2.61l0,0c0,-0.89 0.05,-1.79 -0.01,-2.69C333.88,78.99 332.98,78.25 331.8,78.27z"
|
||||
android:fillColor="#000000"/>
|
||||
</vector>
|
|
@ -1,36 +0,0 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="30dp"
|
||||
android:height="30dp"
|
||||
android:viewportWidth="64"
|
||||
android:viewportHeight="64">
|
||||
<path
|
||||
android:strokeWidth="1"
|
||||
android:pathData="M14.55,40.17c3.53,2.67 8.86,5.46 17.45,5.46s13.92,-2.79 17.45,-5.46"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#000000"/>
|
||||
<path
|
||||
android:strokeWidth="1"
|
||||
android:pathData="M48,22.18c-4.31,-2.2 -8.57,-4.26 -16,-4.26S20.33,20 16,22.18"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#000000"/>
|
||||
<path
|
||||
android:strokeWidth="1"
|
||||
android:pathData="m27.32,18.23 l-1.87,-3.68a22.75,22.75 0,0 0,-10.9 4.36S9,27 8,42.91c5.63,6.49 14.18,6.54 14.18,6.54L25.5,45"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#000000"/>
|
||||
<path
|
||||
android:strokeWidth="1"
|
||||
android:pathData="m38.5,45 l3.32,4.42s8.55,-0.02 14.18,-6.51c-1,-15.9 -6.55,-24 -6.55,-24s-5,-3.92 -10.9,-4.36l-1.82,3.69"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#000000"/>
|
||||
<path
|
||||
android:strokeWidth="1"
|
||||
android:pathData="M21.09,34.18a3.82,4.36 0,1 0,7.64 0a3.82,4.36 0,1 0,-7.64 0z"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#000000"/>
|
||||
<path
|
||||
android:strokeWidth="1"
|
||||
android:pathData="M35.27,34.18a3.82,4.36 0,1 0,7.64 0a3.82,4.36 0,1 0,-7.64 0z"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#000000"/>
|
||||
</vector>
|
|
@ -1,10 +0,0 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="30dp"
|
||||
android:height="30dp"
|
||||
android:viewportWidth="512"
|
||||
android:viewportHeight="512">
|
||||
<path
|
||||
android:pathData="M426.67,213.33L426.67,128L274.71,128L220.75,85.33L42.67,85.33L42.67,426.67L103.6,426.67L406.08,426.67L415.25,426.67L480,213.33L426.67,213.33ZM85.33,338.77L85.33,128L205.92,128L259.88,170.67L384,170.67L384,213.33L124.69,213.33L85.33,338.77ZM383.63,384L115.85,384L156.02,256L422.46,256L383.63,384Z"
|
||||
android:fillColor="#000000"
|
||||
android:fillType="evenOdd"/>
|
||||
</vector>
|
|
@ -1,30 +0,0 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="48dp"
|
||||
android:height="48dp"
|
||||
android:viewportWidth="512"
|
||||
android:viewportHeight="512">
|
||||
<path
|
||||
android:pathData="M173.87,296.61h-20.61v-20.61c0,-10.38 -8.45,-18.83 -18.83,-18.83H111.82c-10.38,0 -18.83,8.45 -18.83,18.83v20.61H72.38c-10.38,0 -18.83,8.45 -18.83,18.83v22.61c0,10.38 8.45,18.83 18.83,18.83H92.99v20.61c0,10.38 8.45,18.83 18.83,18.83h22.61c10.38,0 18.83,-8.45 18.83,-18.83v-20.61h20.61c10.38,0 18.83,-8.45 18.83,-18.83V315.44C192.7,305.06 184.25,296.61 173.87,296.61zM173.87,340.74h-28.68c-4.46,0 -8.07,3.61 -8.07,8.07v28.68c0,1.46 -1.23,2.69 -2.69,2.69H111.82c-1.46,0 -2.69,-1.23 -2.69,-2.69v-28.68c0,-4.46 -3.61,-8.07 -8.07,-8.07H72.38c-1.46,0 -2.69,-1.23 -2.69,-2.69V315.44c0,-1.46 1.23,-2.69 2.69,-2.69h28.68c4.46,0 8.07,-3.61 8.07,-8.07v-28.68c0,-1.46 1.23,-2.69 2.69,-2.69h22.61c1.46,0 2.69,1.23 2.69,2.69v28.68c0,4.46 3.61,8.07 8.07,8.07h28.68c1.46,0 2.69,1.23 2.69,2.69v22.61h0C176.56,339.51 175.33,340.74 173.87,340.74z"
|
||||
android:fillColor="#000000"/>
|
||||
<path
|
||||
android:pathData="M226.95,257.17h-25.82c-4.46,0 -8.07,3.61 -8.07,8.07s3.61,8.07 8.07,8.07h25.82c4.46,0 8.07,-3.61 8.07,-8.07S231.4,257.17 226.95,257.17z"
|
||||
android:fillColor="#000000"/>
|
||||
<path
|
||||
android:pathData="M318.95,265.24c0,-4.46 -3.61,-8.07 -8.07,-8.07h-25.82c-4.46,0 -8.07,3.61 -8.07,8.07s3.61,8.07 8.07,8.07h25.82C315.33,273.31 318.95,269.7 318.95,265.24z"
|
||||
android:fillColor="#000000"/>
|
||||
<path
|
||||
android:pathData="M388.88,310.62c16.62,0 30.14,-13.52 30.14,-30.14c0,-16.62 -13.52,-30.14 -30.14,-30.14c-16.62,0 -30.14,13.52 -30.14,30.14C358.74,297.1 372.26,310.62 388.88,310.62zM388.88,266.48c7.72,0 14,6.28 14,14s-6.28,14 -14,14c-7.72,0 -14,-6.28 -14,-14S381.16,266.48 388.88,266.48z"
|
||||
android:fillColor="#000000"/>
|
||||
<path
|
||||
android:pathData="M435.15,296.61c-16.62,0 -30.14,13.52 -30.14,30.14s13.52,30.14 30.14,30.14c16.62,0 30.14,-13.52 30.14,-30.14S451.76,296.61 435.15,296.61zM435.15,340.74c-7.72,0 -14,-6.28 -14,-14s6.28,-14 14,-14s14,6.28 14,14S442.86,340.74 435.15,340.74z"
|
||||
android:fillColor="#000000"/>
|
||||
<path
|
||||
android:pathData="M393.66,208.4h-67.77v-8.07c0,-13.35 -10.86,-24.21 -24.21,-24.21h-37.61v-6.81c0,-21.56 17.54,-39.09 39.09,-39.09h54.02c30.46,0 55.23,-24.78 55.23,-55.23c0,-4.46 -3.61,-8.07 -8.07,-8.07s-8.07,3.61 -8.07,8.07c0,21.56 -17.54,39.09 -39.09,39.09h-54.02c-30.46,0 -55.23,24.78 -55.23,55.23v6.81h-37.61c-13.35,0 -24.21,10.86 -24.21,24.21v8.07h-67.76c-0,-0 -0,-0 -0.01,0C53.09,208.4 0,261.49 0,326.75C0,392 53.09,445.09 118.34,445.09c19.4,0 38.64,-4.8 55.64,-13.88c0.18,-0.1 0.36,-0.2 0.54,-0.31c20.84,-12.29 45.15,-23.63 81.48,-23.63c36.28,0 60.57,11.3 81.39,23.57c0.2,0.13 0.41,0.26 0.63,0.37c17.01,9.08 36.25,13.87 55.65,13.87c65.25,0 118.34,-53.09 118.34,-118.34S458.91,208.4 393.66,208.4zM202.25,200.34c0,-4.45 3.62,-8.07 8.07,-8.07h91.36c4.45,0 8.07,3.62 8.07,8.07v8.07H202.25V200.34zM393.66,428.95c-16.63,0 -33.13,-4.08 -47.72,-11.8c-0,-0 -0.01,-0 -0.01,-0.01C323.06,403.63 296.34,391.13 256,391.13c-40.3,0 -67,12.48 -89.85,25.97c-14.62,7.75 -31.14,11.85 -47.81,11.85c-56.35,0 -102.2,-45.85 -102.2,-102.2c0,-56.2 45.6,-101.96 101.75,-102.2c0.3,0.02 0.61,0.02 0.92,-0h274.85c56.35,0 102.2,45.85 102.2,102.2S450.01,428.95 393.66,428.95z"
|
||||
android:fillColor="#000000"/>
|
||||
<path
|
||||
android:pathData="M388.88,342.88c-16.62,0 -30.14,13.52 -30.14,30.14c0,16.62 13.52,30.14 30.14,30.14c16.62,0 30.14,-13.52 30.14,-30.14S405.5,342.88 388.88,342.88zM388.88,387.01c-7.72,0 -14,-6.28 -14,-14s6.28,-14 14,-14s14,6.28 14,14S396.6,387.01 388.88,387.01z"
|
||||
android:fillColor="#000000"/>
|
||||
<path
|
||||
android:pathData="M372.75,326.75c0,-16.62 -13.52,-30.14 -30.14,-30.14c-16.62,0 -30.14,13.52 -30.14,30.14c0,16.62 13.52,30.14 30.14,30.14C359.23,356.88 372.75,343.36 372.75,326.75zM342.61,340.74c-7.72,0 -14,-6.28 -14,-14s6.28,-14 14,-14s14,6.28 14,14S350.33,340.74 342.61,340.74z"
|
||||
android:fillColor="#000000"/>
|
||||
</vector>
|
|
@ -1,9 +0,0 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="48dp"
|
||||
android:height="48dp"
|
||||
android:viewportWidth="16"
|
||||
android:viewportHeight="16">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M11.5,0h-7C3.675,0 3,0.675 3,1.5v13C3,15.325 3.675,16 4.5,16h7c0.825,0 1.5,-0.675 1.5,-1.5v-13C13,0.675 12.325,0 11.5,0zM8,15c-0.553,0 -1,-0.447 -1,-1s0.447,-1 1,-1s1,0.447 1,1S8.553,15 8,15zM12,12H4V2h8V12z"/>
|
||||
</vector>
|
|
@ -1,9 +0,0 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="48dp"
|
||||
android:height="48dp"
|
||||
android:viewportWidth="32"
|
||||
android:viewportHeight="32">
|
||||
<path
|
||||
android:pathData="M30,2.497h-28c-1.099,0 -2,0.901 -2,2v23.006c0,1.099 0.9,2 2,2h28c1.099,0 2,-0.901 2,-2v-23.006c0,-1.099 -0.901,-2 -2,-2zM30,27.503l-28,-0v-5.892l8.027,-7.779 8.275,8.265c0.341,0.414 0.948,0.361 1.379,0.035l3.652,-3.306 6.587,6.762c0.025,0.025 0.053,0.044 0.08,0.065v1.85zM30,22.806l-5.876,-6.013c-0.357,-0.352 -0.915,-0.387 -1.311,-0.086l-3.768,3.282 -8.28,-8.19c-0.177,-0.214 -0.432,-0.344 -0.709,-0.363 -0.275,-0.01 -0.547,0.08 -0.749,0.27l-7.309,7.112v-14.322h28v18.309zM23,12.504c1.102,0 1.995,-0.894 1.995,-1.995s-0.892,-1.995 -1.995,-1.995 -1.995,0.894 -1.995,1.995c0,1.101 0.892,1.995 1.995,1.995z"
|
||||
android:fillColor="#000000"/>
|
||||
</vector>
|
|
@ -1,6 +0,0 @@
|
|||
<vector android:height="48dp" android:viewportHeight="28"
|
||||
android:viewportWidth="28" android:width="48dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#000000" android:fillType="evenOdd"
|
||||
android:pathData="M24.415,12.554L5.418,0.311C4.291,-0.296 3,-0.233 3,1.946L3,26.054C3,28.046 4.385,28.36 5.418,27.689L24.415,15.446C25.197,14.647 25.197,13.353 24.415,12.554"
|
||||
android:strokeColor="#00000000" android:strokeWidth="1"/>
|
||||
</vector>
|
|
@ -1,4 +0,0 @@
|
|||
<vector android:height="48dp" android:viewportHeight="1024"
|
||||
android:viewportWidth="1024" android:width="48dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#000000" android:pathData="M784.5,230.3v-50.6a32,32 0,1 1,64 0v149.1a32,32 0,0 1,-32 32H667.5a32,32 0,1 1,0 -64h93A320,320 0,1 0,524.8 833.2a320,320 0,0 0,320 -320h64a384,384 0,0 1,-384 384,384 384,0 0,1 -384,-384 384,384 0,0 1,643.7 -282.9z"/>
|
||||
</vector>
|
|
@ -1,14 +0,0 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="30dp"
|
||||
android:height="30dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:pathData="M12,8.25C9.929,8.25 8.25,9.929 8.25,12C8.25,14.071 9.929,15.75 12,15.75C14.071,15.75 15.75,14.071 15.75,12C15.75,9.929 14.071,8.25 12,8.25ZM9.75,12C9.75,10.757 10.757,9.75 12,9.75C13.243,9.75 14.25,10.757 14.25,12C14.25,13.243 13.243,14.25 12,14.25C10.757,14.25 9.75,13.243 9.75,12Z"
|
||||
android:fillColor="#1C274C"
|
||||
android:fillType="evenOdd"/>
|
||||
<path
|
||||
android:pathData="M11.975,1.25C11.53,1.25 11.159,1.25 10.855,1.271C10.538,1.292 10.238,1.339 9.948,1.459C9.274,1.738 8.738,2.274 8.459,2.948C8.314,3.298 8.275,3.668 8.26,4.07C8.248,4.393 8.085,4.663 7.844,4.801C7.603,4.94 7.288,4.947 7.003,4.796C6.647,4.608 6.307,4.457 5.931,4.407C5.208,4.312 4.476,4.508 3.898,4.952C3.648,5.144 3.458,5.38 3.281,5.643C3.111,5.897 2.925,6.218 2.703,6.603L2.678,6.647C2.455,7.032 2.27,7.353 2.136,7.627C1.996,7.913 1.886,8.195 1.845,8.507C1.75,9.23 1.946,9.961 2.39,10.54C2.621,10.841 2.922,11.06 3.262,11.274C3.536,11.446 3.688,11.722 3.688,12C3.688,12.278 3.536,12.554 3.262,12.726C2.922,12.94 2.621,13.159 2.39,13.46C1.946,14.038 1.75,14.77 1.845,15.493C1.886,15.804 1.996,16.087 2.136,16.373C2.27,16.647 2.455,16.968 2.678,17.353L2.703,17.397C2.925,17.782 3.111,18.103 3.281,18.357C3.458,18.62 3.648,18.856 3.898,19.048C4.476,19.492 5.208,19.688 5.931,19.593C6.307,19.543 6.647,19.392 7.003,19.204C7.288,19.053 7.603,19.06 7.844,19.199C8.085,19.337 8.248,19.607 8.26,19.93C8.275,20.332 8.314,20.702 8.459,21.052C8.738,21.726 9.274,22.262 9.948,22.541C10.238,22.661 10.538,22.708 10.855,22.729C11.159,22.75 11.53,22.75 11.975,22.75H12.025C12.47,22.75 12.841,22.75 13.145,22.729C13.462,22.708 13.762,22.661 14.052,22.541C14.726,22.262 15.262,21.726 15.541,21.052C15.686,20.702 15.725,20.332 15.74,19.93C15.752,19.607 15.915,19.337 16.156,19.198C16.397,19.06 16.712,19.053 16.997,19.204C17.353,19.392 17.693,19.543 18.069,19.592C18.792,19.688 19.524,19.492 20.102,19.048C20.352,18.856 20.542,18.62 20.719,18.357C20.889,18.103 21.075,17.782 21.297,17.397L21.322,17.353C21.545,16.968 21.73,16.647 21.864,16.373C22.004,16.087 22.114,15.804 22.155,15.493C22.25,14.77 22.054,14.038 21.61,13.46C21.379,13.159 21.078,12.94 20.738,12.726C20.464,12.554 20.312,12.278 20.312,12C20.312,11.722 20.464,11.446 20.738,11.274C21.078,11.06 21.379,10.841 21.61,10.54C22.054,9.961 22.25,9.23 22.155,8.507C22.114,8.195 22.004,7.913 21.865,7.627C21.73,7.353 21.545,7.032 21.322,6.647L21.297,6.603C21.075,6.218 20.889,5.897 20.719,5.643C20.542,5.38 20.352,5.144 20.102,4.952C19.524,4.508 18.792,4.312 18.069,4.407C17.693,4.457 17.353,4.608 16.997,4.796C16.712,4.947 16.397,4.94 16.156,4.801C15.915,4.663 15.752,4.393 15.74,4.07C15.725,3.668 15.686,3.298 15.541,2.948C15.262,2.274 14.726,1.738 14.052,1.459C13.762,1.339 13.462,1.292 13.145,1.271C12.841,1.25 12.47,1.25 12.025,1.25H11.975ZM10.522,2.845C10.599,2.813 10.716,2.784 10.957,2.767C11.204,2.75 11.524,2.75 12,2.75C12.476,2.75 12.796,2.75 13.043,2.767C13.284,2.784 13.401,2.813 13.478,2.845C13.785,2.972 14.028,3.215 14.155,3.522C14.195,3.618 14.228,3.769 14.241,4.126C14.271,4.918 14.68,5.681 15.406,6.1C16.132,6.52 16.997,6.492 17.698,6.122C18.014,5.955 18.161,5.908 18.265,5.895C18.594,5.851 18.926,5.94 19.189,6.142C19.255,6.193 19.34,6.28 19.474,6.48C19.612,6.686 19.773,6.963 20.011,7.375C20.249,7.787 20.408,8.064 20.517,8.287C20.624,8.504 20.657,8.62 20.667,8.703C20.711,9.032 20.622,9.364 20.42,9.627C20.356,9.71 20.242,9.814 19.94,10.004C19.268,10.426 18.812,11.162 18.812,12C18.812,12.838 19.268,13.574 19.94,13.996C20.242,14.186 20.356,14.29 20.42,14.373C20.622,14.636 20.711,14.968 20.667,15.297C20.656,15.38 20.623,15.496 20.517,15.713C20.408,15.936 20.249,16.212 20.011,16.625C19.772,17.037 19.612,17.314 19.474,17.52C19.339,17.72 19.255,17.807 19.189,17.858C18.926,18.059 18.594,18.149 18.265,18.105C18.161,18.092 18.014,18.045 17.698,17.878C16.997,17.507 16.132,17.48 15.406,17.899C14.68,18.319 14.271,19.082 14.241,19.874C14.228,20.231 14.195,20.382 14.155,20.478C14.028,20.785 13.785,21.028 13.478,21.155C13.401,21.187 13.284,21.216 13.043,21.233C12.796,21.25 12.476,21.25 12,21.25C11.524,21.25 11.204,21.25 10.957,21.233C10.716,21.216 10.599,21.187 10.522,21.155C10.215,21.028 9.972,20.785 9.845,20.478C9.805,20.382 9.772,20.231 9.759,19.874C9.729,19.082 9.32,18.319 8.594,17.899C7.868,17.48 7.003,17.508 6.302,17.878C5.986,18.045 5.839,18.092 5.735,18.105C5.406,18.149 5.074,18.059 4.811,17.858C4.745,17.807 4.66,17.72 4.526,17.52C4.388,17.314 4.227,17.037 3.989,16.625C3.751,16.213 3.592,15.936 3.483,15.713C3.376,15.496 3.343,15.38 3.332,15.297C3.289,14.968 3.378,14.636 3.58,14.373C3.644,14.29 3.758,14.186 4.06,13.996C4.732,13.574 5.188,12.838 5.188,12C5.188,11.162 4.732,10.426 4.06,10.004C3.758,9.814 3.644,9.71 3.58,9.627C3.378,9.364 3.289,9.031 3.333,8.703C3.343,8.62 3.377,8.504 3.483,8.287C3.592,8.064 3.751,7.787 3.989,7.375C4.227,6.963 4.388,6.686 4.526,6.48C4.661,6.28 4.745,6.193 4.811,6.142C5.074,5.94 5.406,5.851 5.735,5.895C5.839,5.908 5.986,5.955 6.302,6.122C7.003,6.492 7.868,6.52 8.594,6.1C9.32,5.681 9.729,4.918 9.759,4.126C9.772,3.769 9.805,3.618 9.845,3.522C9.972,3.215 10.215,2.972 10.522,2.845Z"
|
||||
android:fillColor="#1C274C"
|
||||
android:fillType="evenOdd"/>
|
||||
</vector>
|
|
@ -1,4 +0,0 @@
|
|||
<vector android:height="48dp" android:viewportHeight="16"
|
||||
android:viewportWidth="16" android:width="48dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#000000" android:fillType="evenOdd" android:pathData="M11.5,2a1.5,1.5 0,1 0,0 3,1.5 1.5,0 0,0 0,-3zM9.05,3a2.5,2.5 0,0 1,4.9 0L16,3v1h-2.05a2.5,2.5 0,0 1,-4.9 0L0,4L0,3h9.05zM4.5,7a1.5,1.5 0,1 0,0 3,1.5 1.5,0 0,0 0,-3zM2.05,8a2.5,2.5 0,0 1,4.9 0L16,8v1L6.95,9a2.5,2.5 0,0 1,-4.9 0L0,9L0,8h2.05zM11.5,12a1.5,1.5 0,1 0,0 3,1.5 1.5,0 0,0 0,-3zM9.05,13a2.5,2.5 0,0 1,4.9 0L16,13v1h-2.05a2.5,2.5 0,0 1,-4.9 0L0,14v-1h9.05z"/>
|
||||
</vector>
|
|
@ -1,9 +0,0 @@
|
|||
<vector android:height="48dp" android:viewportHeight="24"
|
||||
android:viewportWidth="24" android:width="48dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#000000" android:pathData="M12.035,8.521C12.426,8.131 13.067,8.127 13.388,8.576C14.088,9.558 14.5,10.759 14.5,12.057C14.5,13.354 14.088,14.555 13.388,15.537C13.067,15.987 12.426,15.983 12.035,15.592C11.645,15.202 11.659,14.573 11.941,14.098C12.296,13.5 12.5,12.802 12.5,12.057C12.5,11.311 12.296,10.613 11.941,10.016C11.659,9.541 11.645,8.912 12.035,8.521Z"/>
|
||||
<path android:fillColor="#000000" android:pathData="M14.864,5.693C15.255,5.303 15.892,5.3 16.242,5.727C17.653,7.451 18.5,9.655 18.5,12.057C18.5,14.459 17.653,16.663 16.242,18.387C15.892,18.815 15.255,18.812 14.864,18.421C14.473,18.031 14.479,17.401 14.818,16.965C15.872,15.61 16.5,13.907 16.5,12.057C16.5,10.208 15.872,8.504 14.818,7.149C14.479,6.714 14.473,6.084 14.864,5.693Z"/>
|
||||
<path android:fillColor="#000000" android:pathData="M17.693,2.793C18.083,2.403 18.72,2.4 19.081,2.818C21.211,5.274 22.5,8.479 22.5,11.985C22.5,15.531 21.182,18.769 19.008,21.236C18.643,21.65 18.007,21.643 17.62,21.25C17.232,20.856 17.241,20.226 17.601,19.807C19.408,17.706 20.5,14.973 20.5,11.985C20.5,9.031 19.433,6.327 17.663,4.236C17.306,3.814 17.302,3.184 17.693,2.793Z"/>
|
||||
<path android:fillColor="#00000000"
|
||||
android:pathData="M10,16.586V7.414C10,6.523 8.923,6.077 8.293,6.707L6.293,8.707C6.105,8.895 5.851,9 5.586,9H4C3.448,9 3,9.448 3,10V14C3,14.552 3.448,15 4,15H5.586C5.851,15 6.105,15.105 6.293,15.293L8.293,17.293C8.923,17.923 10,17.477 10,16.586Z"
|
||||
android:strokeColor="#000000" android:strokeLineCap="round" android:strokeWidth="2"/>
|
||||
</vector>
|
|
@ -1,6 +0,0 @@
|
|||
<vector android:height="48dp" android:viewportHeight="512"
|
||||
android:viewportWidth="512" android:width="48dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#000000" android:pathData="M0,17.07V153.6h512V17.07H0zM110.93,110.93h-51.2v-51.2h51.2V110.93z"/>
|
||||
<path android:fillColor="#000000" android:pathData="M0,324.27h512V187.73H0V324.27zM59.73,230.39h51.2v51.2h-51.2V230.39z"/>
|
||||
<path android:fillColor="#000000" android:pathData="M0,494.93h512V358.4H0V494.93zM59.73,401.06h51.2v51.2h-51.2V401.06z"/>
|
||||
</vector>
|
|
@ -1,4 +0,0 @@
|
|||
<vector android:height="48dp" android:viewportHeight="24"
|
||||
android:viewportWidth="24" android:width="48dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#1C274C" android:fillType="evenOdd" android:pathData="M7.53,3.47C7.823,3.763 7.823,4.237 7.53,4.53L5.811,6.25H15C18.176,6.25 20.75,8.824 20.75,12C20.75,15.176 18.176,17.75 15,17.75H8C7.586,17.75 7.25,17.414 7.25,17C7.25,16.586 7.586,16.25 8,16.25H15C17.347,16.25 19.25,14.347 19.25,12C19.25,9.653 17.347,7.75 15,7.75H5.811L7.53,9.47C7.823,9.763 7.823,10.237 7.53,10.53C7.237,10.823 6.763,10.823 6.47,10.53L3.47,7.53C3.177,7.237 3.177,6.763 3.47,6.47L6.47,3.47C6.763,3.177 7.237,3.177 7.53,3.47Z"/>
|
||||
</vector>
|
|
@ -1,31 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
<androidx.appcompat.widget.Toolbar
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
android:theme="@style/Theme.Project64.ToolBar"
|
||||
/>
|
||||
<com.google.android.material.tabs.TabLayout
|
||||
android:id="@+id/sliding_tabs"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:tabTextColor="@color/TabInactive"
|
||||
app:tabSelectedTextColor="@color/TabActive"
|
||||
app:tabIndicatorColor="@color/TabActive"
|
||||
app:tabMode="scrollable" />
|
||||
<androidx.viewpager.widget.ViewPager
|
||||
android:id="@+id/pager"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<include layout="@layout/about_main" />
|
||||
<include layout="@layout/about_licence" />
|
||||
</androidx.viewpager.widget.ViewPager>
|
||||
</LinearLayout>
|
|
@ -1,24 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/linearLayout1"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:background="@drawable/border"
|
||||
>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/dlg_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textSize="24sp"
|
||||
android:paddingBottom="16dp"
|
||||
/>
|
||||
|
||||
<ListView
|
||||
android:id="@+id/list_options"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content" />
|
||||
|
||||
</LinearLayout>
|
|
@ -1,27 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingLeft="0dp"
|
||||
android:paddingRight="0dp"
|
||||
android:layout_marginLeft="0dp"
|
||||
android:layout_marginRight="0dp"
|
||||
android:orientation="vertical">
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/text"
|
||||
android:text=""
|
||||
android:textSize="24dp"
|
||||
android:paddingBottom = "20dp"
|
||||
/>
|
||||
<Button
|
||||
style="@style/Theme.Project64.Dialog.Button"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/button"
|
||||
android:gravity="center"
|
||||
android:text="OK"
|
||||
/>
|
||||
</LinearLayout>
|
|
@ -1,18 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
>
|
||||
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@android:id/title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="10dip"
|
||||
android:paddingStart="?attr/listPreferredItemPaddingStart"
|
||||
android:paddingEnd="?attr/listPreferredItemPaddingEnd"
|
||||
android:paddingTop="10dip"
|
||||
android:textColor="?colorAccent"
|
||||
android:textStyle="bold"
|
||||
android:textSize="24dp" />
|
||||
</LinearLayout>
|
|
@ -1,39 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/linearLayout1"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:background="@drawable/border"
|
||||
>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/dlg_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textSize="30sp"
|
||||
android:paddingBottom="16dp"
|
||||
/>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/linearLayout2"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
tools:ignore="RtlHardcoded">
|
||||
|
||||
<ProgressBar
|
||||
android:id="@+id/circleAnimation"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/textMessage"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall"
|
||||
android:paddingLeft="16dp"
|
||||
android:paddingRight="16dp" />
|
||||
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
|
@ -1,14 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@android:id/text1"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?android:attr/listPreferredItemHeightSmall"
|
||||
android:textAppearance="?android:attr/textAppearanceListItemSmall"
|
||||
android:gravity="center_vertical"
|
||||
android:checkMark="@null"
|
||||
android:paddingStart="?android:attr/listPreferredItemPaddingStart"
|
||||
android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
|
||||
android:drawableLeft="?android:attr/listChoiceIndicatorSingle"
|
||||
android:drawablePadding="12dip"
|
||||
android:paddingLeft="4dip"
|
||||
android:paddingRight="4dip" />
|
|
@ -1,22 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<menu xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
<item
|
||||
android:id="@+id/menuItem_GameDir"
|
||||
android:icon="@drawable/ic_folder"
|
||||
app:showAsAction="ifRoom|collapseActionView"
|
||||
android:title="Game Dir" />
|
||||
<item
|
||||
android:id="@+id/menuItem_settings"
|
||||
android:icon="@drawable/ic_settings"
|
||||
android:title="Settings" />
|
||||
<item
|
||||
android:id="@+id/menuItem_discord"
|
||||
android:icon="@drawable/ic_discord"
|
||||
android:title="Discord" />
|
||||
<item
|
||||
android:id="@+id/menuItem_about"
|
||||
android:icon="@drawable/ic_about"
|
||||
android:title="About" />
|
||||
</menu>
|
|
@ -1,35 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools" >
|
||||
<item android:id="@+id/menuItem_SaveState" android:title="Save State" />
|
||||
<item android:id="@+id/menuItem_LoadState" android:title="Load State" />
|
||||
<item android:id="@+id/menuItem_CurrentSaveState" android:title="Current Save State">
|
||||
<menu>
|
||||
<group android:checkableBehavior="single">
|
||||
<item android:id="@+id/menuItem_CurrentSaveAuto" android:title="Current Save Auto" />
|
||||
<item android:id="@+id/menuItem_CurrentSave1" android:title="Current Save 1" />
|
||||
<item android:id="@+id/menuItem_CurrentSave2" android:title="Current Save 2" />
|
||||
<item android:id="@+id/menuItem_CurrentSave3" android:title="Current Save 3" />
|
||||
<item android:id="@+id/menuItem_CurrentSave4" android:title="Current Save 4" />
|
||||
<item android:id="@+id/menuItem_CurrentSave5" android:title="Current Save 5" />
|
||||
<item android:id="@+id/menuItem_CurrentSave6" android:title="Current Save 6" />
|
||||
<item android:id="@+id/menuItem_CurrentSave7" android:title="Current Save 7" />
|
||||
<item android:id="@+id/menuItem_CurrentSave8" android:title="Current Save 8" />
|
||||
<item android:id="@+id/menuItem_CurrentSave9" android:title="Current Save 9" />
|
||||
<item android:id="@+id/menuItem_CurrentSave10" android:title="Current Save 10" />
|
||||
</group>
|
||||
</menu>
|
||||
</item>
|
||||
<item android:id="@+id/menuItem_GameSpeed" android:title="Game Speed" />
|
||||
<item android:id="@+id/menuItem_settings" android:title="Settings" />
|
||||
<item android:id="@+id/menuItem_DebuggingMenu" android:title="Debugging Menu">
|
||||
<menu>
|
||||
<item android:id="@+id/menuItem_ResetFunctionTimes" android:title="Reset Function Times" />
|
||||
<item android:id="@+id/menuItem_DumpFunctionTimes" android:title="Dump Function Times" />
|
||||
</menu>
|
||||
</item>
|
||||
<item android:id="@+id/menuItem_pause" android:title="pause" />
|
||||
<item android:id="@+id/menuItem_resume" android:title="resume" />
|
||||
<item android:id="@+id/menuItem_HardReset" android:title="HardReset" />
|
||||
<item android:id="@+id/menuItem_EndEmulation" android:title="EndEmulation" />
|
||||
</menu>
|
|
@ -1,7 +0,0 @@
|
|||
<resources>
|
||||
<style name="Theme.Project64.Base" parent="Theme.Project64.Base.7">
|
||||
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
|
||||
<item name="android:statusBarColor">@color/white</item>
|
||||
<item name="android:windowLightStatusBar">true</item>
|
||||
</style>
|
||||
</resources>
|
|
@ -1,9 +0,0 @@
|
|||
<resources>
|
||||
<style name="Theme.Project64.Base" parent="Theme.Project64.Base.7">
|
||||
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
|
||||
<item name="android:statusBarColor">@color/white</item>
|
||||
<item name="android:windowLightStatusBar">true</item>
|
||||
<item name="android:navigationBarColor">@color/white</item>
|
||||
<item name="android:windowLightNavigationBar">true</item>
|
||||
</style>
|
||||
</resources>
|
|
@ -1,121 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<attr name="LogLevelPreferenceStyle" format="reference" />
|
||||
<attr name="ListPreferenceStyle" format="reference" />
|
||||
<attr name="toolbar_popup_style" format="reference" />
|
||||
<attr name="background_actionbar" format="reference|color" />
|
||||
<attr name="background_gallerymenu" format="reference|color" />
|
||||
<attr name="font_actionbar" format="reference|color" />
|
||||
<attr name="font_actionbar_selected" format="reference|color" />
|
||||
<attr name="textMenuColor" format="reference|color" />
|
||||
<declare-styleable name="SeekBarPreference">
|
||||
<attr name="minimumValue" format="integer" />
|
||||
<attr name="maximumValue" format="integer" />
|
||||
<attr name="stepSize" format="integer" />
|
||||
<attr name="units" format="string" />
|
||||
</declare-styleable>
|
||||
<declare-styleable name="TwoLinesListPreference">
|
||||
<attr name="entriesSubtitles" format="string"/>
|
||||
</declare-styleable>
|
||||
<declare-styleable name="ListPreference">
|
||||
<attr name="entries" format="string"/>
|
||||
<attr name="entryValues" format="string"/>
|
||||
</declare-styleable>
|
||||
|
||||
<attr name="background_default" format="reference|color" />
|
||||
<attr name="header_background" format="reference|color" />
|
||||
<attr name="bottom_navigation_background" format="reference|color" />
|
||||
<attr name="audio_header_background" format="reference|color" />
|
||||
<attr name="audio_header_divider" format="color" />
|
||||
<attr name="audio_menu_icon" format="color" />
|
||||
<attr name="audio_list_background" format="reference|color" />
|
||||
<attr name="bottom_sheet_background" format="reference|color" />
|
||||
<attr name="bottom_sheet_radius" format="dimension" />
|
||||
<attr name="bottom_navigation_color" format="reference|color" />
|
||||
<attr name="background_default_darker" format="reference|color" />
|
||||
<attr name="background_audio_tips" format="reference|color" />
|
||||
<attr name="font_default" format="reference|color" />
|
||||
<attr name="font_audio_light" format="reference|color" />
|
||||
<attr name="font_light" format="reference|color" />
|
||||
<attr name="audio_browser_separator" format="reference|color" />
|
||||
<attr name="list_subtitle" format="reference|color" />
|
||||
<attr name="list_title" format="reference|color" />
|
||||
<attr name="audio_player_background_tint" format="reference|color" />
|
||||
<attr name="progress_background" format="reference|color" />
|
||||
<attr name="ariane_text_color" format="reference|color"/>
|
||||
<attr name="ariane_text_size" format="dimension" />
|
||||
<attr name="card_background" format="color"/>
|
||||
<attr name="empty_button" format="reference" />
|
||||
<attr name="default_separator" format="color" />
|
||||
<attr name="card_border" format="color" />
|
||||
<attr name="rounded_corners_bottom_default_darker" format="reference" />
|
||||
<attr name="donate_card" format="color" />
|
||||
<attr name="donate_item_background" format="reference" />
|
||||
<attr name="empty_foreground" format="color" />
|
||||
<attr name="empty_background" format="color" />
|
||||
<attr name="disabled_overlay_color" format="color" />
|
||||
<attr name="video_card_background" format="reference"/>
|
||||
<attr name="video_list_background" format="reference"/>
|
||||
<attr name="audio_chip_background" format="color" />
|
||||
<attr name="audio_chip_text_color" format="color" />
|
||||
<attr name="audio_seek_bar" format="reference" />
|
||||
<attr name="mini_visualizer_color" format="color" />
|
||||
<attr name="audio_chips_color" format="color" />
|
||||
<attr name="audio_chips_text_color" format="color" />
|
||||
<attr name="bookmark_background" format="color" />
|
||||
<attr name="bottom_navigation_focus" format="color" />
|
||||
<attr name="primary_focus" format="color" />
|
||||
<attr name="scan_background" format="reference" />
|
||||
<attr name="fast_scroller_bubble" format="reference" />
|
||||
<attr name="fast_scroller_handle" format="reference" />
|
||||
|
||||
<!--Main Icons-->
|
||||
<attr name="ic_playlist" format="reference" />
|
||||
<attr name="ic_playlist_on" format="reference" />
|
||||
<attr name="ic_menu_search" format="reference" />
|
||||
<attr name="ic_save" format="reference" />
|
||||
<attr name="gridview_progressbar" format="reference" />
|
||||
<attr name="progress_mini_player" format="reference" />
|
||||
|
||||
<!--Advance Options Icons-->
|
||||
<attr name="adv_options_item_background" format="reference" />
|
||||
<attr name="ic_speed_normal_style" format="reference" />
|
||||
<attr name="ic_sleep_normal_style" format="reference" />
|
||||
<attr name="ic_jumpto_normal_style" format="reference" />
|
||||
<attr name="ic_chapter_normal_style" format="reference" />
|
||||
<attr name="ic_bookmark_normal_style" format="reference" />
|
||||
<attr name="ic_equalizer_normal_style" format="reference" />
|
||||
<attr name="ic_playasaudio_off" format="reference" />
|
||||
<attr name="ic_playasaudio_on" format="reference" />
|
||||
<attr name="ic_popup_dim" format="reference" />
|
||||
<attr name="ic_passthrough" format="reference" />
|
||||
<attr name="ic_abrepeat" format="reference" />
|
||||
<attr name="ic_abrepeat_reset" format="reference" />
|
||||
<attr name="ic_video_stats" format="reference" />
|
||||
<attr name="ic_lock_player" format="reference" />
|
||||
<attr name="player_icon_color" format="reference" />
|
||||
<attr name="dialog_circle_background" format="reference"/>
|
||||
|
||||
|
||||
<attr name="advanced_options_bg" format="reference"/>
|
||||
|
||||
<declare-styleable name="MiniVisualizer">
|
||||
<attr name="bar_color" format="reference"/>
|
||||
</declare-styleable>
|
||||
<declare-styleable name="EmptyLoadingStateView">
|
||||
<attr name="empty_text" format="reference|string" />
|
||||
<attr name="show_no_media" format="boolean" />
|
||||
<attr name="compact_mode" format="boolean" />
|
||||
</declare-styleable>
|
||||
<declare-styleable name="TitleListView">
|
||||
<attr name="title" format="reference|string" />
|
||||
<attr name="show_button" format="boolean" />
|
||||
<attr name="button_icon" format="reference" />
|
||||
</declare-styleable>
|
||||
|
||||
<declare-styleable name="HalfCircleView">
|
||||
<attr name="is_left" format="boolean"/>
|
||||
</declare-styleable>
|
||||
|
||||
<attr name="marginTopContent" format="dimension" />
|
||||
</resources>
|
|
@ -1,140 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools">
|
||||
|
||||
<style name="Theme.Project64" parent="@android:style/Theme">
|
||||
</style>
|
||||
|
||||
<style name="Theme.Project64.Base" parent="Theme.Project64.Base.7" />
|
||||
|
||||
<style name="Theme.Project64.Base.7" parent="Theme.AppCompat.NoActionBar">
|
||||
<item name="android:windowBackground">@android:color/white</item>
|
||||
<item name="android:colorBackground">@android:color/white</item>
|
||||
<item name="android:textColorPrimary">@color/TextColor</item>
|
||||
<item name="android:textColor">@color/TextColor</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.Project64.Apearance" parent="Theme.Project64.Base">
|
||||
</style>
|
||||
|
||||
<style name="Theme.Project64.ToolBar" parent="ThemeOverlay.MaterialComponents.Toolbar.Surface">
|
||||
<item name="colorControlNormal">@color/grey700</item>
|
||||
<item name="android:textColorPrimary">@color/grey700</item>
|
||||
<item name="android:textColor">@color/grey700</item>
|
||||
<item name="android:layout_marginTop">4dp</item>
|
||||
<item name="android:layout_marginBottom">4dp</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.Project64.ToolBar.TitleText" parent="TextAppearance.Widget.AppCompat.Toolbar.Title">
|
||||
<item name="android:textSize">26sp</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.Project64.About" parent="Theme.Project64.Base">
|
||||
<item name="colorControlNormal">@color/grey700</item>
|
||||
<item name="android:textColorPrimary">@color/grey700</item>
|
||||
<item name="android:textColor">@color/grey700</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.Project64.Dialog">
|
||||
</style>
|
||||
|
||||
<style name="Theme.Project64.GameActivity" parent="Theme.Project64.Base">
|
||||
<item name="android:windowBackground">@android:color/black</item>
|
||||
<item name="android:colorBackground">@android:color/black</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.Project64.Gallery" parent="Theme.Project64.Base">
|
||||
<item name="android:windowBackground">@android:color/white</item>
|
||||
<item name="android:colorBackground">@android:color/white</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.Project64.PreferenceCategory" parent="Preference.Material">
|
||||
<item name="iconSpaceReserved">false</item>
|
||||
<item name="android:layout">@layout/preference_category</item>
|
||||
<item name="android:shouldDisableView">false</item>
|
||||
<item name="android:selectable">false</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.Project64.PreferenceCheckBox" parent="Preference.CheckBoxPreference.Material">
|
||||
<item name="iconSpaceReserved">false</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.Project64.ListPreference" parent="Preference.Material">
|
||||
<item name="iconSpaceReserved">false</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.Project64.PreferenceLogLevel" parent="Preference.Material">
|
||||
<item name="iconSpaceReserved">false</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.Project64.PreferenceList" parent="Preference.Material">
|
||||
<item name="iconSpaceReserved">false</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.Project64.PreferenceNoIcon" parent="Preference.Material">
|
||||
<item name="iconSpaceReserved">false</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.Project64.Settings" parent="Theme.Project64.Base">
|
||||
<item name="android:textColor">@color/SettingsPrimary</item>
|
||||
<item name="android:textColorPrimary">@color/SettingsPrimary</item>
|
||||
<item name="android:textColorSecondary">@color/SettingsSecondary</item>
|
||||
<item name="preferenceCategoryStyle">@style/Theme.Project64.PreferenceCategory</item>
|
||||
<item name="checkBoxPreferenceStyle">@style/Theme.Project64.PreferenceCheckBox</item>
|
||||
<item name="LogLevelPreferenceStyle">@style/Theme.Project64.PreferenceLogLevel</item>
|
||||
<item name="ListPreferenceStyle">@style/Theme.Project64.PreferenceNoIcon</item>
|
||||
<item name="colorAccent">@color/colorPrimary</item>
|
||||
<item name="colorPrimary">@color/colorPrimary</item>
|
||||
<item name="android:textSize">18sp</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.Project64.Splash" parent="Theme.Project64.Base">
|
||||
<item name="android:windowBackground">@android:color/white</item>
|
||||
<item name="android:colorBackground">@android:color/white</item>
|
||||
<item name="android:textColor">@color/TextColor</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.Project64.Dialog.Title">
|
||||
<item name="android:background">@color/white</item>
|
||||
<item name="android:textColor">@color/grey700</item>
|
||||
<item name="android:textSize">30sp</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.Project64.Dialog.Button">
|
||||
<item name="android:textColor">@color/ButtonTextColor</item>
|
||||
<item name="android:textSize">24sp</item>
|
||||
<item name="android:clickable">true</item>
|
||||
|
||||
<item name="android:layout_width">270dp</item>
|
||||
<item name="android:layout_height">60dp</item>
|
||||
<item name="android:background">@drawable/button_shape</item>
|
||||
<item name="android:shadowColor">#A8A8A8</item>
|
||||
<item name="android:shadowDx">0</item>
|
||||
<item name="android:shadowDy">0</item>
|
||||
<item name="android:shadowRadius">5</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.Project64.Dialog.Alert" parent="Base.Theme.AppCompat.Dialog.Alert">
|
||||
<item name="android:background">@android:color/transparent</item>
|
||||
<item name="android:windowTitleStyle">@style/Theme.Project64.Dialog.Title</item>
|
||||
<item name="android:dividerHorizontal">@null</item>
|
||||
<item name="android:dividerVertical">@null</item>
|
||||
<item name="android:windowNoTitle">true</item>
|
||||
<item name="android:padding">0dp</item>
|
||||
<item name="android:backgroundDimEnabled">true</item>
|
||||
</style>
|
||||
|
||||
<style name="btnMappable" parent="@android:style/Widget.Button">
|
||||
<item name="android:layout_width">@dimen/inputMapPreferenceButtonSize</item>
|
||||
<item name="android:layout_height">@dimen/inputMapPreferenceButtonSize</item>
|
||||
<item name="android:background">@drawable/button_gray</item>
|
||||
<item name="android:focusable">false</item>
|
||||
<item name="android:focusableInTouchMode">false</item>
|
||||
<item name="android:textColor">@android:color/primary_text_dark_nodisable</item>
|
||||
</style>
|
||||
|
||||
<style name="btnMappableNoText" parent="@style/btnMappable">
|
||||
<item name="android:textColor">@android:color/transparent</item>
|
||||
</style>
|
||||
</resources>
|
|
@ -1,114 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
<emu.project64.settings.ListPreference
|
||||
app:entries="@array/trace_severity_list"
|
||||
app:entryValues="@array/trace_severity_values"
|
||||
android:key="Debugger_TraceMD5"
|
||||
android:title="@string/TraceMD5" />
|
||||
<emu.project64.settings.ListPreference
|
||||
app:entries="@array/trace_severity_list"
|
||||
app:entryValues="@array/trace_severity_values"
|
||||
android:key="Debugger_TraceThread"
|
||||
android:title="@string/TraceThread" />
|
||||
<emu.project64.settings.ListPreference
|
||||
app:entries="@array/trace_severity_list"
|
||||
app:entryValues="@array/trace_severity_values"
|
||||
android:key="Debugger_TracePath"
|
||||
android:title="@string/TracePath" />
|
||||
<emu.project64.settings.ListPreference
|
||||
app:entries="@array/trace_severity_list"
|
||||
app:entryValues="@array/trace_severity_values"
|
||||
android:key="Debugger_TraceSettings"
|
||||
android:title="@string/TraceSettings" />
|
||||
<emu.project64.settings.ListPreference
|
||||
app:entries="@array/trace_severity_list"
|
||||
app:entryValues="@array/trace_severity_values"
|
||||
android:key="Debugger_TraceUnknown"
|
||||
android:title="@string/TraceUnknown" />
|
||||
<emu.project64.settings.ListPreference
|
||||
app:entries="@array/trace_severity_list"
|
||||
app:entryValues="@array/trace_severity_values"
|
||||
android:key="Debugger_TraceAppInit"
|
||||
android:title="@string/TraceAppInit" />
|
||||
<emu.project64.settings.ListPreference
|
||||
app:entries="@array/trace_severity_list"
|
||||
app:entryValues="@array/trace_severity_values"
|
||||
android:key="Debugger_TraceAppCleanup"
|
||||
android:title="@string/TraceAppCleanup" />
|
||||
<emu.project64.settings.ListPreference
|
||||
app:entries="@array/trace_severity_list"
|
||||
app:entryValues="@array/trace_severity_values"
|
||||
android:key="Debugger_TraceN64System"
|
||||
android:title="@string/TraceN64System" />
|
||||
<emu.project64.settings.ListPreference
|
||||
app:entries="@array/trace_severity_list"
|
||||
app:entryValues="@array/trace_severity_values"
|
||||
android:key="Debugger_TracePlugins"
|
||||
android:title="@string/TracePlugins" />
|
||||
<emu.project64.settings.ListPreference
|
||||
app:entries="@array/trace_severity_list"
|
||||
app:entryValues="@array/trace_severity_values"
|
||||
android:key="Debugger_TraceGFXPlugin"
|
||||
android:title="@string/TraceGFXPlugin" />
|
||||
<emu.project64.settings.ListPreference
|
||||
app:entries="@array/trace_severity_list"
|
||||
app:entryValues="@array/trace_severity_values"
|
||||
android:key="Debugger_TraceAudioPlugin"
|
||||
android:title="@string/TraceAudioPlugin" />
|
||||
<emu.project64.settings.ListPreference
|
||||
app:entries="@array/trace_severity_list"
|
||||
app:entryValues="@array/trace_severity_values"
|
||||
android:key="Debugger_TraceControllerPlugin"
|
||||
android:title="@string/TraceControllerPlugin" />
|
||||
<emu.project64.settings.ListPreference
|
||||
app:entries="@array/trace_severity_list"
|
||||
app:entryValues="@array/trace_severity_values"
|
||||
android:key="Debugger_TraceRSPPlugin"
|
||||
android:title="@string/TraceRSPPlugin" />
|
||||
<emu.project64.settings.ListPreference
|
||||
app:entries="@array/trace_severity_list"
|
||||
app:entryValues="@array/trace_severity_values"
|
||||
android:key="Debugger_TraceRSP"
|
||||
android:title="@string/TraceRSP" />
|
||||
<emu.project64.settings.ListPreference
|
||||
app:entries="@array/trace_severity_list"
|
||||
app:entryValues="@array/trace_severity_values"
|
||||
android:key="Debugger_TraceAudio"
|
||||
android:title="@string/TraceAudio" />
|
||||
<emu.project64.settings.ListPreference
|
||||
app:entries="@array/trace_severity_list"
|
||||
app:entryValues="@array/trace_severity_values"
|
||||
android:key="Debugger_TraceRegisterCache"
|
||||
android:title="@string/TraceRegisterCache" />
|
||||
<emu.project64.settings.ListPreference
|
||||
app:entries="@array/trace_severity_list"
|
||||
app:entryValues="@array/trace_severity_values"
|
||||
android:key="Debugger_TraceRecompiler"
|
||||
android:title="@string/TraceRecompiler" />
|
||||
<emu.project64.settings.ListPreference
|
||||
app:entries="@array/trace_severity_list"
|
||||
app:entryValues="@array/trace_severity_values"
|
||||
android:key="Debugger_TraceTLB"
|
||||
android:title="@string/TraceTLB" />
|
||||
<emu.project64.settings.ListPreference
|
||||
app:entries="@array/trace_severity_list"
|
||||
app:entryValues="@array/trace_severity_values"
|
||||
android:key="Debugger_TraceProtectedMEM"
|
||||
android:title="@string/TraceProtectedMem" />
|
||||
<emu.project64.settings.ListPreference
|
||||
app:entries="@array/trace_severity_list"
|
||||
app:entryValues="@array/trace_severity_values"
|
||||
android:key="Debugger_TraceUserInterface"
|
||||
android:title="@string/TraceUserInterface" />
|
||||
<emu.project64.settings.ListPreference
|
||||
app:entries="@array/trace_severity_list"
|
||||
app:entryValues="@array/trace_severity_values"
|
||||
android:key="Debugger_TraceRomList"
|
||||
android:title="@string/TraceRomList" />
|
||||
<emu.project64.settings.ListPreference
|
||||
app:entries="@array/trace_severity_list"
|
||||
app:entryValues="@array/trace_severity_values"
|
||||
android:key="Debugger_TraceExceptionHandler"
|
||||
android:title="@string/TraceExceptionHandler" />
|
||||
</PreferenceScreen>
|
|
@ -1,69 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
<emu.project64.settings.ListPreference
|
||||
app:entries="@array/trace_severity_list"
|
||||
app:entryValues="@array/trace_severity_values"
|
||||
android:key="Debugger_TraceVideoMD5"
|
||||
android:title="@string/TraceVideoMD5" />
|
||||
<emu.project64.settings.ListPreference
|
||||
app:entries="@array/trace_severity_list"
|
||||
app:entryValues="@array/trace_severity_values"
|
||||
android:key="Debugger_TraceVideoThread"
|
||||
android:title="@string/TraceVideoThread" />
|
||||
<emu.project64.settings.ListPreference
|
||||
app:entries="@array/trace_severity_list"
|
||||
app:entryValues="@array/trace_severity_values"
|
||||
android:key="Debugger_TraceVideoPath"
|
||||
android:title="@string/TraceVideoPath" />
|
||||
<emu.project64.settings.ListPreference
|
||||
app:entries="@array/trace_severity_list"
|
||||
app:entryValues="@array/trace_severity_values"
|
||||
android:key="Debugger_TraceVideoSettings"
|
||||
android:title="@string/TraceVideoSettings" />
|
||||
<emu.project64.settings.ListPreference
|
||||
app:entries="@array/trace_severity_list"
|
||||
app:entryValues="@array/trace_severity_values"
|
||||
android:key="Debugger_TraceVideoUnknown"
|
||||
android:title="@string/TraceVideoUnknown" />
|
||||
<emu.project64.settings.ListPreference
|
||||
app:entries="@array/trace_severity_list"
|
||||
app:entryValues="@array/trace_severity_values"
|
||||
android:key="Debugger_TraceVideoGlide64"
|
||||
android:title="@string/TraceVideoGlide64" />
|
||||
<emu.project64.settings.ListPreference
|
||||
app:entries="@array/trace_severity_list"
|
||||
app:entryValues="@array/trace_severity_values"
|
||||
android:key="Debugger_TraceVideoInterface"
|
||||
android:title="@string/TraceVideoInterface" />
|
||||
<emu.project64.settings.ListPreference
|
||||
app:entries="@array/trace_severity_list"
|
||||
app:entryValues="@array/trace_severity_values"
|
||||
android:key="Debugger_TraceVideoResolution"
|
||||
android:title="@string/TraceVideoResolution" />
|
||||
<emu.project64.settings.ListPreference
|
||||
app:entries="@array/trace_severity_list"
|
||||
app:entryValues="@array/trace_severity_values"
|
||||
android:key="Debugger_TraceVideoGlitch"
|
||||
android:title="@string/TraceVideoGlitch" />
|
||||
<emu.project64.settings.ListPreference
|
||||
app:entries="@array/trace_severity_list"
|
||||
app:entryValues="@array/trace_severity_values"
|
||||
android:key="Debugger_TraceTraceVideoRDP"
|
||||
android:title="@string/TraceVideoRDP" />
|
||||
<emu.project64.settings.ListPreference
|
||||
app:entries="@array/trace_severity_list"
|
||||
app:entryValues="@array/trace_severity_values"
|
||||
android:key="Debugger_TraceVideoTLUT"
|
||||
android:title="@string/TraceVideoTLUT" />
|
||||
<emu.project64.settings.ListPreference
|
||||
app:entries="@array/trace_severity_list"
|
||||
app:entryValues="@array/trace_severity_values"
|
||||
android:key="Debugger_TraceVideoPNG"
|
||||
android:title="@string/TraceVideoPNG" />
|
||||
<emu.project64.settings.ListPreference
|
||||
app:entries="@array/trace_severity_list"
|
||||
app:entryValues="@array/trace_severity_values"
|
||||
android:key="Debugger_TraceVideoOGLWrapper"
|
||||
android:title="@string/TraceVideoOGLWrapper" />
|
||||
</PreferenceScreen>
|
|
@ -1,19 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.preference.PreferenceScreen xmlns:app="http://schemas.android.com/apk/res-auto" app:title="@string/preferences">
|
||||
<Preference
|
||||
style="@style/Theme.Project64.PreferenceNoIcon"
|
||||
app:title="@string/AudioPlugin"
|
||||
app:key="logging_audio" />
|
||||
<Preference
|
||||
app:key="settings_touch_screen"
|
||||
app:title="@string/touch_screen_title"
|
||||
app:summary="@string/touch_screen_summary"
|
||||
app:icon="@drawable/ic_phone"
|
||||
/>
|
||||
<Preference
|
||||
app:summary="@string/gamepad_summary"
|
||||
app:title="@string/gamepad_title"
|
||||
app:key="settings_gamepad_screen"
|
||||
app:icon="@drawable/ic_gamepad"
|
||||
/>
|
||||
</androidx.preference.PreferenceScreen>
|
|
@ -1,43 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.preference.PreferenceScreen xmlns:app="http://schemas.android.com/apk/res-auto" app:title="@string/preferences">
|
||||
<PreferenceCategory app:title="@string/Hardware">
|
||||
<Preference
|
||||
app:key="settings_input"
|
||||
app:title="@string/input_screen_title"
|
||||
app:summary="@string/input_screen_summary"
|
||||
app:icon="@drawable/ic_controller"
|
||||
/>
|
||||
<Preference
|
||||
app:key="settings_video"
|
||||
app:title="@string/video_screen_title"
|
||||
app:summary="@string/video_screen_summary"
|
||||
app:icon="@drawable/ic_picture"
|
||||
/>
|
||||
<Preference
|
||||
app:key="settings_audio"
|
||||
app:title="@string/audio_screen_title"
|
||||
app:summary="@string/audio_screen_summary"
|
||||
app:icon="@drawable/ic_speaker"
|
||||
/>
|
||||
<Preference
|
||||
app:key="settings_game_list"
|
||||
app:title="@string/game_list_title"
|
||||
app:summary="@string/game_list_summary"
|
||||
app:icon="@drawable/ic_storage"
|
||||
/>
|
||||
</PreferenceCategory>
|
||||
<PreferenceCategory app:title="@string/Other">
|
||||
<Preference
|
||||
app:key="settings_advanced"
|
||||
app:title="@string/advanced_screen_title"
|
||||
app:summary="@string/advanced_screen_summary"
|
||||
app:icon="@drawable/ic_advanced"
|
||||
/>
|
||||
<Preference
|
||||
app:key="settings_reset"
|
||||
app:title="@string/reset_title"
|
||||
app:summary="@string/reset_summary"
|
||||
app:icon="@drawable/ic_undo"
|
||||
/>
|
||||
</PreferenceCategory>
|
||||
</androidx.preference.PreferenceScreen>
|
Before Width: | Height: | Size: 7.1 KiB After Width: | Height: | Size: 7.1 KiB |
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 5.4 KiB After Width: | Height: | Size: 5.4 KiB |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 319 B After Width: | Height: | Size: 319 B |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 322 B After Width: | Height: | Size: 322 B |
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 311 B After Width: | Height: | Size: 311 B |