Beispiel #1
0
 //This is executed always when the object is selected
 void OnEnable()
 {
     waypointPos     = serializedObject.FindProperty("pos");
     waypointRot     = serializedObject.FindProperty("rot");
     length          = serializedObject.FindProperty("length");
     lpStyle         = serializedObject.FindProperty("loopingStyle");
     ipStyle         = serializedObject.FindProperty("curveStyle");
     rlStyle         = serializedObject.FindProperty("rotationMethod");
     wsStyle         = serializedObject.FindProperty("anchorPointSpace");
     ntStyle         = serializedObject.FindProperty("positionNoiseType");
     rntStyle        = serializedObject.FindProperty("rotationNoiseType");
     noiseAmplitude  = serializedObject.FindProperty("positionNoiseAmplitude");
     noiseFrequency  = serializedObject.FindProperty("positionNoiseFrequency");
     noiseAmplitudeR = serializedObject.FindProperty("rotationNoiseAmplitude");
     noiseFrequencyR = serializedObject.FindProperty("rotationNoiseFrequency");
     sineOffset      = serializedObject.FindProperty("positionSineOffset");
     sineOffsetR     = serializedObject.FindProperty("rotationSineOffset");
     moving          = serializedObject.FindProperty("moving");
     runOnStart      = serializedObject.FindProperty("runOnStart");
     delayMin        = serializedObject.FindProperty("delayMin");
     delayMax        = serializedObject.FindProperty("delayMax");
     stopAfter       = serializedObject.FindProperty("stopAfter");
     precomputePath  = serializedObject.FindProperty("precomputePath");
     drawGizmos      = serializedObject.FindProperty("drawGizmos");
     curveExpanded   = serializedObject.FindProperty("curveExpanded");
     noiseExpanded   = serializedObject.FindProperty("noiseExpanded");
     expandedNoise   = noiseExpanded.boolValue;
     expandedCurve   = curveExpanded.boolValue;
     mover           = (AutoMover)target;
 }
Beispiel #2
0
    private void SpawnEnemy(Vector2 cell)
    {
        List <Vector2> enemyRoute = new List <Vector2>();

        enemyRoute.Add(RandomTileFromCell(cell));

        foreach (Vector2 neighbor in neighborList[cell])
        {
            enemyRoute.Add(RandomTileFromCell(neighbor));
        }


        GameObject newEnemy = Instantiate(Globals.ENEMY, enemyRoute[0], Quaternion.identity);

        // newEnemy.name = newEnemy.name + i;
        newEnemy.transform.SetParent(ObjectContainer.instance.enemies.transform);
        AutoMover autoMover = newEnemy.GetComponent <AutoMover>();
        Inventory inventory = newEnemy.GetComponent <Inventory>();

        autoMover.spawnsWounded = true;
        autoMover.route         = enemyRoute;
        autoMover.randomPatrol  = PRNG.Range(0, 2) == 0;
        autoMover.pointMemory   = PRNG.Range(0, 3);

        Inventory.ItemType[]     types    = (Inventory.ItemType[])System.Enum.GetValues(typeof(Inventory.ItemType));
        Inventory.ItemType       dropType = types[PRNG.Range(0, types.Length)];
        Inventory.InventoryEntry item     = new Inventory.InventoryEntry(dropType, 1);
        inventory.Add(item);

        // Position, route, weaponequipped, leashlength, randompatrol, pointmemory, inventory
    }
Beispiel #3
0
    // Update is called once per frame
    void Update()
    {
        if (!active && Vector2.Distance(transform.position, PlayerMover.instance.transform.position) < 0.5f)
        {
            active = true;
            if (levelFinish)
            {
                if (AutoMover.InAlertStatus())
                {
                    Toast.ToastWrapper("Evade or eliminate enemies to proceed");
                }
                else
                {
                    PlayerMover.instance.GetComponent <Navigator>().Pause();
                    PlayerMover.instance.GetComponent <BoxCollider2D>().enabled = false;

                    TransitionFader.instance.FinishLevel();
                }
            }
            else
            {
                Sidebar.instance.ToggleInGameDialogue(true);
                DialogueParser.instance.ParseScene(messageId);
            }
        }
        // Reset for repeatable scenes
        else if (active && Vector2.Distance(transform.position, PlayerMover.instance.transform.position) > 0.5f)
        {
            active = false;
        }
    }
