diff --git a/.gitignore b/.gitignore index 6ca9a0b..88f146f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ -build/ +/build/ target/ src-gen/ out/ diff --git a/ansible/ansible.cfg b/ansible/ansible.cfg new file mode 100644 index 0000000..e75f79b --- /dev/null +++ b/ansible/ansible.cfg @@ -0,0 +1,11 @@ +[defaults] +hash_behaviour = merge +host_key_checking = False +#callback_whitelist = profile_tasks +display_skipped_hosts = False +stdout_callback = yaml +bin_ansible_callbacks = True + +[ssh_connection] +pipelining = True +ssh_args = -o ForwardAgent=yes diff --git a/ansible/deploy.yml b/ansible/deploy.yml new file mode 100644 index 0000000..ed386b8 --- /dev/null +++ b/ansible/deploy.yml @@ -0,0 +1,14 @@ +--- +- hosts: all + vars: + ansible_user: "{{ deploy_user }}" + roles: + - ansible-deploy + - build + post_tasks: + - include_role: + name: ansible-deploy + tasks_from: complete.yml + - include_role: + name: service + tasks_from: restart.yml diff --git a/ansible/dev/inventory.yml b/ansible/dev/inventory.yml new file mode 100644 index 0000000..47e4ee3 --- /dev/null +++ b/ansible/dev/inventory.yml @@ -0,0 +1,2 @@ +all: + hosts: localhost diff --git a/ansible/group_vars/all.yml b/ansible/group_vars/all.yml new file mode 100644 index 0000000..2ff7e21 --- /dev/null +++ b/ansible/group_vars/all.yml @@ -0,0 +1,9 @@ +--- +project_name: puzzlez +project_user: holop + +deploy_user: "{{ project_user }}" +deploy_project: "{{ project_name }}" +deploy_repo_url: "git@bitbucket.org:infernalgames/{{ project_name }}.git" +deploy_repo_version: master +deploy_npm: yes diff --git a/ansible/prod/inventory.yml b/ansible/prod/inventory.yml new file mode 100644 index 0000000..6e674a5 --- /dev/null +++ b/ansible/prod/inventory.yml @@ -0,0 +1,4 @@ +all: + hosts: shmyga.ru + vars: + config_src: "/home/holop/puzzlez/config.json" diff --git a/ansible/requirements.yml b/ansible/requirements.yml new file mode 100644 index 0000000..2248dad --- /dev/null +++ b/ansible/requirements.yml @@ -0,0 +1,5 @@ +--- +- name: ansible-deploy + src: git@bitbucket.org:shmyga/ansible-deploy.git + version: master + scm: git diff --git a/ansible/roles/build/defaults/main.yml b/ansible/roles/build/defaults/main.yml new file mode 100644 index 0000000..e711e90 --- /dev/null +++ b/ansible/roles/build/defaults/main.yml @@ -0,0 +1,2 @@ +config_src: "{{ deploy_release_dir }}/config.{{ inventory_hostname }}.json" +config_dest: "{{ deploy_release_dir }}/config.json" diff --git a/ansible/roles/build/tasks/main.yml b/ansible/roles/build/tasks/main.yml new file mode 100644 index 0000000..9e5d8d0 --- /dev/null +++ b/ansible/roles/build/tasks/main.yml @@ -0,0 +1,11 @@ +--- +- name: "Copy config" + copy: + src: "{{ config_src }}" + dest: "{{ config_dest }}" + remote_src: true + +- name: "Gulp build" + command: "{{ deploy_release_dir }}/node_modules/.bin/gulp default" + args: + chdir: "{{ deploy_release_dir }}" diff --git a/gulpfile.js b/gulpfile.js index 00ec5d5..e23b1ba 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -22,7 +22,7 @@ const config = new Project.Config({ meta: { title: 'Puzzle\'z', filename: 'puzzlez', - icon: 'src/client/resources/icon.png', + icon: 'src/icon.png', pack: 'ru.m.puzzlez', author: 'shmyga ', company: 'MegaLoMania', diff --git a/src/haxe/ru/m/puzzlez/render/PartView.hx b/src/haxe/ru/m/puzzlez/render/PartView.hx index e80ac04..c1f2424 100644 --- a/src/haxe/ru/m/puzzlez/render/PartView.hx +++ b/src/haxe/ru/m/puzzlez/render/PartView.hx @@ -19,7 +19,7 @@ class PartView extends Sprite { } private var size:Point; - private var bitmap:Bitmap; + public var bitmap:Bitmap; public function new(id:Int, image:BitmapData, size:Point) { super(); diff --git a/src/haxe/ru/m/puzzlez/render/Render.hx b/src/haxe/ru/m/puzzlez/render/Render.hx index 20a7b15..9b2f190 100644 --- a/src/haxe/ru/m/puzzlez/render/Render.hx +++ b/src/haxe/ru/m/puzzlez/render/Render.hx @@ -1,14 +1,15 @@ package ru.m.puzzlez.render; -import haxework.net.ImageLoader; -import ru.m.puzzlez.core.ImageSource; -import haxework.signal.Signal; import flash.display.BitmapData; +import flash.display.PNGEncoderOptions; import flash.display.Sprite; import flash.events.MouseEvent; import flash.geom.Point; +import flash.geom.Rectangle; +import flash.net.FileReference; +import flash.utils.ByteArray; +import haxework.signal.Signal; import haxework.view.SpriteView; -import openfl.Assets; import ru.m.puzzlez.core.GameEvent; import ru.m.puzzlez.core.GameState; @@ -109,10 +110,19 @@ class Render extends SpriteView implements IRender { signal.emit(GameEvent.PART_PUT(activePart.id, partPosition.clone())); table.stage.removeEventListener(MouseEvent.MOUSE_MOVE, onMouseMove); table.stage.removeEventListener(MouseEvent.MOUSE_UP, onMouseUp); + //save(activePart); activePart = null; activePoint = null; } + private function save(part:PartView):Void { + var file = new FileReference(); + var bitmapData = part.bitmap.bitmapData; + var data = new ByteArray(); + bitmapData.encode(new Rectangle(0, 0, bitmapData.width, bitmapData.height), new PNGEncoderOptions(), data); + file.save(data, "icon.png"); + } + private function clean() { for (partView in parts) { table.removeChild(partView); diff --git a/src/haxe/ru/m/puzzlez/view/PuzzlezAppView.hx b/src/haxe/ru/m/puzzlez/view/PuzzlezAppView.hx index c4c5790..bd60de2 100644 --- a/src/haxe/ru/m/puzzlez/view/PuzzlezAppView.hx +++ b/src/haxe/ru/m/puzzlez/view/PuzzlezAppView.hx @@ -1,5 +1,6 @@ package ru.m.puzzlez.view; +import haxework.view.form.ButtonView; import haxework.net.JsonLoader; import haxework.view.data.DataView; import haxework.view.group.VGroupView; @@ -33,12 +34,6 @@ typedef PixabayResponse = { images.data = [for (name in Assets.list(AssetType.IMAGE)) ASSET(name)]; render.scale = 0.75; scale.position = render.scale - scale.ratio; - - /*new JsonLoader() - .GET('https://pixabay.com/api/?key=14915210-5eae157281211e0ad28bc8def&category=nature') - .then(function(result:PixabayResponse) { - images.data = images.data.concat([for (item in result.hits) URL(item.largeImageURL)]); - });*/ } private function imageViewFactory(index:Int, image:ImageSource):ImageView { @@ -50,6 +45,15 @@ typedef PixabayResponse = { return result; } + private function moreImages(view:ButtonView):Void { + view.visible = false; + new JsonLoader() + .GET('https://pixabay.com/api/?key=14915210-5eae157281211e0ad28bc8def&category=nature') + .then(function(result:PixabayResponse) { + images.data = images.data.concat([for (item in result.hits) URL(item.largeImageURL)]); + }); + } + public function setScale(value:Float):Void { render.scale = value + scale.ratio; } diff --git a/src/haxe/ru/m/puzzlez/view/PuzzlezAppView.yaml b/src/haxe/ru/m/puzzlez/view/PuzzlezAppView.yaml index ca9c561..32592cf 100644 --- a/src/haxe/ru/m/puzzlez/view/PuzzlezAppView.yaml +++ b/src/haxe/ru/m/puzzlez/view/PuzzlezAppView.yaml @@ -22,6 +22,10 @@ views: +onDataSelect: ~start geometry.margin: 5 overflow.y: scroll + - id: more + $type: haxework.view.form.ButtonView + text: More + +onPress: ~moreImages - id: scale $type: haxework.view.list.VScrollBarView ratio: 0.5 diff --git a/src/icon.png b/src/icon.png new file mode 100644 index 0000000..d23bbf9 Binary files /dev/null and b/src/icon.png differ