1
0
Fork 0

add arrows to bow production

This commit is contained in:
coaljoe 2020-10-25 11:20:43 +03:00
parent bdeb936bec
commit 6a6a46d8a1
7 changed files with 80 additions and 1 deletions

View File

@ -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"

View File

@ -69,6 +69,8 @@ mut:
// XXX?
aggregate_state AggregateState
notes string
// when
//when_crushed_fn fn()
//when_crushed_effects []Effect

View File

@ -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")
}

View File

@ -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")

View File

@ -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

View File

@ -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
}

25
isotest/calc_mats.py Executable file
View File

@ -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")