Beispiel #4
0
    public void SpawnEnemy(Vector2 firstDestination)
    {
        // List<Vector2> enemyRoute = GenerateRoute();
        List <Vector2> enemyRoute = new List <Vector2>();

        //enemyRoute.Add(GetSpawnPoint());
        enemyRoute.Add(firstDestination);
        enemyRoute.Add(ClosestPoint(firstDestination));
        GameObject newEnemy = Instantiate(Globals.ENEMY, GetSpawnPoint(), Quaternion.identity);

        newEnemy.transform.SetParent(ObjectContainer.instance.enemies.transform);
        AutoMover autoMover = newEnemy.GetComponent <AutoMover>();
        Inventory inventory = newEnemy.GetComponent <Inventory>();

        autoMover.route        = enemyRoute;
        autoMover.randomPatrol = true;
        autoMover.pointMemory  = PRNG.Range(0, 3);

        Inventory.ItemType[]     types    = (Inventory.ItemType[])System.Enum.GetValues(typeof(Inventory.ItemType));
        Inventory.ItemType       dropType = types[PRNG.Range(0, types.Length)];
        Inventory.InventoryEntry item     = new Inventory.InventoryEntry(dropType, 1);
        inventory.Add(item);

        StartCoroutine(DelayedCall(autoMover, firstDestination));
        //autoMover.SoundToPosition(firstDestination, true, Noise.Source.Gun, Vector2.zero);
    }
Beispiel #5
0
    // Update is called once per frame
    void Update()
    {
        chaseVolume = Mathf.Clamp(chaseVolume + 0.5f * (Time.deltaTime * (AutoMover.InAlertStatus() ? 1 : -1)), 0, 1);

        idle.volume  = 1 - chaseVolume;
        chase.volume = chaseVolume;
    }
Beispiel #6
0
 void Awake()
 {
     mover    = GetComponent <AutoMover> ();
     animator = playerRig.GetComponent <Animator> ();
     animator.SetTrigger(nameTrigger1);
     //animator.SetTrigger ("PeasantGoDamage2");
 }
Beispiel #7
0
    private LayerMask mask; //~(1 << 9) & ~(1 << 10) & ~(1 << 11);

    // Start is called before the first frame update
    void Start()
    {
        //subjects = new List<GameObject>();
        //subjects.Add(PlayerMover.instance.gameObject);

        mask   = LayerMask.GetMask(new string[] { "Default", "Player" });
        player = PlayerMover.instance.GetComponent <GridMover>();
        mover  = GetComponent <AutoMover>();
    }
Beispiel #8
0
 // Use this for initialization
 void Start()
 {
     am          = GetComponent <AutoMover>(); //getting the automover component
     phase       = 0;                          //starting at the 1st of the 10 examples
     stopHeights = new float[10] {
         -8.85f, 1.05f, 13.4f, 25f, 35.7f, 45.3f, 56.45f, 70.4f, 87f, 104f
     };                //heights where to stop the mover for a while
     resumeTime = 0;   //variable to store the time when the mover can be resumed
     am.StartMoving(); //starting the movement
 }
