card-game-generator
Version:
A card game development toolkit
207 lines (190 loc) • 4.02 kB
text/coffeescript
fs = require "fs"
path = require "path"
module.exports = ({imagesURL, renderedImagesURL, cardSets, counters})->
make_deck = (deck_name, cards_in_set, position_x)->
CustomDeck =
"1":
FaceURL: "#{renderedImagesURL}/#{deck_name}.png"
BackURL: "#{renderedImagesURL}/Back.png"
NumWidth: 10,
NumHeight: 7,
BackIsHidden: no
make_card = (card_id)->
Name: "Card"
Transform:
posX: -0.7677575
posY: 1.56185019
posZ: -0.600654542
rotX: 0.006403894
rotY: 179.974472
rotZ: 179.99202
scaleX: 1.0
scaleY: 1.0
scaleZ: 1.0
Nickname: ""
Description: ""
ColorDiffuse:
r: 0.713243067
g: 0.713243067
b: 0.713243067
Locked: no
Grid: yes
Snap: yes
Autoraise: yes
Sticky: yes
CardID: card_id
SidewaysCard: no
CustomDeck: CustomDeck
LuaScript: ""
GUID: "ea94f7"
id_counter = 100
cards = (make_card(id_counter++) for card in cards_in_set)
Name: "DeckCustom"
Transform:
posX: position_x
posY: 1.25730264
posZ: -0.000734800939
rotX: -4.125913e-07
rotY: 179.960922
rotZ: 180.0
scaleX: 1.0
scaleY: 1.0
scaleZ: 1.0
Nickname: ""
Description: ""
ColorDiffuse:
r: 0.713243067
g: 0.713243067
b: 0.713243067
Locked: no
Grid: yes
Snap: yes
Autoraise: yes
Sticky: yes
SidewaysCard: no
DeckIDs: (card.CardID for card in cards)
CustomDeck: CustomDeck
LuaScript: ""
ContainedObjects: cards
GUID: "48d1a6"
make_infinite_bag = (object, position_x)->
Name: "Infinite_Bag"
Transform:
posX: position_x - 11
posY: 5
posZ: 5
rotX: -5.922744e-05
rotY: 359.563446
rotZ: -0.003366101
scaleX: 0.75
scaleY: 0.75
scaleZ: 0.75
Nickname: ""
Description: ""
ColorDiffuse:
r: 0.3058885
g: 0.372555166
b: 1.0
Locked: false
Grid: true
Snap: true
Autoraise: true
Sticky: true
MaterialIndex: -1
MeshIndex: -1
LuaScript: ""
ContainedObjects: [object]
GUID: "431ce5"
make_counter_tile = (counter)->
Name: "Custom_Tile"
Transform:
posX: -11.6647787
posY: 2.44301963
posZ: 1.71856892
rotX: 11.5853672
rotY: 330.263062
rotZ: 351.876923
scaleX: 0.274931431
scaleY: 1.0
scaleZ: 0.274931431
Nickname: ""
Description: ""
ColorDiffuse:
r: 0.0
g: 0.0
b: 0.122524768
Locked: false
Grid: false
Snap: true
Autoraise: false
Sticky: true
CustomImage:
ImageURL: "#{imagesURL}/counters/#{counter.obverse ? counter.front}"
ImageSecondaryURL: "#{imagesURL}/counters/#{counter.reverse ? counter.back}"
WidthScale: 0.0
CustomTile:
Type: 2
Thickness: 0.1
Stackable: true
LuaScript: ""
GUID: "3c4df3"
make_counter_token = (counter)->
Name: "Custom_Token"
Transform:
posX: -1.57679212
posY: 1.1973033
posZ: 6.25402451
rotX: 0.203478456
rotY: 165.02063
rotZ: 0.12986508
scaleX: 0.165484071
scaleY: 1.0
scaleZ: 0.165484071
Nickname: ""
Description: ""
ColorDiffuse:
r: 1.0
g: 1.0
b: 1.0
Locked: false
Grid: false
Snap: true
Autoraise: false
Sticky: true
CustomImage:
ImageURL: "#{imagesURL}/counters/#{counter.fname}"
ImageSecondaryURL: ""
WidthScale: 0.0
CustomToken:
Thickness: 0.1
MergeDistancePixels: 5.0
Stackable: true
LuaScript: ""
GUID: "a6f7c1"
make_counter = (counter_name, counter)->
switch counter.type
when "token"
make_counter_token(counter)
when "tile"
make_counter_tile(counter)
make_save = ->
save =
SaveName: ""
GameMode: ""
Date: ""
Table: ""
Sky: ""
Note: ""
Rules: ""
PlayerTurn: ""
LuaScript: ""
ObjectStates: []
TabStates: {}
position_counter = 0
for set_name, cards_in_set of cardSets
save.ObjectStates.push make_deck set_name, cards_in_set, position_counter += 2.3
position_counter = 10
for counter_name, counter of counters
save.ObjectStates.push make_infinite_bag(make_counter(counter_name, counter), position_counter += 2.3)
save
make_save()