Example #1
0
 public void ShouldConvertToVector3()
 {
     Coord coord = new Coord(2, 2);
     Vector2 vector = coord.ToVector2();
     Assert.AreEqual(2f, vector.x, 0.001f);
     Assert.AreEqual(2f, vector.y, 0.001f);
 }
Example #2
0
    public void ShouldConvertToVector3()
    {
        Coord   coord  = new Coord(2, 2);
        Vector2 vector = coord.ToVector2();

        Assert.AreEqual(2f, vector.x, 0.001f);
        Assert.AreEqual(2f, vector.y, 0.001f);
    }
Example #3
0
    public override void Move()
    {
        Coord source;
        float intensity;

        // si l'avatar est visible
        if (GameManager.Instance.avatar.VisibilityFrom(PositionActuelle, out source, out intensity))
        {
            // on oublie la dernière source vue
            bestIntensity = intensity;
            bestSource    = source;
        }         // sinon, on regarde s'il y a de la lumière
        else
        {
            foreach (Firefly luciole in GameManager.Instance.fireflies)
            {
                // si l'intensité est supérieure, on change d'objectif
                if (luciole.VisibilityFrom(PositionActuelle, out source, out intensity) && intensity > bestIntensity)
                {
                    bestSource    = source;
                    bestIntensity = intensity;
                }
            }
        }
        if (bestIntensity > 0 && bestSource != PositionActuelle)
        {
            // direction dans laquelle le monstre se déplace
            Vector2 vecteurPosition = PositionActuelle.ToVector2();
            Vector2 direction       = bestSource.ToVector2() - vecteurPosition;
            direction.Normalize();
            Coord newPosition = new Coord(vecteurPosition + 2 * Constantes.INNER_RADIUS * direction);

            Tile tile = GameManager.Instance.tiles [newPosition.x, newPosition.y];

            if (tile.CurrentState == Tile.State.None && tile.nextState == Tile.State.None)
            {
                GameManager.Instance.tiles [PositionActuelle.x, PositionActuelle.y].nextState = Tile.State.None;
                PositionActuelle = newPosition;
                tile.nextState   = Tile.State.Monster;
            }
        }
        // déclin de l'intensité dans la mémoire du monstre
        intensity -= Constantes.INTENSITY_DECAY / 2;
        if (bestIntensity < 0)
        {
            bestIntensity = 0f;
        }
    }
Example #4
0
 public void UpdateView(Color color, Coord position, Coord size, int level)
 {
     dirty = true;
     if (color != null)
     {
         rp.color = color;
     }
     if (position != null)
     {
         rp.position = position.ToVector2();
     }
     if (size != null)
     {
         rp.scale = size.ToVector2();
     }
     rp.level = level;
 }
Example #5
0
    public void InstallAt(EntityBuilding entity, Coord coord)
    {
        if (!CanInstallAt(entity, coord))
        {
            return;
        }

        Spawn(entity, coord.ToVector2());

        foreach (IEmitterListener listener in listeners)
        {
            if (listener is IWorldListener)
            {
                ((IWorldListener)listener).InstallAt(this, entity, coord);
            }
        }

        GetTileAt(coord).Install(entity);

        Emit("OnInstallAt");
    }
Example #6
0
 // move block to the destinated coord with an animation
 public void Move(Coord location)
 {
     Location = location + LocationInTheGroup;
     MoveTo(location.ToVector2());
 }
Example #7
0
 public int DistanceTo(Coord other)
 {
     return(Mathf.RoundToInt((this.ToVector2() - other.ToVector2()).magnitude / Constantes.INNER_RADIUS / 2));
 }
Example #8
0
 // move block to the destinated coord with an animation
 public void Move(Coord location)
 {
     Location = location + LocationInTheGroup;
     MoveTo(location.ToVector2());
 }