public static Manoeuvre ArcPattern(int nbPoint, int nbTurn, float baseDelay, Vector3 initialPosition, Vector3 direction, int wide)
    {
        int   i = 0;
        float x, z, angle, realAngle,
              ratio                  = 360 / (float)wide,
              angleOrigine           = Mathf.Atan2(direction.x - initialPosition.x, direction.z - initialPosition.z) - (((float)wide / 2) * (Mathf.PI / 180));
        string spiralManoeuvreString = "";

        angle = (360 / ((float)nbPoint * ratio)) * (Mathf.PI / 180);

        for (; nbTurn > 0; --nbTurn)
        {
            for (i = 0; i <= nbPoint; ++i)
            {
                realAngle = angleOrigine + (float)i * angle;
                x         = initialPosition.x + 100 * Mathf.Sin(realAngle);
                z         = initialPosition.z + 100 * Mathf.Cos(realAngle);

                spiralManoeuvreString += "TrajectoryLine#(" + initialPosition.x + ",0," + initialPosition.z + ")(" + x + ",0," + z + ")|";
            }
            spiralManoeuvreString += spiralManoeuvreString.Remove(spiralManoeuvreString.Length - 1) + "=" + baseDelay + ";";
        }
        spiralManoeuvreString = spiralManoeuvreString.Remove(spiralManoeuvreString.Length - 1);

        return(Manoeuvre.Create(spiralManoeuvreString));
    }
    void Start()
    {
        int           i;
        List <string> patternsString;

        gameController = GetComponent <GameController>();

        patternsString = LoadResources.LoadTxtAsListString("PatternLore");
        manoeuvresLore = new List <Manoeuvre> ();

        for (i = 0; i < patternsString.Count; ++i)
        {
            manoeuvresLore.Add(Manoeuvre.Create(patternsString[i]));
        }

        patternsString   = LoadResources.LoadTxtAsListString("PatternFoe");
        manoeuvresEnemie = new List <Manoeuvre> ();

        for (i = 0; i < patternsString.Count; ++i)
        {
            manoeuvresEnemie.Add(Manoeuvre.Create(patternsString[i]));
        }

        patternsString         = LoadResources.LoadTxtAsListString("PatternSpecialForce");
        manoeuvresSpecialForce = new List <Manoeuvre> ();

        for (i = 0; i < patternsString.Count; ++i)
        {
            manoeuvresSpecialForce.Add(Manoeuvre.Create(patternsString[i]));
        }
    }
    public static Manoeuvre Create(string manoeuvreString)
    {
        Manoeuvre retValue = new Manoeuvre();
        string[] slots = manoeuvreString.Split(';');
        int i = slots.Length - 1;
        retValue.timeToSpend = 0f;

        retValue.manoeuvre = new Formation[slots.Length];

        for (; i >= 0; --i) {
            retValue.manoeuvre[i] = new Formation().Create(slots[i]);
            retValue.timeToSpend += retValue.manoeuvre[i].timer;
        }

        return retValue;
    }
示例#4
0
        IEnumerable <Player> Get(string where, object?arg, object?arg2 = null)
        {
            Player?   player    = null;
            Manoeuvre?manoeuvre = null;

            foreach (var(name, active, alive, human, money, password, debt, province, action, count, type, game_id, order) in db.Query <string, bool, bool, bool, int, string, int?, int?, string?, int?, int?, int, int>(@"
				SELECT Player.Name, Player.Active, Player.Alive, Player.Human, Player.Money, Player.Password,
					Action.Debt, Action.Province, Action.Type, ActionRegiment.Count, ActionRegiment.Type,
					Player.GameId, Player.""Order"" FROM Player
				LEFT JOIN Action ON Action.GameId=Player.GameId AND Action.Player=Player.""Order""
				LEFT JOIN ActionRegiment ON ActionRegiment.ActionId=Action.Id WHERE "                 + where + @"
				ORDER BY Player.""Order"" "                , arg, arg2))
            {
                if (player is not null && player.Order != order)
                {
                    yield return(manoeuvre is null ? player : player.Add(manoeuvre));

                    player    = null;
                    manoeuvre = null;
                }
                if (player is null)
                {
                    player = new Player(new PlayerIdentity(name !, order, game_id, human), money, alive, ImmutableList <IAction> .Empty, settings, Password.FromHash(password !), active);
                }

                player = action == "Loan" && debt is int Debt?player.Add(new Loan(Debt)) : player;

                if (action == "Manoeuvre" && province is int Province && type is int Type && count is int Count)
                {
                    if (manoeuvre is not null && manoeuvre.Province != province)
                    {
                        player    = player.Add(manoeuvre);
                        manoeuvre = null;
                    }
                    if (manoeuvre is null)
                    {
                        manoeuvre = new Manoeuvre(Province, new Soldiers());
                    }
                    manoeuvre = new Manoeuvre(Province, manoeuvre.Soldiers.Add(new Soldiers(settings.SoldierTypes[Type], Count)));
                }
            }
            if (player is not null)
            {
                yield return(player);
            }
        }
示例#5
0
    public static Manoeuvre Create(string manoeuvreString)
    {
        Manoeuvre retValue = new Manoeuvre();

        string[] slots = manoeuvreString.Split(';');
        int      i     = slots.Length - 1;

        retValue.timeToSpend = 0f;

        retValue.manoeuvre = new Formation[slots.Length];

        for (; i >= 0; --i)
        {
            retValue.manoeuvre[i] = new Formation().Create(slots[i]);
            retValue.timeToSpend += retValue.manoeuvre[i].timer;
        }

        return(retValue);
    }
    public static Manoeuvre SpiralPattern(int nbPoint, int nbTurn, float baseDelay, Vector3 initialPosition)
    {
        int    i = 0;
        float  x, z, angle, realAngle;
        string spiralManoeuvreString = "";

        angle = (360 / (float)nbPoint) * (Mathf.PI / 180);

        for (; nbTurn > 0; --nbTurn)
        {
            for (i = 0; i < nbPoint; ++i)
            {
                realAngle = (float)i * angle;
                x         = initialPosition.x + 100 * Mathf.Sin(realAngle);
                z         = initialPosition.z + 100 * Mathf.Cos(realAngle);

                spiralManoeuvreString += "TrajectoryLine#(" + initialPosition.x + ",0," + initialPosition.z + ")(" + x + ",0," + z + ")=" + baseDelay + ";";
            }
        }
        spiralManoeuvreString = spiralManoeuvreString.Remove(spiralManoeuvreString.Length - 1);

        return(Manoeuvre.Create(spiralManoeuvreString));
    }