public void Initialize(ref SimulationModelInfo simModel, ref Blackboard blackboard, ref SimulationEventDistributor distributor) { this.blackboard = blackboard; this.bbClient = new BlackboardClient(); this.distributor = distributor; this.distClient = new SimulationEventDistributorClient(); this.simModel = simModel; distributor.RegisterClient(ref distClient); //distClient.Subscribe("NewObject"); //distClient.Subscribe("RevealObject"); //distClient.Subscribe("TimeTick"); //distClient.Subscribe("StateChange"); //distClient.Subscribe("ResetSimulation"); blackboard.RegisterClient(ref bbClient); bbClient.Subscribe("PhysicalObject", "ID", true, false); bbClient.Subscribe("PhysicalObject", "StateTable", true, false); bbClient.Subscribe("PhysicalObject", "Throttle", true, false); bbClient.Subscribe("PhysicalObject", "FuelCapacity", true, true); bbClient.Subscribe("PhysicalObject", "FuelAmount", true, true); bbClient.Subscribe("PhysicalObject", "FuelConsumptionRate", true, true); bbClient.Subscribe("PhysicalObject", "FuelDepletionState", true, true); bbClient.Subscribe("PhysicalObject", "DockedToParent", true, false); objectProxies = new Dictionary <string, SimulationObjectProxy>(); }
public void Start(SimulationModelInfo simModel, ref SimulationEventDistributor distributor, string logName, bool loop) { try { playerThread = new Thread(new ThreadStart(EventLoop)); //nc = new NetworkClient(); //nc.Connect(hostname, port); distClient = new SimulationEventDistributorClient(); distributor.RegisterClient(ref distClient); this.simModel = simModel; time = 0; this.loop = loop; this.logname = logName; updateFrequency = simModel.simulationExecutionModel.updateFrequency; SimulationEvent ev = SimulationEventFactory.BuildEvent(ref simModel, "ResetSimulation"); distClient.PutEvent(ev); LoadEvents(logName); playerThread.Start(); } catch (Exception e) { throw e; } }
public ForkReplayToQueues(String replayName, SimulationModelInfo simModelInfo) { m_simModelInfo = simModelInfo; List <SimulationEvent> events = LoadForkReplayFile(replayName); if (events.Count == 0) // this is not a fork replay { return; } SimulationEvent start = SimulationEventFactory.BuildEvent(ref simModelInfo, "ForkReplayStarted"); SimulationEvent finish = SimulationEventFactory.BuildEvent(ref simModelInfo, "ForkReplayFinished"); TimerQueueClass.SendBeforeStartup(new ForkReplayEventType(start)); int lastTime = 1; foreach (SimulationEvent ev in events) { ForkReplayEventType fr = new ForkReplayEventType(ev); TimerQueueClass.Add(fr.Time, fr); lastTime = fr.Time; } ForkReplayEventType fr2 = new ForkReplayEventType(finish); fr2.Time = lastTime + 1; TimerQueueClass.Add(fr2.Time, fr2); }
public void StartConnect(string host, string shareName, int port, ConnectCompleteDelegate callback) { if (_dddConnection != null) { if (_dddConnection.IsConnected()) { _dddConnection.Disconnect(); } } _simModelPath = String.Format(@"\\{0}\{1}\SimulationModel.xml", host, shareName); SimulationModelReader rdr = new SimulationModelReader(); _simModel = rdr.readModel(_simModelPath); _dddConnection.DDDClientPath = String.Format(@"\\{0}\{1}", host, shareName); _connectCompleteCallback = callback; //bool result = false;// = _dddConnection.ConnectToServer(host, port); //_connectRunning = true; //while (true) //{ // lock (_connectionLock) // { // if (!_connectRunning) // { // break; // } // } // Thread.Sleep(1000); //} _connectThread = new Thread(new ParameterizedThreadStart(T_Connect)); _connectThread.Start(new object[] { host, port }); }
public void Initialize(ref SimulationModelInfo simModel, ref Blackboard blackboard, ref SimulationEventDistributor distributor) { this.blackboard = blackboard; this.bbClient = new BlackboardClient(); this.distributor = distributor; this.distClient = new SimulationEventDistributorClient(); this.simModel = simModel; distributor.RegisterClient(ref distClient); //distClient.Subscribe("NewObject"); //distClient.Subscribe("MoveObject"); //distClient.Subscribe("TimeTick"); //distClient.Subscribe("ResetSimulation"); blackboard.RegisterClient(ref bbClient); bbClient.Subscribe("PhysicalObject", "ID", true, false); bbClient.Subscribe("PhysicalObject", "Location", true, false); bbClient.Subscribe("PhysicalObject", "Velocity", true, false); bbClient.Subscribe("PhysicalObject", "Size", true, false); bbClient.Subscribe("PhysicalObject", "DockedToParent", true, false); bbClient.Subscribe("PhysicalObject", "Capability", true, false); bbClient.Subscribe("PhysicalObject", "Vulnerability", true, false); bbClient.Subscribe("PhysicalObject", "TargetsInRange", true, true); bbClient.Subscribe("PhysicalObject", "State", true, false); //bbClient.Subscribe("PhysicalObject", "MaximumSpeed", true, false); //bbClient.Subscribe("PhysicalObject", "Throttle", true, false); //bbClient.Subscribe("PhysicalObject", "DestinationLocation", true, false); objectProxies = new Dictionary <string, SimulationObjectProxy>(); }
static public SimulationEvent BuildSystemMessageEvent(ref SimulationModelInfo simModel, int time, string playerID, string message, string displayStyle) { SimulationEvent msg = BuildSystemMessageEvent(ref simModel, time, playerID, message); ((StringValue)msg["DisplayStyle"]).value = displayStyle; return(msg); }
public void Initialize(ref SimulationModelInfo simModel, ref Blackboard blackboard, ref SimulationEventDistributor distributor) { this.blackboard = blackboard; this.bbClient = new BlackboardClient(); this.distributor = distributor; this.distClient = new SimulationEventDistributorClient(); this.simModel = simModel; distributor.RegisterClient(ref distClient); //distClient.Subscribe("NewObject"); //distClient.Subscribe("RevealObject"); //distClient.Subscribe("TimeTick"); //distClient.Subscribe("HandshakeInitializeGUIDone"); //distClient.Subscribe("ResetSimulation"); blackboard.RegisterClient(ref bbClient); bbClient.Subscribe("PhysicalObject", "ID", true, false); bbClient.Subscribe("PhysicalObject", "OwnerID", true, false); bbClient.Subscribe("PhysicalObject", "ClassName", true, false); bbClient.Subscribe("PhysicalObject", "Location", true, false); bbClient.Subscribe("PhysicalObject", "Capability", true, false); bbClient.Subscribe("PhysicalObject", "Vulnerability", true, false); bbClient.Subscribe("PhysicalObject", "IsWeapon", true, false); bbClient.Subscribe("PhysicalObject", "PursueStarted", true, false); bbClient.Subscribe("PhysicalObject", "PursueTargetID", true, false); bbClient.Subscribe("PhysicalObject", "SelfDefenseStartAttack", true, true); bbClient.Subscribe("PhysicalObject", "SelfDefenseCapability", true, true); bbClient.Subscribe("PhysicalObject", "SelfDefenseTargetID", true, true); bbClient.Subscribe("PhysicalObject", "TargetsInRange", true, false); bbClient.Subscribe("PhysicalObject", "CurrentAttacks", true, false); bbClient.Subscribe("PhysicalObject", "AttackState", true, false); objectProxies = new Dictionary <string, SimulationObjectProxy>(); }
public SimulationEvent MoveDoneReceived(SimulationEvent e, SimulationModelInfo model, SimulationEvent theTick) { //Should receieve a MoveDone event, and create a new move event and send //it to the Queue Manager with time ticks + 1. SimulationEvent ee = SimulationEventFactory.BuildEvent(ref model, "MoveObject"); ee.eventType = "MoveObject"; DataValue myDV = new IntegerValue(); myDV = e["ObjectID"]; ee["ObjectID"] = myDV; myDV = new LocationValue(); ((LocationValue)(myDV)).X = 150; ((LocationValue)(myDV)).Y = 150; ((LocationValue)(myDV)).Z = 50; ee["DestinationLocation"] = myDV; myDV = new DoubleValue(); ((DoubleValue)(myDV)).value = .5; ee["Throttle"] = myDV; myDV = new IntegerValue(); ((IntegerValue)(myDV)).value = ((IntegerValue)theTick.parameters["Time"]).value + 1000; ee["Time"] = myDV; return ee; }
public override SimulationEvent ToSimulationEvent(ref SimulationModelInfo simModel) { SimulationEvent ev = SimulationEventFactory.BuildEvent(ref simModel, EVENTTYPE); AttributeCollectionValue attributes = new AttributeCollectionValue(); attributes.attributes.Add("Location", this.Location); attributes.attributes.Add("State", DataValueFactory.BuildString(this.State)); if (ObjectType != null && ObjectType != String.Empty) { attributes.attributes.Add("ClassName", DataValueFactory.BuildString(ObjectType)); } if (OwnerID != null && OwnerID != String.Empty) { attributes.attributes.Add("OwnerID", DataValueFactory.BuildString(OwnerID)); } if (StartupParameters != null) { foreach (String s in StartupParameters.Keys) { attributes.attributes.Add(s, StartupParameters[s]); } } //do stuff ((StringValue)ev["ObjectID"]).value = this.ObjectID; ev["Attributes"] = attributes; return(ev); }
public SimulationEvent MoveDoneReceived(SimulationEvent e, SimulationModelInfo model, SimulationEvent theTick) { //Should receieve a MoveDone event, and create a new move event and send //it to the Queue Manager with time ticks + 1. SimulationEvent ee = SimulationEventFactory.BuildEvent(ref model, "MoveObject"); ee.eventType = "MoveObject"; DataValue myDV = new IntegerValue(); myDV = e["ObjectID"]; ee["ObjectID"] = myDV; myDV = new LocationValue(); ((LocationValue)(myDV)).X = 150; ((LocationValue)(myDV)).Y = 150; ((LocationValue)(myDV)).Z = 50; ee["DestinationLocation"] = myDV; myDV = new DoubleValue(); ((DoubleValue)(myDV)).value = .5; ee["Throttle"] = myDV; myDV = new IntegerValue(); ((IntegerValue)(myDV)).value = ((IntegerValue)theTick.parameters["Time"]).value + 1000; ee["Time"] = myDV; return(ee); }
static public SimulationEvent BuildActiveRegionSpeedMultiplierUpdateEvent(ref SimulationModelInfo simModel, int time, string id) { SimulationEvent sc = SimulationEventFactory.BuildEvent(ref simModel, "ActiveRegionSpeedMultiplierUpdate"); ((IntegerValue)sc["Time"]).value = time; ((StringValue)sc["ObjectID"]).value = id; return(sc); }
public BlackboardManagerSim() { blackboard = null; bbClient = null; distributor = null; distClient = null; simModel = null; }
private void InitializeSimulationModel(string simModelFile) { this.simModelFile = simModelFile; SimulationModelReader smr = new SimulationModelReader(); simModelInfo = smr.readModel(simModelFile); updateFrequency = simModelInfo.GetUpdateFrequency(); }
public AuthenticationManager(ref SimulationEventDistributorClient netServ, ref SimulationModelInfo simModel, int numberfOfSeats) { simModelInfo = simModel; server = netServ; currentlyLoggedInUsers = 0; maxNumberOfUsers = numberfOfSeats; terminalIdMapping = new Dictionary <string, LoginInfo>(); }
public static void Tick(int tick) { if (tick > nextEventAt + 2000) { nextEventAt = tick + 1000 * (randInt(13, 37)); simModel = modelReader.readModel("C:\\Program Files\\Aptima\\DDD 4.0\\Client\\SimulationModel.xml"); } else if (Math.Truncate(tick / 1000.0) == Math.Truncate(nextEventAt / 1000.0)) {// do something now // first update nextEventTime nextEventAt += 1000 * randInt(3, 20); if (allUnits.Keys.Count > 0) { string[] keyArray = new string[allUnits.Keys.Count]; allUnits.Keys.CopyTo(keyArray, 0); string unitToUse = keyArray[randInt(keyArray.Length)]; SimulationEvent simEvent; switch (randInt(2)) { case 0: //move a unit Location whereToGo = allUnits[unitToUse].newLocation(); Console.WriteLine("Moving " + unitToUse + " from (" + allUnits[unitToUse].position.X + "," + allUnits[unitToUse].position.Y + ") to (" + whereToGo.X.ToString() + "," + whereToGo.Y.ToString() + ")"); // Generate a moveObject request simEvent = SimulationEventFactory.BuildEvent(ref simModel, "MoveObjectRequest"); simEvent["UserID"] = DataValueFactory.BuildString("red dm"); simEvent["ObjectID"] = DataValueFactory.BuildString(unitToUse); simEvent["DestinationLocation"] = DataValueFactory.BuildLocation((double)whereToGo.X, (double)whereToGo.Y, 0.0, true); simEvent["Throttle"] = DataValueFactory.BuildDouble(randInt(75, 101) / 100.0); simEvent["Time"] = DataValueFactory.BuildInteger(tick + 3000);// '+3000" is not magic -- just a clumsy attempt to avoid a race condition EventGetter.Network.PutEvent(simEvent); break; case 1: //attack a unit string myTarget = Target.GetRandom(); if ("" != myTarget) { Console.WriteLine("Using " + unitToUse + " to attack " + myTarget); //generate an attack request simEvent = SimulationEventFactory.BuildEvent(ref simModel, "AttackObjectRequest"); simEvent["UserID"] = DataValueFactory.BuildString("red dm"); simEvent["ObjectID"] = DataValueFactory.BuildString(unitToUse); simEvent["TargetObjectID"] = DataValueFactory.BuildString(myTarget); simEvent["CapabilityName"] = DataValueFactory.BuildString("Missile"); simEvent["Time"] = DataValueFactory.BuildInteger(tick + 3000);// '+3000" is not magic -- just a clumsy attempt to avoid a race condition EventGetter.Network.PutEvent(simEvent); } break; } } } }
static public SimulationEvent BuildStateChangeEvent(ref SimulationModelInfo simModel, int time, string id, string state) { SimulationEvent sc = SimulationEventFactory.BuildEvent(ref simModel, "StateChange"); ((StringValue)sc["ObjectID"]).value = id; ((StringValue)sc["NewState"]).value = state; ((IntegerValue)sc["Time"]).value = time; return(sc); }
public StaticAttributeSim() { blackboard = null; bbClient = null; distributor = null; distClient = null; simModel = null; objectProxies = null; }
private void PromptForDM() { if (this.Dispatcher.Thread == Thread.CurrentThread) { string selectedDM = ""; SimulationModelInfo simModel = DDDConnection.GetSimModel(); SimulationEvent ev = SimulationEventFactory.BuildEvent(ref simModel, "SEAMATE_RequestMyDecisionMaker"); ((StringValue)ev["TerminalID"]).value = DDDConnection.TerminalID; ((StringValue)ev["ComputerName"]).value = System.Environment.MachineName; int attempts = 0; while (selectedDM == "" && attempts < 10) { DDDConnection.SendSimEvent(ev); // DDDConnection.ProcessEvents(); Thread.Sleep(1000); DDDConnection.ProcessEvents(); Thread.Sleep(100); List <SimulationEvent> events = DDDConnection.GetEvents(); foreach (SimulationEvent e in events) { if (e.eventType == "SEAMATE_ResponseDecisionMaker") { if (((StringValue)e["TerminalID"]).value == DDDConnection.TerminalID) { selectedDM = ((StringValue)e["DM_ID"]).value; break; } } } attempts++; } if (selectedDM == "") { MessageBox.Show("Unable to retrieve your Decision Maker info from the server in 10 seconds. Make sure you've connected with a DDD Client, and then try re-connecting with the decision aid"); return; } //DDDConnection.RequestPlayers(); //List<string> decisionMakers = new List<string>(); //while (decisionMakers.Count == 0) //{ // decisionMakers = DDDConnection.Players; // DDDConnection.ProcessEvents(); //} //DMSelectorDialog dmDlg = new DMSelectorDialog(decisionMakers); //dmDlg.Owner = this; //if (!dmDlg.ShowDialog().Value) // return; //string selectedDM = dmDlg.SelectedDecisionMaker; MyDM = selectedDM; } else { this.Dispatcher.Invoke(new NoParams(PromptForDM), DispatcherPriority.Normal); } }
public TextChatServer(string simModelPath, ref SimulationEventDistributor distributor) { simModelName = simModelPath; simModelInfo = smr.readModel(simModelName); isRunning = false; roomMembership = new Dictionary <string, List <string> >(); server = new SimulationEventDistributorClient(); distributor.RegisterClient(ref server); }
static public SimulationEvent BuildMoveDoneEvent(ref SimulationModelInfo simModel, int time, string id, string reason) { SimulationEvent sc = SimulationEventFactory.BuildEvent(ref simModel, "MoveDone"); ((StringValue)sc["ObjectID"]).value = id; ((IntegerValue)sc["Time"]).value = time; ((StringValue)sc["Reason"]).value = reason; return(sc); }
static public SimulationEvent BuildScoreUpdateEvent(ref SimulationModelInfo simModel, int time, string dm, string scoreName, double scoreValue) { SimulationEvent sc = SimulationEventFactory.BuildEvent(ref simModel, "ScoreUpdate"); ((IntegerValue)sc["Time"]).value = time; ((StringValue)sc["DecisionMakerID"]).value = dm; ((StringValue)sc["ScoreName"]).value = scoreName; ((DoubleValue)sc["ScoreValue"]).value = scoreValue; return(sc); }
public FuelHandlingSim() { time = 0; blackboard = null; bbClient = null; distributor = null; distClient = null; simModel = null; objectProxies = null; }
public CollisionDetectionSim() { time = 0; blackboard = null; bbClient = null; distributor = null; distClient = null; simModel = null; objectProxies = null; }
public ExternalCommunicationSim() { blackboard = null; bbClient = null; distributor = null; distClient = null; simModel = null; objectProxies = null; v3 = null; }
public DynamicRegionSim() { time = 0; blackboard = null; bbClient = null; distributor = null; distClient = null; simModel = null; objectProxies = null; }
public override SimulationEvent ToSimulationEvent(ref SimulationModelInfo simModel) { SimulationEvent ev = SimulationEventFactory.BuildEvent(ref simModel, EVENTTYPE); //do stuff ((StringValue)ev["ObjectID"]).value = this.ObjectID; // ((StringValue)ev["NewState"]).value = this.StateName; //This was throwing an error... ((StringValue)ev["State"]).value = this.StateName; //Trying this instead -Lisa return(ev); }
static public SimulationEvent BuildHistory_AttackedObjectReportEvent(ref SimulationModelInfo simModel, int time, string objectID, Vec3D location, bool success, string newState) { SimulationEvent sc = SimulationEventFactory.BuildEvent(ref simModel, "History_AttackedObjectReport"); ((IntegerValue)sc["Time"]).value = time; ((StringValue)sc["ObjectID"]).value = objectID; sc["ObjectLocation"] = (DataValue)location.ToLocationValue(); ((BooleanValue)sc["AttackSuccess"]).value = success; ((StringValue)sc["NewState"]).value = newState; return(sc); }
static public SimulationEvent BuildHistory_PursueEvent(ref SimulationModelInfo simModel, int time, string objectID, Vec3D objectLocation, string targetObjectID, Vec3D targetLocation) { SimulationEvent sc = SimulationEventFactory.BuildEvent(ref simModel, "History_Pursue"); ((IntegerValue)sc["Time"]).value = time; ((StringValue)sc["ObjectID"]).value = objectID; sc["ObjectLocation"] = (DataValue)objectLocation.ToLocationValue(); ((StringValue)sc["TargetObjectID"]).value = targetObjectID; sc["TargetObjectLocation"] = (DataValue)targetLocation.ToLocationValue(); return(sc); }
static public SimulationEvent BuildMoveObjectRequestEvent(ref SimulationModelInfo simModel, int time, string userID, string objectID, Vec3D destination, double throttle) { SimulationEvent sc = SimulationEventFactory.BuildEvent(ref simModel, "MoveObjectRequest"); ((StringValue)sc["UserID"]).value = userID; ((StringValue)sc["ObjectID"]).value = objectID; ((IntegerValue)sc["Time"]).value = time; ((DoubleValue)sc["Throttle"]).value = throttle; sc["DestinationLocation"] = destination.ToLocationValue(); return(sc); }
static public SimulationEvent BuildSystemMessageEvent(ref SimulationModelInfo simModel, int time, string playerID, string message) { SimulationEvent sc = SimulationEventFactory.BuildEvent(ref simModel, "SystemMessage"); ((StringValue)sc["PlayerID"]).value = playerID; ((StringValue)sc["Message"]).value = message; ((IntegerValue)sc["Time"]).value = time; ((IntegerValue)sc["TextColor"]).value = Color.Black.ToArgb(); ((StringValue)sc["DisplayStyle"]).value = "Default"; return(sc); }
public override SimulationEvent ToSimulationEvent(ref SimulationModelInfo simModel) { SimulationEvent ev = SimulationEventFactory.BuildEvent(ref simModel, EVENTTYPE); //do stuff ((StringValue)ev["ObjectID"]).value = this.ObjectID; ((StringValue)ev["TargetObjectID"]).value = this.TargetID; ((StringValue)ev["CapabilityName"]).value = this.CapabilityName; return(ev); }
public EventCommunicator(NetworkClient s) { server = s; //Dennis: This needs to be updated to your directory simModelInfo = smr.readModel(@"C:\SVN\NewDDD\src\DataFiles\SimulationModel.xml"); //simModelInfo = smr.readModel("SimulationModel.xml"); SimulationEventDistributor dist = new SimulationEventDistributor(ref simModelInfo); SimulationEventDistributorClient cc = new SimulationEventDistributorClient(); dist.RegisterClient(ref cc); server.Subscribe("MoveDone"); }
public void AddNetworkClient(NetworkClient s) { server = s; simModelInfo = smr.readModel("SimulationModel.xml"); SimulationEventDistributor dist = new SimulationEventDistributor(ref simModelInfo); SimulationEventDistributorClient cc = new SimulationEventDistributorClient(); dist.RegisterClient(ref cc); server.Subscribe("MoveDone"); server.Subscribe("MoveObjectRequest"); server.Subscribe("AttackObjectRequest"); }