Beispiel #9
0
    void UpdateAnimation()
    {
        AutoMover target = (AutoMover)GameState.Instance.GetGameScript <AutoMover>(targetID);

        if (!target)
        {
            Debug.LogError(string.Format("TriggerButton: No target AutoMover object with ID {0} found!", targetID));
            return;
        }

        // Pause/unpause the target AutoMover animation by setting the speed.
        target.anim["AutoMover"].speed = isOn ? 1 : 0;
    }
    // Use this for initialization
    void Start()
    {
        //Find the child object
        GameObject child = null;

        Transform[] children = GetComponentsInChildren <Transform>();
        for (int i = 0; i < children.Length; ++i)
        {
            if (children[i].name == "ScriptChild")
            {
                child = children[i].gameObject;
                break;
            }
        }

        //Create components and disable moving immediately
        mover                 = gameObject.AddComponent <AutoMover>();
        mover.RunOnStart      = false;
        childMover            = child.AddComponent <AutoMover>();
        childMover.RunOnStart = false;

        //Add anchor points to the current positions
        mover.AddAnchorPoint();
        childMover.AddAnchorPoint();

        //Add some others a bit next to them
        mover.AddAnchorPoint(transform.position + new Vector3(0, 1, 0), new Vector3(0, 0, 90));
        childMover.AddAnchorPoint(childMover.transform.position + new Vector3(0, -1, 0), new Vector3(0, 0, -90));
        mover.InsertAnchorPoint(1, transform.position + new Vector3(1, 0, 0), new Vector3(0, 0, 180));
        childMover.DuplicateAnchorPoint(1);
        childMover.SetAnchorPoint(1, childMover.transform.position + new Vector3(-1, 0, 0), new Vector3(0, 0, -180));

        //Have the anchor points be defined in local space
        mover.AnchorPointSpace      = AutoMoverAnchorPointSpace.local;
        childMover.AnchorPointSpace = AutoMoverAnchorPointSpace.local;

        //Change some of the properties
        mover.Length                 = 2.5f;
        mover.LoopingStyle           = AutoMoverLoopingStyle.bounce;
        childMover.LoopingStyle      = AutoMoverLoopingStyle.loop;
        mover.CurveStyle             = AutoMoverCurve.Linear;
        childMover.CurveStyle        = AutoMoverCurve.Linear;
        mover.PositionNoiseAmplitude = new Vector3(0.2f, 0.2f, 0.2f);
        mover.PositionNoiseType      = AutoMoverNoiseType.sine;

        //Start moving the objects
        mover.StartMoving();
        childMover.StartMoving();
    }
Beispiel #11
0
    public void Death()
    {
        AutoMover autoMover = GetComponent <AutoMover>();
        HideMover hideMover = GetComponent <HideMover>();
        Vector2   playerPos = Grapher.RoundedVector(PlayerMover.instance.transform.position);
        Vector2   position  = Grapher.RoundedVector(transform.position);

        if (GetComponent <PlayerMover>())
        {
            gameObject.SetActive(false);
            Sidebar.instance.GameOver();
            // Debug.Log("Dead!");
            // TODO: Game Over menu
            //TransitionFader.instance.Transition(0);
        }
        else if (autoMover && autoMover.spawnsWounded)
        {
            GameObject woundedEnemy = Instantiate(Globals.WEAK_ENEMY, position, Quaternion.identity, ObjectContainer.instance.wounded.transform);

            woundedEnemy.GetComponent <HideMover>().lastSawPlayer = playerPos;
            Inventory oldInventory = GetComponent <Inventory>();
            Inventory newInventory = woundedEnemy.GetComponent <Inventory>();
            if (oldInventory && newInventory)
            {
                newInventory.Add(oldInventory.inventory, oldInventory.wallet);
            }

            // Wounded enemies make noise
            GameObject tempNoise = Instantiate(Globals.NOISE, position, Quaternion.identity);
            tempNoise.GetComponent <Noise>().Initialize(true, Globals.KNIFE_VOLUME, Noise.Source.Knife);

            Destroy(gameObject);
        }
        else if (hideMover || (autoMover && !autoMover.spawnsWounded))
        {
            GameObject corpse = Instantiate(Globals.CORPSE, position, Quaternion.identity);
            corpse.transform.parent = ObjectContainer.instance.corpses.transform;

            Inventory unitInventory   = GetComponent <Inventory>();
            Inventory corpseInventory = corpse.GetComponent <Inventory>();
            if (unitInventory && corpseInventory)
            {
                corpseInventory.Add(unitInventory.inventory, unitInventory.wallet);
            }

            Destroy(gameObject);
        }
    }
