Ejemplo n.º 1
0
        /// <summary>
        /// 输出
        /// </summary>
        /// <returns></returns>
        public string Output()
        {
            StringBuilder sb = new StringBuilder();

            //sb.Append("DATE/TIME\tFROM/TO\tFLIGHT\tA/C REG\tVERSION\tCREW" + Environment.NewLine);
            //sb.Append(Day + Month + Year.Substring(2) + "/" + Hour + Minute + "\t");
            //sb.Append(FromAirport + "/" + ToAirport + "\t");
            //sb.Append(Flight + "\t");
            //sb.Append(ACReg + "\t");
            //sb.Append(Version + "\t");
            //sb.Append(Crew1.ToString() + "/" + Crew2.ToString() + "/" + Crew3.ToString());
            //sb.Append(Environment.NewLine);

            sb.AppendFormat("{0,-10}", "FROM/TO");
            sb.AppendFormat("{0,-10}", "FLIGHT");
            sb.AppendFormat("{0,-10}", "A/C REG");
            sb.AppendFormat("{0,-10}", "VERSION");
            sb.AppendFormat("{0,-8}", "CREW");
            sb.AppendFormat("{0,-10}", "DATE");
            sb.AppendFormat("{0,-10}", "TIME");
            sb.Append(Environment.NewLine);
            sb.AppendFormat("{0,-10}", FromAirport + "/" + ToAirport);
            sb.AppendFormat("{0,-10}", Flight);
            sb.AppendFormat("{0,-10}", ACReg);
            sb.AppendFormat("{0,-10}", Version);
            sb.AppendFormat("{0,-8}", Crew1.ToString() + "/" + Crew2.ToString() + "/" + Crew3.ToString());
            sb.AppendFormat("{0,-10}", Day + Month + Year.Substring(2));
            sb.AppendFormat("{0,-10}", Hour + Minute);
            sb.Append(Environment.NewLine);

            return(sb.ToString());
        }
Ejemplo n.º 2
0
    Crew2 GetLowestPriorityMember()
    {
        int   maxi       = -1;
        Crew2 crewResult = null;

        foreach (Crew2 crew2 in crew2List)
        {
            if (crew2.priority > maxi && !crew2.isHealing)
            {
                maxi       = crew2.priority;
                crewResult = crew2;
            }
        }
        return(crewResult);
    }
Ejemplo n.º 3
0
    IEnumerator CrewPositionManagement()
    {
        while (true)
        {
            yield return(new WaitForSeconds(0.1f));

            if (mapScr == null)
            {
                continue;
            }
            // Si un personnage est dans une salle, update sa priority à celle actuelle de la salle
            foreach (Crew2 crew2 in crew2List)
            {
                ShipCell playerCell = crew2.crew.GetComponent <CharacterManager>().playerCell;
                if (playerCell != null)
                {
                    ShipRoom playerRoom = mapScr.GetRoomByPos(playerCell.position);
                    if (playerRoom != null)
                    {
                        Engine myEng = playerRoom.engine;
                        if (myEng != null)
                        {
                            foreach (Engine2 eng2 in eng2List)
                            {
                                if (eng2.engine == myEng)
                                {
                                    crew2.priority = eng2.priority;
                                }
                            }
                        }
                    }
                }
            }
            yield return(new WaitForSeconds(0.1f));

            foreach (Crew2 crew2 in crew2List)
            {
                CharacterManager charMng   = crew2.crew.GetComponent <CharacterManager>();
                float            HpPercent = (charMng.currentHp * 100) / (float)charMng.maxHp;
                if (HpPercent < 40)
                {
                    if (!crew2.isHealing)
                    {
                        crew2.isHealing = true;
                        Vector3 tempPos = mapScr.GetEnginePos(Engine.engineType.medic, false);
                        crew2.crew.GetComponent <PlayerMovement>().MoveToNode(tempPos);
                    }
                }
                else
                {
                    crew2.isHealing = false;
                }
            }
            // Si un salle est endommagée, change sa priority
            foreach (Engine2 eng2 in eng2List)
            {
                if (eng2.engine.currentHp < eng2.engine.maxHp)
                {
                    eng2.priority = 0;
                }
                else
                {
                    eng2.priority = eng2.basePriority;
                }
            }
            yield return(new WaitForSeconds(0.1f));

            // envoi tous les personnages dans les salles par priorité
            foreach (Engine2 eng2 in eng2List)
            {
                Crew2    crewToMove  = GetLowestPriorityMember();
                Vector3  engPosition = mapScr.GetEnginePos(eng2.engine.engine, false);
                ShipRoom room        = mapScr.GetRoomByPos(engPosition);
                bool     emptyRoom   = true;
                foreach (ShipCell cell in room.cells)
                {
                    if (cell.enemy != null)
                    {
                        emptyRoom = false;
                    }
                }
                if (crewToMove != null)
                {
                    if (eng2.priority < crewToMove.priority && emptyRoom)
                    {
                        crewToMove.crew.GetComponent <PlayerMovement>().MoveToNode(engPosition);
                        crewToMove.priority = eng2.priority;
                    }
                }
            }
        }
    }