"use strict"; const gulp = require('gulp'); const gulpClean = require('gulp-clean'); const Config = require('./config.json'); const packageInfo = require('./package.json'); const {Sdk, Haxe, Project} = require('gulp-haxetool'); const dateformat = require('dateformat'); if (Config.SdkDir) { Sdk.dir = Config.SdkDir; } exports.clean = function clean() { return gulp.src('target/*', {read: false}).pipe(gulpClean()); }; exports.generate = function generate() { return new Haxe().haxelib([ 'run', 'protohx', 'generate', 'protohx.json' ]); }; exports.install = function install() { return new Haxe().install(packageInfo.haxeDependencies); }; /** * ToDo: * windows target * window exe package (innosetup) * flash html wrapper */ const config = new Project.Config({ meta: { title: 'Tank\'z', filename: 'tankz', icon: 'resources/images/tank/player/tank_p3_0-0.png', pack: 'ru.m.tankz', author: 'shmyga ', company: 'MegaLoMania', version: packageInfo.version, }, libs: packageInfo.haxeDependencies, sources: [ 'src/common/haxe', 'src-gen/haxe', ], macros: [ `CompilationOption.set('build','${dateformat(new Date(), 'yyyy-mm-dd HH:MM:ss')}')` ] }); /** * client */ const client = new Project( Project.BuildSystem.OPENFL,[ Project.Platform.FLASH, Project.Platform.HTML5, Project.Platform.LINUX, ], config.branch({ name: 'client', sources: ['src/client/haxe'], assets: ['src/client/resources'], main: 'ru.m.tankz.Client', }) ).bind(module, gulp); /** * editor */ const editor = new Project( Project.BuildSystem.OPENFL, [ Project.Platform.FLASH ], config.branch({ name: 'editor', sources: ['src/client/haxe', 'src/editor/haxe'], assets: ['src/client/resources'], main: 'ru.m.tankz.editor.Editor', }) ).bind(module, gulp); /** * server */ const server = new Project( Project.BuildSystem.HAXE, [ Project.Platform.NEKO ], config.branch({ name: 'server', sources: ['src/server/haxe'], main: 'ru.m.tankz.server.Server', }) ).bind(module, gulp); /** * default */ module.exports.default = gulp.series( exports.clean, exports.install, exports.generate, module.exports['client:flash:build'], module.exports['client:html5:build'], module.exports['client:linux:build'], module.exports['server:neko:build'], module.exports['client:flash:pack'], module.exports['client:linux:pack'], );