//INICIAIZATION
    void Start()
    {
        displayerInstance = this;

        access = Name.GetComponent <NameDisplay>();
        //access2 = Sprite.GetComponent<ImageDisplay>();

        _textComponent      = GetComponent <Text>();
        _textComponent.text = ""; //Emptying text display just for good measure.

        ContinueIcon.SetActive(false);
    }
예제 #2
0
        /// <summary>
        /// Handle the end of the dragging action
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Student_Drop(object sender, DragEventArgs e)
        {
            PlaceDisplay placeDisplay = (PlaceDisplay)((FrameworkElement)sender).DataContext;
            NameDisplay  data         = (NameDisplay)e.Data.GetData(typeof(NameDisplay));

            if (placeDisplay.StudentId != 0)
            {
                return;
            }
            placeDisplay.Content   = data.Name;
            placeDisplay.StudentId = data.ID;
            StudentPlaceDisplay studentPlace = new StudentPlaceDisplay()
            {
                StudentId = data.ID,
                Row       = placeDisplay.Row,
                Column    = placeDisplay.Column
            };

            studentPlaceList.Add(studentPlace);
            ((IList)dragSource.ItemsSource).Remove(data);
        }
예제 #3
0
        public PlanEditPage(int scheduleId, int classroomId) //Create plan
        {
            studentPlanList = new ObservableCollection <ObservableCollection <PlaceDisplay> >();
            ScheduleInfo schedule = Database.Get.Schedule.FromId(scheduleId);

            if (schedule.scheduleId == null)
            {
                MessageBox.Show("Un probème est surnvenu");
                return;
            }

            RoomInfo roomInfo = Database.Get.Room.FromID((int)schedule.roomId);

            if (roomInfo == null)
            {
                MessageBox.Show("Salle inexistante");
                return;
            }
            roomId          = (int)schedule.roomId;
            this.scheduleId = scheduleId;
            rowNumber       = roomInfo.Rows;
            columnNumber    = roomInfo.Columns;

            //double itemWidth = _mainGrid.ColumnDefinitions[1].ActualWidth / columnNumber;
            //double itemHeight = _mainGrid.RowDefinitions[0].ActualHeight / rowNumber;
            int initItemHeight = 60;
            int initItemWidth  = 60;

            for (int i = 0; i < rowNumber; i++)
            {
                studentPlanList.Add(new ObservableCollection <PlaceDisplay>());

                for (int j = 0; j < columnNumber; j++)
                {
                    //if (j == 1)
                    //{
                    //    PlaceDisplay placeDisplay = new PlaceDisplay()
                    //    {
                    //        ItemHeight = (int)initItemHeight,
                    //        ItemWidth = (int)initItemWidth,
                    //        AbsoluteWidth = columnSkipSize,
                    //        Content = "",
                    //        Drop = false,
                    //        Thickness = 0
                    //    };
                    //    studentPlanList[i].Add(placeDisplay);
                    //} else
                    //{
                    PlaceDisplay placeDisplay = new PlaceDisplay()
                    {
                        Row           = i,
                        Column        = j,
                        ItemHeight    = initItemHeight,
                        ItemWidth     = initItemWidth,
                        AbsoluteWidth = 0,
                        Content       = $"Glisser déposer ici pour\nplacer l'élève {i} {j}",
                        Drop          = true,
                        Thickness     = 1,
                        StudentId     = 0
                    };
                    studentPlanList[i].Add(placeDisplay);
                    //}
                }
            }


            InitializeComponent();
            buttonList = new List <Button>();
            List <string> spacingList = new List <string>();

            //if (planId != null)
            //{
            //    List<PlanInfo> plan = Database.Get.Plan.FromScheduleId(scheduleId);
            //    spacingList = plan.spacing.Split(",").ToList();
            //    planId = plan.planId;


            //}
            for (int i = 0; i < columnNumber - 1; i++)
            {
                Button btn = new Button();
                btn.Content = "|";
                btn.Height  = 20;
                btn.Width   = 20;

                btn.HorizontalAlignment = HorizontalAlignment.Left;
                btn.Tag    = i;
                btn.Click += SpacingButton_Click;
                //btn.Margin = new Thickness(80 * (i + 1), 0, 0, 0);
                _mainGrid.Children.Add(btn);
                Grid.SetRow(btn, 0);
                Grid.SetColumn(btn, 1);
                string found = spacingList.Find(x => x == i.ToString());
                if (found != null)
                {
                    btn.IsEnabled = false;
                }
                buttonList.Add(btn);
            }

            List <StudentInfo> studentList = Database.Get.Student.AllFromClassroomId(classroomId);

            foreach (StudentInfo student in studentList)
            {
                NameDisplay nameDisplay = new NameDisplay()
                {
                    ID   = student.studentId,
                    Name = String.Join(" ", new string[] { student.surname, student.lastname })
                };
                studentCollection.Add(nameDisplay);
            }

            _studentList.ItemsSource = studentCollection;
            _lst.ItemsSource         = studentPlanList;
        }
        // Update is called once per frame
        void FixedUpdate()
        {
            OnRightClick rc = plane.GetComponent <OnRightClick>();

            if (rc.clicked_off)
            {
                foreach (GameObject task in construction_tasks.Values)
                {
                    SelectTask selections = task.GetComponent <SelectTask>();
                    selections.rightClickAndSelected = false;
                }

                foreach (GameObject task in transport_tasks.Values)
                {
                    SelectTask selections = task.GetComponent <SelectTask>();
                    selections.rightClickAndSelected = false;
                }

                if (selectAgent.currentlySelected.Count != 0)
                {
                    selectAgent.DeselectAll();
                }
                rc.clicked_off = false;
            }

            if (!start_recieved)
            {
                rosSocket.Publish(updateID, message);
            }

            // Update agents through the update function
            if (agent_message != null)
            {
                if (!agents.ContainsKey(agent_message.name))
                {
                    GameObject addingAgent = new GameObject();
                    try
                    {
                        if (agent_message.agent_type == "ConstructionAgent")
                        {
                            addingAgent = Instantiate(contructionAgentModel, getVectFromMessage(agent_message.pose), getQuadFromMsg(agent_message.pose));
                        }
                        else
                        {
                            addingAgent = Instantiate(transportAgentModel, getVectFromMessage(agent_message.pose), getQuadFromMsg(agent_message.pose));
                        }
                        selectAgent menu = addingAgent.AddComponent <selectAgent>();
                        menu.agentType = agent_message.agent_type;
                        BoxCollider box = addingAgent.AddComponent <BoxCollider>();
                        box.size = box.size * 1.3f;
                        NameDisplay name_display = addingAgent.AddComponent <NameDisplay>();
                        if (agent_message.agent_type == "ConstructionAgent")
                        {
                            name_display.colour = red;
                        }
                        else
                        {
                            name_display.colour = blue;
                        }
                        AgentInfo agent_info = addingAgent.AddComponent <AgentInfo>();
                        name_display.name      = agent_message.name;
                        menu.agentName         = agent_message.name;
                        menu.agentCurrentTask  = agent_message.current_task;
                        menu.currentAction     = agent_message.current_action;
                        menu.agentCapabilities = getStringCompatibilities(agent_message.capabilities);
                        menu.movementSpeed     = agent_message.movement_speed.ToString();
                        menu.isAtTask          = agent_message.is_at_task.ToString();
                        agents.Add(agent_message.name, addingAgent);
                    } catch (ArgumentException e)
                    {
                        print("Some reason, the agent has already been added... " + e);
                        Destroy(addingAgent);
                        agents.Remove(agent_message.name);
                    }
                }
                else
                {
                    GameObject currentAgent;
                    agents.TryGetValue(agent_message.name, out currentAgent);
                    currentAgent.transform.position      = getVectFromMessage(agent_message.pose);
                    currentAgent.transform.localRotation = getQuadFromMsg(agent_message.pose);
                    selectAgent menu = currentAgent.GetComponent <selectAgent>();
                    menu.agentCurrentTask  = agent_message.current_task;
                    menu.currentAction     = agent_message.current_action;
                    menu.agentCapabilities = getStringCompatibilities(agent_message.capabilities);
                    menu.movementSpeed     = agent_message.movement_speed.ToString();
                    menu.isAtTask          = agent_message.is_at_task.ToString();
                }
                agent_message = null;
            }

            if (construction_task_message != null)
            {
                string PERM_CONTRUCTION_NAME = String.Copy(construction_task_message.name);
                if ((!construction_tasks.ContainsKey(construction_task_message.name)))
                {
                    try
                    {
                        if (!construction_task_message.is_complete)
                        {
                            GameObject addingConstructionTask = Instantiate(contructionTaskModel, getVectFromMessage(construction_task_message.pose, new Vector3(0, 1f, 0)), getQuadFromMsg(construction_task_message.pose));
                            construction_tasks.Add(PERM_CONTRUCTION_NAME, addingConstructionTask);
                            NameDisplay name_display = addingConstructionTask.AddComponent <NameDisplay>();
                            name_display.name   = PERM_CONTRUCTION_NAME;
                            name_display.colour = offRed;
                            BoxCollider box = addingConstructionTask.AddComponent <BoxCollider>();
                            box.size = box.size * 1.3f;
                            SelectTask taskSelect = addingConstructionTask.AddComponent <SelectTask>();
                            taskSelect.taskName = PERM_CONTRUCTION_NAME;
                            taskSelect.taskType = "Construction";
                        }
                    }
                    catch (ArgumentException e)
                    {
                        print("Some reason, the contruction task has already been added... " + e);
                    }
                }
                else
                {
                    GameObject currentConstructionTask;
                    construction_tasks.TryGetValue(construction_task_message.name, out currentConstructionTask);
                    if (construction_task_message.is_complete)
                    {
                        construction_tasks.Remove(construction_task_message.name);
                        Destroy(currentConstructionTask);
                    }
                }
                construction_task_message = null;
            }

            if (transport_task_message != null)
            {
                if (!transport_tasks.ContainsKey(transport_task_message.name))
                {
                    if (!transport_task_message.is_complete)
                    {
                        GameObject addingTransportTask    = Instantiate(transportTaskModel, getVectFromMessage(transport_task_message.pose, new Vector3(0, 0.47f, 0)), getQuadFromMsg(transport_task_message.pose));
                        GameObject addingTransportTaskEnd = Instantiate(dartModel, getVectFromMessage(transport_task_message.end_pose, new Vector3(0, 1.252f, 0)), Quaternion.Euler(90, 0, 0));
                        addingTransportTaskEnd.transform.localScale = new Vector3(200, 200, 200);
                        // Makes the transport task end a child of the adding transport task.
                        // addingTransportTaskEnd.transform.parent = addingTransportTask.transform;
                        transport_tasks.Add(transport_task_message.name, addingTransportTask);
                        LineRenderer line = addingTransportTask.AddComponent <LineRenderer>();
                        line.material = lineMaterial;
                        NameDisplay name_display = addingTransportTask.AddComponent <NameDisplay>();
                        name_display.colour = offBlue;
                        line.SetPositions(new Vector3[2] {
                            new Vector3(addingTransportTask.transform.position.x, 0.01f, addingTransportTask.transform.position.z),
                            new Vector3(addingTransportTaskEnd.transform.position.x, 0.01f, addingTransportTaskEnd.transform.position.z)
                        });
                        line.startWidth   = 0.05f;
                        line.endWidth     = 0.5f;
                        name_display.name = transport_task_message.name;
                        BoxCollider box = addingTransportTask.AddComponent <BoxCollider>();
                        box.size = box.size * 1.3f;
                        SelectTask taskSelect = addingTransportTask.AddComponent <SelectTask>();
                        taskSelect.taskName = transport_task_message.name;
                        taskSelect.taskType = "Transport";
                    }
                }
                else
                {
                    GameObject currentTransportTask;
                    transport_tasks.TryGetValue(transport_task_message.name, out currentTransportTask);
                    try
                    {
                        currentTransportTask.transform.position = getVectFromMessage(transport_task_message.pose, new Vector3(0, 0.47f, 0));
                        LineRenderer line = currentTransportTask.GetComponent <LineRenderer>();
                        line.SetPosition(0, new Vector3(currentTransportTask.transform.position.x, 0.01f, currentTransportTask.transform.position.z));
                        if (transport_task_message.is_complete)
                        {
                            transport_tasks.Remove(transport_task_message.name);
                            Destroy(currentTransportTask);
                        }
                    } catch (MissingReferenceException e)
                    {
                        print("Transport task was destroyed, the task is still in the dictionary for some reasons... Deleting it again.");
                        transport_tasks.Remove(transport_task_message.name);
                    }
                }
                transport_task_message = null;
            }



            if (construction_tasks.Count != 0)
            {
                foreach (GameObject task in construction_tasks.Values)
                {
                    task.transform.localEulerAngles = new Vector3(45, task.transform.localEulerAngles.y + 1f, 90);
                }
            }
        }