mrpin-sdk 0.3.141 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +47 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +65 -0
  6. data/Rakefile +1 -0
  7. data/app/assets/stylesheets/mrpin/sign_in.css +32 -0
  8. data/app/assets/stylesheets/mrpin.css.scss +3 -0
  9. data/app/views/devise/sessions/new.html.erb +16 -0
  10. data/app/views/layouts/devise.html.erb +12 -0
  11. data/lib/mrpin/all_files.rb +48 -0
  12. data/lib/mrpin/api/base/api_object.rb +48 -0
  13. data/lib/mrpin/api/base/handler_base.rb +86 -0
  14. data/lib/mrpin/api/base/request_base.rb +15 -0
  15. data/lib/mrpin/api/base/response_base.rb +29 -0
  16. data/lib/mrpin/api/bundles/init/handler_bundles_init.rb +36 -0
  17. data/lib/mrpin/api/bundles/init/request_bundles_init.rb +7 -0
  18. data/lib/mrpin/api/bundles/init/response_bundles_init.rb +5 -0
  19. data/lib/mrpin/api/packs/requests_pack.rb +38 -0
  20. data/lib/mrpin/api/packs/responses_pack.rb +38 -0
  21. data/lib/mrpin/api/platform/base/handler_platform_base.rb +26 -0
  22. data/lib/mrpin/api/platform/base/request_platform_base.rb +54 -0
  23. data/lib/mrpin/api/platform/report/handler_report_error.rb +74 -0
  24. data/lib/mrpin/api/platform/report/request_report_error.rb +20 -0
  25. data/lib/mrpin/api/standard/response_error.rb +19 -0
  26. data/lib/mrpin/api/standard/response_ok.rb +18 -0
  27. data/lib/mrpin/api/standard/response_session_end.rb +21 -0
  28. data/lib/mrpin/api/standard/response_with_url_data.rb +7 -0
  29. data/lib/mrpin/api/system/echo/handler_system_echo.rb +25 -0
  30. data/lib/mrpin/api/system/echo/request_system_echo.rb +19 -0
  31. data/lib/mrpin/config/initializers/00_carrier_wave.rb +4 -0
  32. data/lib/mrpin/config/initializers/01_devise.rb +264 -0
  33. data/lib/mrpin/config/initializers/02_mongo.rb +2 -0
  34. data/lib/mrpin/config/initializers/03_i18n.rb +3 -0
  35. data/lib/mrpin/config/initializers.rb +7 -0
  36. data/lib/mrpin/config/locales/rails_admin.en.yml +10 -0
  37. data/lib/mrpin/controllers/application_controller_base.rb +14 -0
  38. data/lib/mrpin/controllers/system_controller_base.rb +222 -0
  39. data/lib/mrpin/core/admin/admin_user.rb +39 -0
  40. data/lib/mrpin/core/admin/e_admin_user_role.rb +4 -0
  41. data/lib/mrpin/core/app_config_base.rb +48 -0
  42. data/lib/mrpin/core/app_info/app_info_base.rb +413 -0
  43. data/lib/mrpin/core/app_info/e_app_state.rb +13 -0
  44. data/lib/mrpin/core/base/amf_serializable.rb +16 -0
  45. data/lib/mrpin/core/base/enum_base.rb +12 -0
  46. data/lib/mrpin/core/base/info_base.rb +18 -0
  47. data/lib/mrpin/core/base/manager_base.rb +74 -0
  48. data/lib/mrpin/core/base/manager_with_json_data.rb +98 -0
  49. data/lib/mrpin/core/base/model_base.rb +219 -0
  50. data/lib/mrpin/core/bundles/bundle_base.rb +197 -0
  51. data/lib/mrpin/core/bundles/bundle_info_base.rb +29 -0
  52. data/lib/mrpin/core/bundles/e_build_type.rb +7 -0
  53. data/lib/mrpin/core/bundles/manager_bundles_base.rb +56 -0
  54. data/lib/mrpin/core/constants/constants_remote.rb +14 -0
  55. data/lib/mrpin/core/currency_exchanger/base/exchanger_base.rb +21 -0
  56. data/lib/mrpin/core/currency_exchanger/currency_exchanger.rb +40 -0
  57. data/lib/mrpin/core/currency_exchanger/e_currency_type.rb +8 -0
  58. data/lib/mrpin/core/currency_exchanger/fixer/exchanger_fixer.rb +40 -0
  59. data/lib/mrpin/core/currency_exchanger/local/exchanger_local.rb +23 -0
  60. data/lib/mrpin/core/currency_exchanger/yahoo/exchanger_yahoo.rb +34 -0
  61. data/lib/mrpin/core/exceptions/assertion_error.rb +3 -0
  62. data/lib/mrpin/core/extensions/hash.rb +25 -0
  63. data/lib/mrpin/core/extensions/mongoid_id_alias.rb +7 -0
  64. data/lib/mrpin/core/extensions/object.rb +57 -0
  65. data/lib/mrpin/core/extensions/thread.rb +23 -0
  66. data/lib/mrpin/core/extensions/time.rb +5 -0
  67. data/lib/mrpin/core/logger/logger_sdk.rb +14 -0
  68. data/lib/mrpin/core/platform/e_platform_type.rb +14 -0
  69. data/lib/mrpin/core/player/e_player_role.rb +7 -0
  70. data/lib/mrpin/core/player/e_sex_type.rb +7 -0
  71. data/lib/mrpin/core/player/player_statistic_base.rb +50 -0
  72. data/lib/mrpin/core/purchase/e_sale_type.rb +7 -0
  73. data/lib/mrpin/core/remote/e_response_type.rb +4 -0
  74. data/lib/mrpin/core/remote/http/manager_remote_http.rb +107 -0
  75. data/lib/mrpin/core/remote/socket/base/extensions/manager_remote_socket_api.rb +43 -0
  76. data/lib/mrpin/core/remote/socket/base/extensions/manager_remote_socket_disconnect.rb +69 -0
  77. data/lib/mrpin/core/remote/socket/base/extensions/manager_remote_socket_handle.rb +155 -0
  78. data/lib/mrpin/core/remote/socket/base/extensions/manager_remote_socket_sessions.rb +41 -0
  79. data/lib/mrpin/core/remote/socket/base/extensions/manager_remote_socket_statistic.rb +41 -0
  80. data/lib/mrpin/core/remote/socket/base/extensions/network_interface_helper.rb +53 -0
  81. data/lib/mrpin/core/remote/socket/base/manager_remote_socket_base.rb +131 -0
  82. data/lib/mrpin/core/remote/socket/base/socket_client_base.rb +181 -0
  83. data/lib/mrpin/core/remote/socket/base/socket_client_crossdomain.rb +33 -0
  84. data/lib/mrpin/core/remote/socket/flash/manager_remote_socket_flash.rb +51 -0
  85. data/lib/mrpin/core/remote/socket/flash/socket_client_flash.rb +21 -0
  86. data/lib/mrpin/core/remote/socket/unity/manager_remote_socket_unity.rb +58 -0
  87. data/lib/mrpin/core/remote/socket/unity/socket_client_unity.rb +19 -0
  88. data/lib/mrpin/core/remote/socket/websocket/manager_remote_web_sockets.rb +101 -0
  89. data/lib/mrpin/core/remote/socket/websocket/socket_client_web_sockets.rb +129 -0
  90. data/lib/mrpin/core/remote/socket/with_policy/socket_client_with_policy.rb +66 -0
  91. data/lib/mrpin/core/review.rb +231 -0
  92. data/lib/mrpin/core/scheduler/manager_scheduler.rb +66 -0
  93. data/lib/mrpin/core/statistic/error_client_base.rb +136 -0
  94. data/lib/mrpin/core/statistic/error_server_base.rb +93 -0
  95. data/lib/mrpin/core/statistic/manager_statistics_base.rb +221 -0
  96. data/lib/mrpin/core/statistic/statistic_application_base.rb +88 -0
  97. data/lib/mrpin/core/statistic/statistic_config_base.rb +38 -0
  98. data/lib/mrpin/core/statistic/system_handler_profiler.rb +85 -0
  99. data/lib/mrpin/core/string/e_language_type.rb +29 -0
  100. data/lib/mrpin/core/string/e_string_type_base.rb +14 -0
  101. data/lib/mrpin/core/string/localization_base.rb +77 -0
  102. data/lib/mrpin/core/string/localization_base_map.rb +303 -0
  103. data/lib/mrpin/core/string/manager_string_base.rb +159 -0
  104. data/lib/mrpin/core/threads/thread_with_task.rb +62 -0
  105. data/lib/mrpin/core/uploaders/aws/aws_file_info.rb +16 -0
  106. data/lib/mrpin/core/uploaders/aws/aws_uploader.rb +229 -0
  107. data/lib/mrpin/core/uploaders/carrierwave/file_uploader.rb +7 -0
  108. data/lib/mrpin/core/uploaders/carrierwave/file_uploader_helpers_base.rb +66 -0
  109. data/lib/mrpin/core/uploaders/carrierwave/file_uploader_helpers_local.rb +111 -0
  110. data/lib/mrpin/core/uploaders/carrierwave/file_uploader_helpers_s3.rb +87 -0
  111. data/lib/mrpin/core/uploaders/carrierwave/zip_uploader.rb +10 -0
  112. data/lib/mrpin/core/utils/mongo.rb +41 -0
  113. data/lib/mrpin/core/utils/sorter_base.rb +344 -0
  114. data/lib/mrpin/core/utils/utils_io.rb +27 -0
  115. data/lib/mrpin/core/utils/utils_string.rb +17 -0
  116. data/lib/mrpin/core/utils/utils_zip.rb +58 -0
  117. data/lib/mrpin/libs/rails_admin/localization.rb +70 -0
  118. data/lib/mrpin/libs.rb +11 -0
  119. data/lib/mrpin/rails/engine.rb +11 -0
  120. data/lib/mrpin/vendors.rb +19 -0
  121. data/lib/mrpin/version.rb +3 -0
  122. data/lib/mrpin-sdk.rb +6 -0
  123. data/mrpin-sdk.gemspec +54 -0
  124. metadata +163 -96
