/// <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()); }
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); }
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; } } } } }