Compare commits
309 Commits
v0.6.5
...
mobile_por
Author | SHA1 | Date | |
---|---|---|---|
![]() |
50180b594d | ||
![]() |
2fbd29ff8b | ||
![]() |
7cb1c9fae8 | ||
![]() |
0deeabbfda | ||
![]() |
01992aae7e | ||
![]() |
90ff929291 | ||
![]() |
0e87c8355b | ||
![]() |
ae25dbf6a5 | ||
![]() |
058b926a94 | ||
![]() |
4591a37844 | ||
![]() |
8abefb1505 | ||
![]() |
0afbfd58ce | ||
![]() |
6c5549dd46 | ||
![]() |
0e0da9ecbf | ||
![]() |
7a7f63586f | ||
![]() |
07a2995285 | ||
![]() |
b822e92c0e | ||
![]() |
0ecf2229e6 | ||
![]() |
47272519b5 | ||
![]() |
57b9ad88eb | ||
![]() |
2d65a0a3ed | ||
![]() |
b18c60eb77 | ||
![]() |
481adcdc21 | ||
![]() |
78bdf20603 | ||
![]() |
0642fb66cd | ||
![]() |
5ef55307f5 | ||
![]() |
b9848f360c | ||
![]() |
b5a14ddb68 | ||
![]() |
e4302562ff | ||
![]() |
471b8362e2 | ||
![]() |
a33fcd19b4 | ||
![]() |
7f2f70e1a6 | ||
![]() |
f9d183837a | ||
![]() |
02c6b1b6c7 | ||
![]() |
0c1540e531 | ||
![]() |
6893a5e98a | ||
![]() |
559e545e36 | ||
![]() |
cf90bb9807 | ||
![]() |
f35c939fc3 | ||
![]() |
34e2fa1d49 | ||
![]() |
944b220c90 | ||
![]() |
c5ea8c98fb | ||
![]() |
02ab50d8dd | ||
![]() |
48fefb03cb | ||
![]() |
7ea6c46b2c | ||
![]() |
0597ded1d3 | ||
![]() |
c3c2ac80e7 | ||
![]() |
6bd0e37670 | ||
![]() |
11990815a6 | ||
![]() |
ded8fef16b | ||
![]() |
53dbbd2ba3 | ||
![]() |
e4cdb3834b | ||
![]() |
86dd7958e1 | ||
![]() |
d0a365144e | ||
![]() |
d88505bf8d | ||
![]() |
789f86a778 | ||
![]() |
eecf8beb2f | ||
![]() |
121e6b29ef | ||
![]() |
c2b25abd37 | ||
![]() |
6016c87337 | ||
![]() |
11a81650e4 | ||
![]() |
44ddbc34e8 | ||
![]() |
4605c72546 | ||
![]() |
fe98efdc21 | ||
![]() |
8e5bbcd3a1 | ||
![]() |
2b96ae7f09 | ||
![]() |
f936ab9aab | ||
![]() |
84f6cdec86 | ||
![]() |
ab5bed456b | ||
![]() |
01c107ba62 | ||
![]() |
ff0947c270 | ||
![]() |
a3e6cc54b5 | ||
![]() |
fcd481ee15 | ||
![]() |
b237b713ef | ||
![]() |
3bffa6b04a | ||
![]() |
83dc129f03 | ||
![]() |
ca60efd786 | ||
![]() |
04b516a1a0 | ||
![]() |
5387f8fe83 | ||
![]() |
b5c7374890 | ||
![]() |
f51a160bde | ||
![]() |
cbf70c1d63 | ||
![]() |
28ff65be5a | ||
![]() |
74af47f4d6 | ||
![]() |
4c4e0b9d07 | ||
![]() |
6961492e00 | ||
![]() |
1c3cfddab0 | ||
![]() |
71931b961a | ||
![]() |
64e9406488 | ||
![]() |
900ebbd985 | ||
![]() |
cb7cea6809 | ||
![]() |
4e2ded571e | ||
![]() |
da2762dac3 | ||
![]() |
eb3c244023 | ||
![]() |
3157e7924f | ||
![]() |
92e2e8224f | ||
![]() |
1d022905ab | ||
![]() |
607dab01d6 | ||
![]() |
6edc73a8ba | ||
![]() |
596717bf32 | ||
![]() |
b5cea41f87 | ||
![]() |
8542f8bfd4 | ||
![]() |
fc76ca4523 | ||
![]() |
63f95317a2 | ||
![]() |
26fb35fd4d | ||
![]() |
a8f2bb19db | ||
![]() |
ddec9627b8 | ||
![]() |
24b1526534 | ||
![]() |
fcf545133b | ||
![]() |
fd97ccd402 | ||
![]() |
bf30fc0dc3 | ||
![]() |
4807c4a19d | ||
![]() |
15b3d439d6 | ||
![]() |
4b7770361d | ||
![]() |
50c36bb2ba | ||
![]() |
16f6a0019c | ||
![]() |
7f3f18f991 | ||
![]() |
6ab69b499d | ||
![]() |
f724506550 | ||
![]() |
389c7f2a60 | ||
![]() |
c28d2c1555 | ||
![]() |
1eb2bbd389 | ||
![]() |
7e34c452a1 | ||
![]() |
b3b314f01b | ||
![]() |
997daa2d49 | ||
![]() |
5ada7eb5ec | ||
![]() |
c49a6f3bf2 | ||
![]() |
aa924dc348 | ||
![]() |
f6fb785cea | ||
![]() |
25e7b1d7a3 | ||
![]() |
bdfb77166e | ||
![]() |
dbed09cb55 | ||
![]() |
9f3ebb0036 | ||
![]() |
ddb5e58057 | ||
![]() |
4e5707720b | ||
![]() |
e9628187f2 | ||
![]() |
c8f9cdd6fa | ||
![]() |
7cfa9c38e0 | ||
![]() |
7cc368305f | ||
![]() |
682694cc07 | ||
![]() |
ac23b8e624 | ||
![]() |
12c4677912 | ||
![]() |
0e0ae6c083 | ||
![]() |
49d62b8225 | ||
![]() |
0909e186a1 | ||
![]() |
3557879361 | ||
![]() |
fa317c534d | ||
![]() |
119abec1cf | ||
![]() |
92beee10d3 | ||
![]() |
c110f32993 | ||
![]() |
a18970dceb | ||
![]() |
d3d3294277 | ||
![]() |
ef7f94ac76 | ||
![]() |
9fcc4c7355 | ||
![]() |
751cb0ca8b | ||
![]() |
3343919c92 | ||
![]() |
4eb7668922 | ||
![]() |
c706dc12fe | ||
![]() |
1f272b7aba | ||
![]() |
09d830d02e | ||
![]() |
d7429c201c | ||
![]() |
939e16c59a | ||
![]() |
fe585d27d8 | ||
![]() |
e9352fe811 | ||
![]() |
a52c938fef | ||
![]() |
153cf3e859 | ||
![]() |
6b46370d1a | ||
![]() |
c2ff89b2cf | ||
![]() |
2a57a5f7d0 | ||
![]() |
32d1ed5c6a | ||
![]() |
6d8d319557 | ||
![]() |
9e0ddb08e3 | ||
![]() |
74979ca16a | ||
![]() |
0c77179c46 | ||
![]() |
935b9e4cd6 | ||
![]() |
0f362f80e3 | ||
![]() |
0b5654f870 | ||
![]() |
4ec5048730 | ||
![]() |
6b8e810466 | ||
![]() |
9b3e0a324c | ||
![]() |
f7531383f3 | ||
![]() |
7724b8059d | ||
![]() |
2ada93db9c | ||
![]() |
d070711409 | ||
![]() |
5909634837 | ||
![]() |
07ac5c27ca | ||
![]() |
9f7aafac0b | ||
![]() |
12b3bd4ee0 | ||
![]() |
9e30c39035 | ||
![]() |
3dbcb1daee | ||
![]() |
a9d4fd5e1e | ||
![]() |
07f8e6fca9 | ||
![]() |
f0ed0bad13 | ||
![]() |
8fccc1eb63 | ||
![]() |
62d2a22ab8 | ||
![]() |
10438c21ff | ||
![]() |
ec99d35cee | ||
![]() |
85fe5867f3 | ||
![]() |
1a77473e13 | ||
![]() |
cc483fba5a | ||
![]() |
94686d3fe8 | ||
![]() |
468ac9cbd2 | ||
![]() |
9f8293a5a0 | ||
![]() |
ce9e443c60 | ||
![]() |
99b1ddf44c | ||
![]() |
c083d02bef | ||
![]() |
00253e46b3 | ||
![]() |
d2b7de3801 | ||
![]() |
adcf258551 | ||
![]() |
2df51622ba | ||
![]() |
a7d7667491 | ||
![]() |
0ad45d6826 | ||
![]() |
f23e70ff08 | ||
![]() |
b96be291bb | ||
![]() |
72b3403728 | ||
![]() |
b1964a1c10 | ||
![]() |
25fb3113fa | ||
![]() |
24acf8855f | ||
![]() |
06855dd1de | ||
![]() |
65d556ef4e | ||
![]() |
54b8e362d5 | ||
![]() |
45b41b88bd | ||
![]() |
1baad726ae | ||
![]() |
b19fb22146 | ||
![]() |
8dec9cd835 | ||
![]() |
50d3f83fce | ||
![]() |
41b2f9b911 | ||
![]() |
a02c091376 | ||
![]() |
01e6169cfb | ||
![]() |
1074b6b787 | ||
![]() |
d45fbcb10f | ||
![]() |
f334a03397 | ||
![]() |
3ce37dacbd | ||
![]() |
166eb7614f | ||
![]() |
8b3f3b11f0 | ||
![]() |
2d84fae2c8 | ||
![]() |
5204e3ac03 | ||
![]() |
547b18db9a | ||
![]() |
37f9d3e200 | ||
![]() |
4b24c78f0f | ||
![]() |
994f49b3c1 | ||
![]() |
79ee0e34ea | ||
![]() |
b295053662 | ||
![]() |
61059e66ec | ||
![]() |
f4de000646 | ||
![]() |
d20c263912 | ||
![]() |
07e40afa3d | ||
![]() |
8179915e06 | ||
![]() |
4f79a30689 | ||
![]() |
a58a3e90c8 | ||
![]() |
8d8f32b081 | ||
![]() |
9d866a3616 | ||
![]() |
0fbba70003 | ||
![]() |
598a7edf6b | ||
![]() |
b415b73b4a | ||
![]() |
b6d8ede854 | ||
![]() |
d64a682e74 | ||
![]() |
d080432e14 | ||
![]() |
8bd1293be7 | ||
![]() |
ce411ec871 | ||
![]() |
82a5989f5c | ||
![]() |
bb514d3acb | ||
![]() |
c96b717273 | ||
![]() |
d245b7fb29 | ||
![]() |
edde71fc09 | ||
![]() |
b7b8fdfd0c | ||
![]() |
8dc831088e | ||
![]() |
c07d448aac | ||
![]() |
57a330e589 | ||
![]() |
64437e4e1a | ||
![]() |
96f3bcb42b | ||
![]() |
c8b4566194 | ||
![]() |
d30ff220f6 | ||
![]() |
f0fbd4790f | ||
![]() |
cb1f28a3a3 | ||
![]() |
cc1e3c534e | ||
![]() |
f4f79f47bd | ||
![]() |
ff617c3fab | ||
![]() |
43524a9127 | ||
![]() |
48ff67dc06 | ||
![]() |
8bd154b604 | ||
![]() |
9da018fdff | ||
![]() |
4f4788c1c3 | ||
![]() |
d0d8c9a081 | ||
![]() |
f3b5adbf40 | ||
![]() |
38c9b6b0b2 | ||
![]() |
79be0eca73 | ||
![]() |
9bd02ca8ba | ||
![]() |
f12ecd8404 | ||
![]() |
53803b2218 | ||
![]() |
67c2453c82 | ||
![]() |
455000c02d | ||
![]() |
a2684cce7c | ||
![]() |
27ae54d7d6 | ||
![]() |
aec577a4b4 | ||
![]() |
6f467d5a1b | ||
![]() |
e6c9e78935 | ||
![]() |
3750a85c5f | ||
![]() |
03de13d618 | ||
![]() |
1588bc4cae | ||
![]() |
b718ae0423 | ||
![]() |
a8f540cf29 | ||
![]() |
e6a1fabdd3 | ||
![]() |
291960d159 | ||
![]() |
20b68c6a42 | ||
![]() |
e4ba805e00 | ||
![]() |
93be0f975f | ||
![]() |
cbfeef39bc | ||
![]() |
d7dfa2220e |
14
.gitignore
vendored
@@ -4,12 +4,26 @@ CMakeFiles
|
||||
cmake_install.cmake
|
||||
Makefile
|
||||
/otclient
|
||||
/android/project/build.xml
|
||||
/android/project/proguard-project.txt
|
||||
/android/project/gen
|
||||
/android/project/bin
|
||||
/android/project/libs
|
||||
/android/project/.settings
|
||||
/android/project/.classpath
|
||||
/android/project/.project
|
||||
/android/project/.cproject
|
||||
/android/project/local.properties
|
||||
/android/project/project.properties
|
||||
libs*
|
||||
.idea*
|
||||
/*.h
|
||||
/*.cxx
|
||||
*.o
|
||||
*.gch
|
||||
*.a
|
||||
*.exe
|
||||
*.so
|
||||
*.spr
|
||||
*.dat
|
||||
*.kdev*
|
||||
|
@@ -1,7 +1,7 @@
|
||||
cmake_minimum_required(VERSION 2.6)
|
||||
project(otclient)
|
||||
|
||||
set(VERSION "0.6.5")
|
||||
set(VERSION "0.6.6")
|
||||
|
||||
option(FRAMEWORK_SOUND "Use SOUND " ON)
|
||||
option(FRAMEWORK_GRAPHICS "Use GRAPHICS " ON)
|
||||
@@ -19,10 +19,6 @@ endif()
|
||||
|
||||
option(USE_PCH "Use precompiled header (speed up compile)" OFF)
|
||||
|
||||
set(executable_SOURCES
|
||||
src/main.cpp
|
||||
)
|
||||
|
||||
# add executable icon for win32 platforms
|
||||
if(WIN32)
|
||||
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/otcicon.o
|
||||
@@ -35,10 +31,18 @@ endif()
|
||||
|
||||
add_definitions(-D"VERSION=\\"${VERSION}\\"")
|
||||
|
||||
set(executable_SOURCES
|
||||
src/main.cpp
|
||||
)
|
||||
|
||||
if(ANDROID)
|
||||
# add shared library for android
|
||||
add_library(${PROJECT_NAME} SHARED ${framework_SOURCES} ${client_SOURCES} ${executable_SOURCES})
|
||||
else()
|
||||
# add client executable
|
||||
add_executable(${PROJECT_NAME} ${framework_SOURCES} ${client_SOURCES} ${executable_SOURCES})
|
||||
endif()
|
||||
|
||||
# target link libraries
|
||||
target_link_libraries(${PROJECT_NAME} ${framework_LIBRARIES})
|
||||
|
||||
if(USE_PCH)
|
||||
@@ -51,7 +55,10 @@ endif()
|
||||
|
||||
# installation
|
||||
set(DATA_INSTALL_DIR share/${PROJECT_NAME})
|
||||
install(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION bin)
|
||||
install(TARGETS ${PROJECT_NAME}
|
||||
RUNTIME DESTINATION bin
|
||||
LIBRARY DESTINATION lib
|
||||
ARCHIVE DESTINATION lib)
|
||||
install(FILES README.md BUGS LICENSE AUTHORS init.lua ${PROJECT_NAME}rc.lua DESTINATION ${DATA_INSTALL_DIR})
|
||||
install(DIRECTORY data modules DESTINATION ${DATA_INSTALL_DIR} PATTERN ".git" EXCLUDE)
|
||||
|
||||
|
2
LICENSE
@@ -1,6 +1,6 @@
|
||||
OTClient is made available under the MIT License
|
||||
|
||||
Copyright (c) 2010-2012 OTClient <https://github.com/edubart/otclient>
|
||||
Copyright (c) 2010-2015 OTClient <https://github.com/edubart/otclient>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
21
README.md
@@ -1,4 +1,4 @@
|
||||
[](http://travis-ci.org/edubart/otclient)
|
||||
[](http://travis-ci.org/edubart/otclient) [](https://gitter.im/edubart/otclient?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
||||
### What is otclient?
|
||||
|
||||
Otclient is an alternative Tibia client for usage with otserv. It aims to be complete and flexible,
|
||||
@@ -8,15 +8,28 @@ that each functionality is a separated module, giving the possibility to users m
|
||||
anything easily. Users can also create new mods and extend game interface for their own purposes.
|
||||
Otclient is written in C++2011, the upcoming C++ standard and heavily scripted in lua.
|
||||
|
||||
## The Mobile Project
|
||||
This is a fork of edubart's otclient. The objective of this fork it's to develop a runnable otclient on mobiles devices.
|
||||
|
||||
Tasks that need to do:
|
||||
- [X] Compile on Android devices
|
||||
- [ ] Compile on Apple devices
|
||||
- [ ] Adapt the UI reusing the existing lua code
|
||||
|
||||
Current compiling tutorials:
|
||||
* [Compiling for Android](https://github.com/edubart/otclient/wiki/Compiling-for-Android)
|
||||
|
||||
### Where do I download?
|
||||
|
||||
The latest commits compiled for Windows can be found here.
|
||||
* [Windows Builds](http://otland.net/threads/otclient-builds-windows.217977/)
|
||||
|
||||
Here is the latest v0.6.5 release compiled for both i686(32 bit) and x86_64(64 bit) machines, with OpenGL renderer.
|
||||
This release is compatible with protocols ranges from 7.60 up to 10.31.
|
||||
|
||||
* [For Windows](https://www.dropbox.com/sh/se1okacemoqzjve/XFqFoSKLCg/otclient-win-0.6.5.zip)
|
||||
* [For Linux](https://www.dropbox.com/sh/se1okacemoqzjve/xKJL7j6vEo/otclient-linux-0.6.5.tar.gz)
|
||||
|
||||
**NOTE:** You will need to download spr/dat files on your own and place them in `data/things/VER/` (i.e: `data/things/1031/Tibia.spr`)
|
||||
**NOTE:** You will need to download spr/dat files on your own and place them in `data/things/VERSION/` (i.e: `data/things/1041/Tibia.spr`)
|
||||
|
||||
Older releases can be downloaded from [here](https://www.dropbox.com/sh/se1okacemoqzjve/-oWK4YFm03)
|
||||
|
||||
@@ -39,7 +52,7 @@ A package with all required libraries for compiling OTClient on Windows can be f
|
||||
In short, if you need to compile OTClient, follow these tutorials:
|
||||
* [Compiling on Windows](https://github.com/edubart/otclient/wiki/Compiling-on-Windows)
|
||||
* [Compiling on Linux](https://github.com/edubart/otclient/wiki/Compiling-on-Linux)
|
||||
|
||||
* [Compiling on OS X](https://github.com/edubart/otclient/wiki/Compiling-on-Mac-OS-X)
|
||||
|
||||
|
||||
### Need help?
|
||||
|
1767
android/android.toolchain.cmake
Normal file
18
android/compile_android_unix.sh
Normal file
@@ -0,0 +1,18 @@
|
||||
#!/bin/sh
|
||||
mkdir -p ../build_android && cd ../build
|
||||
|
||||
cmake -DCMAKE_TOOLCHAIN_FILE=../android/android.toolchain.cmake -DANDROID_ABI=armeabi-v7a -DANDROID_NATIVE_API_LEVEL=android-16 -DANDROID_TOOLCHAIN_NAME=arm-linux-androideabi-4.6 ..
|
||||
make
|
||||
|
||||
cd ../
|
||||
|
||||
cp -r libs android/project/
|
||||
cp $ANDROID_NDK/libraries/lib/libSDL2.so android/project/libs/armeabi-v7a
|
||||
|
||||
cd android/project
|
||||
|
||||
android update project -p . --name OTClientMob --target android-16
|
||||
ant debug
|
||||
|
||||
cd bin
|
||||
adb install -r OTClientMob-debug.apk
|
18
android/compile_android_windows.bat
Normal file
@@ -0,0 +1,18 @@
|
||||
cd ..
|
||||
mkdir build_android
|
||||
cd build_android
|
||||
|
||||
cmake -G "Unix Makefiles" -DCMAKE_TOOLCHAIN_FILE=../android/android.toolchain.cmake -DANDROID_ABI=armeabi-v7a -DANDROID_NATIVE_API_LEVEL=android-16 -DANDROID_TOOLCHAIN_NAME=arm-linux-androideabi-4.6 ..
|
||||
make
|
||||
|
||||
cd ../
|
||||
|
||||
xcopy /E /Y libs android\project\libs
|
||||
|
||||
cd android\project
|
||||
|
||||
call android update project -p . --name OTClient --target android-16
|
||||
call ant debug
|
||||
|
||||
cd bin
|
||||
adb install -r OTClient-debug.apk
|
21
android/compile_android_windows_debug.bat
Normal file
@@ -0,0 +1,21 @@
|
||||
cd ..
|
||||
mkdir build_android
|
||||
cd build_android
|
||||
|
||||
cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Debug -DCMAKE_TOOLCHAIN_FILE=../android/android.toolchain.cmake -DANDROID_ABI=armeabi-v7a -DANDROID_NATIVE_API_LEVEL=android-16 -DANDROID_TOOLCHAIN_NAME=arm-linux-androideabi-4.6 ..
|
||||
make
|
||||
|
||||
cd ../
|
||||
|
||||
ECHO D|xcopy /E /Y android\project\jni\libSDL2.so android\project\libs\armeabi-v7a
|
||||
xcopy /E /Y libs\armeabi-v7a\libotclient.so android\project\jni
|
||||
|
||||
cd android\project
|
||||
|
||||
call android update project -p . --name OTClient --target android-16
|
||||
call ndk-build.cmd all NDK_DEBUG=1
|
||||
call ant clean
|
||||
call ant debug
|
||||
|
||||
cd bin
|
||||
adb install -r OTClient-debug.apk
|
36
android/project/AndroidManifest.xml
Normal file
@@ -0,0 +1,36 @@
|
||||
<?xml version="1.0"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.otclient.mobile" android:versionCode="1" android:versionName="1.0">
|
||||
|
||||
<application
|
||||
android:debuggable="true"
|
||||
android:label="@string/app_name"
|
||||
android:icon="@drawable/ic_launcher"
|
||||
android:hardwareAccelerated="true" >
|
||||
|
||||
<activity android:name="MainActivity"
|
||||
android:label="@string/app_name"
|
||||
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
|
||||
android:configChanges="orientation|keyboardHidden"
|
||||
android:screenOrientation="landscape">
|
||||
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN"/>
|
||||
<category android:name="android.intent.category.LAUNCHER"/>
|
||||
</intent-filter>
|
||||
|
||||
<meta-data android:name="android.app.lib_name" android:value="otclient"/>
|
||||
</activity>
|
||||
</application>
|
||||
|
||||
<!-- Android 2.3.3 -->
|
||||
<uses-sdk android:minSdkVersion="9" android:targetSdkVersion="16"/>
|
||||
|
||||
<!-- OpenGL ES 2.0 -->
|
||||
<uses-feature android:glEsVersion="0x00020000"/>
|
||||
|
||||
<!-- Allow writing to external storage -->
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
|
||||
|
||||
<!-- Allow make internet connections -->
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
</manifest>
|
6
android/project/jni/Android.mk
Normal file
@@ -0,0 +1,6 @@
|
||||
LOCAL_PATH := $(call my-dir)
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE := libotclient
|
||||
LOCAL_SRC_FILES := libotclient.so
|
||||
include $(PREBUILT_SHARED_LIBRARY)
|
2
android/project/jni/Application.mk
Normal file
@@ -0,0 +1,2 @@
|
||||
APP_PLATFORM := android-9
|
||||
APP_ABI := armeabi-v7a
|
BIN
android/project/res/drawable-hdpi/ic_launcher.png
Normal file
After Width: | Height: | Size: 538 B |
BIN
android/project/res/drawable-mdpi/ic_launcher.png
Normal file
After Width: | Height: | Size: 429 B |
BIN
android/project/res/drawable-xhdpi/ic_launcher.png
Normal file
After Width: | Height: | Size: 822 B |
BIN
android/project/res/drawable-xxhdpi/ic_launcher.png
Normal file
After Width: | Height: | Size: 1.6 KiB |
BIN
android/project/res/drawable-xxxhdpi/ic_launcher.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
4
android/project/res/values/strings.xml
Normal file
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="app_name">OTClient</string>
|
||||
</resources>
|
52
android/project/src/com/otclient/mobile/FakeEditText.java
Normal file
@@ -0,0 +1,52 @@
|
||||
package com.otclient.mobile;
|
||||
|
||||
import android.view.KeyEvent;
|
||||
import android.view.View;
|
||||
import android.view.inputmethod.EditorInfo;
|
||||
import android.view.inputmethod.InputConnection;
|
||||
|
||||
public class FakeEditText extends View implements View.OnKeyListener {
|
||||
InputConnection ic;
|
||||
|
||||
public FakeEditText() {
|
||||
super(MainActivity.getInstance());
|
||||
setFocusableInTouchMode(true);
|
||||
setFocusable(true);
|
||||
setOnKeyListener(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCheckIsTextEditor() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override // This handles the hardware keyboard input
|
||||
public boolean onKey(View v, int keyCode, KeyEvent event) {
|
||||
if (event.isPrintingKey()) {
|
||||
if (event.getAction() == KeyEvent.ACTION_DOWN) {
|
||||
ic.commitText(String.valueOf((char) event.getUnicodeChar()), 1);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
if (event.getAction() == KeyEvent.ACTION_DOWN) {
|
||||
onNativeKeyDown(keyCode);
|
||||
return true;
|
||||
} else if (event.getAction() == KeyEvent.ACTION_UP) {
|
||||
onNativeKeyUp(keyCode);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public InputConnection onCreateInputConnection(EditorInfo outAttrs) {
|
||||
ic = new InputConnectionForNative(this, true);
|
||||
|
||||
return ic;
|
||||
}
|
||||
|
||||
public static native void onNativeKeyDown(int keyCode);
|
||||
public static native void onNativeKeyUp(int keyCode);
|
||||
}
|
@@ -0,0 +1,47 @@
|
||||
package com.otclient.mobile;
|
||||
|
||||
import android.view.KeyEvent;
|
||||
import android.view.View;
|
||||
import android.view.inputmethod.BaseInputConnection;
|
||||
|
||||
public class InputConnectionForNative extends BaseInputConnection {
|
||||
|
||||
public InputConnectionForNative(View targetView, boolean fullEditor) {
|
||||
super(targetView, fullEditor);
|
||||
}
|
||||
|
||||
@Override // This handles the keycodes from soft keyboard
|
||||
public boolean sendKeyEvent(KeyEvent event) {
|
||||
int keyCode = event.getKeyCode();
|
||||
if (event.getAction() == KeyEvent.ACTION_DOWN) {
|
||||
if (event.isPrintingKey()) {
|
||||
commitText(String.valueOf((char) event.getUnicodeChar()), 1);
|
||||
}
|
||||
FakeEditText.onNativeKeyDown(keyCode);
|
||||
return true;
|
||||
} else if (event.getAction() == KeyEvent.ACTION_UP) {
|
||||
FakeEditText.onNativeKeyUp(keyCode);
|
||||
return true;
|
||||
}
|
||||
return super.sendKeyEvent(event);
|
||||
}
|
||||
|
||||
@Override // Typed text
|
||||
public boolean commitText(CharSequence text, int newCursorPosition) {
|
||||
nativeCommitText(text.toString(), newCursorPosition);
|
||||
|
||||
return super.commitText(text, newCursorPosition);
|
||||
}
|
||||
|
||||
@Override // Workaround to capture backspace key
|
||||
public boolean deleteSurroundingText(int beforeLength, int afterLength) {
|
||||
if (beforeLength == 1 && afterLength == 0) {
|
||||
return super.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DEL))
|
||||
&& super.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_DEL));
|
||||
}
|
||||
|
||||
return super.deleteSurroundingText(beforeLength, afterLength);
|
||||
}
|
||||
|
||||
public static native void nativeCommitText(String text, int newCursorPosition);
|
||||
}
|
@@ -0,0 +1,33 @@
|
||||
package com.otclient.mobile;
|
||||
|
||||
import android.content.Context;
|
||||
import android.view.View;
|
||||
import android.view.inputmethod.InputMethodManager;
|
||||
|
||||
public class KeyboardSoftHandler{
|
||||
private View editText;
|
||||
|
||||
public KeyboardSoftHandler() {
|
||||
editText = new FakeEditText();
|
||||
MainActivity.getInstance()
|
||||
.addViewToLayout(editText);
|
||||
}
|
||||
|
||||
public void showKeyboardSoft() {
|
||||
editText.setVisibility(View.VISIBLE);
|
||||
editText.requestFocus();
|
||||
|
||||
InputMethodManager imm = (InputMethodManager) MainActivity
|
||||
.getInstance().getSystemService(Context.INPUT_METHOD_SERVICE);
|
||||
imm.showSoftInput(editText, 0);
|
||||
}
|
||||
|
||||
public void hideKeyboardSoft() {
|
||||
editText.setVisibility(View.GONE);
|
||||
|
||||
InputMethodManager imm = (InputMethodManager) MainActivity
|
||||
.getInstance().getSystemService(
|
||||
Context.INPUT_METHOD_SERVICE);
|
||||
imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
|
||||
}
|
||||
}
|
110
android/project/src/com/otclient/mobile/MainActivity.java
Normal file
@@ -0,0 +1,110 @@
|
||||
package com.otclient.mobile;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.View;
|
||||
import android.widget.RelativeLayout;
|
||||
import android.widget.RelativeLayout.LayoutParams;
|
||||
|
||||
public class MainActivity extends Activity {
|
||||
public static final String APP_TAG = "OTClientMob";
|
||||
|
||||
private static MainActivity instance;
|
||||
private RelativeLayout layout;
|
||||
|
||||
private static boolean started;
|
||||
|
||||
static {
|
||||
started = false;
|
||||
//android.os.Debug.waitForDebugger();
|
||||
System.loadLibrary("otclient");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
Log.v(APP_TAG, "onCreate()");
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
initialize();
|
||||
}
|
||||
|
||||
private void initialize() {
|
||||
instance = this;
|
||||
|
||||
layout = new RelativeLayout(this);
|
||||
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
|
||||
LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
|
||||
layout.setLayoutParams(params);
|
||||
|
||||
setContentView(layout);
|
||||
|
||||
if( !started ) {
|
||||
nativeInit();
|
||||
started = true;
|
||||
}
|
||||
|
||||
NativeFacadeCalls.initialize();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPause() {
|
||||
Log.v(APP_TAG, "onPause()");
|
||||
super.onPause();
|
||||
nativePause();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onResume() {
|
||||
Log.v(APP_TAG, "onResume()");
|
||||
super.onResume();
|
||||
|
||||
if( NativeFacadeCalls.isSurfaceReady() )
|
||||
nativeResume();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
Log.v(APP_TAG, "onDestroy()");
|
||||
super.onDestroy();
|
||||
|
||||
if(isFinishing()) {
|
||||
NativeFacadeCalls.destroy();
|
||||
destroy();
|
||||
nativeDestroy();
|
||||
}
|
||||
}
|
||||
|
||||
private void destroy() {
|
||||
instance = null;
|
||||
layout = null;
|
||||
}
|
||||
|
||||
@Override // Ignore certain special keys so they're handled by Android
|
||||
public boolean dispatchKeyEvent(KeyEvent event) {
|
||||
int keyCode = event.getKeyCode();
|
||||
if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN ||
|
||||
keyCode == KeyEvent.KEYCODE_VOLUME_UP ||
|
||||
keyCode == KeyEvent.KEYCODE_CAMERA ||
|
||||
keyCode == 168 || /* API 11: KeyEvent.KEYCODE_ZOOM_IN */
|
||||
keyCode == 169 /* API 11: KeyEvent.KEYCODE_ZOOM_OUT */
|
||||
) {
|
||||
return false;
|
||||
}
|
||||
return super.dispatchKeyEvent(event);
|
||||
}
|
||||
|
||||
public static MainActivity getInstance() {
|
||||
return instance;
|
||||
}
|
||||
|
||||
public void addViewToLayout(View view) {
|
||||
layout.addView(view);
|
||||
}
|
||||
|
||||
public native void nativeInit();
|
||||
public native void nativePause();
|
||||
public native void nativeResume();
|
||||
public native void nativeDestroy();
|
||||
}
|
@@ -0,0 +1,45 @@
|
||||
package com.otclient.mobile;
|
||||
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import android.view.Surface;
|
||||
|
||||
public class NativeFacadeCalls {
|
||||
private static NativeSurfaceView nativeSurfaceView;
|
||||
private static KeyboardSoftHandler keyboardSoftHandler;
|
||||
private static Handler handler;
|
||||
|
||||
public static void initialize() {
|
||||
handler = new Handler(Looper.getMainLooper());
|
||||
keyboardSoftHandler = new KeyboardSoftHandler();
|
||||
nativeSurfaceView = new NativeSurfaceView();
|
||||
MainActivity.getInstance().addViewToLayout(nativeSurfaceView);
|
||||
}
|
||||
|
||||
public static void destroy() {
|
||||
handler = null;
|
||||
nativeSurfaceView = null;
|
||||
keyboardSoftHandler = null;
|
||||
}
|
||||
|
||||
public static boolean isSurfaceReady() {
|
||||
return nativeSurfaceView.isSurfaceReady();
|
||||
}
|
||||
|
||||
/*
|
||||
* Static methods called from JNI
|
||||
*/
|
||||
|
||||
public static Surface getNativeSurface() {
|
||||
return nativeSurfaceView.getSurface();
|
||||
}
|
||||
|
||||
public static void showKeyboardSoft() {
|
||||
handler.post(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
keyboardSoftHandler.showKeyboardSoft();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
@@ -0,0 +1,38 @@
|
||||
package com.otclient.mobile;
|
||||
|
||||
public class NativeMainThread {
|
||||
private static final NativeMainThread instance;
|
||||
private Thread nativeThread;
|
||||
|
||||
static {
|
||||
instance = new NativeMainThread();
|
||||
}
|
||||
|
||||
private NativeMainThread() {}
|
||||
|
||||
public void start() {
|
||||
if( nativeThread == null ) {
|
||||
nativeThread = new Thread(
|
||||
new NativeThread(), "NativeThread" );
|
||||
nativeThread.start();
|
||||
}
|
||||
}
|
||||
|
||||
public static NativeMainThread getInstance() {
|
||||
return instance;
|
||||
}
|
||||
|
||||
/*
|
||||
* Native methods implemented on C++
|
||||
*/
|
||||
|
||||
public native void nativeStartApp();
|
||||
|
||||
private class NativeThread implements Runnable {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
nativeStartApp();
|
||||
}
|
||||
}
|
||||
}
|
130
android/project/src/com/otclient/mobile/NativeSurfaceView.java
Normal file
@@ -0,0 +1,130 @@
|
||||
package com.otclient.mobile;
|
||||
|
||||
import android.util.Log;
|
||||
import android.view.GestureDetector;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.Surface;
|
||||
import android.view.SurfaceHolder;
|
||||
import android.view.SurfaceView;
|
||||
import android.view.View;
|
||||
|
||||
public class NativeSurfaceView extends SurfaceView implements
|
||||
SurfaceHolder.Callback, View.OnTouchListener {
|
||||
|
||||
private Surface surface;
|
||||
private GestureDetector gestureDetector;
|
||||
private int currentWidth;
|
||||
private int currentHeight;
|
||||
private boolean surfaceReady;
|
||||
|
||||
private final int LONGPRESS_EVENT = 3;
|
||||
|
||||
public NativeSurfaceView() {
|
||||
super(MainActivity.getInstance());
|
||||
getHolder().addCallback(this);
|
||||
setFocusable(true);
|
||||
setFocusableInTouchMode(true);
|
||||
requestFocus();
|
||||
setOnTouchListener(this);
|
||||
|
||||
currentWidth = 0;
|
||||
currentHeight = 0;
|
||||
surfaceReady = false;
|
||||
|
||||
gestureDetector = new GestureDetector(
|
||||
new GestureDetector.SimpleOnGestureListener() {
|
||||
public void onLongPress(MotionEvent event) {
|
||||
onNativeTouch(LONGPRESS_EVENT, event.getX(), event.getY());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void surfaceCreated(SurfaceHolder holder) {
|
||||
Log.d(MainActivity.APP_TAG, "surfaceCreated");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void surfaceChanged(SurfaceHolder holder, int format, int width,
|
||||
int height) {
|
||||
Log.d(MainActivity.APP_TAG, "surfaceChanged");
|
||||
|
||||
surface = holder.getSurface();
|
||||
|
||||
currentWidth = width;
|
||||
currentHeight = height;
|
||||
surfaceReady = true;
|
||||
|
||||
onNativeResize(width, height);
|
||||
onNativeSurfaceChanged();
|
||||
|
||||
NativeMainThread.getInstance().start();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void surfaceDestroyed(SurfaceHolder holder) {
|
||||
Log.d(MainActivity.APP_TAG, "surfaceDestroyed");
|
||||
surface = null;
|
||||
surfaceReady = false;
|
||||
|
||||
onNativeSurfaceDestroyed();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onTouch(View view, MotionEvent event) {
|
||||
gestureDetector.onTouchEvent(event);
|
||||
/* Ref: http://developer.android.com/training/gestures/multi.html */
|
||||
final int pointerCount = event.getPointerCount();
|
||||
int action = event.getActionMasked();
|
||||
int i = -1;
|
||||
float x,y;
|
||||
|
||||
switch(action) {
|
||||
case MotionEvent.ACTION_MOVE:
|
||||
for (i = 0; i < pointerCount; i++) {
|
||||
x = event.getX(i);
|
||||
y = event.getY(i);
|
||||
onNativeTouch(action, x, y);
|
||||
}
|
||||
break;
|
||||
|
||||
case MotionEvent.ACTION_UP:
|
||||
case MotionEvent.ACTION_DOWN:
|
||||
// Primary pointer up/down, the index is always zero
|
||||
i = 0;
|
||||
case MotionEvent.ACTION_POINTER_UP:
|
||||
case MotionEvent.ACTION_POINTER_DOWN:
|
||||
// Non primary pointer up/down
|
||||
if (i == -1) {
|
||||
i = event.getActionIndex();
|
||||
}
|
||||
|
||||
x = event.getX(i);
|
||||
y = event.getY(i);
|
||||
onNativeTouch(action, x, y);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public Surface getSurface() {
|
||||
return surface;
|
||||
}
|
||||
|
||||
public boolean isSurfaceReady() {
|
||||
return surfaceReady;
|
||||
}
|
||||
|
||||
/*
|
||||
* Native methods implemented on C++
|
||||
*/
|
||||
public native void onNativeSurfaceChanged();
|
||||
public native void onNativeSurfaceDestroyed();
|
||||
public native void onNativeResize(int width, int height);
|
||||
public native void onNativeTouch(int actionType, float x, float y);
|
||||
}
|
BIN
data/images/game/npcicons/icon_chat.png
Normal file
After Width: | Height: | Size: 17 KiB |
BIN
data/images/game/npcicons/icon_quest.png
Normal file
After Width: | Height: | Size: 17 KiB |
BIN
data/images/game/npcicons/icon_trade.png
Normal file
After Width: | Height: | Size: 17 KiB |
BIN
data/images/game/npcicons/icon_tradequest.png
Normal file
After Width: | Height: | Size: 795 B |
BIN
data/images/game/skull_socket.png
Normal file
After Width: | Height: | Size: 338 B |
BIN
data/images/game/slots/ammo-blessed.png
Normal file
After Width: | Height: | Size: 4.0 KiB |
BIN
data/images/game/slots/back-blessed.png
Normal file
After Width: | Height: | Size: 4.9 KiB |
BIN
data/images/game/slots/body-blessed.png
Normal file
After Width: | Height: | Size: 4.9 KiB |
BIN
data/images/game/slots/feet-blessed.png
Normal file
After Width: | Height: | Size: 4.6 KiB |
BIN
data/images/game/slots/finger-blessed.png
Normal file
After Width: | Height: | Size: 4.1 KiB |
BIN
data/images/game/slots/head-blessed.png
Normal file
After Width: | Height: | Size: 4.4 KiB |
BIN
data/images/game/slots/left-hand-blessed.png
Normal file
After Width: | Height: | Size: 4.5 KiB |
BIN
data/images/game/slots/legs-blessed.png
Normal file
After Width: | Height: | Size: 4.6 KiB |
BIN
data/images/game/slots/neck-blessed.png
Normal file
After Width: | Height: | Size: 4.3 KiB |
BIN
data/images/game/slots/purse.png
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
data/images/game/slots/right-hand-blessed.png
Normal file
After Width: | Height: | Size: 5.0 KiB |
BIN
data/images/game/viplist/icons.png
Normal file
After Width: | Height: | Size: 2.7 KiB |
BIN
data/images/game/viplist/vipcheckbox.png
Normal file
After Width: | Height: | Size: 349 B |
BIN
data/images/topbuttons/unjustifiedpoints.png
Normal file
After Width: | Height: | Size: 421 B |
Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 409 B After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 315 B After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 409 B After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 281 B After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 470 B After Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 548 B After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 457 B After Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 40 KiB |
BIN
data/images/ui/item-blessed.png
Normal file
After Width: | Height: | Size: 3.1 KiB |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 241 B After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 33 KiB |
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 197 B After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 646 B After Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 139 B After Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 673 B After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 696 B After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 415 B After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 197 B After Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 18 KiB |
@@ -4,6 +4,10 @@ locale = {
|
||||
charset = "cp1252",
|
||||
languageName = "Deutsch",
|
||||
|
||||
formatNumbers = true,
|
||||
decimalSeperator = ',',
|
||||
thousandsSeperator = ' ',
|
||||
|
||||
translation = {
|
||||
["1a) Offensive Name"] = false,
|
||||
["1b) Invalid Name Format"] = false,
|
||||
|
@@ -3,6 +3,10 @@ locale = {
|
||||
charset = "cp1252",
|
||||
languageName = "English",
|
||||
|
||||
formatNumbers = true,
|
||||
decimalSeperator = '.',
|
||||
thousandsSeperator = ',',
|
||||
|
||||
-- translations are not needed because everything is already in english
|
||||
translation = {}
|
||||
}
|
||||
|
@@ -7,6 +7,10 @@ locale = {
|
||||
charset = "cp1252",
|
||||
languageName = "Espa<EFBFBD>ol",
|
||||
|
||||
formatNumbers = true,
|
||||
decimalSeperator = ',',
|
||||
thousandsSeperator = '.',
|
||||
|
||||
translation = {
|
||||
["1a) Offensive Name"] = "1a) Nombre ofensivo",
|
||||
["1b) Invalid Name Format"] = "1b) Formato invalido para nombre",
|
||||
@@ -34,8 +38,8 @@ locale = {
|
||||
["Add"] = "A<EFBFBD>adir",
|
||||
["Add new VIP"] = "A<EFBFBD>adir nuevo VIP",
|
||||
["Addon 1"] = "Addon 1",
|
||||
["Addon 2"] = "Addon 1",
|
||||
["Addon 3"] = "Addon 1",
|
||||
["Addon 2"] = "Addon 2",
|
||||
["Addon 3"] = "Addon 3",
|
||||
["Add to VIP list"] = "A<EFBFBD>adir a lista VIP",
|
||||
["Adjust volume"] = "Ajustar volumen",
|
||||
["Alas! Brave adventurer, you have met a sad fate.\nBut do not despair, for the gods will bring you back\ninto this world in exchange for a small sacrifice\n\nSimply click on Ok to resume your journeys!"] = "<EFBFBD>Ay! Aventurero valiente, has conocido un triste destino. \nPero no se desespere, porque los dioses te llevar<61>n de vuelta \na este mundo a cambio de un peque<75>o sacrificio \n\nSimplemente haga clic en Aceptar para continuar con sus viajes!",
|
||||
|
@@ -2,6 +2,10 @@ locale = {
|
||||
name = "pl",
|
||||
languageName = "Polski",
|
||||
|
||||
formatNumbers = true,
|
||||
decimalSeperator = '.',
|
||||
thousandsSeperator = ' ',
|
||||
|
||||
translation = {
|
||||
["1a) Offensive Name"] = "1a) Obrazliwe Imie",
|
||||
["1b) Invalid Name Format"] = "1b) Niepoprawny Format Imienia",
|
||||
@@ -63,16 +67,16 @@ locale = {
|
||||
["Buy with backpack"] = "Kupuj z plecakami",
|
||||
["Cancel"] = "Anuluj",
|
||||
["Cannot login while already in game."] = "Nie mozna zalogowac gdy juz w grze",
|
||||
["Cap"] = false,
|
||||
["Cap"] = "Ladownosc",
|
||||
["Capacity"] = "Ladownosc",
|
||||
["Center"] = false,
|
||||
["Center"] = "Wysrodkuj",
|
||||
["Channels"] = "Kanaly",
|
||||
["Character List"] = "Lista postaci",
|
||||
["Classic control"] = "Klasyczne sterowaie",
|
||||
["Clear current message window"] = false,
|
||||
["Clear Messages"] = false,
|
||||
["Clear current message window"] = "Wyczysc bierzace okno",
|
||||
["Clear Messages"] = "Wyczysc wiadomosci",
|
||||
["Clear object"] = "Wyczysc obiekt",
|
||||
["Client needs update."] = false,
|
||||
["Client needs update."] = "Klient wymaga aktalizacji",
|
||||
["Close"] = "Zamknij",
|
||||
["Close this channel"] = "Zamknij kanal",
|
||||
["Club Fighting"] = "Walka obuchem",
|
||||
@@ -81,7 +85,7 @@ locale = {
|
||||
["Connecting to game server..."] = "Laczenie z serwerem gry...",
|
||||
["Connecting to login server..."] = "Laczenie z serwerem logowania...",
|
||||
["Console"] = "Konsola",
|
||||
["Cooldowns"] = false,
|
||||
["Cooldowns"] = "Czasy odnowienia",
|
||||
["Copy message"] = "Kopiuj wiadomosc",
|
||||
["Copy name"] = "Kopiuj imie",
|
||||
["Copy Name"] = "Kopiuj Imie",
|
||||
@@ -100,7 +104,7 @@ locale = {
|
||||
["Detail"] = "Szczegoly",
|
||||
["Details"] = "Szczegoly",
|
||||
["Disable Shared Experience"] = "Wylacz Dzielenie Doswiadczenia",
|
||||
["Dismount"] = false,
|
||||
["Dismount"] = "Zejdz z wierzchowca",
|
||||
["Display connection speed to the server (milliseconds)"] = "Wyswietl ping do serwera (ms)",
|
||||
["Distance Fighting"] = "Walka na odleglosc",
|
||||
["Don't stretch/shrink Game Window"] = "Nie rozszerzaj/zwezaj Okna Gry",
|
||||
@@ -109,7 +113,7 @@ locale = {
|
||||
["Edit Text"] = "Edytuj tekst",
|
||||
["Enable music"] = "Odtwarzaj muzyke",
|
||||
["Enable Shared Experience"] = "Wlacz dzielenie doswiadczenia",
|
||||
["Enable smart walking"] = false,
|
||||
["Enable smart walking"] = "Wlacz inteligentne chodzenie",
|
||||
["Enable vertical synchronization"] = "Wlacz synchronizacje pionowa",
|
||||
["Enable walk booster"] = false,
|
||||
["Enter Game"] = "Wejdz do gry",
|
||||
@@ -118,7 +122,7 @@ locale = {
|
||||
["Error"] = "Blad",
|
||||
["Excessive Unjustified Player Killing"] = "Nadmierne Nieusprawiedliwione Zabijanie Graczy",
|
||||
["Exclude from private chat"] = "Wyrzuc w prywatnej konwersacji",
|
||||
["Exit"] = false,
|
||||
["Exit"] = "Wyjdz",
|
||||
["Experience"] = "Doswiadczenie",
|
||||
["Filter list to match your level"] = "Wyswietl tylko odpowiednie dla mojego poziomu",
|
||||
["Filter list to match your vocation"] = "Wyswietl tylko odpowiednie dla mojej klasy",
|
||||
@@ -127,7 +131,7 @@ locale = {
|
||||
["Fist Fighting"] = "Walka wrecz",
|
||||
["Follow"] = "Podazaj",
|
||||
["Force Exit"] = "Wymus Zamkniecie",
|
||||
["For Your Information"] = false,
|
||||
["For Your Information"] = "Dla twojej informacji",
|
||||
["Free Account"] = "Darmowe Konto",
|
||||
["Fullscreen"] = "Pelen ekran",
|
||||
["Game"] = "Gra",
|
||||
@@ -136,9 +140,9 @@ locale = {
|
||||
["Graphics card driver not detected"] = "Nie wykryto karty graficznej",
|
||||
["Graphics Engine:"] = "Silnik graficzny:",
|
||||
["Head"] = "Glowa",
|
||||
["Healing"] = false,
|
||||
["Health Info"] = false,
|
||||
["Health Information"] = false,
|
||||
["Healing"] = "Leczenie",
|
||||
["Health Info"] = "Info o zyciu",
|
||||
["Health Information"] = "Informacje o zyciu",
|
||||
["Hide monsters"] = "Ukryj potwory",
|
||||
["Hide non-skull players"] = "Ukryj graczy bez skulla",
|
||||
["Hide Npcs"] = "Ukryj NPCe",
|
||||
@@ -183,16 +187,16 @@ locale = {
|
||||
["Magic Level"] = "Poziom Magiczny",
|
||||
["Make sure that your client uses\nthe correct game protocol version"] = "Upewnij sie, ze twoj klient\nuzywa wlasciwego protokolu gry.",
|
||||
["Mana"] = "Mana",
|
||||
["Manage hotkeys:"] = "Skonfiguruj hotkeye:",
|
||||
["Manage hotkeys:"] = "Zarzadzaj hotkeyami:",
|
||||
["Market"] = false,
|
||||
["Market Offers"] = false,
|
||||
["Market Offers"] = "Oferty",
|
||||
["Message of the day"] = "Wiadomosc dnia",
|
||||
["Message to "] = "Wiadomosc do ",
|
||||
["Message to %s"] = "Wiadomosc do %s",
|
||||
["Minimap"] = "Minimapa",
|
||||
["Module Manager"] = "Menedzer modulow",
|
||||
["Module name"] = "Nazwa modulu",
|
||||
["Mount"] = false,
|
||||
["Mount"] = "Wierzchowiec",
|
||||
["Move Stackable Item"] = "Przenies przedmiot",
|
||||
["Move up"] = "Przenies wyzej",
|
||||
["My Offers"] = "Moje Oferty",
|
||||
@@ -221,13 +225,13 @@ locale = {
|
||||
["Open new channel"] = "Otworz nowy kanal",
|
||||
["Options"] = "Opcje",
|
||||
["Overview"] = "Podsumowanie",
|
||||
["Pass Leadership to %s"] = "Przekaz przywodztwo %s",
|
||||
["Pass Leadership to %s"] = "Oddaj przywodztwo %s",
|
||||
["Password"] = "Haslo",
|
||||
["Piece Price:"] = false,
|
||||
["Piece Price:"] = "Cena jednego przedmiotu",
|
||||
["Please enter a character name:"] = "Podaj nazwe postaci:",
|
||||
["Please, press the key you wish to add onto your hotkeys manager"] = "Nacisnij klawisz, ktory chcesz dodac do menedzera skrotow klawiszowych",
|
||||
["Please Select"] = false,
|
||||
["Please use this dialog to only report bugs. Do not report rule violations here!"] = false,
|
||||
["Please Select"] = "Prosze wybrac",
|
||||
["Please use this dialog to only report bugs. Do not report rule violations here!"] = "Zglaszaj tylko bledy gry, nie lamanie zasad",
|
||||
["Please wait"] = "Prosze czekac",
|
||||
["Port"] = "Port",
|
||||
["Position:"] = "Pozycja:",
|
||||
@@ -237,21 +241,21 @@ locale = {
|
||||
["Primary"] = "Podstawowy",
|
||||
["Protocol"] = "Protokol",
|
||||
["Quest Log"] = "Dziennik Misji",
|
||||
["Randomize"] = false,
|
||||
["Randomize characters outfit"] = false,
|
||||
["Randomize"] = "Losuj",
|
||||
["Randomize characters outfit"] = "Ustaw losowy wyglad",
|
||||
["Reason:"] = "Powod:",
|
||||
["Refresh"] = "Odswiez",
|
||||
["Refresh Offers"] = "Odswiez Oferty",
|
||||
["Regeneration Time"] = "Czas Regeneracji",
|
||||
["Reject"] = "Odrzuc",
|
||||
["Reload All"] = "Przeladuj Wszystko",
|
||||
["Reload All"] = "Zaladuj ponownie wszystko",
|
||||
["Remember account and password when starts client"] = "Zapamietaj identyfikator konta oraz haslo",
|
||||
["Remember password"] = "Zapamietaj haslo",
|
||||
["Remove"] = "Usun",
|
||||
["Remove %s"] = "Usun %s",
|
||||
["Report Bug"] = "Zglos Blad",
|
||||
["Reserved for more functionality later."] = "Zarezerowane dla przyszlych funkcjonalnosci.",
|
||||
["Reset Market"] = false,
|
||||
["Reset Market"] = "Zaladuj market ponownie",
|
||||
["Revoke %s's Invitation"] = "Odmow na zaproszenie gracza %s",
|
||||
["Rotate"] = "Obroc",
|
||||
["Rule Violation"] = "Zlamanie Regul",
|
||||
@@ -275,7 +279,7 @@ locale = {
|
||||
["Shielding"] = "Obrona tarcza",
|
||||
["Show all items"] = "Pokaz wszystkie przedmioty",
|
||||
["Show connection ping"] = "Wyswietl ping",
|
||||
["Show Depot Only"] = false,
|
||||
["Show Depot Only"] = "Pokaz tylko przedmioty z depozytu",
|
||||
["Show event messages in console"] = "Pokaz wydarzenia w konsoli",
|
||||
["Show frame rate"] = "Pokaz FPS",
|
||||
["Show info messages in console"] = "Pokaz informacje w konsoli",
|
||||
@@ -288,17 +292,17 @@ locale = {
|
||||
["Show status messages in console"] = "Pokaz status w konsoli",
|
||||
["Show Text"] = "Pokaz Tekst",
|
||||
["Show timestamps in console"] = "Pokaz znaczniki czasu w konsoli",
|
||||
["Show your depot items only"] = false,
|
||||
["Show your depot items only"] = "Pokaz tylko przedmioty z depozytu",
|
||||
["Skills"] = "Umiejetnosci",
|
||||
["Soul"] = "Dusze",
|
||||
["Soul Points"] = "Punkty Duszy",
|
||||
["Special"] = false,
|
||||
["Soul Points"] = "Punktey Duszy",
|
||||
["Special"] = "Specialne",
|
||||
["Speed"] = "Predkosc",
|
||||
["Spell Cooldowns"] = false,
|
||||
["Spell Cooldowns"] = "Czas odnowienia czaru",
|
||||
["Spell List"] = "Lista Zaklec",
|
||||
["Stamina"] = "Wytrzymalosc",
|
||||
["Statement:"] = false,
|
||||
["Statement Report"] = false,
|
||||
["Statement:"] = "Wyrazenie",
|
||||
["Statement Report"] = "Reportuj wyrazenie",
|
||||
["Statistics"] = "Statystki",
|
||||
["Stop Attack"] = "Anuluj atak",
|
||||
["Stop Follow"] = "Przestan podazac",
|
||||
@@ -311,7 +315,7 @@ locale = {
|
||||
["Terminal"] = "Terminal",
|
||||
["There is no way."] = "Nie ma drogi.",
|
||||
["Title"] = "Tytul",
|
||||
["Total Price"] = "Cena sumaryczna",
|
||||
["Total Price"] = "Cena calosci",
|
||||
["Trade"] = "Handel",
|
||||
["Trade with ..."] = "Handluj z ...",
|
||||
["Trying to reconnect in %s seconds."] = "Ponowna proba laczenia za %s sekund.",
|
||||
@@ -320,15 +324,15 @@ locale = {
|
||||
["Unable to logout."] = "Nie mozna sie wylogowac.",
|
||||
["Unignore"] = "Anuluj Ignorowanie",
|
||||
["Unload"] = "Wylacz",
|
||||
["Update needed"] = false,
|
||||
["Update needed"] = "Wymagana aktualizacja",
|
||||
["Use"] = "Uzyj",
|
||||
["Use on target"] = "Uzyj na celu",
|
||||
["Use on yourself"] = "Uzyj na sobie",
|
||||
["Use with ..."] = "Uzyj z ...",
|
||||
["Version"] = "Wersja",
|
||||
["VIP List"] = "Lista VIP",
|
||||
["Voc."] = false,
|
||||
["Vocation"] = "Klasa",
|
||||
["Voc."] = "Profesja",
|
||||
["Vocation"] = "Profesja",
|
||||
["Waiting List"] = "Lista Oczekujacych",
|
||||
["Website"] = "Strona:",
|
||||
["Weight:"] = "Waga:",
|
||||
@@ -339,14 +343,14 @@ locale = {
|
||||
["You are burning"] = "Palisz sie",
|
||||
["You are cursed"] = "Jestes przeklety",
|
||||
["You are dazzled"] = "Jestes oslepiony",
|
||||
["You are dead."] = "Zginales marnie.",
|
||||
["You are dead."] = "Jestes martwy.",
|
||||
["You are dead"] = "Jestes martwy",
|
||||
["You are drowning"] = "Topisz sie",
|
||||
["You are drunk"] = "Caly swiat wiruje",
|
||||
["You are drunk"] = "Jestes pijany",
|
||||
["You are electrified"] = "Jestes porazony pradem",
|
||||
["You are freezing"] = "Marzniesz",
|
||||
["You are hasted"] = "Zapieprzasz",
|
||||
["You are hungry"] = "Burczy ci w brzuchu",
|
||||
["You are freezing"] = "Zamarzasz",
|
||||
["You are hasted"] = "Masz zwiekszona predkosc ruchu",
|
||||
["You are hungry"] = "Jestes glodny",
|
||||
["You are paralysed"] = "Jestes sparalizowany",
|
||||
["You are poisoned"] = "Jestes zatruty",
|
||||
["You are protected by a magic shield"] = "Jestes chroniony magiczna tarcza",
|
||||
@@ -363,16 +367,16 @@ locale = {
|
||||
["Your Capacity:"] = "Twoja Ladownosc:",
|
||||
["You read the following, written by \n%s\n"] = false,
|
||||
["You read the following, written on \n%s.\n"] = false,
|
||||
["Your Money:"] = false,
|
||||
["Enable dash walking"] = false,
|
||||
["Your Money:"] = "Twoje pieniadze",
|
||||
["Enable dash walking"] = "Wlacz szybsze chodzenie (dash walking)",
|
||||
["Will boost your walk on high speed characters"] = "Przyspieszy poruszanie sie postaci o wysokiej predkosci",
|
||||
["Display creature names"] = "Wyswietlaj nazwy potworow",
|
||||
["Display creature health bars"] = "Wyswietlaj paski zycia potworow",
|
||||
["Display text messages"] = "Wyswietlaj wiadomosci tekstowe",
|
||||
["Change language"] = "Zmien jezyk",
|
||||
["Enable lights"] = "Odblokuj oswietlenie",
|
||||
["Enable audio"] = "Odblokuj dzwiek",
|
||||
["Enable music sound"] = "Odblokuj muzyke",
|
||||
["Enable lights"] = "Wlacz oswietlenie",
|
||||
["Enable audio"] = "Wlacz dzwiek",
|
||||
["Enable music sound"] = "Wlacz muzyke",
|
||||
["Music volume: %d"] = "Glosnosc muzyki: %d",
|
||||
["Audio"] = "Dzwiek",
|
||||
["Server List"] = "Lista serwerow",
|
||||
@@ -391,18 +395,18 @@ locale = {
|
||||
["Your Capacity"] = "Twoj udzwig",
|
||||
["Search"] = "Szukaj",
|
||||
["Sell All"] = "Sprzedaj wszystko",
|
||||
["Statement"] = false,
|
||||
["Statement"] = "Stanowisko",
|
||||
["Reason"] = "Powod",
|
||||
["Action"] = "Akcja",
|
||||
["Comment"] = "Komentarz",
|
||||
["Balance"] = false,
|
||||
["Balance"] = "Stan konta",
|
||||
["Offer Type"] = "Typ oferty",
|
||||
["Piece Price"] = false,
|
||||
["Piece Price"] = "Cena jednego",
|
||||
["Find"] = "Szukaj",
|
||||
["Formula"] = "Formula",
|
||||
["Group"] = "Groupa",
|
||||
["Type"] = "Typ",
|
||||
["Cooldown"] = false,
|
||||
["Cooldown"] = "Czas odnowienia",
|
||||
["Premium"] = false,
|
||||
["Any"] = "Dowolny",
|
||||
["Sorcerer"] = "Czarodziej",
|
||||
|
@@ -3,6 +3,10 @@ locale = {
|
||||
charset = "cp1252",
|
||||
languageName = "Portugu<EFBFBD>s",
|
||||
|
||||
formatNumbers = true,
|
||||
decimalSeperator = ',',
|
||||
thousandsSeperator = '.',
|
||||
|
||||
-- As tradu<64><75>es devem vir sempre em ordem alfab<61>tica.
|
||||
translation = {
|
||||
["%d of experience per hour"] = "%d de experi<72>ncia por hora",
|
||||
|
@@ -5,6 +5,10 @@ locale = {
|
||||
charset = "cp1252",
|
||||
languageName = "Svenska",
|
||||
|
||||
formatNumbers = true,
|
||||
decimalSeperator = ',',
|
||||
thousandsSeperator = ' ',
|
||||
|
||||
translation = {
|
||||
["1a) Offensive Name"] = "1a) Offensivt Namn",
|
||||
["1b) Invalid Name Format"] = "1b) Ogiltigt Namnformat",
|
||||
|
@@ -1,49 +1,52 @@
|
||||
Button < UIButton
|
||||
font: verdana-11px-antialised
|
||||
color: #f0ad4dff
|
||||
size: 106 22
|
||||
color: #dfdfdfff
|
||||
size: 106 23
|
||||
text-offset: 0 0
|
||||
image-source: /images/ui/button_rounded
|
||||
image-color: white
|
||||
image-clip: 0 0 20 20
|
||||
image-source: /images/ui/button
|
||||
image-color: #dfdfdf
|
||||
image-clip: 0 0 22 23
|
||||
image-border: 3
|
||||
padding: 5 10 5 10
|
||||
opacity: 1.0
|
||||
|
||||
$hover !disabled:
|
||||
image-clip: 0 20 20 20
|
||||
image-clip: 0 23 22 23
|
||||
|
||||
$pressed:
|
||||
image-clip: 0 40 20 20
|
||||
image-clip: 0 46 22 23
|
||||
text-offset: 1 1
|
||||
|
||||
$disabled:
|
||||
color: #f0ad4d88
|
||||
color: #dfdfdf88
|
||||
opacity: 0.8
|
||||
|
||||
TabButton < UIButton
|
||||
size: 20 20
|
||||
size: 22 23
|
||||
image-source: /images/ui/tabbutton_rounded
|
||||
image-color: white
|
||||
image-clip: 0 0 20 20
|
||||
image-color: #dfdfdf
|
||||
image-clip: 0 0 22 23
|
||||
image-border: 3
|
||||
icon-color: white
|
||||
color: #aaaaaa
|
||||
icon-color: #dfdfdf
|
||||
color: #dfdfdf
|
||||
|
||||
$hover !on:
|
||||
image-clip: 0 20 20 20
|
||||
color: white
|
||||
image-clip: 0 23 22 23
|
||||
color: #dfdfdf
|
||||
|
||||
$disabled:
|
||||
image-color: #ffffff66
|
||||
icon-color: #888888
|
||||
image-color: #dfdfdf66
|
||||
icon-color: #dfdfdf
|
||||
|
||||
$on:
|
||||
image-clip: 0 40 20 20
|
||||
color: #80c7f8
|
||||
image-clip: 0 46 22 23
|
||||
color: #dfdfdf
|
||||
|
||||
NextButton < UIButton
|
||||
size: 12 21
|
||||
image-source: /images/ui/arrow_horizontal
|
||||
image-clip: 12 0 12 21
|
||||
image-color: #ffffff
|
||||
|
||||
$hover !disabled:
|
||||
image-clip: 12 21 12 21
|
||||
@@ -52,12 +55,13 @@ NextButton < UIButton
|
||||
image-clip: 12 21 12 21
|
||||
|
||||
$disabled:
|
||||
image-color: #ffffff55
|
||||
image-color: #dfdfdf88
|
||||
|
||||
PreviousButton < UIButton
|
||||
size: 12 21
|
||||
image-source: /images/ui/arrow_horizontal
|
||||
image-clip: 0 0 12 21
|
||||
image-color: #ffffff
|
||||
|
||||
$hover !disabled:
|
||||
image-clip: 0 21 12 21
|
||||
@@ -66,18 +70,18 @@ PreviousButton < UIButton
|
||||
image-clip: 0 21 12 21
|
||||
|
||||
$disabled:
|
||||
image-color: #ffffff55
|
||||
image-color: #dfdfdf88
|
||||
|
||||
AddButton < UIButton
|
||||
size: 20 20
|
||||
image-source: /images/ui/icon_add
|
||||
image-color: #ffffffff
|
||||
image-color: #dfdfdfff
|
||||
|
||||
$hover !disabled:
|
||||
image-color: #ffffff99
|
||||
image-color: #dfdfdf99
|
||||
|
||||
$pressed:
|
||||
image-color: #ffffff44
|
||||
image-color: #dfdfdf44
|
||||
|
||||
$disabled:
|
||||
image-color: #ffffff55
|
||||
image-color: #dfdfdf55
|
||||
|
@@ -1,35 +1,35 @@
|
||||
CheckBox < UICheckBox
|
||||
size: 16 16
|
||||
text-align: left
|
||||
text-offset: 16 0
|
||||
color: #aaaaaa
|
||||
image-color: #ffffffff
|
||||
image-rect: 0 0 12 12
|
||||
image-offset: 0 2
|
||||
text-offset: 18 1
|
||||
color: #dfdfdf
|
||||
image-color: #dfdfdfff
|
||||
image-rect: 0 0 15 15
|
||||
image-source: /images/ui/checkbox
|
||||
|
||||
$hover !disabled:
|
||||
color: #cccccc
|
||||
color: #ffffff
|
||||
|
||||
$!checked:
|
||||
image-clip: 0 0 12 12
|
||||
image-clip: 0 0 15 15
|
||||
|
||||
$hover !checked:
|
||||
image-clip: 0 12 12 12
|
||||
image-clip: 0 15 15 15
|
||||
|
||||
$checked:
|
||||
image-clip: 0 24 12 12
|
||||
image-clip: 0 30 15 15
|
||||
|
||||
$hover checked:
|
||||
image-clip: 0 36 12 12
|
||||
image-clip: 0 45 15 15
|
||||
|
||||
$disabled:
|
||||
image-color: #ffffff88
|
||||
color: #aaaaaa88
|
||||
image-color: #dfdfdf88
|
||||
color: #dfdfdf88
|
||||
opacity: 0.8
|
||||
|
||||
ColorBox < UICheckBox
|
||||
size: 16 16
|
||||
image-color: #ffffffff
|
||||
image-color: #dfdfdfff
|
||||
image-source: /images/ui/colorbox
|
||||
|
||||
$checked:
|
||||
@@ -40,26 +40,25 @@ ColorBox < UICheckBox
|
||||
|
||||
ButtonBox < UICheckBox
|
||||
font: verdana-11px-antialised
|
||||
color: #ffffffff
|
||||
size: 106 22
|
||||
color: #dfdfdfff
|
||||
size: 106 23
|
||||
text-offset: 0 0
|
||||
text-align: center
|
||||
image-source: /images/ui/tabbutton_rounded
|
||||
image-color: white
|
||||
image-clip: 0 0 20 20
|
||||
image-source: /images/ui/button
|
||||
image-color: #dfdfdf
|
||||
image-clip: 0 0 22 23
|
||||
image-border: 3
|
||||
|
||||
$hover !disabled:
|
||||
image-clip: 0 20 20 20
|
||||
image-clip: 0 23 22 23
|
||||
|
||||
$checked:
|
||||
image-clip: 0 40 20 20
|
||||
color: #80c7f8
|
||||
image-clip: 0 46 22 23
|
||||
color: #dfdfdf
|
||||
|
||||
$disabled:
|
||||
color: #666666ff
|
||||
image-color: #ffffff88
|
||||
color: #dfdfdf88
|
||||
image-color: #dfdfdf88
|
||||
|
||||
ButtonBoxRounded < ButtonBox
|
||||
image-source: /images/ui/tabbutton_rounded
|
||||
image-border: 2
|
||||
image-source: /images/ui/button_rounded
|
@@ -1,62 +1,106 @@
|
||||
ComboBoxPopupMenuButton < UIButton
|
||||
height: 20
|
||||
ComboBoxPopupScrollMenuButton < UIButton
|
||||
height: 23
|
||||
font: verdana-11px-antialised
|
||||
text-align: left
|
||||
text-offset: 4 0
|
||||
color: #aaaaaa
|
||||
color: #dfdfdf
|
||||
background-color: alpha
|
||||
margin: 1
|
||||
|
||||
$hover !disabled:
|
||||
color: #ffffff
|
||||
background-color: #ffffff44
|
||||
color: #dfdfdf
|
||||
background-color: #355d89
|
||||
|
||||
$disabled:
|
||||
color: #555555
|
||||
color: #dfdfdf88
|
||||
|
||||
ComboBoxPopupScrollMenu < UIPopupScrollMenu
|
||||
image-source: /images/ui/combobox_square
|
||||
image-clip: 0 69 91 23
|
||||
image-border: 1
|
||||
|
||||
ComboBoxPopupMenuButton < UIButton
|
||||
height: 23
|
||||
font: verdana-11px-antialised
|
||||
text-align: left
|
||||
text-offset: 4 0
|
||||
color: #dfdfdf
|
||||
background-color: alpha
|
||||
margin: 1
|
||||
|
||||
$hover !disabled:
|
||||
color: #dfdfdf
|
||||
background-color: #355d89
|
||||
|
||||
$disabled:
|
||||
color: #dfdfdf88
|
||||
|
||||
ComboBoxPopupMenu < UIPopupMenu
|
||||
image-source: /images/ui/combobox_square
|
||||
image-clip: 0 60 89 20
|
||||
image-border-left: 1
|
||||
image-border-right: 1
|
||||
image-clip: 0 69 91 23
|
||||
image-border: 1
|
||||
|
||||
ComboBox < UIComboBox
|
||||
font: verdana-11px-antialised
|
||||
color: #aaaaaa
|
||||
size: 89 20
|
||||
color: #dfdfdf
|
||||
size: 91 23
|
||||
text-offset: 3 0
|
||||
text-align: left
|
||||
image-source: /images/ui/combobox_square
|
||||
image-border: 1
|
||||
image-border-right: 17
|
||||
image-clip: 0 0 89 20
|
||||
image-border: 3
|
||||
image-border-right: 19
|
||||
image-clip: 0 0 91 23
|
||||
|
||||
$hover !disabled:
|
||||
image-clip: 0 20 89 20
|
||||
image-clip: 0 23 91 23
|
||||
|
||||
$on:
|
||||
image-clip: 0 40 89 20
|
||||
image-clip: 0 46 91 23
|
||||
|
||||
ComboBoxRoundedPopupMenuButton < UIButton
|
||||
height: 20
|
||||
$disabled:
|
||||
color: #dfdfdf88
|
||||
opacity: 0.8
|
||||
|
||||
ComboBoxRoundedPopupScrollMenuButton < UIButton
|
||||
height: 23
|
||||
font: verdana-11px-antialised
|
||||
text-align: left
|
||||
text-offset: 4 0
|
||||
color: #aaaaaa
|
||||
color: #dfdfdf
|
||||
background-color: alpha
|
||||
|
||||
$hover !disabled:
|
||||
color: #ffffff
|
||||
background-color: #ffffff44
|
||||
background-color: #355d89
|
||||
|
||||
$disabled:
|
||||
color: #555555
|
||||
color: #dfdfdf88
|
||||
|
||||
ComboBoxRoundedPopupScrollMenu < UIPopupScrollMenu
|
||||
image-source: /images/ui/combobox_rounded
|
||||
image-clip: 0 69 91 23
|
||||
image-border: 3
|
||||
|
||||
ComboBoxRoundedPopupMenuButton < UIButton
|
||||
height: 23
|
||||
font: verdana-11px-antialised
|
||||
text-align: left
|
||||
text-offset: 4 0
|
||||
color: #dfdfdf
|
||||
background-color: alpha
|
||||
|
||||
$hover !disabled:
|
||||
color: #ffffff
|
||||
background-color: #355d89
|
||||
|
||||
$disabled:
|
||||
color: #dfdfdf88
|
||||
|
||||
ComboBoxRoundedPopupMenu < UIPopupMenu
|
||||
image-source: /images/ui/combobox_rounded
|
||||
image-clip: 0 60 89 20
|
||||
image-border-left: 1
|
||||
image-border-right: 1
|
||||
image-clip: 0 69 91 23
|
||||
image-border: 3
|
||||
|
||||
ComboBoxRounded < ComboBox
|
||||
image-source: /images/ui/combobox_rounded
|
||||
image-border: 2
|
||||
image-border: 3
|
||||
|
@@ -1,23 +1,23 @@
|
||||
Label < UILabel
|
||||
font: verdana-11px-antialised
|
||||
color: #bbbbbb
|
||||
color: #dfdfdf
|
||||
|
||||
$disabled:
|
||||
color: #bbbbbb88
|
||||
color: #dfdfdf88
|
||||
|
||||
FlatLabel < UILabel
|
||||
font: verdana-11px-antialised
|
||||
color: #aaaaaa
|
||||
color: #dfdfdf
|
||||
size: 86 20
|
||||
text-offset: 3 3
|
||||
image-source: /images/ui/panel_flat
|
||||
image-border: 1
|
||||
|
||||
$disabled:
|
||||
color: #aaaaaa88
|
||||
color: #dfdfdf88
|
||||
|
||||
MenuLabel < Label
|
||||
|
||||
GameLabel < UILabel
|
||||
font: verdana-11px-antialised
|
||||
color: #bbbbbb
|
||||
color: #dfdfdf
|
||||
|
@@ -1,19 +1,19 @@
|
||||
TextList < UIScrollArea
|
||||
layout: verticalBox
|
||||
border-width: 1
|
||||
border-color: #1d222b
|
||||
background-color: #222833
|
||||
border-color: #272727
|
||||
background-color: #636363
|
||||
padding: 1
|
||||
auto-focus: none
|
||||
|
||||
HorizontalList < UIScrollArea
|
||||
layout: horizontalBox
|
||||
border-width: 1
|
||||
border-color: #1d222b
|
||||
background-color: #222833
|
||||
border-color: #272727
|
||||
background-color: #636363
|
||||
|
||||
VerticalList < UIScrollArea
|
||||
layout: verticalBox
|
||||
border-width: 1
|
||||
border-color: #1d222b
|
||||
background-color: #222833
|
||||
border-color: #272727
|
||||
background-color: #636363
|
@@ -10,7 +10,6 @@ ScrollBarSlider < UIButton
|
||||
image-clip: 13 26 13 13
|
||||
$pressed:
|
||||
image-clip: 26 26 13 13
|
||||
image-color: #ffffff99
|
||||
$disabled:
|
||||
image-color: #ffffff66
|
||||
|
||||
|
@@ -1,13 +1,13 @@
|
||||
HorizontalSeparator < UIWidget
|
||||
image-source: /images/ui/separator_horizontal
|
||||
image-border-top: 2
|
||||
image-border: 1
|
||||
height: 2
|
||||
phantom: true
|
||||
focusable: false
|
||||
|
||||
VerticalSeparator < UIWidget
|
||||
image-source: /images/ui/separator_vertical
|
||||
image-border-left: 2
|
||||
image-border: 1
|
||||
width: 2
|
||||
phantom: true
|
||||
focusable: false
|
||||
|
@@ -1,15 +1,17 @@
|
||||
TextEdit < UITextEdit
|
||||
font: verdana-11px-antialised
|
||||
color: #aaaaaa
|
||||
size: 86 20
|
||||
text-offset: 0 3
|
||||
padding: 3
|
||||
color: #272727
|
||||
size: 86 22
|
||||
text-offset: 0 4
|
||||
opacity: 1
|
||||
padding: 4
|
||||
image-source: /images/ui/textedit
|
||||
image-border: 1
|
||||
selection-color: #111416
|
||||
selection-background-color: #999999
|
||||
selection-color: #272727
|
||||
selection-background-color: #cccccc
|
||||
$disabled:
|
||||
color: #aaaaaa88
|
||||
color: #27272788
|
||||
opacity: 0.5
|
||||
|
||||
PasswordTextEdit < TextEdit
|
||||
text-hidden: true
|
||||
|
@@ -2,20 +2,19 @@ Window < UIWindow
|
||||
font: verdana-11px-antialised
|
||||
size: 200 200
|
||||
opacity: 1
|
||||
color: white
|
||||
text-offset: 0 4
|
||||
color: #dfdfdf
|
||||
text-offset: 0 6
|
||||
text-align: top
|
||||
image-source: /images/ui/window
|
||||
image-border: 5
|
||||
image-border-top: 22
|
||||
opacity: 1
|
||||
padding-top: 30
|
||||
image-border: 6
|
||||
image-border-top: 27
|
||||
padding-top: 36
|
||||
padding-left: 16
|
||||
padding-right: 16
|
||||
padding-bottom: 16
|
||||
|
||||
$disabled:
|
||||
color: #aaaaaa88
|
||||
color: #dfdfdf88
|
||||
|
||||
$dragging:
|
||||
opacity: 0.8
|
||||
|
@@ -39,3 +39,45 @@ PopupMenu < UIPopupMenu
|
||||
image-source: /images/ui/menubox
|
||||
image-border: 3
|
||||
padding: 3
|
||||
|
||||
PopupScrollMenuButton < UIButton
|
||||
height: 18
|
||||
size: 0 21
|
||||
text-offset: 4 0
|
||||
text-align: left
|
||||
font: verdana-11px-antialised
|
||||
|
||||
color: #aaaaaa
|
||||
background-color: alpha
|
||||
|
||||
$hover !disabled:
|
||||
color: #ffffff
|
||||
background-color: #ffffff44
|
||||
image-clip: 0 40 20 20
|
||||
|
||||
$disabled:
|
||||
color: #555555
|
||||
|
||||
PopupScrollMenuShortcutLabel < Label
|
||||
font: verdana-11px-antialised
|
||||
text-align: right
|
||||
anchors.fill: parent
|
||||
margin-right: 2
|
||||
margin-left: 5
|
||||
|
||||
PopupScrollMenuSeparator < UIWidget
|
||||
margin-left: 2
|
||||
margin-right: 2
|
||||
margin-bottom: 1
|
||||
image-source: /images/ui/menubox
|
||||
image-border-left: 1
|
||||
image-border-right: 1
|
||||
image-clip: 0 0 32 2
|
||||
height: 2
|
||||
phantom: true
|
||||
|
||||
PopupScrollMenu < UIPopupScrollMenu
|
||||
width: 50
|
||||
image-source: /images/ui/menubox
|
||||
image-border: 3
|
||||
padding: 3
|
||||
|
@@ -1,13 +1,13 @@
|
||||
SpinBox < TextEdit
|
||||
__class: UISpinBox
|
||||
text-align: left
|
||||
size: 86 20
|
||||
size: 86 22
|
||||
padding: 0
|
||||
padding-left: 2
|
||||
|
||||
Button
|
||||
id: up
|
||||
size: 10 10
|
||||
size: 11 11
|
||||
image-source: /images/ui/spinbox_up
|
||||
image-border: 1
|
||||
image-clip: 0 0 10 10
|
||||
@@ -21,7 +21,7 @@ SpinBox < TextEdit
|
||||
|
||||
Button
|
||||
id: down
|
||||
size: 10 10
|
||||
size: 11 11
|
||||
image-source: /images/ui/spinbox_down
|
||||
image-border: 1
|
||||
image-clip: 0 0 10 10
|
||||
|
@@ -1,47 +1,50 @@
|
||||
MoveableTabBar < UIMoveableTabBar
|
||||
size: 80 20
|
||||
size: 80 21
|
||||
MoveableTabBarPanel < Panel
|
||||
MoveableTabBarButton < UIButton
|
||||
size: 20 20
|
||||
size: 20 21
|
||||
image-source: /images/ui/tabbutton_square
|
||||
image-color: white
|
||||
image-clip: 0 0 20 20
|
||||
image-color: #dfdfdf
|
||||
image-clip: 0 0 20 21
|
||||
image-border: 3
|
||||
icon-color: white
|
||||
color: #aaaaaa
|
||||
image-border-bottom: 0
|
||||
icon-color: #dfdfdf
|
||||
color: #dfdfdf
|
||||
anchors.top: parent.top
|
||||
anchors.left: parent.left
|
||||
padding: 5
|
||||
|
||||
$hover !checked:
|
||||
image-clip: 0 20 20 20
|
||||
color: white
|
||||
image-clip: 0 21 20 21
|
||||
color: #dfdfdf
|
||||
|
||||
$disabled:
|
||||
image-color: #ffffff66
|
||||
icon-color: #888888
|
||||
image-color: #dfdfdf88
|
||||
icon-color: #dfdfdf
|
||||
|
||||
$checked:
|
||||
image-clip: 0 40 20 20
|
||||
color: #D8E7F0
|
||||
image-clip: 0 42 20 21
|
||||
color: #dfdfdf
|
||||
|
||||
$on !checked:
|
||||
color: #F55E5E
|
||||
color: #de6f6f
|
||||
|
||||
TabBar < UITabBar
|
||||
size: 80 20
|
||||
size: 80 21
|
||||
Panel
|
||||
id: buttonsPanel
|
||||
anchors.fill: parent
|
||||
TabBarPanel < Panel
|
||||
TabBarButton < UIButton
|
||||
size: 20 20
|
||||
size: 20 21
|
||||
image-source: /images/ui/tabbutton_square
|
||||
image-color: white
|
||||
image-clip: 0 0 20 20
|
||||
image-source: /images/ui/tabbutton_square
|
||||
image-color: #dfdfdf
|
||||
image-clip: 0 0 20 21
|
||||
image-border: 3
|
||||
icon-color: white
|
||||
color: #aaaaaa
|
||||
image-border-bottom: 0
|
||||
icon-color: #dfdfdf
|
||||
color: #dfdfdf
|
||||
anchors.top: parent.top
|
||||
padding: 5
|
||||
|
||||
@@ -53,24 +56,32 @@ TabBarButton < UIButton
|
||||
margin-left: 5
|
||||
|
||||
$hover !checked:
|
||||
image-clip: 0 20 20 20
|
||||
color: white
|
||||
image-clip: 0 21 20 21
|
||||
color: #dfdfdf
|
||||
|
||||
$disabled:
|
||||
image-color: #ffffff66
|
||||
icon-color: #888888
|
||||
image-color: #dfdfdf88
|
||||
icon-color: #dfdfdf
|
||||
|
||||
$checked:
|
||||
image-clip: 0 40 20 20
|
||||
color: #80c7f8
|
||||
image-clip: 0 42 20 21
|
||||
color: #dfdfdf
|
||||
|
||||
$on !checked:
|
||||
color: #F55E5E
|
||||
color: #dfdfdf
|
||||
|
||||
TabBarRounded < TabBar
|
||||
TabBarRoundedPanel < TabBarPanel
|
||||
TabBarRoundedButton < TabBarButton
|
||||
image-source: /images/ui/tabbutton_rounded
|
||||
size: 22 23
|
||||
image-clip: 0 0 22 23
|
||||
|
||||
$hover !checked:
|
||||
image-clip: 0 23 22 23
|
||||
|
||||
$checked:
|
||||
image-clip: 0 46 22 23
|
||||
|
||||
TabBarVertical < UITabBar
|
||||
width: 96
|
||||
@@ -107,7 +118,7 @@ TabBarVerticalButton < UIButton
|
||||
margin-top: 10
|
||||
$hover !checked:
|
||||
color: white
|
||||
icon-color: #cccccc
|
||||
icon-color: #dfdfdf
|
||||
$disabled:
|
||||
icon-color: #333333
|
||||
$checked:
|
||||
|
@@ -1,26 +1,62 @@
|
||||
Table < UITable
|
||||
layout: verticalBox
|
||||
header-column-style: HeaderTableColumn
|
||||
header-row-style: HeaderTableRow
|
||||
header-column-style: TableHeaderColumn
|
||||
header-row-style: TableHeaderRow
|
||||
column-style: TableColumn
|
||||
row-style: TableRow
|
||||
|
||||
TableData < UIScrollArea
|
||||
layout: verticalBox
|
||||
|
||||
TableRow < Label
|
||||
TableRow < UITableRow
|
||||
layout: horizontalBox
|
||||
height: 10
|
||||
text-wrap: true
|
||||
focusable: true
|
||||
even-background-color: alpha
|
||||
odd-background-color: #00000022
|
||||
|
||||
$focus:
|
||||
background-color: #294f6d
|
||||
color: #ffffff
|
||||
|
||||
TableColumn < Label
|
||||
width: 30
|
||||
text-wrap: true
|
||||
focusable: false
|
||||
|
||||
TableHeaderRow < Label
|
||||
layout: horizontalBox
|
||||
focusable: false
|
||||
height: 10
|
||||
text-wrap: true
|
||||
|
||||
TableHeaderColumn < Button
|
||||
width: 30
|
||||
TableHeaderColumn < UITableHeaderColumn
|
||||
font: verdana-11px-antialised
|
||||
background-color: alpha
|
||||
color: #dfdfdfff
|
||||
height: 23
|
||||
focusable: true
|
||||
text-offset: 0 0
|
||||
image-source: /images/ui/button
|
||||
image-color: #dfdfdf
|
||||
image-clip: 0 0 22 23
|
||||
image-border: 3
|
||||
padding: 5 10 5 10
|
||||
enabled: false
|
||||
focusable: false
|
||||
|
||||
$hover !disabled:
|
||||
image-clip: 0 23 22 23
|
||||
|
||||
$pressed:
|
||||
image-clip: 0 46 22 23
|
||||
text-offset: 1 1
|
||||
|
||||
$disabled:
|
||||
color: #dfdfdf88
|
||||
opacity: 0.8
|
||||
|
||||
SortableTableHeaderColumn < TableHeaderColumn
|
||||
enabled: true
|
||||
focusable: true
|
4
init.lua
@@ -27,8 +27,8 @@ g_resources.setupUserWriteDir(g_app.getCompactName())
|
||||
-- search all packages
|
||||
g_resources.searchAndAddPackages('/', '.otpkg', true)
|
||||
|
||||
-- load configurations
|
||||
g_configs.load("/config.otml")
|
||||
-- load settings
|
||||
g_configs.loadSettings("/config.otml")
|
||||
|
||||
g_modules.discoverModules()
|
||||
|
||||
|
@@ -91,9 +91,9 @@ function init()
|
||||
g_keyboard.bindKeyDown('Ctrl+Shift+R', reloadScripts)
|
||||
|
||||
-- generate machine uuid, this is a security measure for storing passwords
|
||||
if not g_crypt.setMachineUUID(g_configs.get('uuid')) then
|
||||
g_configs.set('uuid', g_crypt.getMachineUUID())
|
||||
g_configs.save()
|
||||
if not g_crypt.setMachineUUID(g_settings.get('uuid')) then
|
||||
g_settings.set('uuid', g_crypt.getMachineUUID())
|
||||
g_settings.save()
|
||||
end
|
||||
end
|
||||
|
||||
|