Beispiel #1
0
 public static void RaiseCurtainLeave(Field.Tile tile)
 {
     if (OnCurtainLeave != null)
     {
         OnCurtainLeave(tile);
     }
 }
Beispiel #2
0
 public static void StructureDestroyed(Field.Tile tile)
 {
     if (OnStructureDestroyed != null)
     {
         OnStructureDestroyed(tile);
     }
 }
Beispiel #3
0
 private static void RaiseCurtainActivate(Field.Tile tile)
 {
     if (OnCurtainActivate != null)
     {
         OnCurtainActivate(tile);
     }
 }
Beispiel #4
0
    public bool Turn(Field.Tile target)
    {
        if (tile == null || target == null)
        {
            return(false);
        }
        if (target == tile.left)
        {
            direction = Field.Directions.LEFT;
        }
        else
        if (target == tile.right)
        {
            direction = Field.Directions.RIGHT;
        }
        else
        if (target == tile.up)
        {
            direction = Field.Directions.UP;
        }
        else
        if (target == tile.down)
        {
            direction = Field.Directions.DOWN;
        }
        else
        {
            return(false);
        }

        _face.UpdateDirectionView(direction);
        return(true);
    }
Beispiel #5
0
 public static void ActivateTile(Field.Tile tile)
 {
     if (tile.type == Field.Tile.TileTypes.STORK)
     {
         RaiseStorkTalk(tile);
         return;
     }
     if (tile.type == Field.Tile.TileTypes.CURTAIN)
     {
         RaiseCurtainActivate(tile);
         return;
     }
     if (tile.type == Field.Tile.TileTypes.TURNSTILE)
     {
         if (GlobalDataHolder.player_gold >= GlobalDataHolder.gold_to_pass_turnstile)
         {
             GlobalDataHolder.player.tile.unit = null;
             GlobalDataHolder.player.tile      = tile;
             tile.unit = GlobalDataHolder.player;
             GlobalDataHolder.player_gold -= GlobalDataHolder.gold_to_pass_turnstile;
             GlobalDataHolder.player.ForceMoveByDirection(GlobalDataHolder.player.direction);
         }
         return;
     }
     if (tile.type == Field.Tile.TileTypes.EXIT)
     {
         RaiseLevelEnd();
         return;
     }
     RaiseTileActivate(tile);
 }
Beispiel #6
0
 public FindItem(Field.Tile task_giver, int reward_exp, int reward_gold, int reward_score)
     : base(task_giver, reward_exp, reward_gold, reward_score, 0)
 {
     _done = false;
     item  = Item.CreateQuestItem();
     GlobalEventSystem.OnItemPickedUp += Done;
 }
Beispiel #7
0
 public FindUnit(Field.Tile task_giver, int reward_exp, int reward_gold, int reward_score, float reward_time)
     : base(task_giver, reward_exp, reward_gold, reward_score, reward_time)
 {
     _done            = false;
     unit_to_interact = GlobalDataHolder.quest_unit.Spawn(GlobalDataHolder.field.random_no_unit_road);
     GlobalEventSystem.OnUnitActivate += ProgressChecker;
 }
Beispiel #8
0
 private static void RaiseTileActivate(Field.Tile tile)
 {
     if (OnTileActivate != null)
     {
         OnTileActivate(tile);
     }
 }
 private static void RaiseStorkTalk(Field.Tile tile)
 {
     if (OnStorkTalk != null)
     {
         OnStorkTalk(tile);
     }
 }
Beispiel #10
0
 public override void Action(Field.Tile target)
 {
     base.Action(target);
     if (target.type == Field.Tile.TileTypes.STORK)
     {
         GlobalEventSystem.TalkToStork(target);
     }
 }
Beispiel #11
0
 public Task(Field.Tile task_giver, int reward_exp, int reward_gold, int reward_score, float reward_time)
 {
     this.task_giver   = task_giver;
     this.reward_exp   = reward_exp;
     this.reward_gold  = reward_gold;
     this.reward_score = reward_score;
     this.reward_time  = reward_time;
 }
Beispiel #12
0
 public KillEnemyOfType(Field.Tile task_giver, int reward_exp, int reward_gold, int reward_score, int enemy_id, int needed)
     : base(task_giver, reward_exp, reward_gold, reward_score, 0)
 {
     this.enemy_id              = enemy_id;
     this.needed                = needed;
     done                       = 0;
     GlobalEventSystem.OnDeath += ProgressChecker;
 }