@@ -0,0 +1,29 @@
1
+ class ELanguageType < EnumBase
2
+ ELT_DEV = 'dev'
3
+
4
+ ELT_ARABIC = 'ar'
5
+ ELT_BULGARIAN = 'bg'
6
+ ELT_CHINESE = 'zh'
7
+ ELT_CZECH = 'cs'
8
+ ELT_DANISH = 'da'
9
+ ELT_DUTCH = 'nl'
10
+ ELT_ENGLISH = 'en'
11
+ ELT_FINNISH = 'fi'
12
+ ELT_FRENCH = 'fr'
13
+ ELT_GERMAN = 'de'
14
+ ELT_GREEK = 'el'
15
+ ELT_HUNGARIAN = 'hu'
16
+ ELT_ITALIAN = 'it'
17
+ ELT_JAPANESE = 'ja'
18
+ ELT_NORWEGIAN = 'no'
19
+ ELT_POLISH = 'pl'
20
+ ELT_PORTUGUESE = 'pt'
21
+ ELT_ROMANIAN = 'ro'
22
+ ELT_RUSSIAN = 'ru'
23
+ ELT_SERBIAN = 'sr'
24
+ ELT_SLOVAKIAN = 'sk'
25
+ ELT_SPANISH = 'es'
26
+ ELT_SWEDISH = 'sv'
27
+ ELT_TURKISH = 'tr'
28
+ ELT_UKRAINIAN = 'ua'
29
+ end
@@ -0,0 +1,14 @@
1
+ class EStringTypeBase < EnumBase
2
+
3
+ EST_ALPHABET = :alphabet
4
+
5
+ EST_ERROR_LOGIN_TWICE = :EST_ERROR_LOGIN_TWICE
6
+ EST_ERROR_UNKNOWN = :EST_ERROR_UNKNOWN
7
+ EST_ERROR_SERVER_ON_MAINTENANCE = :EST_ERROR_SERVER_ON_MAINTENANCE
8
+ EST_ERROR_SERVER_SHUTDOWN = :EST_ERROR_SERVER_SHUTDOWN
9
+ EST_ERROR_PLAYER_INACTIVE = :EST_ERROR_PLAYER_INACTIVE
10
+ EST_ERROR_PLAYER_BANNED = :EST_ERROR_PLAYER_BANNED
11
+
12
+ EST_ERROR_WRONG_PARAMETER = 'error_wrong_parameter'
13
+
14
+ end
@@ -0,0 +1,77 @@
1
+ class LocalizationBase < ModelBase
2
+
3
+ SUPPORTED_LANGUAGES = ELanguageType.values_list.map(&:to_sym)
4
+
5
+ include Mongoid::Document
6
+ prepend MongoidIdAlias
7
+
8
+ #
9
+ # admin
10
+ #
11
+
12
+ public
13
+ def self.configure_admin_list(section, field_name)
14
+ case field_name
15
+ when :_id
16
+ section.configure field_name do
17
+ visible false
18
+ end
19
+ else
20
+ super(section, field_name)
21
+ end
22
+ end
23
+
24
+ public
25
+ def self.need_show_for_admin_user?(user)
26
+ user.role == EAdminUserRole::EAUR_MODERATOR || super
27
+ end
28
+
29
+ #
30
+ # db
31
+ #
32
+
33
+ store_in collection: 'localizations'
34
+
35
+ #
36
+ # callbacks
37
+ #
38
+ before_save :callback_before_save
39
+
40
+ #
41
+ # fields
42
+ #
43
+
44
+ field :key, type: String
45
+
46
+ SUPPORTED_LANGUAGES.each do |language|
47
+ field language.to_sym, type: String, default: ''
48
+ end
49
+
50
+ #
51
+ # add indexes
52
+ #
53
+
54
+ index({key: 1}, {unique: 1})
55
+
56
+ #
57
+ # Methods
58
+ #
59
+
60
+ # default constructor
61
+ def initialize(options = nil)
62
+ super
63
+ end
64
+
65
+ public
66
+ def callback_before_save
67
+ self.key = self.key.downcase unless self.key.nil?
68
+ end
69
+
70
+
71
+ #
72
+ # validates
73
+ #
74
+
75
+ validates :key, presence: true, uniqueness: true
76
+
77
+ end
@@ -0,0 +1,303 @@
1
+ module LocalizationBaseMap
2
+
3
+ LOCALIZATION_BASE =
4
+
5
+ {
6
+ ELanguageType::ELT_ENGLISH.to_sym => {
7
+
8
+ alphabet: %w(A B C D E F G H I J K L M N O P Q R S T U V W X Y Z),
9
+
10
+
11
+ EST_SOCIAL_INVITE_FRIEND_MESSAGE: [
12
+ 'Great game! Play with me!'
13
+ ],
14
+
15
+ EST_SOCIAL_WALLPOST_TOP: [
16
+ "I'm on #VALUE# place! Try to beat me!"
17
+ ],
18
+
19
+ EST_SOCIAL_WALLPOST_ALBUM: [
20
+ 'Please help finish this level.'
21
+ ],
22
+
23
+ EST_SOCIAL_NOTIFICATION_GIFT_SEND: [
24
+ 'Gift from friend.',
25
+ 'Take a gift from me:)'
26
+ ],
27
+
28
+ EST_SOCIAL_NOTIFICATION_GIFT_ASK: [
29
+ 'Please send me gift:)'
30
+ ],
31
+
32
+ EST_PLATFORM_LOGIN_TWICE: 'You are login in another place',
33
+ EST_SOCIAL_ALBUM_NAME: 'Album for MrPin game',
34
+ EST_GAME_NAME: 'MrPin game',
35
+
36
+ EST_RESOURCE_BUTTON_HOURLY: 'Hourly bonus',
37
+ EST_RESOURCE_TOOLTIP: 'You have #VALUE##0#',
38
+
39
+ EST_FRIENDS_BUTTON_TOP: 'Open top players',
40
+ EST_FRIENDS_BUTTON_INVITE: 'Invite friends - receive awards!',
41
+ EST_FRIENDS_ITEM_BUTTON_GIFT_ASK: 'Ask gift',
42
+ EST_FRIENDS_ITEM_BUTTON_GIFT_SEND: 'Send gift',
43
+ EST_FRIENDS_ITEM_BUTTON_INVITE: 'Invite friend',
44
+
45
+ #bank
46
+ EST_BANK_TITLE: 'Payment menu',
47
+ EST_BANK_TEXT: 'Pay more - receive even more!',
48
+
49
+ EST_BANK_SALE_BEST: "Best\noffer!",
50
+ EST_BANK_SALE_POPULAR: "Most\npopular!",
51
+
52
+ EST_BANK_BUTTON_INVITE: 'Invite',
53
+ EST_BANK_LABEL_INVITE: "Invite friends - receive awards!\n#VALUE# for each player in game!",
54
+
55
+ #bonus
56
+ EST_BONUS_DAILY_TITLE: 'Daily bonus',
57
+ EST_BONUS_DAILY_BUTTON_INVITE: 'Invite',
58
+ EST_BONUS_DAILY_BUTTON_CLOSE: 'Thanks!:)',
59
+ EST_BONUS_DAILY_LABEL_TITLE_BONUS: 'Sign in game everyday and receive more awards!',
60
+ EST_BONUS_DAILY_LABEL_TITLE_INVITED: 'Bonus for friends',
61
+ EST_BONUS_DAILY_ITEM_TITLE: 'Day #VALUE#',
62
+
63
+
64
+ EST_BONUS_FRIENDS_TITLE: 'New friends in game!',
65
+ EST_BONUS_FRIENDS_TEXT: "Congratulations!\nYour bonus:",
66
+ EST_BONUS_FRIENDS_BUTTON_CLOSE: 'Cool!',
67
+
68
+ #error
69
+ EST_ERROR_TITLE: 'Error',
70
+ EST_ERROR_BUTTON_CLOSE: 'Refresh',
71
+
72
+ #gift
73
+
74
+ EST_GIFT_TITLE: 'Gifts from friends',
75
+ EST_GIFT_TEXT: 'Every day you can claim #VALUE# gifts from friends.',
76
+ EST_GIFT_TEXT_SEND_ALL: 'Send back',
77
+ EST_GIFT_BUTTON_CLOSE: 'Claim',
78
+
79
+ #offer
80
+ EST_OFFER_BUTTON: 'Promotion!',
81
+ EST_OFFER_TITLE: [
82
+ ''
83
+ ],
84
+
85
+ EST_OFFER_BUTTON_BUY: 'Just #VALUE##0#',
86
+ EST_OFFER_LABEL_TIMER: 'Time left:',
87
+
88
+ #no resources
89
+ EST_NO_RESOURCES_TITLE: 'Not enough resources:(',
90
+ EST_NO_RESOURCES_BUTTON_WAIT: 'Ok:(',
91
+ EST_NO_RESOURCES_BUTTON_BUY: 'Buy more',
92
+ EST_NO_RESOURCES_TEXT: 'To start the game you need #VALUE##0#.',
93
+
94
+ #top
95
+ EST_TOP_TITLE: 'Top players',
96
+ EST_TOP_POSITION: 'You are #VALUE#',
97
+ EST_TOP_POINTS: 'You have #VALUE##0#',
98
+ EST_TOP_BUTTON_SHARE: 'Share',
99
+
100
+ EST_WIN_TITLE: '#VALUE# level complete',
101
+ EST_WIN_BUTTON_CLOSE: 'Next',
102
+ EST_WIN_LABEL_SHARE: 'Share',
103
+ EST_WIN_BUTTON_RESTART: 'Retry',
104
+
105
+ EST_ERROR_LOGIN_TWICE: "You're logged in from somwhere else.",
106
+ EST_ERROR_CONNECTION_LOST: 'Connection with server lost!',
107
+ EST_ERROR_NO_CONTENT: 'Congratulations! You have passed the game!',
108
+ EST_ERROR_SERVER_ON_MAINTENANCE: 'Server on maintenance. Be patient:)',
109
+ EST_ERROR_PLAYER_INACTIVE: 'Anybody here?',
110
+ EST_ERROR_PLAYER_BANNED: [
111
+ 'You are banned'
112
+ ],
113
+ EST_ERROR_SERVER_SHUTDOWN: 'Technical pause. Please wait few minutes:)',
114
+
115
+ EST_GAME_HINT: [
116
+ 'Play everyday and receive free bonuses!',
117
+ 'Want more currency? Invite friend and receive!',
118
+ 'Play in fullscreen mode! Dive into the game!',
119
+ 'Learn payment menu before pay. By buying in bulk you get a big discount!',
120
+ 'If you If you find an error mistake in game - just write to administrator or official page and we will give bonus to you:).',
121
+ 'Have a high position in the game? Share with friends!',
122
+ 'Do not miss the exciting news, and action games - join the group application. Discover all the first!'
123
+ ],
124
+
125
+ EST_NOTIFICATION_DAILY_BONUS_READY:
126
+ [
127
+ 'Sign in and take your bonus! :)',
128
+ "you've already received own bonus?",
129
+ ],
130
+ EST_NOTIFICATION_NEW_FRIEND_IN_GAME:
131
+ [
132
+ 'New friend in game. Take your currency!',
133
+ 'More friends - more gifts!',
134
+ 'New friends - more currency!',
135
+ ],
136
+ EST_NOTIFICATION_COME_BACK_IN_GAME:
137
+ [
138
+ '', #todo:implement
139
+ ]
140
+ },
141
+
142
+ ELanguageType::ELT_RUSSIAN.to_sym => {
143
+
144
+ alphabet: %w(А Б В Г Д Е Ё Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я),
145
+
146
+
147
+ EST_SOCIAL_INVITE_FRIEND_MESSAGE: [
148
+ 'Такой игры ты еще не видел! Заходи!'
149
+ ],
150
+
151
+ EST_SOCIAL_WALLPOST_TOP: [
152
+ 'Посмотрите я на #VALUE# месте! Играй и ты со мной!'
153
+ ],
154
+
155
+ EST_SOCIAL_WALLPOST_ALBUM: [
156
+ 'Друзья, помогите пройти уровень!',
157
+ 'Друзья, не могу пройти уровень - помогите!',
158
+ 'Друг, сегодня ты помог мне - завтра я помогу тебе :)'
159
+ ],
160
+
161
+ EST_SOCIAL_NOTIFICATION_GIFT_SEND: [
162
+ 'О! Подарок от друга!',
163
+ 'Ух-ты, новый подарок!',
164
+ 'Подарок! Интересно какой?',
165
+ 'Держи подарочек от меня :)',
166
+ 'Держи подарок! Жду тебя в игре!',
167
+ 'Подарок? Я отправил! Увидимся в игре!',
168
+ 'Заходи в игру, тебя ждет мой подарок!',
169
+ 'Это просто какой-то праздник каждый день!',
170
+ 'Я подарил тебе подарок. Возвращайся в игру!',
171
+ 'Я отправил тебе подарок! Жду тебя в игре :)',
172
+ 'Не получается пройти уровень? Я тебе помогу, заходи в игру'
173
+ ],
174
+
175
+ EST_SOCIAL_NOTIFICATION_GIFT_ASK: [
176
+ 'Сделай доброе дело – пришли мне подарок!',
177
+ 'Привет! Заходи в игру и пришли мне, пожалуйста, подарок!'
178
+ ],
179
+
180
+ EST_GAME_NAME: 'Игра от MrPin',
181
+
182
+ EST_SOCIAL_ALBUM_NAME: 'Альбом игры MrPin',
183
+
184
+ EST_RESOURCE_BUTTON_HOURLY: 'Бонус',
185
+ EST_RESOURCE_TOOLTIP: 'У Вас #VALUE##0#',
186
+
187
+ EST_FRIENDS_BUTTON_TOP: 'Открыть топ игроков',
188
+ EST_FRIENDS_BUTTON_INVITE: 'Приглашай друзей - получай награду!',
189
+ EST_FRIENDS_ITEM_BUTTON_GIFT_ASK: 'Попросить подарок',
190
+ EST_FRIENDS_ITEM_BUTTON_GIFT_SEND: 'Отправить подарок',
191
+ EST_FRIENDS_ITEM_BUTTON_INVITE: 'Пригласить в игру',
192
+
193
+ #bank
194
+ EST_BANK_TITLE: 'Банк',
195
+ EST_BANK_TEXT: 'Покупай больше и получай больше бонус!',
196
+
197
+ EST_BANK_SALE_BEST: "Лучшее\nпредложение!",
198
+ EST_BANK_SALE_POPULAR: "Популярный\nвыбор!",
199
+
200
+ EST_BANK_BUTTON_INVITE: 'Пригласить',
201
+ EST_BANK_LABEL_INVITE: "Приглашай друзей - получай награду!\n#VALUE# за каждого друга в игре!",
202
+
203
+ #bonus
204
+ EST_BONUS_DAILY_TITLE: 'Ежедневный бонус',
205
+ EST_BONUS_DAILY_BUTTON_INVITE: 'Пригласить друга',
206
+ EST_BONUS_DAILY_BUTTON_CLOSE: 'Спасибо!:)',
207
+ EST_BONUS_DAILY_LABEL_TITLE_BONUS: 'Заходи в игру каждый день и получай бонусы',
208
+ EST_BONUS_DAILY_LABEL_TITLE_INVITED: 'Бонус за друзей',
209
+ EST_BONUS_DAILY_ITEM_TITLE: 'День #VALUE#',
210
+
211
+
212
+ EST_BONUS_FRIENDS_TITLE: 'Новые друзья в игре!',
213
+ EST_BONUS_FRIENDS_TEXT: "Поздравляем!\nВаш бонус за друзей:",
214
+ EST_BONUS_FRIENDS_BUTTON_CLOSE: 'Отлично!',
215
+
216
+ #error
217
+ EST_ERROR_TITLE: 'Ошибочка',
218
+ EST_ERROR_BUTTON_CLOSE: 'Обновить',
219
+
220
+ #gift
221
+
222
+ EST_GIFT_TITLE: 'Подарки от друзей',
223
+ EST_GIFT_TEXT: 'Ежедневно можешь забрать до #VALUE# подарков от друзей.',
224
+ EST_GIFT_TEXT_SEND_ALL: 'Отправить в ответ',
225
+ EST_GIFT_BUTTON_CLOSE: 'Забрать',
226
+
227
+ #offer
228
+ EST_OFFER_BUTTON: 'Акция!',
229
+ EST_OFFER_TITLE: [
230
+ 'Куй железо, пока горячо!',
231
+ 'Акция!',
232
+ 'Кто не купил - тот опоздал!'
233
+ ],
234
+
235
+ EST_OFFER_BUTTON_BUY: 'Всего за #VALUE##0#',
236
+ EST_OFFER_LABEL_TIMER: 'До окончания акции осталось:',
237
+
238
+ #no resources
239
+ EST_NO_RESOURCES_TITLE: 'Не хватает ресурсов:(',
240
+ EST_NO_RESOURCES_BUTTON_WAIT: 'Хорошо:(',
241
+ EST_NO_RESOURCES_BUTTON_BUY: 'Докупить',
242
+ EST_NO_RESOURCES_TEXT: 'Для старта игры необходимо #VALUE##0#.',
243
+
244
+ #top
245
+ EST_TOP_TITLE: 'Топ игроков',
246
+ EST_TOP_POSITION: 'Вы на #VALUE# месте',
247
+ EST_TOP_POINTS: 'У Вас #VALUE##0#',
248
+ EST_TOP_BUTTON_SHARE: 'Похвастаться',
249
+
250
+ EST_WIN_TITLE: 'Уровень #VALUE# пройден!',
251
+ EST_WIN_BUTTON_CLOSE: 'Далее',
252
+ EST_WIN_LABEL_SHARE: 'Похвастаться',
253
+ EST_WIN_BUTTON_RESTART: 'Заново',
254
+
255
+ EST_ERROR_LOGIN_TWICE: 'Вы вошли в игру на другом устройстве',
256
+ EST_ERROR_CONNECTION_LOST: 'Шеф, все пропало! Соединение с сервером утеряно!',
257
+ EST_ERROR_NO_CONTENT: 'Поздравляю! Вся игра пройдена!',
258
+ EST_ERROR_SERVER_ON_MAINTENANCE: 'Мы проводим технические работы. Подождите еще чуть-чуть:)',
259
+ EST_ERROR_PLAYER_INACTIVE: 'Эй! Ты где? Совсем забыл про меня:(',
260
+ EST_ERROR_PLAYER_BANNED: [
261
+ 'Поздравляю! Вы сорвали джекпот - Вас забанили! Это удается отнюдь немногим:)',
262
+ 'Всё. Кина не будет... Электричество кончилось.'
263
+ ],
264
+ EST_ERROR_SERVER_SHUTDOWN: 'Техническая пауза. Не переключайтесь, через минутку вернемся:)',
265
+
266
+ EST_GAME_HINT: [
267
+ 'Заходи в игру и собирай бесплатные бонусы ежедневно!',
268
+ 'Хочешь еще монет? Получи их бесплатно пригласив друга в игру!',
269
+ 'Управление музыкой и звуками в игре находится в меню настроек.',
270
+ 'Окунись в игру с головой - включи полноэкранный режим в меню настроек!',
271
+ 'Изучи платежное меню перед покупкой. Покупая оптом получаешь большую скидку!',
272
+ 'Если обнаружили ошибку в игре - напишите в группу приложения, и мы начислим дополнительный бонус.',
273
+ 'Занимаешь высокую позицию в топе? Похвастайся этим перед друзьями, нажав на кнопку в окне Лидеров.',
274
+ 'Не пропустите интересные новости и акции игры - вступайте в группу приложения. Узнайте обо всем первыми!'
275
+ ],
276
+
277
+ EST_NOTIFICATION_DAILY_BONUS_READY:
278
+ [
279
+ 'Бонус начислен. Получите, распишитесь.',
280
+ 'Заходи в игру - получай бонусы!',
281
+ 'Сегодня уже забрал свой бонус?',
282
+ 'Скорее заходи в игру и получай ежедневный бонус!'
283
+ ],
284
+ EST_NOTIFICATION_NEW_FRIEND_IN_GAME:
285
+ [
286
+ 'Твой друг в игре - держи монеты!',
287
+ 'Больше друзей в игре - больше подарков!',
288
+ 'Зови друзей в игру - получай монеты!',
289
+ 'Получай свой бонус за друга в игре!'
290
+ ],
291
+ EST_NOTIFICATION_COME_BACK_IN_GAME:
292
+ [
293
+ 'Эта игра затягивает - не оторваться!',
294
+ 'Возвращайся в игру, тебя опережают в топе!',
295
+ 'Блесни умом! Возвращайся в игру!',
296
+ 'Твои рекорды уже побили! Скорее возвращайся!',
297
+ 'Только для самых активных игроков - пора занимать места в топе!'
298
+ ]
299
+ }
300
+ }
301
+
302
+
303
+ end
@@ -0,0 +1,159 @@
1
+ class ManagerStringBase < ManagerBase
2
+
3
+ #
4
+ # Properties
5
+ #
6
+
7
+ attr_reader :localization_keys_list
8
+ attr_reader :supported_languages
9
+ attr_reader :languages_priority
10
+
11
+ public
12
+ def get_localization_base_map
13
+ return @localization_base unless @localization_base.nil?
14
+
15
+ localization_base = {}
16
+
17
+ localization = LocalizationBaseMap::LOCALIZATION_BASE
18
+
19
+ localization_dup = localization.deep_dup
20
+
21
+ localization_dup.each do |language, keys_map|
22
+
23
+ localization_base[language] = {}
24
+
25
+ keys_map.each do |key, value|
26
+ if value.is_a?(Array)
27
+ localization_base[language][key] = value
28
+ else
29
+ localization_base[language][key] = [value]
30
+ end
31
+ end
32
+ end
33
+
34
+ @localization_base = localization_base
35
+ end
36
+
37
+ #
38
+ # Methods
39
+ #
40
+
41
+ # default constructor
42
+ def initialize(options = nil)
43
+ super(options)
44
+
45
+ @supported_languages = ELanguageType.values_list.map(&:to_sym)
46
+
47
+ @languages_priority = [ELanguageType::ELT_ENGLISH, ELanguageType::ELT_RUSSIAN]
48
+
49
+ @class_localization = get_class_by_name(CLASS_MAP[EClassType::ECT_LOCALIZATION])
50
+
51
+ #key - language, value - {key - string_key, value - string}
52
+ @string_map = {}
53
+
54
+ @localization_keys_list = []
55
+
56
+ @responses_map = {}
57
+ end
58
+
59
+ public
60
+ def invalidate_cache
61
+ super
62
+
63
+ localization_base = get_localization_base_map
64
+
65
+ string_map = localization_base.deep_dup
66
+
67
+ localizations = @class_localization.all.to_a
68
+
69
+ @supported_languages.each do |language|
70
+ string_map[language] ||= {}
71
+ end
72
+
73
+ localizations.each do |localization_item|
74
+
75
+ key = localization_item[:key].to_sym
76
+
77
+ @supported_languages.each do |language|
78
+
79
+ texts = localization_item[language]
80
+
81
+ unless texts.nil? || texts.empty?
82
+ string_map[language][key] = texts
83
+ end
84
+
85
+ end
86
+
87
+ end
88
+
89
+ localization_keys_list = []
90
+
91
+ string_map.each do |language, keys_map|
92
+ localization_keys_list |= keys_map.keys.map(&:to_s)
93
+ end
94
+
95
+ @string_map = string_map
96
+ @localization_keys_list = localization_keys_list
97
+
98
+ update_responses_map
99
+ end
100
+
101
+ protected
102
+ def update_responses_map
103
+ responses_map = {}
104
+
105
+ @string_map.each do |language, localization_map|
106
+ response = Api::ResponseStringInit.new
107
+ response.language = language
108
+ response.localization_map = localization_map
109
+ responses_map[language] = AMF::Root.serialize(response)
110
+ end
111
+
112
+ @responses_map = responses_map
113
+ end
114
+
115
+ public
116
+ def localized_string(key, language)
117
+ keys_map = @string_map[language.to_sym]
118
+
119
+ return nil if keys_map.nil?
120
+
121
+ result = keys_map[key.to_sym]
122
+
123
+ if result.is_a? (Array)
124
+ result = result.sample
125
+ end
126
+
127
+ result
128
+ end
129
+
130
+ public
131
+ def get_localization_response_for(language)
132
+ @responses_map[language.to_sym] || @responses_map[ELanguageType::ELT_ENGLISH.to_sym] || {}
133
+ end
134
+
135
+ public
136
+ def get_string_languages(key)
137
+ result = []
138
+
139
+ @string_map.each do |language, keys_map|
140
+ result << language.to_s unless keys_map[key.to_sym].nil?
141
+ end
142
+
143
+ result
144
+ end
145
+
146
+ public
147
+ def get_alphabet_for(language)
148
+ result = nil
149
+
150
+ language_map = @string_map[language.to_sym]
151
+
152
+ unless language_map.nil?
153
+ result = language_map[EStringTypeBase::EST_ALPHABET]
154
+ end
155
+
156
+ result
157
+ end
158
+
159
+ end
@@ -0,0 +1,62 @@
1
+ #todo: review and mb use scheduler
2
+ class ThreadWithTask
3
+
4
+ public
5
+ def initialize(sleep_time, name, delay = 0)
6
+ # in ms
7
+ @sleep_time = sleep_time * 1000.0
8
+ # in seconds
9
+ @delay = delay
10
+ @name = name
11
+ @thread = nil
12
+ end
13
+
14
+ public
15
+ def run(&block)
16
+ logger = AppInfo.instance.logger
17
+
18
+ @thread = Thread.new do
19
+ sleep @delay
20
+
21
+ logger.info "[THREAD STARTED]:\t #{@name}"
22
+
23
+ loop do
24
+
25
+ begin
26
+
27
+ time_now_ms = Time.now.to_ms
28
+ next_tick_time = time_now_ms + @sleep_time
29
+
30
+ block.call
31
+
32
+ sleep_time_seconds = (next_tick_time - Time.now.to_ms) / 1000.0
33
+
34
+ sleep_time_seconds = [sleep_time_seconds, 0.01].max
35
+
36
+ sleep(sleep_time_seconds)
37
+
38
+ rescue Exception => e
39
+ AppInfo.instance.on_server_error("Error on #{@name} thread: #{e}", e)
40
+
41
+ sleep (0.05)
42
+ end #begin
43
+
44
+ end #loop
45
+ end # thread
46
+
47
+ @thread.name = 'thread_with_task'
48
+
49
+ nil
50
+ end
51
+
52
+ public
53
+ def stop
54
+ return if @thread.nil?
55
+
56
+ @thread.stop
57
+ @thread = nil
58
+
59
+ nil
60
+ end
61
+
62
+ end
@@ -0,0 +1,16 @@
1
+ class AWSFileInfo
2
+
3
+ #
4
+ # Properties
5
+ #
6
+ attr_accessor :source
7
+ attr_accessor :url_s3
8
+ attr_accessor :url_cloud_front
9
+
10
+ #
11
+ # Methods
12
+ #
13
+
14
+ # default constructor
15
+
16
+ end