Beispiel #12
0
    //public GUIStyle style;

    void OnSceneGUI()
    {
        AutoMover autoMover = (AutoMover)target;

        GUI.color           = new Color(1, 0, 0, 1);
        GUI.backgroundColor = Color.black;

        //GUI.BeginGroup(Rect.zero);
        for (int i = 0; i < autoMover.route.Count; ++i)
        {
            Handles.DrawSolidDisc(autoMover.route[i], Vector3.forward, 0.4f);
            Handles.DrawLine(autoMover.route[(i + 1) % autoMover.route.Count], autoMover.route[i]);
            Handles.Label(autoMover.route[i], i.ToString());
        }
        //GUI.EndGroup();
    }
Beispiel #13
0
    private void NotifyEnemies()
    {
        enemies = ObjectContainer.instance.enemies;

        for (int i = 0; i < enemies.transform.childCount; ++i)
        {
            Transform enemy = enemies.transform.GetChild(i);
            if (Vector2.Distance(enemy.transform.position, transform.position) <= hearDistance)
            {
                AutoMover autoMover = enemy.GetComponent <AutoMover>();
                if (autoMover)
                {
                    autoMover.SoundToPosition(Grapher.RoundedVector(transform.position), madeByPlayer, source, secondaryPoint);
                }
            }
        }
    }
Beispiel #14
0
    // Pauses the player and all enemies (does not modify timeScale)
    public void ActionPause(bool paused)
    {
        actionPaused = paused;

        // Necessary for message dialogue
        pauseDimmer.targetAlpha = paused ? 0.5f : 0;

        RefreshAllActionButtons();

        PlayerMover.instance.enabled = !paused;

        List <GameObject> enemyList = ObjectContainer.GetEnemiesAndWounded();

        foreach (GameObject unit in enemyList)
        {
            AutoMover autoMover = unit.GetComponent <AutoMover>();
            if (autoMover != null)
            {
                autoMover.enabled = !paused;
            }

            HideMover hideMover = unit.GetComponent <HideMover>();
            if (hideMover != null)
            {
                hideMover.enabled = !paused;
            }

            Airship airship = unit.GetComponent <Airship>();
            if (airship != null)
            {
                airship.enabled = !paused;
            }
        }

        List <GameObject> projectiles = ObjectContainer.GetAllProjectiles();

        foreach (GameObject projectile in projectiles)
        {
            Projectile proj = projectile.GetComponent <Projectile>();
            if (proj != null)
            {
                proj.enabled = !paused;
            }
        }
    }
Beispiel #15
0
    public static bool InAlertStatus()
    {
        if (ObjectContainer.instance)
        {
            List <GameObject> enemies = ObjectContainer.GetAllEnemies();

            foreach (GameObject enemy in enemies)
            {
                AutoMover mover = enemy.GetComponent <AutoMover>();
                if (mover && mover.awareness == State.Alert)
                {
                    return(true);
                }
            }
        }

        return(false);
    }
Beispiel #16
0
    // Start is called before the first frame update
    void Start()
    {
        // Make size variable? hearDistance * amt, localScale * amt?
        enemies = ReferenceHolder.instance.enemies;
        color   = GetComponent <SpriteRenderer>().color;

        for (int i = 0; i < enemies.transform.childCount; ++i)
        {
            if (Vector2.Distance(enemies.transform.GetChild(i).transform.position, transform.position) <= hearDistance)
            {
                AutoMover mover = enemies.transform.GetChild(i).GetComponent <AutoMover>();
                if (mover != null)
                {
                    mover.SetDestination(transform.position, true);
                    mover.SetChasing(true);
                }
            }
        }
        //collider.enabled = false;
    }
Beispiel #17
0
 // Start is called before the first frame update
 void Start()
 {
     autoMover        = GetComponent <AutoMover>();
     baseViewDistance = autoMover.sightDistance;
 }
