Compare commits
873 Commits
v0.5.3
...
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 | ||
![]() |
59c3e4467a | ||
![]() |
117833addc | ||
![]() |
edf17a44ca | ||
![]() |
6db2458c1d | ||
![]() |
2556bfcbf2 | ||
![]() |
9bdce800d8 | ||
![]() |
9adab5f9bf | ||
![]() |
a6f998d406 | ||
![]() |
ab21558c47 | ||
![]() |
17c4d59b15 | ||
![]() |
d53f4dfa1e | ||
![]() |
da959aca28 | ||
![]() |
91c182d93d | ||
![]() |
6ecd49abe1 | ||
![]() |
6745bff132 | ||
![]() |
27db78567b | ||
![]() |
83dd92cfec | ||
![]() |
5605061435 | ||
![]() |
241b178ebc | ||
![]() |
d0288e23d8 | ||
![]() |
9d8cf33acc | ||
![]() |
6a4868f2b5 | ||
![]() |
aa84ee4362 | ||
![]() |
1e17919a26 | ||
![]() |
df3546b073 | ||
![]() |
24e26e190b | ||
![]() |
ad7cda534d | ||
![]() |
863bece70b | ||
![]() |
22f97aa00b | ||
![]() |
e32607b05c | ||
![]() |
1790eee1c6 | ||
![]() |
ec2518525a | ||
![]() |
eb4fb4ff41 | ||
![]() |
4f997a3826 | ||
![]() |
c54015a60d | ||
![]() |
57c432d3ea | ||
![]() |
bd8c883e13 | ||
![]() |
b5c3b37b3c | ||
![]() |
ece6507df2 | ||
![]() |
04515ffbb8 | ||
![]() |
ed24a0735a | ||
![]() |
2498129ff3 | ||
![]() |
066638e7c0 | ||
![]() |
95610de5f3 | ||
![]() |
9154c0a678 | ||
![]() |
772ec208c0 | ||
![]() |
7914832be9 | ||
![]() |
99500c9c91 | ||
![]() |
b9b9a32b83 | ||
![]() |
f615b80fbc | ||
![]() |
319f32cdaa | ||
![]() |
ba091c9f5b | ||
![]() |
3288711d16 | ||
![]() |
8b0509a5c3 | ||
![]() |
d7612e9304 | ||
![]() |
4dcb30110f | ||
![]() |
7ff73d1064 | ||
![]() |
ca2fe9cf45 | ||
![]() |
b61f509755 | ||
![]() |
ec012cb137 | ||
![]() |
69ae324676 | ||
![]() |
4d656f8bd1 | ||
![]() |
c98439ae65 | ||
![]() |
4f9f04206d | ||
![]() |
fc54a6e418 | ||
![]() |
25d3019d1a | ||
![]() |
1711d8bdaf | ||
![]() |
28d967ccce | ||
![]() |
f02d5e7975 | ||
![]() |
4bfe9b640e | ||
![]() |
ab1cc8c890 | ||
![]() |
d657a0482a | ||
![]() |
8562d38ca4 | ||
![]() |
28786a3570 | ||
![]() |
b07a77f705 | ||
![]() |
0d44942e8e | ||
![]() |
dd829395e3 | ||
![]() |
18fa54181a | ||
![]() |
5b8ff29fa3 | ||
![]() |
59e90e8f1e | ||
![]() |
5db37857bf | ||
![]() |
fc0297d6db | ||
![]() |
1060c6f78c | ||
![]() |
c9597d6682 | ||
![]() |
d3e97d33c7 | ||
![]() |
2b015d49d7 | ||
![]() |
f04b4a0b42 | ||
![]() |
ff5c22d4c0 | ||
![]() |
d6105a98d1 | ||
![]() |
0938e22eb9 | ||
![]() |
1868b235cb | ||
![]() |
9a30050340 | ||
![]() |
9d689f0c43 | ||
![]() |
2b34c0ea0a | ||
![]() |
d32f71c2b9 | ||
![]() |
3cff331723 | ||
![]() |
9894f0c0b9 | ||
![]() |
e60372fdea | ||
![]() |
d2473fd424 | ||
![]() |
7d7bd00a63 | ||
![]() |
c81a623c43 | ||
![]() |
8b165b95fd | ||
![]() |
6f9436dd60 | ||
![]() |
ae95f51346 | ||
![]() |
9b84570372 | ||
![]() |
38dec168ee | ||
![]() |
84b722f8c7 | ||
![]() |
b3717ceb93 | ||
![]() |
3340e06da6 | ||
![]() |
084ee45650 | ||
![]() |
7290ec3334 | ||
![]() |
971d90a596 | ||
![]() |
8230bf2af4 | ||
![]() |
241b54262a | ||
![]() |
63ce68b449 | ||
![]() |
f47ea05abc | ||
![]() |
de3160c90d | ||
![]() |
67bd00556d | ||
![]() |
778559c7b9 | ||
![]() |
3aac0ac0ec | ||
![]() |
4adfafc67e | ||
![]() |
1b27a095a9 | ||
![]() |
e6977b1b43 | ||
![]() |
5843b78e87 | ||
![]() |
7cf645e715 | ||
![]() |
537508021e | ||
![]() |
e741a62ce9 | ||
![]() |
56d6ef6642 | ||
![]() |
3db8f54aa9 | ||
![]() |
9234030c1b | ||
![]() |
520baa28ea | ||
![]() |
bbdeac2e33 | ||
![]() |
1f914351bb | ||
![]() |
eb68504dc1 | ||
![]() |
32647f11bf | ||
![]() |
644d4daeea | ||
![]() |
b27352c321 | ||
![]() |
a6be9ae525 | ||
![]() |
5df3ec8cf2 | ||
![]() |
00729bbc2e | ||
![]() |
3b2d8a2b5e | ||
![]() |
d5298c1011 | ||
![]() |
aaad8ab8a0 | ||
![]() |
efbd9ab693 | ||
![]() |
092209c0bb | ||
![]() |
05f7f6a4cf | ||
![]() |
2c36ca7215 | ||
![]() |
926eb9f01e | ||
![]() |
96bb28e806 | ||
![]() |
e15995e1eb | ||
![]() |
719debfeae | ||
![]() |
e7137c2535 | ||
![]() |
5eabf6f518 | ||
![]() |
5849136526 | ||
![]() |
0451fd6b58 | ||
![]() |
9cf878335a | ||
![]() |
529b646316 | ||
![]() |
1ea2b380ca | ||
![]() |
914fe249ab | ||
![]() |
4d498ed0d8 | ||
![]() |
9aa667da26 | ||
![]() |
e6db43ac3a | ||
![]() |
b5911cf1de | ||
![]() |
5fbb71157d | ||
![]() |
0ff36a1a0a | ||
![]() |
4a04a18835 | ||
![]() |
6fa9631d6a | ||
![]() |
261642190b | ||
![]() |
95abf2a1d2 | ||
![]() |
c4adf2d817 | ||
![]() |
c7c259ef80 | ||
![]() |
987c6d6c91 | ||
![]() |
c8185474de | ||
![]() |
be071c7103 | ||
![]() |
2f9e2c3e33 | ||
![]() |
b81590f297 | ||
![]() |
e062562888 | ||
![]() |
18d23653c4 | ||
![]() |
6c119627bb | ||
![]() |
d847a78a4d | ||
![]() |
0dccc870b5 | ||
![]() |
e4c7ca604b | ||
![]() |
d427560b98 | ||
![]() |
cc12db0d1f | ||
![]() |
1ce6df99ac | ||
![]() |
57bb6ff974 | ||
![]() |
9bae1b9e25 | ||
![]() |
1415de222c | ||
![]() |
34ceb3c95e | ||
![]() |
b43a196eac | ||
![]() |
a3a65d40ce | ||
![]() |
6ef3508362 | ||
![]() |
a71e07f063 | ||
![]() |
4bdd1e79fd | ||
![]() |
e9e4dcd71b | ||
![]() |
0891e2b30a | ||
![]() |
24664714bd | ||
![]() |
da51dd467e | ||
![]() |
64fc4570c9 | ||
![]() |
392acc0b43 | ||
![]() |
69f72b9c86 | ||
![]() |
489688e9fb | ||
![]() |
d911b38d68 | ||
![]() |
61be2103ed | ||
![]() |
a7b27ef8dd | ||
![]() |
10a16169a4 | ||
![]() |
44bf4dcb6e | ||
![]() |
9305053e34 | ||
![]() |
1dd558d57e | ||
![]() |
15ee7962f1 | ||
![]() |
8c016b143a | ||
![]() |
a85ca0fb17 | ||
![]() |
115bf08364 | ||
![]() |
71b5c5f2e4 | ||
![]() |
5396ea6231 | ||
![]() |
9955de573b | ||
![]() |
0be7bd5360 | ||
![]() |
c452e74e0c | ||
![]() |
bdbe065c23 | ||
![]() |
f4263384bc | ||
![]() |
f50c63e9e5 | ||
![]() |
48ac91d173 | ||
![]() |
8db85e4e3a | ||
![]() |
02d32565e9 | ||
![]() |
3980f859b7 | ||
![]() |
c392bcca90 | ||
![]() |
62921dee9b | ||
![]() |
3ca85cbe87 | ||
![]() |
32df317163 | ||
![]() |
a145ad282b | ||
![]() |
884102833e | ||
![]() |
50b6cc69e1 | ||
![]() |
8314b84f69 | ||
![]() |
e85afd4b63 | ||
![]() |
120c2b4231 | ||
![]() |
dad3026ba0 | ||
![]() |
9312d20a0f | ||
![]() |
425bfd998b | ||
![]() |
b804dd6959 | ||
![]() |
69e762385e | ||
![]() |
e528fcc8f8 | ||
![]() |
46aa0c005f | ||
![]() |
eb46b96ffa | ||
![]() |
ccbe491e3c | ||
![]() |
864ac3fdd9 | ||
![]() |
5f26303389 | ||
![]() |
0bf909d52f | ||
![]() |
ef20f59a98 | ||
![]() |
406c7bdae6 | ||
![]() |
41b81da76f | ||
![]() |
dc3559a5c0 | ||
![]() |
d0576da69d | ||
![]() |
2a225b99b7 | ||
![]() |
04f52d77d2 | ||
![]() |
06e2b6eca2 | ||
![]() |
a8c175452b | ||
![]() |
92228e9553 | ||
![]() |
67ed9e21ad | ||
![]() |
01126eee62 | ||
![]() |
8e9f65779c | ||
![]() |
2296e35174 | ||
![]() |
28e70516a4 | ||
![]() |
039c3072dc | ||
![]() |
f4f9e319d8 | ||
![]() |
035ce26728 | ||
![]() |
04c4943fa8 | ||
![]() |
09c937998f | ||
![]() |
e4e3d7d053 | ||
![]() |
5b573afdfc | ||
![]() |
90d2032e9e | ||
![]() |
3eeb5ae890 | ||
![]() |
9a54bfcc90 | ||
![]() |
f8b078ea91 | ||
![]() |
33ce0aa704 | ||
![]() |
bb304f9f4e | ||
![]() |
a84d0bbf11 | ||
![]() |
cb3f06358c | ||
![]() |
3b91c4d509 | ||
![]() |
f4c7d98bd5 | ||
![]() |
88c59afb8c | ||
![]() |
b61094c053 | ||
![]() |
3b9acab7a1 | ||
![]() |
6d456994f4 | ||
![]() |
e87e669c87 | ||
![]() |
59a5b8115a | ||
![]() |
67fc77d507 | ||
![]() |
28cdd6aa53 | ||
![]() |
4f423432fa | ||
![]() |
62f38d678d | ||
![]() |
07dd78002b | ||
![]() |
5fc1ac8051 | ||
![]() |
d9ee4dccbe | ||
![]() |
ffcb65f365 | ||
![]() |
adc01ab9e3 | ||
![]() |
725a16e38e | ||
![]() |
0b29a4b466 | ||
![]() |
cb42481edd | ||
![]() |
8f9055f48b | ||
![]() |
b1bab32618 | ||
![]() |
dfb0150a7d | ||
![]() |
11cb287a21 | ||
![]() |
6f37361df0 | ||
![]() |
9c0c19b5b2 | ||
![]() |
b08d0ff157 | ||
![]() |
71c2ec5293 | ||
![]() |
72d63673ca | ||
![]() |
cbeab6f9b0 | ||
![]() |
25841e9c77 | ||
![]() |
ea0d5f3d81 | ||
![]() |
4f3be92208 | ||
![]() |
3c3ba9ef4c | ||
![]() |
2f7a06e93e | ||
![]() |
7f918a12a2 | ||
![]() |
7f6a4bbbe5 | ||
![]() |
86c462eb4d | ||
![]() |
7ece0ed8c7 | ||
![]() |
cf77df05ca | ||
![]() |
dcd6249e8f | ||
![]() |
f0ac63eb5c | ||
![]() |
d4fb6127fc | ||
![]() |
637b6ceca2 | ||
![]() |
86d06057ca | ||
![]() |
717832b791 | ||
![]() |
4c51009ed9 | ||
![]() |
0fc56c73cc | ||
![]() |
db73bbdea2 | ||
![]() |
6cd71ea02e | ||
![]() |
7f5dda5c8f | ||
![]() |
35e5dd8af8 | ||
![]() |
b34cc18f98 | ||
![]() |
469df27d9b | ||
![]() |
e7012031eb | ||
![]() |
4c3c945bab | ||
![]() |
e370ffdb0f | ||
![]() |
36a60419ec | ||
![]() |
546007f1df | ||
![]() |
cb7f855fd8 | ||
![]() |
859cb31f5d | ||
![]() |
de353e3b72 | ||
![]() |
9e208fa792 | ||
![]() |
a0b2504f11 | ||
![]() |
89c012e81f | ||
![]() |
abcc95634e | ||
![]() |
8a2d2cd5ac | ||
![]() |
654f71e75f | ||
![]() |
1bf77c35c6 | ||
![]() |
17d09f41be | ||
![]() |
ca9c33ff54 | ||
![]() |
da050a5630 | ||
![]() |
5bf03c50d6 | ||
![]() |
377c013dfe | ||
![]() |
60986eb80f | ||
![]() |
ff9f82d0c8 | ||
![]() |
80a7ecb3a4 | ||
![]() |
8d6ccb8d83 | ||
![]() |
4751941e4f | ||
![]() |
f492d291eb | ||
![]() |
26c6217bc3 | ||
![]() |
ec30567d6b | ||
![]() |
b7eef97239 | ||
![]() |
6c7a163197 | ||
![]() |
d6e8e92a45 | ||
![]() |
197a379933 | ||
![]() |
773837da98 | ||
![]() |
4536c68f00 | ||
![]() |
6966221e39 | ||
![]() |
2bd86d0695 | ||
![]() |
bcb3db4cdc | ||
![]() |
e81dd31ae3 | ||
![]() |
cf0ecf418d | ||
![]() |
9aca1644e6 | ||
![]() |
6c59124cb2 | ||
![]() |
7c06a00f82 | ||
![]() |
9f69c71b6d | ||
![]() |
4351f3c63f | ||
![]() |
4b1db2bcd6 | ||
![]() |
2fd3c643c4 | ||
![]() |
4f8f02acad | ||
![]() |
7e01306fc6 | ||
![]() |
835adfb4ce | ||
![]() |
6594b2d090 | ||
![]() |
4d0d62e364 | ||
![]() |
07959ddc04 | ||
![]() |
18af9a45ee | ||
![]() |
90f1244ab4 | ||
![]() |
9e4a9433ca | ||
![]() |
32c5f4285b | ||
![]() |
c982ca81a5 | ||
![]() |
a144174c41 | ||
![]() |
3a47c4f2e1 | ||
![]() |
0a91fff82a | ||
![]() |
95f79b45dc | ||
![]() |
839495fa9b | ||
![]() |
42b05df717 | ||
![]() |
d5b4e0929f | ||
![]() |
a8fbd6cdfc | ||
![]() |
5b65088426 | ||
![]() |
bc55cbbbd1 | ||
![]() |
c3eede9872 | ||
![]() |
8d5cd95bc4 | ||
![]() |
50c2db100e | ||
![]() |
d5d5e507af | ||
![]() |
311bc220a8 | ||
![]() |
992acd8873 | ||
![]() |
1674575dc0 | ||
![]() |
3f882d9e6c | ||
![]() |
c7ff744dcd | ||
![]() |
a2ddb472f5 | ||
![]() |
caf86a9fc6 | ||
![]() |
27d5506262 | ||
![]() |
ca4caf7991 | ||
![]() |
dabc7548fe | ||
![]() |
fa8971498f | ||
![]() |
e900a7679a | ||
![]() |
01e48fbcc8 | ||
![]() |
f470cba09e | ||
![]() |
5a278ef4ec | ||
![]() |
befe480ec3 | ||
![]() |
71cccac3da | ||
![]() |
0729e35b50 | ||
![]() |
2a2214991c | ||
![]() |
ae731ddefc | ||
![]() |
18a37393c5 | ||
![]() |
8c6d5a0f5c | ||
![]() |
c28596292f | ||
![]() |
84dfd4f7f3 | ||
![]() |
9907e9e5c7 | ||
![]() |
62bb91b5a6 | ||
![]() |
e8d0996817 | ||
![]() |
f389c3b3fe | ||
![]() |
2fcaf2cc40 | ||
![]() |
0f9cacdde5 | ||
![]() |
8e9d137608 | ||
![]() |
36e95b2f48 | ||
![]() |
4f6c987d77 | ||
![]() |
28b5fc1d5a | ||
![]() |
20d9176d10 | ||
![]() |
806f543302 | ||
![]() |
ddaff8a46a | ||
![]() |
1500c1d2f2 | ||
![]() |
6ad7269e5a | ||
![]() |
7e52c4e449 | ||
![]() |
ada2c9efe9 | ||
![]() |
b68df8336a | ||
![]() |
cf77c2baf3 | ||
![]() |
74ebd7f903 | ||
![]() |
95593964bb | ||
![]() |
2fd8d4e580 | ||
![]() |
8b14a91ed9 | ||
![]() |
67c5b31225 | ||
![]() |
20231c1fc5 | ||
![]() |
773d093e68 | ||
![]() |
62cd3d04e1 | ||
![]() |
52ede065fc | ||
![]() |
a80e758e32 | ||
![]() |
2e75380218 | ||
![]() |
a3fcf2e8e7 | ||
![]() |
d2712fa218 | ||
![]() |
4305b9e8f4 | ||
![]() |
47d5e1d5e6 | ||
![]() |
709fdb9e38 | ||
![]() |
913cc801b6 | ||
![]() |
1b6be92cad | ||
![]() |
914b4bd5f3 | ||
![]() |
adba4b0da9 | ||
![]() |
00a574fe10 | ||
![]() |
57dc7d20b6 | ||
![]() |
d70b835464 | ||
![]() |
c43a97395a | ||
![]() |
c6ab6bc484 | ||
![]() |
8de7873635 | ||
![]() |
b72c1d2921 | ||
![]() |
74d3214f74 | ||
![]() |
59594b4ac2 | ||
![]() |
1784bd9f26 | ||
![]() |
cce2976156 | ||
![]() |
aeb31f0669 | ||
![]() |
a8c9adb052 | ||
![]() |
607a6a13bc | ||
![]() |
0120b7554c | ||
![]() |
fdcad184f9 | ||
![]() |
b52c52cd36 | ||
![]() |
5344a179a4 | ||
![]() |
a8d3bb97ea | ||
![]() |
9d5abb0243 | ||
![]() |
122577a916 | ||
![]() |
8d07f8eaf6 | ||
![]() |
a1a8d28f5c | ||
![]() |
493202afcf | ||
![]() |
52f0b21ea6 | ||
![]() |
a1f5a88fe7 | ||
![]() |
9610106088 | ||
![]() |
702fce0be8 | ||
![]() |
5921c8e420 | ||
![]() |
4c0c6e635e | ||
![]() |
3ed2eeb104 | ||
![]() |
bb139955dc | ||
![]() |
fddbafebd3 | ||
![]() |
3fa5993177 | ||
![]() |
ca46b5033e | ||
![]() |
c47641d7e1 | ||
![]() |
fc55c6b524 | ||
![]() |
2aeec22ef8 | ||
![]() |
644241badb | ||
![]() |
8cdab5c814 | ||
![]() |
fcdf2286b6 | ||
![]() |
abf0ee4303 | ||
![]() |
1782de7336 | ||
![]() |
8961f4dfd4 | ||
![]() |
034c768994 | ||
![]() |
44e428bccb | ||
![]() |
619285069c | ||
![]() |
a86449dea9 | ||
![]() |
ec8d50497b | ||
![]() |
7c48a98b67 | ||
![]() |
5de031fb8b | ||
![]() |
f5b3bfda11 | ||
![]() |
dc6d2bb078 | ||
![]() |
617e6b302b | ||
![]() |
b806b57628 | ||
![]() |
6d6f600c44 | ||
![]() |
ce6423320e | ||
![]() |
5fed08b17e | ||
![]() |
f851bb7777 | ||
![]() |
6e154f6b2c | ||
![]() |
d7a45311ed | ||
![]() |
81068f820d | ||
![]() |
eb979ef7cd | ||
![]() |
bce8e90ede | ||
![]() |
d4370e7c5d | ||
![]() |
8bb115d6d4 | ||
![]() |
c7890e7a49 | ||
![]() |
a6424f3022 | ||
![]() |
7114946278 | ||
![]() |
5f72488eba | ||
![]() |
6acdb0fd64 | ||
![]() |
7f864003d8 | ||
![]() |
053d29a64b | ||
![]() |
3990ee76e7 | ||
![]() |
f48fb4343f | ||
![]() |
478e796dbd | ||
![]() |
95e46dbbaf | ||
![]() |
c0a3b083f6 | ||
![]() |
ba407072a5 | ||
![]() |
286a0fea58 | ||
![]() |
adc89f132f | ||
![]() |
01993c133d | ||
![]() |
5227a65d74 | ||
![]() |
af6a32263c | ||
![]() |
efdfb0e946 | ||
![]() |
b4642f9038 | ||
![]() |
f26b359ae5 | ||
![]() |
ec8a9eddf2 | ||
![]() |
8536c61c01 | ||
![]() |
a83be17bfe | ||
![]() |
261dd40b96 | ||
![]() |
eae002ea71 | ||
![]() |
f0e9cf070e | ||
![]() |
5756f20026 | ||
![]() |
fa8b77f0c8 | ||
![]() |
ced5c035b9 | ||
![]() |
526885f70d | ||
![]() |
6c2539bbd4 | ||
![]() |
737001264d |
87
.gitignore
vendored
@@ -4,12 +4,26 @@ CMakeFiles
|
|||||||
cmake_install.cmake
|
cmake_install.cmake
|
||||||
Makefile
|
Makefile
|
||||||
/otclient
|
/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
|
/*.h
|
||||||
/*.cxx
|
/*.cxx
|
||||||
*.o
|
*.o
|
||||||
*.gch
|
*.gch
|
||||||
*.a
|
*.a
|
||||||
*.exe
|
*.exe
|
||||||
|
*.so
|
||||||
*.spr
|
*.spr
|
||||||
*.dat
|
*.dat
|
||||||
*.kdev*
|
*.kdev*
|
||||||
@@ -35,3 +49,76 @@ otclient.map
|
|||||||
otclient.layout
|
otclient.layout
|
||||||
LOCALTODO
|
LOCALTODO
|
||||||
tags
|
tags
|
||||||
|
Thumbs.db
|
||||||
|
.directory
|
||||||
|
src/framework/graphics/dx/
|
||||||
|
modules/.project/modules.sublime-workspace
|
||||||
|
|
||||||
|
#################
|
||||||
|
## Visual Studio
|
||||||
|
#################
|
||||||
|
|
||||||
|
## Ignore Visual Studio temporary files, build results, and
|
||||||
|
## files generated by popular Visual Studio add-ons.
|
||||||
|
|
||||||
|
# User-specific files
|
||||||
|
*.suo
|
||||||
|
*.user
|
||||||
|
*.sln.docstates
|
||||||
|
|
||||||
|
# Build results
|
||||||
|
|
||||||
|
[Dd]ebug/
|
||||||
|
[Rr]elease/
|
||||||
|
x64/
|
||||||
|
build/
|
||||||
|
[Bb]in/
|
||||||
|
[Oo]bj/
|
||||||
|
|
||||||
|
# MSTest test Results
|
||||||
|
[Tt]est[Rr]esult*/
|
||||||
|
[Bb]uild[Ll]og.*
|
||||||
|
|
||||||
|
*_i.c
|
||||||
|
*_p.c
|
||||||
|
*.ilk
|
||||||
|
*.meta
|
||||||
|
*.obj
|
||||||
|
*.pch
|
||||||
|
*.pdb
|
||||||
|
*.pgc
|
||||||
|
*.pgd
|
||||||
|
*.rsp
|
||||||
|
*.sbr
|
||||||
|
*.tlb
|
||||||
|
*.tli
|
||||||
|
*.tlh
|
||||||
|
*.tmp
|
||||||
|
*.tmp_proj
|
||||||
|
*.log
|
||||||
|
*.vspscc
|
||||||
|
*.vssscc
|
||||||
|
.builds
|
||||||
|
*.pidb
|
||||||
|
*.log
|
||||||
|
*.scc
|
||||||
|
|
||||||
|
# Visual C++ cache files
|
||||||
|
ipch/
|
||||||
|
*.aps
|
||||||
|
*.ncb
|
||||||
|
*.opensdf
|
||||||
|
*.sdf
|
||||||
|
*.cachefile
|
||||||
|
|
||||||
|
# Visual Studio profiler
|
||||||
|
*.psess
|
||||||
|
*.vsp
|
||||||
|
*.vspx
|
||||||
|
|
||||||
|
# Guidance Automation Toolkit
|
||||||
|
*.gpState
|
||||||
|
|
||||||
|
# ReSharper is a .NET coding add-in
|
||||||
|
_ReSharper*/
|
||||||
|
*.[Rr]e[Ss]harper
|
||||||
|
@@ -2,7 +2,7 @@ language: cpp
|
|||||||
compiler:
|
compiler:
|
||||||
- gcc
|
- gcc
|
||||||
before_script:
|
before_script:
|
||||||
- sudo apt-get install libboost-all-dev libphysfs-dev libssl-dev liblua5.1-dev libglew1.6-dev libvorbis-dev libopenal-dev libz-dev
|
- sudo apt-get install libboost1.48-all-dev libphysfs-dev libssl-dev liblua5.1-dev libglew1.6-dev libvorbis-dev libopenal-dev libz-dev -y
|
||||||
script: |
|
script: |
|
||||||
cmake . -DCMAKE_BUILD_TYPE=Release
|
cmake . -DCMAKE_BUILD_TYPE=Release
|
||||||
make
|
make
|
||||||
|
@@ -1,25 +1,24 @@
|
|||||||
cmake_minimum_required(VERSION 2.6)
|
cmake_minimum_required(VERSION 2.6)
|
||||||
project(otclient)
|
project(otclient)
|
||||||
|
|
||||||
set(VERSION "0.5.3")
|
set(VERSION "0.6.6")
|
||||||
|
|
||||||
|
option(FRAMEWORK_SOUND "Use SOUND " ON)
|
||||||
|
option(FRAMEWORK_GRAPHICS "Use GRAPHICS " ON)
|
||||||
|
option(FRAMEWORK_XML "Use XML " ON)
|
||||||
|
option(FRAMEWORK_NET "Use NET " ON)
|
||||||
|
option(FRAMEWORK_SQL "Use SQL" OFF)
|
||||||
|
|
||||||
set(FRAMEWORK_SOUND ON)
|
|
||||||
set(FRAMEWORK_GRAPHICS ON)
|
|
||||||
set(FRAMEWORK_XML ON)
|
|
||||||
set(FRAMEWORK_NET ON)
|
|
||||||
#set(FRAMEWORK_GIT ON)
|
|
||||||
include(src/framework/CMakeLists.txt)
|
include(src/framework/CMakeLists.txt)
|
||||||
include(src/otclient/CMakeLists.txt)
|
include(src/client/CMakeLists.txt)
|
||||||
|
|
||||||
# functions map for reading backtraces
|
# functions map for reading backtraces
|
||||||
set(CMAKE_CXX_LINK_FLAGS "${CMAKE_CXX_LINK_FLAGS} -Wl,-Map=otclient.map")
|
if(NOT APPLE)
|
||||||
|
set(CMAKE_CXX_LINK_FLAGS "${CMAKE_CXX_LINK_FLAGS} -Wl,-Map=${PROJECT_NAME}.map")
|
||||||
|
endif()
|
||||||
|
|
||||||
option(USE_PCH "Use precompiled header (speed up compile)" OFF)
|
option(USE_PCH "Use precompiled header (speed up compile)" OFF)
|
||||||
|
|
||||||
set(executable_SOURCES
|
|
||||||
src/main.cpp
|
|
||||||
)
|
|
||||||
|
|
||||||
# add executable icon for win32 platforms
|
# add executable icon for win32 platforms
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/otcicon.o
|
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/otcicon.o
|
||||||
@@ -32,25 +31,36 @@ endif()
|
|||||||
|
|
||||||
add_definitions(-D"VERSION=\\"${VERSION}\\"")
|
add_definitions(-D"VERSION=\\"${VERSION}\\"")
|
||||||
|
|
||||||
# add otclient executable
|
set(executable_SOURCES
|
||||||
add_executable(otclient ${framework_SOURCES} ${otclient_SOURCES} ${executable_SOURCES})
|
src/main.cpp
|
||||||
|
)
|
||||||
|
|
||||||
# target link libraries
|
if(ANDROID)
|
||||||
target_link_libraries(otclient ${framework_LIBRARIES})
|
# 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(${PROJECT_NAME} ${framework_LIBRARIES})
|
||||||
|
|
||||||
if(USE_PCH)
|
if(USE_PCH)
|
||||||
include(cotire)
|
include(cotire)
|
||||||
cotire(otclient)
|
cotire(${PROJECT_NAME})
|
||||||
message(STATUS "Use precompiled header: ON")
|
message(STATUS "Use precompiled header: ON")
|
||||||
else()
|
else()
|
||||||
message(STATUS "Use precompiled header: OFF")
|
message(STATUS "Use precompiled header: OFF")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# installation
|
# installation
|
||||||
set(DATA_INSTALL_DIR share/otclient)
|
set(DATA_INSTALL_DIR share/${PROJECT_NAME})
|
||||||
install(TARGETS otclient RUNTIME DESTINATION bin)
|
install(TARGETS ${PROJECT_NAME}
|
||||||
install(FILES README.md BUGS LICENSE AUTHORS init.lua otclientrc.lua DESTINATION ${DATA_INSTALL_DIR})
|
RUNTIME DESTINATION bin
|
||||||
install(DIRECTORY modules DESTINATION ${DATA_INSTALL_DIR} PATTERN ".git" EXCLUDE)
|
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)
|
||||||
|
|
||||||
# add "make run"
|
# add "make run"
|
||||||
add_custom_target(run COMMAND otclient DEPENDS otclient WORKING_DIRECTORY ${CMAKE_PROJECT_DIR})
|
add_custom_target(run COMMAND ${PROJECT_NAME} DEPENDS ${PROJECT_NAME} WORKING_DIRECTORY ${CMAKE_PROJECT_DIR})
|
||||||
|
2
LICENSE
@@ -1,6 +1,6 @@
|
|||||||
OTClient is made available under the MIT License
|
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
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
42
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?
|
### What is otclient?
|
||||||
|
|
||||||
Otclient is an alternative Tibia client for usage with otserv. It aims to be complete and flexible,
|
Otclient is an alternative Tibia client for usage with otserv. It aims to be complete and flexible,
|
||||||
@@ -8,6 +8,31 @@ 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.
|
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.
|
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/VERSION/` (i.e: `data/things/1041/Tibia.spr`)
|
||||||
|
|
||||||
|
Older releases can be downloaded from [here](https://www.dropbox.com/sh/se1okacemoqzjve/-oWK4YFm03)
|
||||||
|
|
||||||
### Features
|
### Features
|
||||||
|
|
||||||
Beyond of it's flexibility with scripts, otclient comes with tons of other features that make possible
|
Beyond of it's flexibility with scripts, otclient comes with tons of other features that make possible
|
||||||
@@ -18,20 +43,22 @@ to port to mobile platforms. Otclient is also flexible enough to
|
|||||||
create tibia tools like map editors just using scripts, because it wasn't designed to be just a
|
create tibia tools like map editors just using scripts, because it wasn't designed to be just a
|
||||||
client, instead otclient was designed to be a combination of a framework and tibia APIs.
|
client, instead otclient was designed to be a combination of a framework and tibia APIs.
|
||||||
|
|
||||||
### Download
|
|
||||||
|
|
||||||
Stable versions of otclient master branch compiled for Windows and Linux is available
|
|
||||||
in the [downloads section](https://github.com/edubart/otclient/downloads) of the project's github page.
|
|
||||||
|
|
||||||
### Compiling
|
### Compiling
|
||||||
|
|
||||||
|
A package with all required libraries for compiling OTClient on Windows can be found here:
|
||||||
|
* [For MSVC 2013](https://www.dropbox.com/sh/se1okacemoqzjve/dI4ODbq7OT/otclient-msvc13-libs.zip)
|
||||||
|
* [For MingW32](https://www.dropbox.com/sh/se1okacemoqzjve/UAkRCiGXXR/otclient-libs_mingw32-dwarf2.zip)
|
||||||
|
|
||||||
In short, if you need to compile OTClient, follow these tutorials:
|
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 Windows](https://github.com/edubart/otclient/wiki/Compiling-on-Windows)
|
||||||
* [Compiling on Linux](https://github.com/edubart/otclient/wiki/Compiling-on-Linux)
|
* [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?
|
### Need help?
|
||||||
|
|
||||||
Try to ask questions in [otland](http://otland.net/forum.php) or talk with us at #otclient irc.freenode.net
|
Try to ask questions in [otland](http://otland.net/f494/), now we have a board for the project there,
|
||||||
|
or talk with us at #otclient irc.freenode.net
|
||||||
|
|
||||||
### Bugs
|
### Bugs
|
||||||
|
|
||||||
@@ -49,4 +76,3 @@ Talk directly with us at #otclient irc.freenode.net or send an email directly to
|
|||||||
|
|
||||||
Otclient is made available under the MIT License, thus this means that you are free
|
Otclient is made available under the MIT License, thus this means that you are free
|
||||||
to do whatever you want, commercial, non-commercial, closed or open.
|
to do whatever you want, commercial, non-commercial, closed or open.
|
||||||
|
|
||||||
|
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);
|
||||||
|
}
|
13
data/cursors/cursors.otml
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
Cursors
|
||||||
|
target:
|
||||||
|
image: targetcursor
|
||||||
|
hot-spot: 9 9
|
||||||
|
horizontal:
|
||||||
|
image: horizontalcursor
|
||||||
|
hot-spot: 9 4
|
||||||
|
vertical:
|
||||||
|
image: verticalcursor
|
||||||
|
hot-spot: 4 9
|
||||||
|
text:
|
||||||
|
image: textcursor
|
||||||
|
hot-spot: 4 9
|
Before Width: | Height: | Size: 230 B After Width: | Height: | Size: 230 B |
Before Width: | Height: | Size: 266 B After Width: | Height: | Size: 266 B |
Before Width: | Height: | Size: 198 B After Width: | Height: | Size: 198 B |
Before Width: | Height: | Size: 238 B After Width: | Height: | Size: 238 B |
6
data/fonts/sans-bold-16px.otfont
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
Font
|
||||||
|
name: sans-bold-16px
|
||||||
|
texture: sans-bold-16px_cp1252
|
||||||
|
height: 20
|
||||||
|
glyph-size: 24 24
|
||||||
|
space-width: 3
|
BIN
data/fonts/sans-bold-16px_cp1252.png
Normal file
After Width: | Height: | Size: 17 KiB |
8
data/fonts/terminus-10px.otfont
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
Font
|
||||||
|
name: terminus-10px
|
||||||
|
texture: terminus-10px
|
||||||
|
height: 12
|
||||||
|
y-offset: 0
|
||||||
|
glyph-size: 16 16
|
||||||
|
fixed-glyph-width: 6
|
||||||
|
space-width: 6
|
BIN
data/fonts/terminus-10px.png
Normal file
After Width: | Height: | Size: 3.1 KiB |
@@ -1,6 +1,6 @@
|
|||||||
Font
|
Font
|
||||||
name: terminus-14px-bold
|
name: terminus-14px-bold
|
||||||
texture: terminus-14px-bold.png
|
texture: terminus-14px-bold
|
||||||
height: 16
|
height: 16
|
||||||
y-offset: 2
|
y-offset: 2
|
||||||
glyph-size: 16 16
|
glyph-size: 16 16
|
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 3.8 KiB |
@@ -1,6 +1,7 @@
|
|||||||
Font
|
Font
|
||||||
name: verdana-11px-antialised
|
name: verdana-11px-antialised
|
||||||
texture: verdana-11px-antialised_cp1252.png
|
texture: verdana-11px-antialised_cp1252
|
||||||
height: 14
|
height: 14
|
||||||
glyph-size: 16 16
|
glyph-size: 16 16
|
||||||
space-width: 4
|
space-width: 4
|
||||||
|
default: true
|
Before Width: | Height: | Size: 9.3 KiB After Width: | Height: | Size: 9.3 KiB |
Before Width: | Height: | Size: 9.8 KiB After Width: | Height: | Size: 9.8 KiB |
@@ -1,6 +1,6 @@
|
|||||||
Font
|
Font
|
||||||
name: verdana-11px-monochrome
|
name: verdana-11px-monochrome
|
||||||
texture: verdana-11px-monochrome_cp1252.png
|
texture: verdana-11px-monochrome_cp1252
|
||||||
height: 14
|
height: 14
|
||||||
glyph-size: 16 16
|
glyph-size: 16 16
|
||||||
space-width: 3
|
space-width: 3
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 3.6 KiB |
@@ -1,6 +1,6 @@
|
|||||||
Font
|
Font
|
||||||
name: verdana-11px-rounded
|
name: verdana-11px-rounded
|
||||||
texture: verdana-11px-rounded_cp1252.png
|
texture: verdana-11px-rounded_cp1252
|
||||||
height: 16
|
height: 16
|
||||||
glyph-size: 16 16
|
glyph-size: 16 16
|
||||||
y-offset: -2
|
y-offset: -2
|
Before Width: | Height: | Size: 6.0 KiB After Width: | Height: | Size: 6.0 KiB |
Before Width: | Height: | Size: 9.7 KiB After Width: | Height: | Size: 9.7 KiB |
BIN
data/images/background.png
Normal file
After Width: | Height: | Size: 1.3 MiB |
Before Width: | Height: | Size: 518 B After Width: | Height: | Size: 518 B |
BIN
data/images/flags/de.png
Normal file
After Width: | Height: | Size: 35 KiB |
BIN
data/images/flags/en.png
Normal file
After Width: | Height: | Size: 44 KiB |
BIN
data/images/flags/es.png
Normal file
After Width: | Height: | Size: 52 KiB |
BIN
data/images/flags/pl.png
Normal file
After Width: | Height: | Size: 32 KiB |
BIN
data/images/flags/pt.png
Normal file
After Width: | Height: | Size: 52 KiB |
BIN
data/images/flags/sv.png
Normal file
After Width: | Height: | Size: 42 KiB |
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 3.1 KiB |
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 3.0 KiB |
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 2.9 KiB |
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 3.0 KiB |
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.5 KiB |
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
BIN
data/images/game/combatmodes/mount.png
Normal file
After Width: | Height: | Size: 2.0 KiB |
BIN
data/images/game/combatmodes/redfistmode.png
Normal file
After Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.9 KiB |
BIN
data/images/game/combatmodes/whitedovemode.png
Normal file
After Width: | Height: | Size: 1.9 KiB |
BIN
data/images/game/combatmodes/whitehandmode.png
Normal file
After Width: | Height: | Size: 2.0 KiB |
BIN
data/images/game/combatmodes/yellowhandmode.png
Normal file
After Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 245 B After Width: | Height: | Size: 245 B |
Before Width: | Height: | Size: 669 B After Width: | Height: | Size: 669 B |
Before Width: | Height: | Size: 300 B After Width: | Height: | Size: 300 B |
BIN
data/images/game/console/ignore.png
Normal file
After Width: | Height: | Size: 474 B |
Before Width: | Height: | Size: 271 B After Width: | Height: | Size: 271 B |
Before Width: | Height: | Size: 285 B After Width: | Height: | Size: 285 B |
Before Width: | Height: | Size: 255 B After Width: | Height: | Size: 255 B |
Before Width: | Height: | Size: 255 B After Width: | Height: | Size: 255 B |
Before Width: | Height: | Size: 266 B After Width: | Height: | Size: 266 B |
BIN
data/images/game/dangerous.png
Normal file
After Width: | Height: | Size: 227 B |
Before Width: | Height: | Size: 385 B After Width: | Height: | Size: 385 B |
Before Width: | Height: | Size: 381 B After Width: | Height: | Size: 381 B |
BIN
data/images/game/emblems/emblem_member.png
Normal file
After Width: | Height: | Size: 333 B |
BIN
data/images/game/emblems/emblem_other.png
Normal file
After Width: | Height: | Size: 319 B |
Before Width: | Height: | Size: 386 B After Width: | Height: | Size: 386 B |
BIN
data/images/game/minimap/cross.png
Normal file
After Width: | Height: | Size: 243 B |
BIN
data/images/game/minimap/flag0.png
Normal file
After Width: | Height: | Size: 335 B |
BIN
data/images/game/minimap/flag1.png
Normal file
After Width: | Height: | Size: 397 B |
BIN
data/images/game/minimap/flag10.png
Normal file
After Width: | Height: | Size: 387 B |
BIN
data/images/game/minimap/flag11.png
Normal file
After Width: | Height: | Size: 444 B |
BIN
data/images/game/minimap/flag12.png
Normal file
After Width: | Height: | Size: 362 B |
BIN
data/images/game/minimap/flag13.png
Normal file
After Width: | Height: | Size: 373 B |
BIN
data/images/game/minimap/flag14.png
Normal file
After Width: | Height: | Size: 397 B |
BIN
data/images/game/minimap/flag15.png
Normal file
After Width: | Height: | Size: 412 B |
BIN
data/images/game/minimap/flag16.png
Normal file
After Width: | Height: | Size: 418 B |
BIN
data/images/game/minimap/flag17.png
Normal file
After Width: | Height: | Size: 399 B |
BIN
data/images/game/minimap/flag18.png
Normal file
After Width: | Height: | Size: 402 B |
BIN
data/images/game/minimap/flag19.png
Normal file
After Width: | Height: | Size: 392 B |
BIN
data/images/game/minimap/flag2.png
Normal file
After Width: | Height: | Size: 418 B |
BIN
data/images/game/minimap/flag3.png
Normal file
After Width: | Height: | Size: 431 B |
BIN
data/images/game/minimap/flag4.png
Normal file
After Width: | Height: | Size: 321 B |
BIN
data/images/game/minimap/flag5.png
Normal file
After Width: | Height: | Size: 354 B |