Пример #1
0
        public void AttachDeco(CTile tile, EDeco deco)
        {
            var decoParam = DecoTable.Instance.Table[deco];
            var data      = this.GetDecoData(decoParam);
            var sprite    = this._sprites[ListUtil <int> .GetRandomElement(decoParam.Sprites)];

            FTile.SetEnvironmentFlagTrue(tile.GetFlags());
            var handle = new GameObject();
            var model  = new MDeco(deco);

            model.SetData(data);
            var view       = new VDeco(deco);
            var controller = new CDeco();

            controller.SetGameHandle(handle);
            controller.SetModel(model);
            controller.SetView(view);
            var renderer = handle.AddComponent <SpriteRenderer>();

            tile.SetCurrent(controller);
            renderer.sprite = sprite;
            renderer.transform.SetParent(tile.Handle.transform);
            renderer.transform.position = tile.Handle.transform.position;
            var tileRenderer = tile.Handle.GetComponent <SpriteRenderer>();

            renderer.sortingLayerName = tileRenderer.sortingLayerName;
            renderer.sortingOrder     = tileRenderer.sortingOrder + 1;
        }
Пример #2
0
        public Sprite GetHeightRight()
        {
            var path  = StringUtil.PathBuilder(PATH, "Height_Right");
            var stuff = Resources.LoadAll(path);

            return(stuff[ListUtil <int> .GetRandomElement(this.TILE_BOTTOMS)] as Sprite);
        }
Пример #3
0
        private void ProcessNewInjury(CChar tgt, MHit hit)
        {
            var injuries = new List <EInjury>();

            injuries.AddRange(hit.Data.Ability.Data.Injuries);
            if (hit.Data.Ability.Data.ParentWeapon != null)
            {
                injuries.AddRange(hit.Data.Ability.Data.ParentWeapon.Data.Injuries);
            }
            var random = ListUtil <EInjury> .GetRandomElement(injuries);

            if (random != EInjury.None)
            {
                try
                {
                    var injuryParams = InjuryTable.Instance.Table[random];
                    var injury       = injuryParams.GetInjury();
                    var data         = new EvInjuryData();
                    data.Hit    = hit;
                    data.Injury = injury;
                    data.Target = tgt;
                    var e = new EvInjury(data);
                    e.TryProcess();
                }
                catch (KeyNotFoundException e)
                {
                    Debug.LogError("Injury not found: " + random.ToString());
                    Debug.LogError(e.Message);
                }
            }
        }
Пример #4
0
        public void DoSingleFX(MHit hit)
        {
            var ability = hit.Data.Ability.Data.ParentAction.ActiveAbility;
            var sprites = this.GetSingleFXSprites(ability);

            if (sprites.Count > 0)
            {
                var roll = RNG.Instance.Next(ability.Data.MinSprites, ability.Data.MaxSprites);
                for (int i = 0; i < roll; i++)
                {
                    var fx       = new GameObject();
                    var renderer = fx.AddComponent <SpriteRenderer>();
                    var index    = ListUtil <int> .GetRandomElement(ability.Data.Sprites);

                    renderer.sprite           = sprites[index];
                    renderer.sortingLayerName = SortingLayers.PARTICLES;
                    fx.transform.position     = hit.Data.Target.Model.Center;
                    if (ability.Data.SingleFXRandomTranslate)
                    {
                        RotateTranslateUtil.Instance.RandomTranslate(fx, CombatGUIParams.SINGLE_FX_OFFSET);
                    }
                    fx.transform.SetParent(hit.Data.Target.Handle.transform);
                    var delete = fx.AddComponent <SDestroyByLifetime>();
                    delete.Init(fx, CombatGUIParams.SINGLE_FX_DUR);
                }
            }
            hit.CallbackHandler(null);
        }
Пример #5
0
        public Sprite GetZoneSprite(ZoneData data)
        {
            var path  = StringUtil.PathBuilder(PATH, data.SpritesPath, ZONE_EXTENSION);
            var stuff = Resources.LoadAll(path);
            var index = ListUtil <int> .GetRandomElement(data.SpriteIndexes);

            return(stuff[index] as Sprite);
        }