Beispiel #18
0
    public IEnumerator DelayedCall(AutoMover autoMover, Vector2 firstDestination)
    {
        yield return(new WaitForSeconds(1));

        autoMover.SoundToPosition(firstDestination, true, Noise.Source.Gun, Vector2.zero);
    }
Beispiel #19
0
 // Start is called before the first frame update
 void Start()
 {
     player  = ReferenceHolder.instance.player.GetComponent <GridMover>();
     mover   = GetComponent <AutoMover>();
     rotator = GetComponent <Rotator>();
 }
Beispiel #20
0
    // Single gunshot, usable by both player and enemy
    public static void Gun(GameObject unit, Vector2 target)
    {
        bool attackerIsPlayer = unit.GetComponent <PlayerMover>();

        // Prevent attacker from hitting themselves
        BoxCollider2D unitCollider = unit.GetComponent <BoxCollider2D>();

        unitCollider.enabled = false;
        int instanceId = unitCollider.GetInstanceID();

        Vector2 shotOrigin = unit.transform.position;
        //(Vector2)unit.transform.position + unit.GetComponent<GridMover>().GetRotator().FrontOffset();

        // 3 Focus -> 10 deg Error, 2 Focus -> 20 deg Error
        // 1 Focus -> 30 deg Error, 0 Focus -> Can't attack
        float marginOfError = attackerIsPlayer ? 13 : 15; //+ (10 * (3 - unit.GetComponent<FieldUnit>().party[0].focus)); // min 10 err, max 30 / formerly memberIndex

        // Calculate if there's a clear line of sight
        Vector2 direction = target - (Vector2)unit.transform.position;
        // RaycastHit2D hit = Physics2D.Raycast(shotOrigin, direction/*, 9, mask*/);

        float angle = Vector2.Angle(unit.GetComponent <Rotator>().FrontOffset(), direction);

        // arg1 of Angle used to be unit.GetComponent<GridMover>().GetRotator().FrontOffset()

        // Generate an actual shot
        angle    += Random.Range(0, marginOfError) * (Random.Range(0, 2) == 0 ? 1 : -1); // add margin of error
        direction = Quaternion.AngleAxis(angle, Vector3.forward) * direction;            // This flattens the shot somehow
        RaycastHit2D hit = Physics2D.Raycast(shotOrigin, direction, 255, ~LayerMask.GetMask(LayerMask.LayerToName(unit.layer)));

        SoundManager.instance.Play(SoundManager.Sound.Gun, instanceId);
        // Debug.Log("layer: " + LayerMask.LayerToName(unit.layer));

        if (hit.collider != null)
        {
            // Make sure to check WHAT is being hit... Player? Wall? Friendly fire?

            // source.PlayOneShot(gunshot); // play sound
            // Camera.main.GetComponent<Jerk>().Shake(1); // Replace this with something better

            UnitStatus targetHit = hit.collider.GetComponent <UnitStatus>();
            if (targetHit)
            {
                targetHit.DamageHealth(); // formerly memberIndex
                AutoMover autoMover = hit.collider.GetComponent <AutoMover>();
                if (autoMover)
                {
                    autoMover.VisualToPosition(Grapher.RoundedVector(unit.transform.position));
                }
            }

            GameObject tempNoise = Instantiate(Globals.NOISE, unit.transform.position, Quaternion.identity);
            tempNoise.GetComponent <Noise>().Initialize(attackerIsPlayer, Globals.GUN_VOLUME, Noise.Source.Gun);

            // Create and format line
            GameObject shotLine = ShapeManager.DrawLine(shotOrigin, hit.point, Globals.BRIGHT_WHITE, unit.transform);
            shotLine.transform.parent = unit.transform;
            LineRenderer shotRenderer = shotLine.GetComponent <LineRenderer>();
            shotRenderer.startWidth = shotRenderer.endWidth = 0.07f;

            shotLine.AddComponent <AutoVanish>().timeToLive = 0.1f;
        }

        unit.GetComponent <BoxCollider2D>().enabled = true;
    }
Beispiel #21
0
 void Awake()
 {
     mover = GetComponent <AutoMover> ();
 }