Beispiel #13
0
 public virtual bool Move(Field.Tile target)
 {
     if (!Turn(target))
     {
         return(false);
     }
     return(MoveByDirection(direction));
 }
Beispiel #14
0
    private static void RaiseStorkTalk(Field.Tile tile)
    {
        Task task = Task.FindTask(tile);

        if (OnStorkTalk != null)
        {
            OnStorkTalk(tile, task);
        }
    }
Beispiel #15
0
    protected void _RenderTile(Field.Tile tile, Vector3 pos)
    {
        var tileView = _CreateTile(tile.type);

        tileView.SetTile(tile);
        tileView.Show();

        tileView.transform.parent        = this.transform;
        tileView.transform.localPosition = pos;
    }
Beispiel #16
0
    public static Task CreateFindItem(Field.Tile task_giver, int reward_exp, int reward_gold, int reward_score)
    {
        FindItem task = new FindItem(task_giver, reward_exp, reward_gold, reward_score);

        if (!task.item.Spawn(GlobalDataHolder.field.random_no_item_road))
        {
            return(null);
        }
        return(task);
    }
Beispiel #17
0
    public static Task CreateFindUnit(Field.Tile task_giver, int reward_exp, int reward_gold, int reward_score, float reward_time)
    {
        FindUnit task = new FindUnit(task_giver, reward_exp, reward_gold, reward_score, reward_time);

        if (task.unit_to_interact == null)
        {
            return(null);
        }
        return(task);
    }
Beispiel #18
0
    public override void SetTile(Field.Tile __tile)
    {
        base.SetTile(__tile);

        if (hasTask)
        {
            _taskMark.Show();
        }
        else
        {
            _taskMark.Hide();
        }
    }
Beispiel #19
0
    public static Task FindTask(Field.Tile giver, bool create_new_if_not_found = true, int reward_exp = 50, int reward_gold = 50, int reward_score = 1000, float reward_time = 40f)
    {
        if (tasks.ContainsKey(giver))
        {
            return(tasks[giver]);
        }
        else
        {
            if (create_new_if_not_found)
            {
                int  rnd  = UnityEngine.Random.Range(0, 3);
                Task task = null;
                switch (rnd)
                {
                case 0:
                {
                    int   count_to_kill = UnityEngine.Random.Range(KillEnemyOfType.MINIMUM_TO_KILL, KillEnemyOfType.MAXIMUM_TO_KILL);
                    float mult          = ((float)count_to_kill) / KillEnemyOfType.MINIMUM_TO_KILL;
                    task = CreateKillEnemyOfType(giver,
                                                 UnityEngine.Mathf.CeilToInt(reward_exp * mult),
                                                 UnityEngine.Mathf.CeilToInt(reward_gold * mult),
                                                 UnityEngine.Mathf.CeilToInt(reward_score * mult),
                                                 GlobalDataHolder.next_enemy_id, count_to_kill);
                } break;

                case 1:
                {
                    task = CreateFindItem(giver, reward_exp, reward_gold, reward_score);
                }
                break;

                case 2:
                {
                    task = CreateFindUnit(giver, reward_exp, reward_gold, reward_score, reward_time);
                }
                break;

                default:
                    break;
                }
                if (task != null)
                {
                    tasks[giver] = task;
                }
                return(task);
            }
            return(null);
        }
    }
Beispiel #20
0
    public virtual bool Move(Field.Directions direction)
    {
        //Debug.Log( "Move called by " + GetInstanceID() );
        if (tile == null)
        {
            return(false);
        }
        Field.Tile target;
        switch (direction)
        {
        case Field.Directions.UP:
            target = tile.up;
            break;

        case Field.Directions.DOWN:
            target = tile.down;
            break;

        case Field.Directions.LEFT:
            target = tile.left;
            break;

        case Field.Directions.RIGHT:
            target = tile.right;
            break;

        default:
            target = null;
            break;
        }
        this.direction = direction;
        if (target != null)
        {
            if (this == GlobalDataHolder.player)
            {
                target.Activate();
            }
            if ((target.passable) && target.unit == null)
            {
                //Debug.Log( "Moved from (" + tile.x.ToString() + ";" + tile.y.ToString() + ") to (" + target.x.ToString() + ";" + target.y.ToString() +")");
                target.unit = this;
                tile.unit   = null;
                tile        = target;
                return(true);
            }
        }
        return(false);
    }
