123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- class BotTestItemMoveBackAndForth extends BotStateBase
- {
- EntityAI m_Entity;
- ref BotTestItemMoveBackAndForth_MoveFromSlotToSlot m_Move;
- void BotTestItemMoveBackAndForth (Bot bot = NULL, BotStateBase parent = NULL)
- {
- // setup nested state machine
- m_FSM = new BotFSM(this); // @NOTE: set owner of the submachine fsm
- m_Move = new BotTestItemMoveBackAndForth_MoveFromSlotToSlot(m_Bot, this);
-
- // events
- BotEventBase __EntAtt__ = new BotEventEntityAttached;
- // transitions
- m_FSM.AddTransition(new BotTransition( m_Move, __EntAtt__, m_Move));
- m_FSM.SetInitialState(m_Move);
- }
- override void OnEntry (BotEventBase e)
- {
- //m_Entity = m_Owner.GetInventory().CreateAttachment("TaloonBag_Orange");
- //m_Entity = m_Owner.GetInventory().FindAttachment();
- EntityAI hgear = m_Owner.GetInventory().FindAttachment( InventorySlots.GetSlotIdFromString("Headgear") );
- EntityAI mask = m_Owner.GetInventory().FindAttachment( InventorySlots.GetSlotIdFromString("Mask") );
- if (hgear)
- m_Entity = hgear;
- if (mask)
- m_Entity = mask;
- InventoryLocation loc = new InventoryLocation;
- if (m_Entity.GetInventory().GetCurrentInventoryLocation(loc))
- {
- m_Move.m_WaitingForSlot = loc.GetSlot();
- }
- else
- Error("EE");
- m_Move.m_Entity = m_Entity;
- super.OnEntry(e);
- }
- override void OnExit (BotEventBase e)
- {
- m_Entity = null;
- super.OnExit(e);
- }
- override void OnUpdate (float dt)
- {
- super.OnUpdate(dt);
- }
- };
- class BotTestItemMoveBackAndForth_MoveFromSlotToSlot extends BotStateBase
- {
- EntityAI m_Entity;
- int m_WaitingForSlot = InventorySlots.INVALID;
- int m_hgSlot = InventorySlots.GetSlotIdFromString("Headgear");
- int m_mskSlot = InventorySlots.GetSlotIdFromString("Mask");
- override void OnEntry (BotEventBase e)
- {
- super.OnEntry(e);
- }
- override void OnAbort (BotEventBase e) { super.OnAbort(e); }
- override void OnExit (BotEventBase e)
- {
- super.OnExit(e);
- }
- int GetNextSlot (int curr)
- {
- if (curr == m_hgSlot)
- return m_mskSlot;
- if (curr == m_mskSlot)
- return m_hgSlot;
- Error("EE2");
- return InventorySlots.INVALID;
- }
- override void OnUpdate (float dt)
- {
- if (m_Entity)
- {
- botDebugPrint("[bot] + " + m_Owner + " move item=" + m_Entity);
-
- InventoryLocation loc = new InventoryLocation;
- if (m_Entity.GetInventory().GetCurrentInventoryLocation(loc))
- {
- if (loc.GetType() == InventoryLocationType.ATTACHMENT)
- {
- if (loc.GetSlot() == m_WaitingForSlot)
- {
- int nextSlot = GetNextSlot(m_WaitingForSlot);
- botDebugPrint("[bot] + " + m_Owner + " will switch slot=" + nextSlot + " for item=" + m_Entity);
- m_WaitingForSlot = nextSlot;
- m_Owner.PredictiveTakeEntityAsAttachmentEx(m_Entity, nextSlot);
- //m_Bot.ProcessEvent(new BotEventEntityDet(m_Owner, m_Entity));
- }
- }
- }
- }
- }
- };
|