Пример #6
0
        public Sprite GetBloodSpatterLevelFive()
        {
            var path  = StringUtil.PathBuilder(PATH, "Tileblood", TILE_EXTENSION);
            var stuff = Resources.LoadAll(path);
            var index = ListUtil <int> .GetRandomElement(this.LEVEL_FIVE_BLOOD_SPATTER);

            return(stuff[index] as Sprite);
        }
Пример #7
0
        private Sprite GetZoneSprite(AZone zone, ZoneParams zoneParams)
        {
            var path    = ZONE_PATH + zone.Type.ToString();
            var sprites = Resources.LoadAll(path);
            var roll    = ListUtil <int> .GetRandomElement(zoneParams.Sprites);

            return(sprites[roll] as Sprite);
        }
Пример #8
0
        public void Init(SBulletThenEmbedData data)
        {
            this._data = data;
            this.AddCallback(this.Embed);
            this._data.TargetObject = ListUtil <GameObject> .GetRandomElement(this._data.TargetableObjects);

            this._data.Target = RotateTranslateUtil.Instance.RandomTranslate(
                this._data.Target,
                this._data.Offset);
        }
Пример #9
0
        public IHex GetRandomNearbyTile(int probes, IHex tile)
        {
            var currNeighbors = tile.GetAdjacent();

            for (int i = 0; i < probes; i++)
            {
                var random = ListUtil <IHex> .GetRandomElement(currNeighbors);

                currNeighbors = random.GetAdjacent();
            }
            return(ListUtil <IHex> .GetRandomElement(currNeighbors));
        }
Пример #10
0
        public void ProcessPostFatalityBark(FatalityData data)
        {
            var hit = ListUtil <MHit> .GetRandomElement(data.FatalHits);

            var origin = data.Source.GameHandle;
            var barks  = new List <string>();

            if (hit.Data.Target.Current != null &&
                hit.Data.Target.Current.GetType().Equals(typeof(CChar)))
            {
                var tgt = hit.Data.Target.Current as CChar;
                if (hit.Data.Source.Proxy.LParty == tgt.Proxy.LParty)
                {
                    barks = BarkTable.Instance.Table[EBark.FriendlyFatality];
                }
                else
                {
                    var roll = RNG.Instance.NextDouble();
                    if (roll < NEUTRAL_BARK_CHANCE)
                    {
                        barks = BarkTable.Instance.Table[EBark.NeutralFatality];
                        var characters = CombatManager.Instance.GetData().Characters;
                        origin = ListUtil <CChar> .GetRandomElement(characters).GameHandle;
                    }
                    else
                    {
                        barks = this.GetPostEnemyFatalityBarks(data);
                    }
                }
            }
            else
            {
                var roll = RNG.Instance.NextDouble();
                if (roll < NEUTRAL_BARK_CHANCE)
                {
                    barks = BarkTable.Instance.Table[EBark.NeutralFatality];
                    var characters = CombatManager.Instance.GetData().Characters;
                    origin = ListUtil <CChar> .GetRandomElement(characters).GameHandle;
                }
                else
                {
                    barks = this.GetPostEnemyFatalityBarks(data);
                }
            }
            var bark = ListUtil <string> .GetRandomElement(barks);

            if (bark != null)
            {
                this.DisplayBark(bark, origin);
            }
        }
Пример #11
0
        private void InitNonLiquidTile(CTile tile, Transform tileHolder)
        {
            var script = tile.Handle.AddComponent <STile>();

            script.InitTile(tile);
            var sprites = this._spriteDict[tile.Model.Type];
            var sprite  = ListUtil <Sprite> .GetRandomElement(sprites);

            var render = tile.Handle.AddComponent <SpriteRenderer>();

            render.sprite           = sprite;
            render.sortingLayerName = SortingLayers.TILE_LAYER;
            tile.Handle.transform.SetParent(tileHolder);
            tile.Handle.name = SortingLayers.TILE + "( " + tile.Model.GetCol() + " / " + tile.Model.GetRow() + " )";
        }
