コード例 #1
0
ファイル: FormPlans.cs プロジェクト: DedulkoN/MyBigNotebook
        private void dgvFutureList_CellStateChanged(object sender, DataGridViewCellStateChangedEventArgs e)
        {
            try
            {
                if (e.StateChanged == DataGridViewElementStates.Selected)
                {
                    FuturePlan plan = plants.FuturePlans.Where(p => p.NamePlan == e.Cell.Value.ToString()).First();
                    if (e.Cell.Selected)
                    {
                        setFutureVisible(true);
                        dtpFutureRealiseDate.Value = plan.DateRealise;
                        dgvFuturePunkts.Rows.Clear();

                        foreach (PunktOfPlan punkt in plan.punktOfPlans)
                        {
                            dgvFuturePunkts.Rows.Add(new object[] { punkt.NumberPunkt, punkt.NamePunkt, punkt.CompleteFlag });
                        }
                        dgvFuturePunkts.Sort(dgvFuturePunkts.Columns[0], ListSortDirection.Ascending);
                    }
                    else
                    {
                        plan.DateRealise = dtpFutureRealiseDate.Value;
                        plan.punktOfPlans.Clear();

                        foreach (DataGridViewRow row in dgvFuturePunkts.Rows)
                        {
                            plan.punktOfPlans.Add(new PunktOfPlan(Convert.ToInt32(row.Cells[0].Value), row.Cells[1].Value.ToString(), Convert.ToBoolean(row.Cells[2].Value)));
                        }
                    }
                }
            }
            catch { }
        }
コード例 #2
0
    public float GetHeadingInFuture(float seconds)
    {
        //Debug.Log("Getting heading for " + seconds + " in future...");

        FuturePlan finalPlan = null;

        for (int i = 0; i < futurePlans.Count; i++)
        {
            if (futurePlans[i].startDelay >= seconds)
            {
                break;
            }
            else
            {
                finalPlan = futurePlans[i];
            }
        }

        if (finalPlan != null)
        {
            //Debug.Log("Plan that we care about has a start delay of " + finalPlan.startDelay);

            float timeIntoPlan = seconds - finalPlan.startDelay;
            if (timeIntoPlan >= 0f)
            {
                return(finalPlan.linearPlanner.GetValueInFuture(timeIntoPlan));
            }
        }

        //Debug.Log("Fuckit, just using my current heading");
        return(aircraft.CurrentHeadingInDegrees);
    }
コード例 #3
0
ファイル: FormPlans.cs プロジェクト: DedulkoN/MyBigNotebook
 private void tsbFutureDelete_Click(object sender, EventArgs e)
 {
     try
     {
         DataGridViewCell cell = dgvFutureList.CurrentCell;
         if (MessageBox.Show($"Вы точно хотите удалить план {cell.Value.ToString()}?", "Warning!", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
         {
             FuturePlan plan = plants.FuturePlans.Where(p => p.NamePlan == cell.Value.ToString()).First();
             plants.FuturePlans.Remove(plan);
             LoadFuturePlanToForm();
         }
     }
     catch { }
 }
コード例 #4
0
    // Update is called once per frame
    void Update()
    {
        if (futurePlans.Count == 0)
        {
            return;
        }

        FuturePlan currentPlan = null;

        for (int i = 0; i < futurePlans.Count; i++)
        {
            if (futurePlans[i].startDelay > 0)
            {
                break;
            }
            else
            {
                currentPlan = futurePlans[i];
            }
        }

        int numToRemove = futurePlans.IndexOf(currentPlan);

        if (numToRemove > 0)
        {
            Debug.Log("Removing " + numToRemove + " old plans (currently " + futurePlans.Count + ") at heading " + aircraft.CurrentHeadingInDegrees);
            futurePlans.RemoveRange(0, numToRemove);
            Debug.Log("Removed! There are now " + futurePlans.Count + " remaining.");
        }

        if (currentPlan != null && currentPlan.startDelay <= 0)
        {
            currentPlan.linearPlanner.UpdateCurrentValues(Time.deltaTime);
            aircraft.CurrentHeadingInDegrees = currentPlan.linearPlanner.CurrentValue;
        }

        foreach (FuturePlan futurePlan in futurePlans)
        {
            if (futurePlan != currentPlan)
            {
                futurePlan.startDelay -= Time.deltaTime;
            }
        }
    }
コード例 #5
0
    public void AddPlan(float startDelay, float targetHeading)
    {
        Debug.Log("Creating plan at " + startDelay + " to go to " + targetHeading);

        int insertAt = 0;

        while (insertAt < futurePlans.Count)
        {
            float startTime = futurePlans[insertAt].startDelay;
            if (startTime > startDelay)
            {
                break;
            }
            else
            {
                insertAt++;
            }
        }

        float headingAtInsertTime = GetHeadingInFuture(startDelay);

        Debug.Log("Will be going at heading " + headingAtInsertTime);

        LinearPlanner planner = new LinearPlanner(headingAtInsertTime);

        planner.maxSpeed     = aircraft.maxTurnSpeed;
        planner.acceleration = aircraft.turnAcceleration;
        planner.TargetValue  = targetHeading;

        FuturePlan newPlan = new FuturePlan(startDelay, planner);

        newPlan.startHeading = headingAtInsertTime;

        futurePlans.Insert(insertAt, newPlan);

        UpdateAllPlans();
    }