Esempio n. 1
0
        public void processThreatEvent(ThreatRefStatusChangeEvent threatRefStatusChangeEvent)
        {
            threatRefStatusChangeEvent.setThreatManager(this);     // now we can set the threat manager

            HostileReference hostilRef = threatRefStatusChangeEvent.getReference();

            switch (threatRefStatusChangeEvent.getType())
            {
            case UnitEventTypes.ThreatRefThreatChange:
                if ((getCurrentVictim() == hostilRef && threatRefStatusChangeEvent.getFValue() < 0.0f) ||
                    (getCurrentVictim() != hostilRef && threatRefStatusChangeEvent.getFValue() > 0.0f))
                {
                    setDirty(true);                                 // the order in the threat list might have changed
                }
                break;

            case UnitEventTypes.ThreatRefOnlineStatus:
                if (!hostilRef.isOnline())
                {
                    if (hostilRef == getCurrentVictim())
                    {
                        setCurrentVictim(null);
                        setDirty(true);
                    }
                    Owner.SendRemoveFromThreatList(hostilRef);
                    threatContainer.remove(hostilRef);
                    threatOfflineContainer.addReference(hostilRef);
                }
                else
                {
                    if (getCurrentVictim() != null && hostilRef.getThreat() > (1.1f * getCurrentVictim().getThreat()))
                    {
                        setDirty(true);
                    }
                    threatContainer.addReference(hostilRef);
                    threatOfflineContainer.remove(hostilRef);
                }
                break;

            case UnitEventTypes.ThreatRefRemoveFromList:
                if (hostilRef == getCurrentVictim())
                {
                    setCurrentVictim(null);
                    setDirty(true);
                }
                Owner.SendRemoveFromThreatList(hostilRef);
                if (hostilRef.isOnline())
                {
                    threatContainer.remove(hostilRef);
                }
                else
                {
                    threatOfflineContainer.remove(hostilRef);
                }
                break;
            }
        }