add arrows to bow production
This commit is contained in:
parent
bdeb936bec
commit
6a6a46d8a1
|
@ -61,6 +61,17 @@ fn init_elem_lib() {
|
|||
bits_ctx.elem_lib["textile"] = el
|
||||
}
|
||||
|
||||
{
|
||||
mut el := new_elem()
|
||||
el.name = "iron" // XXX wrought iron
|
||||
el.elem_type = .iron
|
||||
el.density = 7870 // wiki (iron)
|
||||
el.flameable = false
|
||||
el.notes = "wrought iron"
|
||||
|
||||
bits_ctx.elem_lib["iron"] = el
|
||||
}
|
||||
|
||||
{
|
||||
mut el := new_elem()
|
||||
el.name = "water"
|
||||
|
|
|
@ -69,6 +69,8 @@ mut:
|
|||
// XXX?
|
||||
aggregate_state AggregateState
|
||||
|
||||
notes string
|
||||
|
||||
// when
|
||||
//when_crushed_fn fn()
|
||||
//when_crushed_effects []Effect
|
||||
|
|
|
@ -52,6 +52,20 @@ fn test_bow() {
|
|||
println("bow new bits volume: ${bow.bits_volume()}")
|
||||
println("bow new volume: ${bow.volume()}")
|
||||
|
||||
// XXX test arrows
|
||||
|
||||
mut arrow := new_object()
|
||||
|
||||
// Arrowhead weight: 200g
|
||||
// Arrow shaft size: 1x1x50 cm
|
||||
|
||||
arrow.mat_info.add_elem_from_mass(0.2, bits_ctx.elem_lib["iron"])
|
||||
arrow.mat_info.add_elem_from_size(
|
||||
cm_to_m(1), cm_to_m(1), cm_to_m(50), bits_ctx.elem_lib["wood"])
|
||||
|
||||
println("arrow new bits volume: ${arrow.bits_volume()}")
|
||||
println("arrow new volume: ${arrow.volume()}")
|
||||
|
||||
println("bits: done test_bow")
|
||||
}
|
||||
|
||||
|
|
|
@ -88,6 +88,19 @@ pub fn (mut mi MaterialInfo) add_elem_from_volume(vol f32, elem &Elem) {
|
|||
mi.add_elem(vol_bits, elem)
|
||||
}
|
||||
|
||||
// From volume mass/weight
|
||||
pub fn (mut mi MaterialInfo) add_elem_from_mass(mass f32, elem &Elem) {
|
||||
println("MaterialInfo add_elem_from_mass: mass: $mass, elem.name: $elem.name")
|
||||
|
||||
vol := mass / f32(elem.density)
|
||||
|
||||
vol_bits := m3_to_bits(vol)
|
||||
|
||||
println("vol: $vol, vol_bits: $vol_bits")
|
||||
|
||||
mi.add_elem(vol_bits, elem)
|
||||
}
|
||||
|
||||
//fn (mut mi MaterialInfo) add_elem_from_size(size [3]f32, elem &Elem) {
|
||||
//fn (mut pi PartsInfo) add_elem_from_size(size []f32, elem &Elem) {
|
||||
// println("PartsInfo add_elem_from_size: $size, elem.name: $elem.name")
|
||||
|
|
|
@ -8,4 +8,8 @@ test 2:
|
|||
destroy the wall or part of the wall to crushed stone
|
||||
|
||||
test 3:
|
||||
produce medieval bow
|
||||
produce medieval bow
|
||||
|
||||
test 4:
|
||||
? generic bow
|
||||
- data/model reuse
|
|
@ -24,3 +24,13 @@ fn m3_to_bits(m3 f32) int {
|
|||
//return int(m3 * 1000 / (math.powf(c_bit_size, 3)))
|
||||
return int(m3 * c_bits_in_m3)
|
||||
}
|
||||
|
||||
[inline]
|
||||
fn m_to_cm(m f32) f32 {
|
||||
return m * 100.0
|
||||
}
|
||||
|
||||
[inline]
|
||||
fn cm_to_m(cm f32) f32 {
|
||||
return cm / 100.0
|
||||
}
|
|
@ -0,0 +1,25 @@
|
|||
#!/bin/env python
|
||||
|
||||
import sys
|
||||
|
||||
if len(sys.argv) < 3:
|
||||
print("usage: %s mat_density (kg/m3) model_mass (kg)" % sys.argv[0])
|
||||
exit()
|
||||
|
||||
mat_density = int(sys.argv[1])
|
||||
|
||||
model_mass = float(sys.argv[2])
|
||||
|
||||
mat_volume = model_mass / mat_density
|
||||
result_bits = mat_volume / (1.0/100) # 10x10x10
|
||||
|
||||
print("mat_density (kg/m3):", mat_density)
|
||||
print("model_mass (kg):", model_mass)
|
||||
print("")
|
||||
print("raw mat_volume:", mat_volume)
|
||||
print("")
|
||||
print("result:")
|
||||
print("mat_volume (m3):", f'{mat_volume:f}')
|
||||
print("result_bits:", result_bits)
|
||||
print("")
|
||||
print("done")
|
Loading…
Reference in New Issue