blob: 9a5358a9d97b31517444d7b94a540a96eadea1d1 [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001P_MATERIAL
Zesstra953f9972017-02-18 15:37:36 +01002**********
MG Mud User88f12472016-06-24 23:31:02 +02003
MG Mud User88f12472016-06-24 23:31:02 +02004
Zesstra953f9972017-02-18 15:37:36 +01005NAME
6====
MG Mud User88f12472016-06-24 23:31:02 +02007
Zesstra953f9972017-02-18 15:37:36 +01008 P_MATERIAL "material"
MG Mud User88f12472016-06-24 23:31:02 +02009
MG Mud User88f12472016-06-24 23:31:02 +020010
Zesstra953f9972017-02-18 15:37:36 +010011DEFINIERT IN
12============
MG Mud User88f12472016-06-24 23:31:02 +020013
Zesstra953f9972017-02-18 15:37:36 +010014 <thing/material.h>
MG Mud User88f12472016-06-24 23:31:02 +020015
MG Mud User88f12472016-06-24 23:31:02 +020016
Zesstra953f9972017-02-18 15:37:36 +010017BESCHREIBUNG
18============
MG Mud User88f12472016-06-24 23:31:02 +020019
Zesstra953f9972017-02-18 15:37:36 +010020 Mapping mit prozentualen Anteilen von Materialien, aus denen ein Objekt
21 besteht.
MG Mud User88f12472016-06-24 23:31:02 +020022
MG Mud User88f12472016-06-24 23:31:02 +020023
Zesstra953f9972017-02-18 15:37:36 +010024BEMERKUNGEN
25===========
26
27 Bei SetProp kann man zu Vereinfachung auch ein einzelnes Material oder
28 ein Array aus Materialien angeben. Die Anteile werden dann
29 gleichmaessig verteilt.
30
31
32BEISPIELE
33=========
34
35 // 100% Eis
36 SetProp(P_MATERIAL, MAT_ICE);
37 // QueryProp(P_MATERIAL) -> ([MAT_ICE:100])
38
39 // 50% Eis, 50% Misc-Holz
40 SetProp(P_MATERIAL, ({ MAT_ICE, MAT_MISC_WOOD }));
41 // QueryProp(P_MATERIAL) -> ([MAT_ICE:50, MAT_MISC_WOOD: 50])
42
43 // 60% Eis, 40% Misc-Holz
44 SetProp(P_MATERIAL, ([ MAT_ICE: 60, MAT_MISC_WOOD: 40 ]));
45
46 // 100% Papier
47 SetProp(P_MATERIAL, MAT_PAPER);
48 // QueryProp(P_MATERIAL) -> ([MAT_PAPER:100])
49
50 // 50% Silber, 50% Gold
51 SetProp(P_MATERIAL, ({MAT_SILVER, MAT_GOLD}))
52 // QueryProp(P_MATERIAL) -> ([MAT_SILVER:50,MAT_GOLD:50])
53
54 // ein weiser Schmied, der was daraus macht:
55 int i;
56 string *mat, mname, mgroup;
57 mat=m_indices(ob->QueryProp(P_MATERIAL));
58 i=sizeof(mat);
59
60 write("Der Schmied sagt: "+ob->Name(WER)+" besteht aus ...\n");
61 while(i--) {
62 // den Namen erkennen/aussprechen:
63 // Materialien werden allgemein ganz schlecht erkannt (zu 5%), aber
64 // alles aus Metall wird zu +100% gut erkannt ...
65 mname=MATERIALDB->MaterialName(mat[i], WER,
66 ({5, ([MATERIAL_SYMMETRIC_RECOGNIZABILITY:
67 ({MATGROUP_METAL, 100})])}));
68
69 // und nur Metalle analysieren ...
70 if(MATERIALDB->MaterialGroup(([mat[i]:100]),MATGROUP_METAL)>=100) {
71 int j;
72 string *mgr;
73 mgr=MATERIALDB->GetMatMembership(mat[i]);
74 j=sizeof(mgr);
75 mgroup=" gehoert zu ";
76 while(j--) {
77 mgroup+=MATERIALDB->GroupName(mgr[j]);
78 if(j>0) mgroup+=", ";
MG Mud User88f12472016-06-24 23:31:02 +020079 }
Zesstra953f9972017-02-18 15:37:36 +010080 } else mgroup=" kenne ich nicht";
81 printf("%-12.12s: %s\n",mname, mgroup);
82 }
MG Mud User88f12472016-06-24 23:31:02 +020083
84
Zesstra953f9972017-02-18 15:37:36 +010085SIEHE AUCH
86==========
MG Mud User88f12472016-06-24 23:31:02 +020087
Zesstra953f9972017-02-18 15:37:36 +010088 Konzepte: material, materialerkennung
89 Grundlegend: /sys/thing/material.h
90 Methoden: QueryMaterial(), QueryMaterialGroup(), MaterialList(),
91 Listen: AllMaterials(), AllGroups(), Dump()
92 materialliste, materialgruppen
93 Master: AddMaterial(), ConvMaterialList(), MaterialGroup(),
94 GroupName(), MaterialName(),
95 GetGroupMembers(), GetMatMembership()
96 Sonstiges: P_MATERIAL_KNOWLEDGE
97
987. Mai 2004 Gloinson