コード例 #1
0
    public bool BuyItem(Script_Item item)
    {
        var entry     = ShopEntries.Find(x => x.Item == item);
        var inventory = Script_GameManager.GetInstance().Inventory;

        if (entry.Item != null && inventory.Currency >= entry.Price)
        {
            //Remove item from shop
            --entry.Item.Amount;
            if (entry.Item.Amount <= 0)
            {
                ShopEntries.Remove(entry);
            }
            //Adjust currency
            inventory.Currency -= entry.Price;
            //Move item to inventory
            inventory.AddItem(entry.Item);
            //Refresh shop panel
            Script_GameManager.GetInstance().UIManager.ShopPanel.Refresh();
            //Refresh inventory if open
            if (Script_GameManager.GetInstance().UIManager.InventoryPanel.IsActive())
            {
                Script_GameManager.GetInstance().UIManager.InventoryPanel.Refresh();
            }

            return(true);
        }
        return(false);
    }
コード例 #2
0
    public Script_Enemy(Script_GameManager p_manager, Script_Grid p_grid, Vector3Int p_gridLocation)
    {
        _attackRange       = 1;
        _engageTargetRange = 3;

        _threatMultiplier = 1;
        _stats            = new EntityStats(10, 0, 100, 1.5f);

        _targetToAttack = null;

        _threatDictionary = new Dictionary <Script_IFriendly, int> ();

        _health = _stats._maxHealth;


        _manager = p_manager;
        _grid    = p_grid;

        _gridLocation = p_gridLocation;
        _position     = p_gridLocation;

        _gameObject                    = GameObject.CreatePrimitive(PrimitiveType.Cube);
        _gameObject.name               = "EnemyObject";
        _objectMaterial                = _gameObject.GetComponent <Renderer>().material;
        _objectMaterial.color          = Color.red;
        _gameObject.transform.position = p_gridLocation;



        InitializeThreatList();


        InitializeBehaviourTree();
    }
コード例 #3
0
    private GameObject GetFreeTextObject()
    {
        foreach (var o in _textPool)
        {
            //Return first inactive object in pool
            if (!o.activeSelf)
            {
                o.SetActive(true);
                var routine = DeactivateAfterTime(.5f, o);
                Script_GameManager.GetInstance().StartCoroutine(routine);
                return(o);
            }
        }

        //If no objects available, create new one and add to pool
        var obj = GameObject.Instantiate(_textPrefab);

        _textPool.Add(obj);
        obj.transform.SetParent(_poolHolder.transform);

        //Deactivate text after a time
        var coroutine = DeactivateAfterTime(.5f, obj);

        Script_GameManager.GetInstance().StartCoroutine(coroutine);
        return(obj);
    }
コード例 #4
0
    public Script_Wolf(Vector3 p_position, Script_GameManager p_gameManager, Script_Grid p_grid, Quaternion p_rotation)
    {
        _wolfObject      = GameObject.CreatePrimitive(PrimitiveType.Cube);
        _wolfObject.name = "WolfObject";
        _wolfObject.transform.position = p_position;
        _wolfObject.transform.rotation = p_rotation;
        _material       = _wolfObject.GetComponent <Renderer>().material;
        _material.color = Color.black;



        _speed                   = 0.033f;
        _size                    = 0.5f;
        _movementDecay           = 0.01f;
        _actionDecay             = 0.1f;
        _sensingRange            = 2;
        _sheepBeingEaten         = null;
        _maxHealth               = 10.0f;
        _health                  = 5.0f;
        _healthNeededToReproduce = _maxHealth * 0.75f;


        _decidedAction    = DecidedAction.Wandering;
        _actDelegate      = null;
        _tilesWithinRange = new List <Script_Tile> ();
        _sheepWithinRange = new List <Script_Sheep> ();
        _surroundingTiles = new List <Script_Tile> ();
        _grid             = p_grid;

        _occupiedLocation = GetCurrentGridPosition();
        _targetLocation   = GetCurrentGridPosition();
        OccupyNewLocation(GetCurrentGridPosition());
    }
コード例 #5
0
    //Object that finishes game when object is in trigger

    public void OnTriggerEnter(Collider other)
    {
        if (other.tag == "Player")
        {
            Script_GameManager.GetInstance().CompleteGame(true);
        }
    }
コード例 #6
0
    public void UnEquip(Script_Item item)
    {
        if (item != null && item.Equiped)
        {
            item.Equiped = false;

            if (item == Weapon)
            {
                Weapon = null;
            }
            if (item == Helm)
            {
                Helm = null;
            }
            if (item == Chest)
            {
                Chest = null;
            }
            if (item == Legs)
            {
                Legs = null;
            }

            //Switch inventory image from equiped to unequiped
            Script_GameManager.GetInstance().UIManager.InventoryPanel.SwitchItemInventoryList(item.UIItem);
        }
    }
