โล่ควรเป็นนิติบุคคลของตัวเองที่ติดตามตำแหน่งของผู้เล่นหรือไม่? นั่นอาจทำให้ยากที่จะใช้การกรองความเสียหาย นอกจากนี้ยังเป็นจุดที่พร่ามัวเส้นแบ่งระหว่างองค์ประกอบที่แนบมาและหน่วยงาน
แก้ไข: ฉันคิดว่ามี "พฤติกรรมอิสระ" ไม่เพียงพอสำหรับเอนทิตีที่แยกจากกัน ในกรณีเฉพาะนี้โล่ตามเป้าหมายใช้งานได้กับเป้าหมายและไม่อยู่ได้นานกว่าเป้าหมาย ในขณะที่ฉันมักจะยอมรับว่าไม่มีอะไรผิดปกติกับแนวคิดของ "วัตถุโล่" ในกรณีนี้เรากำลังจัดการกับพฤติกรรมซึ่งพอดีในองค์ประกอบ แต่ฉันก็เป็นผู้สนับสนุนหน่วยงานทางตรรกะอย่างแท้จริง (ซึ่งต่างจากระบบเอนทิตีแบบเต็มรูปแบบซึ่งคุณสามารถค้นหาส่วนประกอบการแปลงและการแสดงผล)
โล่ควรเป็นส่วนประกอบที่มีส่วนประกอบอื่นหรือไม่? ฉันไม่เคยเห็นหรือได้ยินอะไรเช่นนี้ แต่อาจเป็นเรื่องปกติและฉันก็ยังไม่ลึกพอ
เห็นในมุมมองที่แตกต่าง การเพิ่มองค์ประกอบเพิ่มองค์ประกอบอื่น ๆ เช่นกันและเมื่อลบส่วนประกอบเพิ่มเติมก็จะหายไปเช่นกัน
โล่ควรเป็นชุดของส่วนประกอบที่เพิ่มเข้ากับเครื่องเล่นหรือไม่ อาจเป็นไปได้ที่จะมีองค์ประกอบพิเศษในการจัดการอื่น ๆ เช่นพวกเขาสามารถลบออกเป็นกลุ่ม (ทิ้งไว้เบื้องหลังองค์ประกอบการลดความเสียหายโดยไม่ตั้งใจตอนนี้น่าสนุก)
นี่อาจเป็นวิธีแก้ปัญหามันจะส่งเสริมการใช้ซ้ำ แต่ก็มีข้อผิดพลาดมากกว่าเช่นกัน (สำหรับปัญหาที่คุณกล่าวถึงเป็นต้น) มันไม่ได้เลวร้ายเสมอไป คุณอาจพบว่าการรวมคาถาใหม่พร้อมการลองผิดลองถูก :)
มีอะไรอีกที่เห็นได้ชัดสำหรับคนที่มีประสบการณ์ด้านส่วนประกอบมากกว่าใช่ไหม
ฉันจะทำอย่างละเอียดเล็กน้อย
ฉันเชื่อว่าคุณสังเกตเห็นว่าองค์ประกอบบางอย่างควรจัดลำดับความสำคัญไม่ว่าเมื่อพวกเขาได้รับการเพิ่มลงในเอนทิตี (สิ่งนี้จะตอบคำถามอื่นของคุณด้วย)
ฉันจะสมมติว่าเรากำลังใช้การสื่อสารด้วยข้อความ (เพื่อประโยชน์ในการพูดคุยมันเป็นเพียงสิ่งที่เป็นนามธรรมสำหรับการเรียกใช้เมธอดในขณะนี้)
เมื่อใดก็ตามที่ส่วนประกอบของโล่ "ติดตั้ง" ตัวจัดการข้อความส่วนประกอบของโล่จะถูกล่ามโซ่ด้วยคำสั่ง (สูงกว่า) เฉพาะ
Handler Stage Handler Level Handler Priority
In Pre System High
Out Invariant High
Post AboveNormal
Normal
BelowNormal
Low
System Low
In - incoming messages
Out - outgoing messages
Index = ((int)Level | (int)Priority)
คอมโพเนนต์ "stats" ติดตั้งเครื่องมือจัดการข้อความ "ความเสียหาย" ที่ดัชนี In / Invariant / Normal ทุกครั้งที่ได้รับข้อความ "ความเสียหาย" ให้ลดจำนวน HP ตามจำนวน "ค่า"
พฤติกรรมมาตรฐานอย่างเป็นธรรม (ใส่ความต้านทานความเสียหายตามธรรมชาติและ / หรือลักษณะทางเชื้อชาติบางอย่าง)
องค์ประกอบโล่ติดตั้งตัวจัดการข้อความ "ความเสียหาย" ที่ดัชนี In / Pre / High
Every time a "damage" message is received, deplete the shield energy and substract
the shield energy from the damage value, so that the damage down the message
handler pipeline is reduced.
damage -> stats
stats
stats.hp -= damage.value
damage -> shield -> stats
shield
if(shield.energy) {
remove_me();
return;
}
damage.value -= shield.energyquantum
shield.energy -= shield.energyquantum;
stats
stats.hp -= damage.value
คุณสามารถดูได้ว่ามันมีความยืดหยุ่นค่อนข้างแม้ว่ามันจะต้องมีการวางแผนอย่างรอบคอบเมื่อออกแบบการโต้ตอบขององค์ประกอบเนื่องจากคุณจะต้องพิจารณาว่าส่วนใดของการจัดการข้อความที่ติดตั้งตัวจัดการเหตุการณ์ข้อความไปป์ไลน์คอมโพเนนต์
มีเหตุผล? แจ้งให้เราทราบหากฉันสามารถเพิ่มรายละเอียดเพิ่มเติม
แก้ไข: เกี่ยวกับอินสแตนซ์ขององค์ประกอบหลายรายการ (สองชุดเกราะ) คุณสามารถติดตามจำนวนอินสแตนซ์ทั้งหมดได้ในอินสแตนซ์เอนทิตี้เดียว (ซึ่งจะฆ่าสถานะต่อองค์ประกอบ) และเพียงแค่เพิ่มตัวจัดการเหตุการณ์ของข้อความหรือตรวจสอบให้แน่ใจว่าส่วนประกอบคอนเทนเนอร์ของคุณอนุญาตสำหรับคอมโพเนนต์ประเภทที่ซ้ำกันล่วงหน้า