This repository has been archived by the owner on Jun 12, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 12
/
greenworks.js
107 lines (95 loc) · 3.88 KB
/
greenworks.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
// Copyright (c) 2015 Greenheart Games Pty. Ltd. All rights reserved.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
// The source code can be found in https://github.com/greenheartgames/greenworks
var fs = require('fs')
var greenworks
if (process.platform == 'darwin') {
if (process.arch == 'x64')
greenworks = require('./lib/greenworks-osx64')
else if (process.arch == 'ia32')
greenworks = require('./lib/greenworks-osx32')
} else if (process.platform == 'win32') {
if (process.arch == 'x64')
greenworks = require('./lib/greenworks-win64')
else if (process.arch == 'ia32')
greenworks = require('./lib/greenworks-win32')
} else if (process.platform == 'linux') {
if (process.arch == 'x64')
greenworks = require('./lib/greenworks-linux64')
else if (process.arch == 'ia32')
greenworks = require('./lib/greenworks-linux32')
}
function error_process (err, error_callback) {
if (err && error_callback)
error_callback(err)
}
// An utility function for publish related APIs.
// It processes remains steps after saving files to Steam Cloud.
function file_share_process (file_name, image_name, next_process_func,
error_callback, progress_callback) {
if (progress_callback)
progress_callback('Completed on saving files on Steam Cloud.')
greenworks.fileShare(file_name, function () {
greenworks.fileShare(image_name, function () {
next_process_func()
}, function (err) { error_process(err, error_callback); })
}, function (err) { error_process(err, error_callback); })
}
// Publishing user generated content(ugc) to Steam contains following steps:
// 1. Save file and image to Steam Cloud.
// 2. Share the file and image.
// 3. publish the file to workshop.
greenworks.ugcPublish = function (file_name, title, description, image_name,
success_callback, error_callback, progress_callback) {
var publish_file_process = function () {
if (progress_callback)
progress_callback('Completed on sharing files.')
greenworks.publishWorkshopFile(file_name, image_name, title, description,
function (publish_file_id) { success_callback(publish_file_id); },
function (err) { error_process(err, error_callback); })
}
greenworks.saveFilesToCloud([file_name, image_name], function () {
file_share_process(file_name, image_name, publish_file_process,
error_callback, progress_callback)
}, function (err) { error_process(err, error_callback); })
}
// Update publish ugc steps:
// 1. Save new file and image to Steam Cloud.
// 2. Share file and images.
// 3. Update published file.
greenworks.ugcPublishUpdate = function (published_file_id, file_name, title,
description, image_name, success_callback, error_callback,
progress_callback) {
var update_published_file_process = function () {
if (progress_callback)
progress_callback('Completed on sharing files.')
greenworks.updatePublishedWorkshopFile(published_file_id,
file_name, image_name, title, description,
function () { success_callback(); },
function (err) { error_process(err, error_callback); })
}
greenworks.saveFilesToCloud([file_name, image_name], function () {
file_share_process(file_name, image_name, update_published_file_process,
error_callback, progress_callback)
}, function (err) { error_process(err, error_callback); })
}
// Greenworks Utils APIs implmentation.
greenworks.Utils.move = function (source_dir, target_dir, success_callback,
error_callback) {
fs.rename(source_dir, target_dir, function (err) {
if (err) {
if (error_callback) error_callback(err)
return
}
if (success_callback)
success_callback()
})
}
var EventEmitter = require('events').EventEmitter
greenworks.__proto__ = EventEmitter.prototype
EventEmitter.call(greenworks)
greenworks._steam_events.on = function () {
greenworks.emit.apply(greenworks, arguments)
}
module.exports = greenworks