コード例 #7
0
    public override void Refresh()
    {
        foreach (Transform child in _equipedGrid)
        {
            Destroy(child.gameObject);
        }
        foreach (Transform child in _inventoryGrid)
        {
            Destroy(child.gameObject);
        }

        foreach (var item in Script_GameManager.GetInstance().Inventory.GetEquipedItems())
        {
            var obj = Instantiate(_inventoryImagePrefab);
            obj.SetItem(item);
            obj.VisualType = Script_VisualItemUI.VisualItemType.Inventory;
            obj.transform.SetParent(_equipedGrid);
        }

        foreach (var item in Script_GameManager.GetInstance().Inventory.GetUnEquipedItems())
        {
            var obj = Instantiate(_inventoryImagePrefab);
            obj.SetItem(item);
            obj.VisualType = Script_VisualItemUI.VisualItemType.Inventory;
            obj.transform.SetParent(_inventoryGrid);
        }

        _currencyText.text = Script_GameManager.GetInstance().Inventory.Currency + " G";
    }
コード例 #8
0
    void Awake()
    {
        //This needs to go first, or we get problems
        myAnim = GetComponent <Animator>();

        //If you don't have a controller plugged in, the game is UNPLAYABLE
        player = InputManager.Devices[playerNumber];

        mybody    = GetComponent <Rigidbody2D>();
        particles = GetComponentsInChildren <ParticleSystem>();

        //gets the game managers script
        myGM = GameObject.Find("GameManager").GetComponent <Script_GameManager>();

        //Gets dash move from the game object
        myDashMove = gameObject.GetComponent <Script_DashMove>();

        //Gets dash particles from the game object
        myDashParticles = gameObject.transform.Find("Dash Particles").GetComponent <ParticleSystem>();

        //Gets dash particles from the game object
        myTaggedParticles = gameObject.transform.Find("Tagged Particles").GetComponent <ParticleSystem>();

        //finds child dash particles with name "Dash Particles"

        audioManager = GameObject.FindObjectOfType <AudioManager>();
    }
コード例 #9
0
 private void ShopClick()
 {
     //Buy item if possible
     if (Script_GameManager.GetInstance().UIManager.ShopPanel.AttachedKeeper.BuyItem(_attachedItem))
     {
         ItemNameDisplay.SetActive(false);
     }
 }
コード例 #10
0
    public void Init(GameObject creator, Vector2 initialPosition, Vector2 Right)
    {
        Creator            = creator;
        transform.position = initialPosition;
        angle = Right;

        GameManage = GameObject.Find("GameManager").GetComponent <Script_GameManager>();
    }
コード例 #11
0
 public Script_Action_Heal(Script_BehaviourTree p_tree, Script_GameManager p_manager, blackboard_flags p_targetEnemyFlag, blackboard_flags p_locationAnchorPointFlag, Script_IEntity p_entityToAttack, blackboard_flags p_isForwardSwingFlag)
 {
     _manager            = p_manager;
     _tree               = p_tree;
     _targetEnemyFlag    = p_targetEnemyFlag;
     _entityToAttack     = p_entityToAttack;
     _isForwardSwingFlag = p_isForwardSwingFlag;
     _swingDistance      = _manager.GetTileSize() * 0.4f;
 }
コード例 #12
0
 private void Update()
 {
     //If player is close and presses e, open shop panel
     if (_playerInRange && Input.GetKeyDown(KeyCode.E))
     {
         Script_GameManager.GetInstance().UIManager.ShopPanel.SetShopKeeper(this);
         Script_GameManager.GetInstance().UIManager.ShopPanel.SwitchState();
     }
 }
コード例 #13
0
    public void ShowGameComplete(bool win)
    {
        var endScreen = GameObject.Instantiate(Resources.Load <GameObject>("Prefabs/UI/GameCompleteScreen"));

        endScreen.transform.GetChild(0).GetComponent <Text>().text = win ? "Game Completed" : "Game Over";
        endScreen.transform.GetChild(1).GetComponent <Button>().onClick.AddListener(Script_GameManager.GetInstance().ResetScene);
        endScreen.transform.SetParent(Canvas.transform);
        endScreen.transform.SetAsLastSibling();
        endScreen.transform.localPosition = Vector3.zero;
    }
コード例 #14
0
    public void Start()
    {
        if (ItemNameDisplay == null)
        {
            ItemNameDisplay = Instantiate(Resources.Load <GameObject>("Prefabs/UI/ItemNameDisplay"));
        }

        ItemNameDisplay.transform.SetParent(Script_GameManager.GetInstance().UIManager.Canvas.transform);
        _itemDisplayText = ItemNameDisplay.transform.GetChild(1).GetComponent <Text>();
        ItemNameDisplay.SetActive(false);
    }
