Added protype scripts for Alternate Tank and Power Plant, changed naming convention of assets to: package -> name instead of: package -> model

This commit is contained in:
2019-09-25 22:01:03 -05:00
parent 19f5a0cd9c
commit eb7a7fc6d6
12 changed files with 101 additions and 40 deletions

View File

@@ -1,17 +1,19 @@
class IMICFPS
class Manifest
attr_reader :name, :model, :collision, :collision_mesh, :scripts, :uses
def initialize(manifest_file: nil, package: nil, model: nil)
attr_reader :name, :model, :collision, :collision_mesh, :physics, :scripts, :uses
def initialize(manifest_file: nil, package: nil, name: nil)
unless manifest_file
raise "Entity package not specified!" unless package
raise "Entity model not specified!" unless model
manifest_file = "#{IMICFPS.assets_path}/#{package}/#{model}/manifest.yaml"
raise "Entity name not specified!" unless name
manifest_file = "#{IMICFPS.assets_path}/#{package}/#{name}/manifest.yaml"
end
raise "No manifest found at: #{manifest_file}" unless File.exist?(manifest_file)
@file = manifest_file
parse(manifest_file)
pp @scripts
end
def parse(file)
@@ -24,12 +26,34 @@ class IMICFPS
# optional
@collision = data["collision"] ? data["collision"] : nil
@collision_mesh = data["collision_mesh"] ? data["collision_mesh"] : nil
@scripts = data["scripts"] ? data["scripts"] : []
@uses = data["uses"] ? data["uses"] : [] # List of entities that this Entity uses
@physics = data["physics"] ? data["physics"] : false
@scripts = data["scripts"] ? parse_scripts(data["scripts"]) : []
@uses = data["uses"] ? parse_dependencies(data["uses"]) : [] # List of entities that this Entity uses
end
def parse_scripts(scripts)
list = []
scripts.each do |script|
list << Script.new(script, File.read("#{file_path}/scripts/#{script}.rb"))
end
return list
end
def parse_dependencies(list)
dependencies = []
list.each do |item|
dependencies << Dependency.new(item["package"], item["name"])
end
return dependencies
end
def file_path
File.expand_path("./../", @file)
end
Script = Struct.new(:name, :source)
Dependency = Struct.new(:package, :name)
end
end