private void HandlePlaceBombAction(int i, PlayerInput input, Position position, Heading heading)
        {
            if (!input.PlaceBomb)
            {
                return;
            }

            // TODO: Find out which bomb type is currently selected from PlayerManager
            BombAsset bombAsset = BombariaBootstrap.BombManager.GetBombAsset(BombType.Normal);

            // TODO: Get placeBombActionCooldown from PlayerManager
            input.PlaceBombActionCooldown = BombariaBootstrap.Settings.placeBombActionCooldown;
            players.Input[i] = input;

            PostUpdateCommands.CreateEntity(BombariaBootstrap.BombSpawnArchetype);
            PostUpdateCommands.SetComponent(new BombSpawnRequest
            {
                Bomb = new Bomb
                {
                    Type = bombAsset.Type,
                    TimeBeforeIgnition = bombAsset.TimeBeforeIgnition,
                    Energy             = bombAsset.Energy
                },

                Position = position,
                Heading  = heading
            });
        }
Exemple #2
0
        private void SpawnBomb(int i, Entity bombEntity, BombSpawnRequest bombSpawn)
        {
            BombAsset bombAsset = BombariaBootstrap.BombManager.GetBombAsset(bombSpawn.Bomb.Type);

            PostUpdateCommands.RemoveComponent <BombSpawnRequest>(bombEntity);

            PostUpdateCommands.AddComponent(
                bombEntity,
                bombSpawn.Bomb);

            PostUpdateCommands.AddComponent(
                bombEntity,
                bombSpawn.Position);

            PostUpdateCommands.AddComponent(
                bombEntity,
                bombSpawn.Heading);

            PostUpdateCommands.AddComponent(
                bombEntity,
                new BombBlink(bombAsset.TimeBeforeIgnition));

            PostUpdateCommands.AddComponent(
                bombEntity,
                default(TransformMatrix));

            PostUpdateCommands.AddSharedComponent(
                bombEntity,
                bombAsset.IdleLook);
        }
Exemple #3
0
    private BombAsset LoadBombAssetOrPanic(BombType type)
    {
        string path = BOMB_OBJECTS_PATH_PREFIX + type.ToString() /*+ ASSET_FILE_TYPE*/;

        BombAsset bombAsset = Resources.Load<BombAsset>(path);

        if(bombAsset == null)
            throw new System.Exception("Load BombAsset of BombType: " + type + " from path: " + path + " failed");

        return bombAsset;
    }
Exemple #4
0
    public BombAsset GetBombAsset(BombType type)
    {
        if (cache.ContainsKey(type))
            return cache[type];

        BombAsset bombAsset = LoadBombAssetOrPanic(type); ;

        cache.Add(type, bombAsset);

        return bombAsset;
    }
Exemple #5
0
        private void HandleBlinking(int i, float dt, Entity bombEntity, Bomb bomb, BombBlink bombBlink, MeshInstanceRenderer bombLook)
        {
            BombAsset bombAsset = BombariaBootstrap.BombManager.GetBombAsset(bomb.Type);

            bombBlink.OverallTimer     += dt;
            bombBlink.BlinkPeriodTimer += dt;

            if (bombBlink.OverallTimer < bombBlink.Duration025)
            {
                bombBlink.Period = bombBlink.Duration;
            }
            else if (bombBlink.OverallTimer >= bombBlink.Duration025 && bombBlink.OverallTimer < bombBlink.Duration05)
            {
                bombBlink.Period = bombBlink.DurationDiv4;
            }
            else if (bombBlink.OverallTimer >= bombBlink.Duration05 && bombBlink.OverallTimer < bombBlink.Duration075)
            {
                bombBlink.Period = bombBlink.DurationDiv8;
            }
            else if (bombBlink.OverallTimer >= bombBlink.Duration075 && bombBlink.OverallTimer < bombBlink.Duration)
            {
                bombBlink.Period = bombBlink.DurationDiv16;
            }
            else if (bombBlink.OverallTimer >= bombBlink.Duration)
            {
                return;
            }

            if (bombBlink.BlinkPeriodTimer >= bombBlink.Period)
            {
                bombBlink.BlinkPeriodTimer = 0;

                MeshInstanceRenderer newLook;

                if (bombLook.Equals(bombAsset.IdleLook))
                {
                    newLook = bombAsset.BlinkLook;
                }
                else if (bombLook.Equals(bombAsset.BlinkLook))
                {
                    newLook = bombAsset.IdleLook;
                }
                else
                {
                    throw new System.Exception("Undefined blinking behavior occurred");
                }

                PostUpdateCommands.RemoveComponent <MeshInstanceRenderer>(bombEntity);
                PostUpdateCommands.AddSharedComponent(bombEntity, newLook);
            }

            bombBlinkData.BombBlink[i] = bombBlink;
        }