Пример #12
0
        private VChar GetRandomHumanoid(PreCharParams c)
        {
            var p     = new VChar();
            var table = RaceParamsTable.Instance.Table;

            p.Face = ListUtil <int> .GetRandomElement(table[c.Race].Sprites.Face);

            if (table[c.Race].Sprites.HeadDeco1.Count > 0)
            {
                p.HeadDeco1 = ListUtil <int> .GetRandomElement(table[c.Race].Sprites.HeadDeco1);
            }
            else
            {
                p.HeadDeco1 = -1;
            }
            if (table[c.Race].Sprites.HeadDeco2.Count > 0)
            {
                p.HeadDeco2 = ListUtil <int> .GetRandomElement(table[c.Race].Sprites.HeadDeco2);
            }
            else
            {
                p.HeadDeco2 = -1;
            }
            if (table[c.Race].Sprites.TorsoDeco1.Count > 0)
            {
                p.TorsoDeco1 = ListUtil <int> .GetRandomElement(table[c.Race].Sprites.TorsoDeco1);
            }
            else
            {
                p.TorsoDeco1 = -1;
            }
            if (table[c.Race].Sprites.TorsoDeco2.Count > 0)
            {
                p.TorsoDeco2 = ListUtil <int> .GetRandomElement(table[c.Race].Sprites.TorsoDeco2);
            }
            else
            {
                p.TorsoDeco2 = -1;
            }
            p.Torso = ListUtil <int> .GetRandomElement(table[c.Race].Sprites.Torso);

            p.Head    = p.Torso - TORSO_OFFSET;
            p.Sprites = CharSpriteLoader.Instance.GetCharacterSprites(c);

            return(p);
        }
Пример #13
0
        public Sprite GetSlimeSplatter(int level)
        {
            var path  = StringUtil.PathBuilder(PATH, "Slime_Zone");
            var stuff = Resources.LoadAll(path);
            int index = 1;

            switch (level)
            {
            case (1): { index = ListUtil <int> .GetRandomElement(this.LEVEL_ONE_BLOOD_SPATTER); } break;

            case (2): { index = ListUtil <int> .GetRandomElement(this.LEVEL_TWO_BLOOD_SPATTER); } break;

            case (3): { index = ListUtil <int> .GetRandomElement(this.LEVEL_THREE_BLOOD_SPATTER); } break;

            case (4): { index = ListUtil <int> .GetRandomElement(this.LEVEL_FOUR_BLOOD_SPATTER); } break;

            case (5): { index = ListUtil <int> .GetRandomElement(this.LEVEL_FIVE_BLOOD_SPATTER); } break;
            }
            return(stuff[index] as Sprite);
        }
Пример #14
0
        private void DisplayDodge(CChar target, MHit hit)
        {
            var dodge    = target.GameHandle.AddComponent <SBoomerang>();
            var dodgeTgt = ListUtil <CTile> .GetRandomElement(target.Tile.GetAdjacent());

            var position = Vector3.Lerp(target.GameHandle.transform.position, dodgeTgt.Model.Center, CombatGUIParams.DODGE_LERP);

            position = RandomPositionOffset.RandomOffset(position, CombatGUIParams.DEFAULT_OFFSET);
            dodge.AddCallback(hit.CallbackHandler);
            dodge.Init(target.GameHandle, position, CombatGUIParams.DODGE_SPEED);
            var data = new HitDisplayData();

            data.Color    = CombatGUIParams.WHITE;
            data.Hit      = hit;
            data.Priority = ViewParams.DODGE_PRIORITY;
            data.Text     = "Dodge";
            data.Target   = target.GameHandle;
            data.YOffset  = CombatGUIParams.FLOAT_OFFSET;
            data.Hit.AddDataDisplay(data);
        }
Пример #15
0
        private void Embed(object o)
        {
            var random = ListUtil <GameObject> .GetRandomElement(this._data.TargetableObjects);

            if (random != null)
            {
                var handleRenderer = this._data.Handle.GetComponent <SpriteRenderer>();
                var targetRenderer = random.GetComponent <SpriteRenderer>();
                if (handleRenderer != null && targetRenderer != null)
                {
                    handleRenderer.transform.SetParent(random.transform);
                    handleRenderer.sortingLayerName = targetRenderer.sortingLayerName;
                    handleRenderer.sortingOrder     = targetRenderer.sortingOrder + 1;
                    if (this._data.TargetChar != null)
                    {
                        this._data.TargetChar.Embedded.Add(this._data.Handle);
                    }
                }
            }
        }