コード例 #15
0
 private void Awake()
 {
     if (Instance == null)
     {
         Instance = this;
     }
     else
     {
         Destroy(this);
     }
 }
コード例 #16
0
 private void Awake()
 {
     if (Instance == null)
     {
         Instance = this;
     }
     else if (Instance != this)
     {
         Destroy(gameObject);
     }
 }
コード例 #17
0
 public void Show()
 {
     if (!_active)
     {
         ++Script_GameManager.GetInstance().UIManager.ActivePanels;
         Time.timeScale = 0f;
     }
     gameObject.SetActive(true);
     transform.SetAsLastSibling();
     Refresh();
     _active = true;
 }
コード例 #18
0
    public Script_TradingPost(Script_GameManager p_gameManager, Script_Grid p_grid, Vector3Int p_gridPosition)
    {
        _meshObjectName  = "ObjectTradingPost";
        _meshObjectColor = new Color(1.0f, 0.2f, 0.0f);
        _meshObjectScale = new Vector3(0.8f, 0.8f, 0.8f);

        _startLocation = p_gridPosition;
        _gridPosition  = p_gridPosition;
        _gameManager   = p_gameManager;

        CreateGameObject();
    }
コード例 #19
0
    public Script_TileGrass(Script_GameManager p_gameManager, Script_Grid p_grid, Vector3Int p_position)
    {
        _meshObjectName  = "ObjectSpaceGrass";
        _meshObjectColor = new Color(0.0f, 1.0f, 0.0f);
        _meshObjectScale = new Vector3(0.1f, 0.1f, 0.1f);

        _isWalkable  = true;
        _position    = p_position;
        _gameManager = p_gameManager;

        CreateGameObject();
    }
コード例 #20
0
    public int GetAttackDamage()
    {
        if (_attachedCharacter.CharType == Script_Character.CharacterType.Dog)
        {
            return(_attachedCharacter.Attack);
        }

        int equipedBoost = 0;

        Script_GameManager.GetInstance().Inventory.GetEquipedItems().ForEach(x => equipedBoost += x.AttackBoost);
        return((int)(equipedBoost * GetCurrentChargePercentage()) + _attachedCharacter.Attack);
    }
コード例 #21
0
 public virtual void Hide()
 {
     if (_active)
     {
         --Script_GameManager.GetInstance().UIManager.ActivePanels;
         if (Script_GameManager.GetInstance().UIManager.ActivePanels == 0 && !Script_GameManager.GetInstance().GameOver)
         {
             Time.timeScale = 1f;
         }
     }
     gameObject.SetActive(false);
     _active = false;
 }
コード例 #22
0
    public void Destruct(Script_Weapon sendWeapon)
    {
        if (sendWeapon == null)
        {
            return;
        }

        //Destroy object if hit by correct type of weapon
        if (sendWeapon.WeapType == TypeToDestroy || TypeToDestroy == Script_Weapon.WeaponType.None)
        {
            Destroy(gameObject);
            Script_GameManager.GetInstance().Inventory.Currency += _currencyReward;
        }
    }
コード例 #23
0
    public Script_Projectile(Script_GameManager p_manager, Script_IEntity p_startEntity, Script_IEntity p_targetEntity, Color p_color)
    {
        _manager      = p_manager;
        _targetEntity = p_targetEntity;
        _startEntity  = p_startEntity;

        _speed = 3.0f;

        _projectileObject = GameObject.CreatePrimitive(PrimitiveType.Cube);
        _projectileObject.transform.localScale = new Vector3(0.1f, 0.1f, 0.1f);
        _projectileObject.name = "DamageDealerProjectileObject";
        _objectMaterial        = _projectileObject.GetComponent <Renderer>().material;
        _objectMaterial.color  = p_color;
        _projectileObject.transform.position = _startEntity.GetGridLocation();
    }
