[oden] It's a start
This commit is contained in:
parent
83a0950153
commit
3b02faf9b4
2 changed files with 48 additions and 7 deletions
|
|
@ -1,21 +1,61 @@
|
|||
use oden_js as js;
|
||||
use oden_js::{Class, ClassID, Context, ContextRef, Runtime, Value, ValueRef, ValueResult};
|
||||
|
||||
pub struct GraphicsAPI {}
|
||||
|
||||
impl GraphicsAPI {
|
||||
fn print_fn(ctx: &ContextRef, _this: &ValueRef, args: &[&ValueRef]) -> ValueResult {
|
||||
for arg in args {
|
||||
print!("{}", arg.to_string(ctx)?);
|
||||
}
|
||||
println!();
|
||||
Ok(Value::undefined(ctx))
|
||||
}
|
||||
}
|
||||
|
||||
impl Class for GraphicsAPI {
|
||||
fn class_id() -> &'static ClassID {
|
||||
static ID: ClassID = ClassID::new("GraphicsAPI");
|
||||
&ID
|
||||
}
|
||||
|
||||
fn prototype(context: &ContextRef) -> ValueResult {
|
||||
let mut prototype = context.new_object()?;
|
||||
|
||||
let print = context.new_dynamic_fn(GraphicsAPI::print_fn)?;
|
||||
prototype.set_property(context, "print", &print)?;
|
||||
|
||||
Ok(prototype)
|
||||
}
|
||||
}
|
||||
|
||||
pub struct ScriptContext {
|
||||
context: js::Context,
|
||||
init: js::Value,
|
||||
update: js::Value,
|
||||
draw: js::Value,
|
||||
context: Context,
|
||||
init: Value,
|
||||
update: Value,
|
||||
draw: Value,
|
||||
}
|
||||
|
||||
impl ScriptContext {
|
||||
pub fn new() -> Self {
|
||||
let runtime = js::Runtime::new();
|
||||
let runtime = Runtime::new();
|
||||
|
||||
let mut context = js::Context::new(runtime);
|
||||
let mut context = Context::new(runtime);
|
||||
context.add_intrinsic_bigfloat();
|
||||
context.add_intrinsic_bigdecimal();
|
||||
context.add_intrinsic_operators();
|
||||
|
||||
// TODO: This should be a module instead. Yuck.
|
||||
let mut global = context
|
||||
.global_object()
|
||||
.expect("Unable to get global object");
|
||||
let graphics = GraphicsAPI {};
|
||||
let graphics = graphics
|
||||
.into_value(&context)
|
||||
.expect("Unable to wrap graphics API");
|
||||
global
|
||||
.set_property(&context, "graphics", &graphics)
|
||||
.expect("Unable to establish graphics");
|
||||
|
||||
let js = include_str!("main.js");
|
||||
let module = context
|
||||
.load_module(js, "main.js")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue