Exemplo n.º 1
0
 public void AttackSucceeded(SimulationEvent ev)
 {
     if (m_currentBehavior != null)
     {
         m_currentBehavior.AttackSucceeded(ev);
     }
 }
Exemplo n.º 2
0
        private void TimeTick(SimulationEvent e)
        {

            foreach (StateDB.ActiveRegion region in StateDB.dynamicRegions.Values)
            {
                if (region.linkedObject == "")
                    continue; //don't draw unlinked regions
                SimulationObjectProxy obProx = objectProxies[region.linkedObject];
                //Calculate new absolute poly for region and send ViewPro event
                LocationValue lvLoc = (LocationValue)obProx["Location"].GetDataValue();
                Vec2D loc = new Vec2D(lvLoc);
                if (!lvLoc.exists)
                {
                    return; //possible that the tractor object doesn't exist, so don't show it.
                }
                Polygon3D absolutePoly = GetAbsolutePolygon(loc, region.poly.Footprint);
                absolutePoly.TopZ = region.poly.TopZ;
                absolutePoly.BottomZ = region.poly.BottomZ;
                region.referencePoint = loc;
                region.currentAbsolutePolygon = absolutePoly;

                this.SendViewProActiveRegionUpdate(region.id, region.isVisible, region.displayColor, absolutePoly);
                

            }

        }
Exemplo n.º 3
0
 public void ProcessEvent(SimulationEvent e)
 {
     //objectProxies = bbClient.GetObjectProxies();
     switch (e.eventType)
     {
         case "NewObject":
             NewObject(e);
             break;
         case "RevealObject":
             RevealObject(e);
             break;
         case "StateChange":
             StateChange(e);
             break;
         case "TimeTick":
             TimeTick(e);
             break;
         case "ExternalApp_SimStop":
             ResetSimulation();
             break;
         case "ForceUpdateObjectAttribute":
             ForceUpdateObjectAttribute(e);
             break;
         default:
             break;
     }
 }
Exemplo n.º 4
0
 public void ViewProAttackUpdate(SimulationEvent ev)
 {
     if (m_currentBehavior != null)
     {
         m_currentBehavior.ViewProAttackUpdate(ev);
     }
 }
Exemplo n.º 5
0
 public void AddTextMessage(SimulationEvent e)
 {
     string msg = ((StringValue)e["ChatBody"]).value;
     lock (streamLock)
     {
         textStream = String.Format("{0}\r\n{1}", msg, textStream);
     }
 }
Exemplo n.º 6
0
        public static void PublishCPE(String dmId, double findFixCpe, double trackTargetCpe)
        {
            SimulationEvent cpe = new SimulationEvent();
            cpe.eventType = "SEAMATE_UpdateCPE";
            cpe.parameters.Add("DM_ID", DataValueFactory.BuildString(dmId));
            cpe.parameters.Add("FF_CPE", DataValueFactory.BuildDouble(findFixCpe));
            cpe.parameters.Add("TT_CPE", DataValueFactory.BuildDouble(trackTargetCpe));

            if (_client == null)
                throw new Exception("DDD Network Client not connected; You need to call Connect successfully before sending events.");
            _client.PutEvent(cpe);
        }
Exemplo n.º 7
0
 public void ProcessEvent(SimulationEvent e)
 {
     objectProxies = bbClient.GetObjectProxies();
     switch (e.eventType)
     {
         case "TimeTick":
             TimeTick(e);
             break;
         default:
             break;
     }
 }
Exemplo n.º 8
0
 public ScenarioData(SimulationEvent e)
 {
     MapFileName = ((StringValue)e["MapName"]).value;
     UTMZone = "";
     ScenarioName = ((StringValue)e["ScenarioName"]).value;
     ScenarioDescription = ((StringValue)e["ScenarioDescription"]).value;
     PlayerBrief = ((StringValue)e["PlayerBrief"]).value;
     IconLibrary = ((StringValue)e["IconLibrary"]).value;
     UTMEasting = ((DoubleValue)e["UTMEasting"]).value;
     UTMNorthing = ((DoubleValue)e["UTMNorthing"]).value;
     HorizontalMetersPerPixel = ((DoubleValue)e["HorizontalPixelsPerMeter"]).value;
     VerticalMetersPerPixel = ((DoubleValue)e["VerticalPixelsPerMeter"]).value;
 }
Exemplo n.º 9
0
        /*
        static public SimulationEvent DeepCopy(ref SimulationEvent e)
        {
            SimulationEvent n = new SimulationEvent();
            n.eventType = e.eventType;
            foreach (string p in e.parameters.Keys)
            {
                n.parameters[p] = e.parameters[p];
            }

            return n;
        }
        */

        static public string XMLSerialize(SimulationEvent e)
        {
            StringBuilder sb;
            lock (e.eventLock)
            {
                sb = new StringBuilder(String.Format("<{0}>", e.eventType));

                foreach (string key in e.parameters.Keys)
                {
                    sb.Append(String.Format("<Parameter><Name>{0}</Name><Value>{1}</Value></Parameter>", key, DataValueFactory.XMLSerialize(e.parameters[key])));
                }
                sb.Append(String.Format("</{0}>", e.eventType));
            }
            return sb.ToString();
        }
Exemplo n.º 10
0
        static public SimulationEvent BuildEvent(ref SimulationModelInfo model, string eventType)
        {
            SimulationEvent e = new SimulationEvent();

            if (!model.eventModel.events.ContainsKey(eventType))
            {
                throw new Exception("Event type doesn't exist");
            }

            foreach (ParameterInfo pInfo in model.eventModel.events[eventType].parameters.Values)
            {
                e[pInfo.name] = DataValueFactory.BuildValue(pInfo.dataType);
            }
            e.eventType = eventType;

            return e;
        }
Exemplo n.º 11
0
 public void ProcessEvent(SimulationEvent e)
 {
     //objectProxies = bbClient.GetObjectProxies();
     switch (e.eventType)
     {
         case "TimeTick":
             TimeTick(e);
             break;
         case "RevealObject":
             RevealObject(e);
             break;
         case "SubplatformLaunch":
             SubplatformLaunch(e);
             break;
         case "WeaponLaunch":
             WeaponLaunch(e);
             break;
         case "SubplatformDock":
             SubplatformDock(e);
             break;
         case "ExternalApp_SimStop":
             ResetSimulation();
             break;
         case "StateChange":
             StateChange(e);
             break;
         case "NewObject":
             NewObject(e);
             break;
         case "WeaponLaunchFailure":
             WeaponLaunchFailure(e);
             break;
         case "ClientAttackRequest":
             ClientAttackRequest(e);
             break;
         case "ForceUpdateObjectAttribute":
             ForceUpdateObjectAttribute(e);
             break;
         default:
             break;
     }
 }
Exemplo n.º 12
0
        public void PutEvent(SimulationEvent e)
        {
            lock (distributorLock)
            {
                if (e.eventType == "TimeTick")
                {
                    currentTimeTick = ((IntegerValue)e["Time"]).value;
                }

                e["Time"] = DataValueFactory.BuildInteger(currentTimeTick);

                if (incoming == true)
                {
                    AddToOutgoingQueues(e);
                }
                else
                {
                    AddToIncomingQueue(e);
                }
            }
        }
Exemplo n.º 13
0
 public void ProcessEvent(SimulationEvent e)
 {
     switch (e.eventType)
     {
         case "NewObject":
             //System.Console.WriteLine(GetSimulatorName() + " recieved " + e.eventType);
             NewObject(e);
             break;
         case "ExternalApp_SimStop":
             ResetSimulation();
             break;
         case "TimeTick":
             TimeTick(e);
             break;
         case "ForceUpdateObjectAttribute":
             ForceUpdateObjectAttribute(e);
             break;
         default:
             break;
     }
 }
Exemplo n.º 14
0
        public void AuthenticationRequest(SimulationEvent e)
        {
            Authenticator.LoadUserFile();
            string terminalID = ((StringValue)e["TerminalID"]).value;
            
            if (currentlyLoggedInUsers == maxNumberOfUsers)
            {
                SendAuthenticationResponse(terminalID, "The server has reached its limit for number of users attached to the DDD.", false);
                return;
            }

            string username = ((StringValue)e["Username"]).value;
            string password = ((StringValue)e["Password"]).value;

            if (Authenticator.Authenticate(username, password))
            {
                SendAuthenticationResponse(terminalID, "Authentication successful!", true);
            }
            else
            {
                SendAuthenticationResponse(terminalID, "Invalid username and/or password", false);
            }
        }
Exemplo n.º 15
0
        static public bool ValidateEvent(ref SimulationModelInfo model, SimulationEvent e)
        {
            try
            {
                string eventType = e.eventType;
                if (!model.eventModel.events.ContainsKey(eventType))
                {
                    return false;
                }

                foreach (ParameterInfo pInfo in model.eventModel.events[eventType].parameters.Values)
                {
                    if (!e.parameters.ContainsKey(pInfo.name))
                    {
                        return false;
                    }
                    if (e[pInfo.name].dataType != pInfo.dataType)
                    {
                        return false;
                    }
                }
                foreach (string attname in e.parameters.Keys)
                {
                    
                    if (!model.eventModel.events[eventType].parameters.ContainsKey(attname))
                    {
                        return false;
                    }
                }
            }
            catch (Exception)
            {
                return false;
            }

            return true;
        }
Exemplo n.º 16
0
        static public bool ValidateEvent(ref SimulationModelInfo model, SimulationEvent e)
        {
            try
            {
                string eventType = e.eventType;
                if (!model.eventModel.events.ContainsKey(eventType))
                {
                    return(false);
                }

                foreach (ParameterInfo pInfo in model.eventModel.events[eventType].parameters.Values)
                {
                    if (!e.parameters.ContainsKey(pInfo.name))
                    {
                        return(false);
                    }
                    if (e[pInfo.name].dataType != pInfo.dataType)
                    {
                        return(false);
                    }
                }
                foreach (string attname in e.parameters.Keys)
                {
                    if (!model.eventModel.events[eventType].parameters.ContainsKey(attname))
                    {
                        return(false);
                    }
                }
            }
            catch (Exception)
            {
                return(false);
            }

            return(true);
        }
Exemplo n.º 17
0
        /*
        private CapabilityValue.Effect FindCapabilityEffect(CapabilityValue cap, VulnerabilityValue vuln)
        {
            List<string> vulnNames = new List<string>();

            foreach (VulnerabilityValue.Transition t in vuln.transitions)
            {
                foreach (VulnerabilityValue.TransitionCondition tc in t.conditions)
                {
                    if (!vulnNames.Contains(tc.capability))
                    {
                        vulnNames.Add(tc.capability);
                    }
                }
            }

            foreach (CapabilityValue.Effect e in cap.effects)
            {
                if (vulnNames.Contains(e.name))
                {
                    return e;
                }
            }
            return null;
        }*/

        private void TimeTick(SimulationEvent e)
        {
            if (objectProxies == null)
            {
                objectProxies = bbClient.GetObjectProxies();
            }
            time = ((IntegerValue)e["Time"]).value;

            DataValue dv = null;

            SimulationObjectProxy obProx = null, targetProx = null;

            Vec3D myLoc;
            Vec3D targetLoc;
            string targetID;
            bool isWeapon = false;
            bool pursueStarted;

            CapabilityValue capabilities;
            VulnerabilityValue vulnerabilities;
            CapabilityValue.Effect effect;
            double distance;
            LocationValue location;
            
            foreach (string id in objectProxies.Keys)
            {
                obProx = objectProxies[id];

                // update the StateDB info

                if (StateDB.physicalObjects[id].ownerID == "")
                {
                    string owner = ((StringValue)obProx["OwnerID"].GetDataValue()).value;
                    if (StateDB.decisionMakers.ContainsKey(owner))
                    {
                        StateDB.physicalObjects[id].ownerID = owner;
                    }
                }

                if (StateDB.physicalObjects[id].speciesName == "")
                {
                    string speciesName = ((StringValue)obProx["ClassName"].GetDataValue()).value;
                    StateDB.physicalObjects[id].speciesName = speciesName;
                }

                if (StateDB.physicalObjects[id].ownerID != "" && StateDB.physicalObjects[id].teamName == "")
                {
                    if (StateDB.decisionMakers[StateDB.physicalObjects[id].ownerID].team != null)
                    {
                        StateDB.physicalObjects[id].teamName = StateDB.decisionMakers[StateDB.physicalObjects[id].ownerID].team.id;
                    }
                }

                if (((StringValue)obProx["AttackState"].GetDataValue()).value == "BEING_ATTACKED")
                {
                    continue;
                }

                AttackCollectionValue attCV = (AttackCollectionValue)obProx["CurrentAttacks"].GetDataValue();
                if (attCV.GetCurrentSelfDefenseAttacks().Count == 0)
                //if (((StringValue)obProx["AttackTargetID"].GetDataValue()).value == "")
                {
                    dv = obProx["SelfDefenseStartAttack"].GetDataValue();
                    ((BooleanValue)dv).value = false;
                    obProx["SelfDefenseStartAttack"].SetDataValue(dv);

                    dv = obProx["SelfDefenseCapability"].GetDataValue();
                    ((StringValue)dv).value = "";
                    obProx["SelfDefenseCapability"].SetDataValue(dv);

                    dv = obProx["SelfDefenseTargetID"].GetDataValue();
                    ((StringValue)dv).value = "";
                    obProx["SelfDefenseTargetID"].SetDataValue(dv);
                }

                if (((BooleanValue)obProx["SelfDefenseStartAttack"].GetDataValue()).value == true)
                {
                    continue;
                }

                isWeapon = ((BooleanValue)obProx["IsWeapon"].GetDataValue()).value;
                pursueStarted = ((BooleanValue)obProx["PursueStarted"].GetDataValue()).value;
                targetID = ((StringValue)obProx["PursueTargetID"].GetDataValue()).value;

                capabilities = (CapabilityValue)obProx["Capability"].GetDataValue();

                if (isWeapon && pursueStarted && objectProxies.ContainsKey(targetID))
                {
                    targetProx = objectProxies[targetID];

                    location = (LocationValue)obProx["Location"].GetDataValue();
                    if (!location.exists)
                    {
                        continue;
                    }
                    myLoc = new Vec3D(location);

                    location = (LocationValue)targetProx["Location"].GetDataValue();
                    if (!location.exists)
                    {
                        continue;
                    }
                    targetLoc = new Vec3D(location);

                    distance = myLoc.ScalerDistanceTo(targetLoc);

                    
                    vulnerabilities = (VulnerabilityValue)targetProx["Vulnerability"].GetDataValue();

                    //string cap = FindCapability(capabilities, vulnerabilities);
                    effect = SimUtility.FindCapabilityEffect(capabilities, vulnerabilities);
                    if (effect != null && distance < effect.range)
                    {
                        dv = obProx["SelfDefenseStartAttack"].GetDataValue();
                        ((BooleanValue)dv).value = true;
                        obProx["SelfDefenseStartAttack"].SetDataValue(dv);

                        dv = obProx["SelfDefenseCapability"].GetDataValue();
                        ((StringValue)dv).value = effect.name;
                        obProx["SelfDefenseCapability"].SetDataValue(dv);

                        dv = obProx["SelfDefenseTargetID"].GetDataValue();
                        ((StringValue)dv).value = targetID;
                        obProx["SelfDefenseTargetID"].SetDataValue(dv);

                    }
                    else if (effect == null && distance < 1)
                    {
                        distClient.PutEvent(SimUtility.BuildStateChangeEvent(ref simModel, time, id, "Dead"));
                    }

                    continue;
                }

                string ownerID = ((StringValue)obProx["OwnerID"].GetDataValue()).value;
                if (StateDB.decisionMakers.ContainsKey(ownerID))
                {
                    StateDB.DecisionMaker thisDM = StateDB.decisionMakers[ownerID];
                    List<string> targets = ((StringListValue)obProx["TargetsInRange"].GetDataValue()).strings;

                    //if (targets.Count == 0)
                    //{
                    //    continue;
                    //}
                    foreach (string target in targets)
                    {
                        SimulationObjectProxy obProx2 = objectProxies[target];
                        string ownerID2 = ((StringValue)obProx2["OwnerID"].GetDataValue()).value;
                        if (!StateDB.decisionMakers.ContainsKey(ownerID2))
                        {
                            continue;
                        }
                        StateDB.DecisionMaker thatDM = StateDB.decisionMakers[ownerID2];
                        vulnerabilities = (VulnerabilityValue)obProx2["Vulnerability"].GetDataValue();
                        effect = SimUtility.FindCapabilityEffect(capabilities, vulnerabilities);
                        
                        if (effect != null && thisDM.isHostile(thatDM) && !thisDM.isHuman)
                        {
                            dv = obProx["SelfDefenseStartAttack"].GetDataValue();
                            ((BooleanValue)dv).value = true;
                            obProx["SelfDefenseStartAttack"].SetDataValue(dv);

                            dv = obProx["SelfDefenseCapability"].GetDataValue();
                            ((StringValue)dv).value = effect.name;
                            obProx["SelfDefenseCapability"].SetDataValue(dv);

                            dv = obProx["SelfDefenseTargetID"].GetDataValue();
                            ((StringValue)dv).value = target;
                            obProx["SelfDefenseTargetID"].SetDataValue(dv);
                            break;
                        }
                        

                    }

                    
                }

            }
        }
Exemplo n.º 18
0
        private void RevealObject(SimulationEvent e)
        {
            //objectProxies = bbClient.GetObjectProxies(); // update my objects record
            AttributeCollectionValue atts = (AttributeCollectionValue)e["Attributes"];
            string id = ((StringValue)e["ObjectID"]).value;

            SimulationObjectProxy prox = null; // objectProxies[id];
            prox = GetObjectProxy(id);
            if (prox == null)
                return;


            foreach (string attname in atts.attributes.Keys)
            {
                if (attname == "ID")
                {
                    continue;
                }
                if (prox.GetKeys().Contains(attname) && prox[attname].IsOwner())
                {
                    prox[attname].SetDataValue(atts[attname]);
                }
            }

        }
Exemplo n.º 19
0
        private void PlayerControl(SimulationEvent e)
        {
            string id = ((StringValue)e["DecisionMakerID"]).value;
            string controlledBy = ((StringValue)e["ControlledBy"]).value;

            if (StateDB.decisionMakers.ContainsKey(id))
            {
                if (controlledBy == "HUMAN")
                {
                    StateDB.decisionMakers[id].isHuman = true;
                }
                else
                {
                    StateDB.decisionMakers[id].isHuman = false;
                }
            }

        }
Exemplo n.º 20
0
        private void NewObject(SimulationEvent e)
        {
            //objectProxies = bbClient.GetObjectProxies(); // update my objects record

            string id = ((StringValue)e["ID"]).value;
            string type = ((StringValue)e["ObjectType"]).value;

            if (objectProxies == null)
            {
                objectProxies = new Dictionary<string, SimulationObjectProxy>();
            }
            SimulationObjectProxy prox = bbClient.GetObjectProxy(id);
            if (prox == null)
            { return; }
            if (!objectProxies.ContainsKey(id))
            {
                objectProxies.Add(id, prox);
            }
            else
            {
                objectProxies[id] = prox;
            }

            AttributeCollectionValue atts = (AttributeCollectionValue)e["Attributes"];
            if (atts.attributes.ContainsKey("ID"))  //REMOVE WHEN DONE MIGRATING REVEAL
            {
                string id2 = ((StringValue)atts["ID"]).value;
                if (objectProxies.ContainsKey(id2))
                {
                    SimulationObjectProxy proxi = objectProxies[id2];

                    foreach (string attname in atts.attributes.Keys)
                    {
                        if (proxi.GetKeys().Contains(attname) && proxi[attname].IsOwner())
                        {
                            proxi[attname].SetDataValue(atts[attname]);
                        }
                    }
                }
            }

            /*
            if (((StringValue)e["ObjectType"]).value == "Team")
            {
                StateDB.Team t = new StateDB.Team(((StringValue)e["ID"]).value,
                                  ((StringListValue)((AttributeCollectionValue)e["Attributes"]).attributes["TeamHostility"]).strings);

                StateDB.teams[t.id] = t;
            }
            else if (((StringValue)e["ObjectType"]).value == "DecisionMaker")
            {
                string teamID = ((StringValue)((AttributeCollectionValue)e["Attributes"]).attributes["TeamMember"]).value;
                StateDB.DecisionMaker d = new StateDB.DecisionMaker(((StringValue)e["ID"]).value,
                                                    StateDB.teams.ContainsKey(teamID) ? StateDB.teams[teamID] : null);

                StateDB.decisionMakers[d.id] = d;
            }*/

        }
Exemplo n.º 21
0
        private void ForceUpdateObjectAttribute(SimulationEvent e)
        {

                return;

        }
Exemplo n.º 22
0
 public void ProcessEvent(SimulationEvent e)
 {
     //objectProxies = bbClient.GetObjectProxies();
     switch (e.eventType)
     {
         case "TimeTick":
             TimeTick(e);
             break;
         case "NewObject":
             NewObject(e);
             break;
         case "RevealObject":
             RevealObject(e);
             break;
         //case "HandshakeInitializeGUIDone":
         //    HandshakeInitializeGUIDone(e);
         //    break;
         case "ExternalApp_SimStop":
             ResetSimulation();
             break;
         case "PlayerControl":
             PlayerControl(e);
             break;
         case "ForceUpdateObjectAttribute":
             ForceUpdateObjectAttribute(e);
             break;
         default:
             break;
     }
 }
Exemplo n.º 23
0
 public void ViewProActiveRegionUpdate(SimulationEvent ev) { }
Exemplo n.º 24
0
 public void ViewProStopObjectUpdate(SimulationEvent ev) { }
Exemplo n.º 25
0
 public void ViewProAttackUpdate(SimulationEvent ev) { }
Exemplo n.º 26
0
 public void ViewProMotionUpdate(SimulationEvent ev) { }
Exemplo n.º 27
0
 public void ViewProAttributeUpdate(SimulationEvent ev) { }
Exemplo n.º 28
0
 public void ViewProInitializeObject(SimulationEvent ev) { }
Exemplo n.º 29
0
 public EventListBoxItem(SimulationEvent se)
 {
     simEvent = se;
 }
Exemplo n.º 30
0
 public void AttackSucceeded(SimulationEvent ev) { }
Exemplo n.º 31
0
        private void ForceUpdateObjectAttribute(SimulationEvent e)
        {

            string objectId = ((StringValue)e["ObjectID"]).value;
            string attributeName = ((StringValue)e["AttributeName"]).value;
            if (!objectProxies.ContainsKey(objectId))
            {
                return;
            }
            try
            {
                if (!objectProxies[objectId].GetKeys().Contains(attributeName))
                    return;
                if (!objectProxies[objectId][attributeName].IsOwner())
                {
                    return;
                }
            }
            catch (Exception ex)
            {
                return;
            }

            DataValue attributeValue = e["AttributeValue"];
            if (attributeValue.dataType != "WrapperType")
                return;
            attributeValue = ((WrapperValue)attributeValue).value;
            SimulationObjectProxy obj = null;

            //depending on the attribute, you might have specific functionality
            switch (attributeName)
            {
                case "Intent":
                    ChangeIntent(attributeValue as StringValue, objectId);
                    break;
                default:
                    break;
            }

            //try
            //{
            //    obj[attributeName].SetDataValue(attributeValue);
            //}
            //catch (Exception ex)
            //{
            //    return;
            //}

            attributeValue = null;
            obj = null;
        }
Exemplo n.º 32
0
 public void PutEvent(SimulationEvent e)
 {
     dist.PutEvent(e);
 }