Esempio n. 1
0
 protected override void Start()
 {
     base.Start();
     CollisionMap.Move(iso.pos, iso.pos, size, gameObject);
     Events.InvokeUnitInitialized(this);
     UpdateMode();
 }
Esempio n. 2
0
        private bool Move(Vector2 movement)
        {
            var newPos = iso.pos + movement;

            CollisionMap.Move(iso.pos, newPos, size, gameObject);
            iso.pos = newPos;
            return(true);
        }
Esempio n. 3
0
 protected override void Start()
 {
     base.Start();
     CollisionMap.Move(iso.pos, iso.pos, size, gameObject);
     if (monStat != null)
     {
         AudioManager.instance.Play(monStat.sound.init, transform);
     }
 }
Esempio n. 4
0
        public void InstantMove(Vector2 target)
        {
            Vector3 newPos;

            if (CollisionMap.Fit(target, out newPos, size))
            {
                CollisionMap.Move(iso.pos, newPos, size, gameObject);
                iso.pos = newPos;
                _moving = false;
            }
            else
            {
                Debug.LogWarning("Can't move character - doesn't fit");
            }
        }
Esempio n. 5
0
    public static Character SpawnMonster(MonStat monStat, Vector3 pos, Transform parent = null, Character summoner = null)
    {
        pos = Iso.MapToIso(pos);
        if (!CollisionMap.Fit(pos, out pos, monStat.ext.sizeX))
        {
            return(null);
        }

        var monster = new GameObject(monStat.nameStr);

        monster.transform.SetParent(parent);
        monster.transform.position = Iso.MapToWorld(pos);

        CollisionMap.Move(pos, pos, monStat.ext.sizeX, monster);

        var character = monster.AddComponent <Character>();

        character.monStat     = monStat;
        character.title       = monStat.name;
        character.basePath    = @"data\global\monsters";
        character.token       = monStat.code;
        character.weaponClass = monStat.ext.baseWeaponClass;
        character.run         = false;
        character.walkSpeed   = monStat.speed;
        character.runSpeed    = monStat.runSpeed;
        character.size        = monStat.ext.sizeX;
        character.killable    = monStat.killable;

        var monLvl = MonLvl.Find(monStat.level[0]);

        if (monLvl != null && !monStat.noRatio)
        {
            character.health = Random.Range(monLvl.hp[0] * monStat.stats[0].minHP, monLvl.hp[0] * monStat.stats[0].maxHP + 1) / 100;
        }
        else
        {
            character.health = Random.Range(monStat.stats[0].minHP, monStat.stats[0].maxHP + 1);
        }
        character.maxHealth = character.health;

        var animator = character.GetComponent <COFAnimator>();

        animator.equip = new string[monStat.ext.gearVariants.Length];
        for (int i = 0; i < animator.equip.Length; ++i)
        {
            var variants = monStat.ext.gearVariants[i];
            if (variants == null)
            {
                continue;
            }
            animator.equip[i] = variants[Random.Range(0, variants.Length)];
        }

        if (summoner != null)
        {
            character.party = summoner.party;
            var petController = monster.AddComponent <PetController>();
            petController.owner = summoner;
        }
        else if (monStat.ai == "Npc" || monStat.ai == "Towner" || monStat.ai == "Vendor" || monStat.ai == "Hireable")
        {
            character.party = Party.Good;
            monster.AddComponent <NpcController>();
        }
        else if (monStat.ai != "Idle" && monStat.ai != "NpcStationary")
        {
            character.party = Party.Evil;
            monster.AddComponent <MonsterController>();
        }

        var body = monster.AddComponent <Rigidbody2D>();

        body.isKinematic = true;
        var collider = monster.AddComponent <CircleCollider2D>();

        collider.radius = monStat.ext.sizeX * Iso.tileSizeY;

        return(character);
    }