コード例 #24
0
    void Attack()
    {
        //Left mouse button pressed
        if (Input.GetMouseButtonDown(0) && Script_GameManager.GetInstance().UIManager.ActivePanels == 0)
        {
            //Attack with weapon if you have one
            if (_attachedCharacter.Weapon != null)
            {
                //Check what was hit by weapon
                var hit = _attachedCharacter.Weapon.GetHitObjects(this);
                foreach (var o in hit)
                {
                    //Deal damage to hit enemies
                    if (o.tag == "Enemy")
                    {
                        var es = o.GetComponent <Script_EnemyBehaviour>();
                        if (es != null)
                        {
                            es.GetAttachedCharacter().TakeDamage(GetAttackDamage());
                        }
                    }

                    //Destruct destructables
                    if (o.tag == "Destructable")
                    {
                        var ds = o.GetComponent <Script_Destructable>();
                        if (ds != null)
                        {
                            ds.Destruct(_attachedCharacter.Weapon);
                        }
                    }
                }
            }
            //Hit enemy right in front with "fist"
            else
            {
                RaycastHit hit;
                if (Physics.Raycast(transform.position, transform.forward, out hit, 2f, ~(1 << LayerMask.NameToLayer("Player"))))
                {
                    if (hit.collider.tag == "Enemy")
                    {
                        hit.collider.GetComponent <Script_EnemyBehaviour>().GetAttachedCharacter().TakeDamage(GetAttackDamage());
                    }
                }
            }
            _currentChargeTimer = 0f;
        }
    }
コード例 #25
0
    // Use this for initialization
    void Awake()
    {
        gm = GameObject.Find("GameManager").GetComponent <Script_GameManager>();
        if (gm == null)
        {
            //Debug.Log(gameObject + " DIDN'T FIND THE GAME MANAGER");
            rb = GetComponent <Rigidbody2D>();
        }


        //Asks the gm for which player to chase if tag mode is on
        if (gm.tagModeOn)
        {
            player = gm.tagModeInit();
        }
    }
コード例 #26
0
    public void OnPointerEnter(PointerEventData eventData)
    {
        //Change item display to use this object name
        ItemNameDisplay.SetActive(true);
        _itemDisplayText.text = (_attachedItem != null ? _attachedItem.Name : "Dummy") + (_attachedItem.Amount > 1 ? " x" + _attachedItem.Amount : "");

        //Add price at end of text if shop item
        if (VisualType == VisualItemType.Shop)
        {
            _itemDisplayText.text += " " + Script_GameManager.GetInstance().UIManager.ShopPanel.AttachedKeeper.ShopEntries
                                     .First(x => x.Item == _attachedItem).Price + "G";
        }

        //Put display in front
        ItemNameDisplay.transform.SetAsLastSibling();
    }
コード例 #27
0
    public override void Use()
    {
        bool canBeUsed = false;

        foreach (var character in Script_GameManager.GetInstance().CharacterManager.GetCharacters())
        {
            if (character.CurrentHealth < character.MaxHealth)
            {
                character.Heal(_healAmount);
                canBeUsed = true;
            }
        }

        if (canBeUsed)
        {
            Script_GameManager.GetInstance().Inventory.RemoveItem(this);
        }
    }
コード例 #28
0
    public void RemoveItem(Script_Item item, int amount = 1)
    {
        //Find inventory slot of item type
        var inventoryItem = _itemList.First(x => x.Name == item.Name);

        if (inventoryItem != null)
        {
            //Remove amount of items
            inventoryItem.Amount -= amount;

            //Delete item type from inventory if none are left
            if (inventoryItem.Amount <= 0)
            {
                _itemList.Remove(inventoryItem);
                Script_GameManager.GetInstance().UIManager.InventoryPanel.Refresh();
            }
        }
    }
コード例 #29
0
    // Use this for initialization
    void Start()
    {
        var uip1 = transform.GetChild(0);

        _playerUI1 = new PlayerUI
        {
            HealthText     = uip1.transform.GetChild(0).GetComponent <Text>(),
            ChargeText     = uip1.transform.GetChild(2).GetComponent <Text>(),
            TrackCharacter = Script_GameManager.GetInstance().CharacterManager.GetCharacters()[0].GetVisualCharacter()
        };
        var uip2 = transform.GetChild(1);

        _playerUI2 = new PlayerUI
        {
            HealthText     = uip2.transform.GetChild(0).GetComponent <Text>(),
            ChargeText     = uip2.transform.GetChild(2).GetComponent <Text>(),
            TrackCharacter = Script_GameManager.GetInstance().CharacterManager.GetCharacters()[1].GetVisualCharacter()
        };
    }
コード例 #30
0
    public Script_HealingVisualEffect(Script_GameManager p_manager, Script_IEntity p_entityToRecieveEffect)
    {
        _lifeTimer        = 1.0f;
        _lifeTimerCurrent = 0.0f;
        _manager          = p_manager;

        _effectObject      = new GameObject();
        _effectObject.name = "SheepObject";
        _effectObject.transform.position = p_entityToRecieveEffect.GetPosition();

        _textMesh      = _effectObject.AddComponent <TextMesh> ();
        _textMesh.text = "Healing Target!";

        _textMesh.fontSize           = 8;
        _textMesh.color              = Color.green;
        _textMesh.transform.rotation = Quaternion.Euler(90, 0, 0);

        _directionToMove = new Vector3(0.0f, 1.0f, 0.0f);
    }