Beispiel #21
0
    public bool Spawn(Field.Tile tile)
    {
        if (tile.item != null)
        {
            return(false);
        }
        tile.item = this;
        this.tile = tile;

        if (tile.tileView != null)
        {
            tile.tileView.UpdateItemView();
        }

        return(true);
    }
Beispiel #22
0
    public virtual bool Move(Field.Directions direction)
    {
        if (tile == null)
        {
            return(false);
        }
        Field.Tile target;
        switch (direction)
        {
        case Field.Directions.UP:
            target = tile.up;
            break;

        case Field.Directions.DOWN:
            target = tile.down;
            break;

        case Field.Directions.LEFT:
            target = tile.left;
            break;

        case Field.Directions.RIGHT:
            target = tile.right;
            break;

        default:
            target = null;
            break;
        }
        this.direction = direction;
        if (target != null && target.unit == null)
        {
            if (target.type == Field.Tile.TileTypes.ROAD)
            {
                target.unit = this;
                tile.unit   = null;
                tile        = target;
                return(true);
            }
            else
            {
                Action(target);
                return(true);
            }
        }
        return(false);
    }
Beispiel #23
0
    public virtual FieldUnit Spawn(Field.Tile position)
    {
        if (position == null)
        {
            return(null);
        }


        if (position.unit == null && position.type == Field.Tile.TileTypes.ROAD)
        {
            //TODO
            //Instantiation
            FieldUnit fu = new FieldUnit();
            fu.direction  = Field.Directions.LEFT;
            position.unit = fu;
            fu.tile       = position;
            return(fu);
        }
Beispiel #24
0
    public virtual FieldUnit Spawn(Field.Tile position, bool new_inst = true)
    {
        if (position == null)
        {
            return(null);
        }


        if (position.unit == null && position.passable)
        {
            //TODO
            //Instantiation
            FieldUnit fu = this;
            if (new_inst)
            {
                if (_factory != null)
                {
                    fu = _factory.Allocate().GetComponent <FieldUnit>();
                    fu.Show();
                }
                else
                {
                    fu = Instantiate(this);
                }

                _allUnits.Add(fu);
            }
            fu.direction  = Field.Directions.LEFT;
            position.unit = fu;
            fu.tile       = position;
            fu._SetPosition(position.tileView.transform.position);
            fu.Initialize();
            GlobalEventSystem.RaiseUnitSpawned(this);

            return(fu);
        }
        return(null);
    }
Beispiel #25
0
    public virtual void SetTile(Field.Tile __tile)
    {
        tile = __tile;

        if (tile.type == Field.Tile.TileTypes.STRUCTURE)
        {
            _ClearFace();
            SetFace(
                StructureFaceFactory.i.CreateFace(
                    _structureMask = tile.GetNoEqMask(Field.Tile.TileTypes.STRUCTURE)));
        }
        else if (tile.type == Field.Tile.TileTypes.SPAWN)
        {
            SetFace(
                SpawnFaceFactory.i.CreateFace(
                    enemyType));
        }

        if (tile.item != null)
        {
            UpdateItemView();
        }
    }
Beispiel #26
0
 public virtual bool Move(Field.Tile target)
 {
     if (!Turn(target))
     {
         return(false);
     }
     if (target != null && target.unit == null)
     {
         if (target.type == Field.Tile.TileTypes.ROAD)
         {
             target.unit = this;
             tile.unit   = null;
             tile        = target;
             return(true);
         }
         else
         {
             Action(target);
             return(true);
         }
     }
     return(false);
 }
Beispiel #27
0
 private void StartCurtainWork(Field.Tile tile)
 {
     uses_curtain    = true;
     OnRealTimeTick += CurtainTick;
 }
Beispiel #28
0
 public static Task CreateKillEnemyOfType(Field.Tile task_giver, int reward_exp, int reward_gold, int reward_score, int enemy_id, int needed)
 {
     return(new KillEnemyOfType(task_giver, reward_exp, reward_gold, reward_score, enemy_id, needed));
 }
Beispiel #29
0
 protected void _OnStorkTalk(Field.Tile tile, Task task)
 {
     tile.tileView.ResetTile();
     ((StorkTileView)tile.tileView).ShowQuest(task.message);
     Log("Task: " + task.message);
 }
Beispiel #30
0
 private void EndCurtainWork(Field.Tile tile)
 {
     uses_curtain    = false;
     OnRealTimeTick -= CurtainTick;
 }