Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package com.dongbat.invasion.system; import com.artemis.Aspect; import com.artemis.ComponentMapper; import com.artemis.Entity; import com.artemis.annotations.Wire; import com.artemis.systems.EntityProcessingSystem; import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.g2d.Sprite; import com.badlogic.gdx.math.MathUtils; import com.badlogic.gdx.math.Vector2; import com.dongbat.invasion.component.Ads; import com.dongbat.invasion.component.Delay; import com.dongbat.invasion.component.Enemy; import com.dongbat.invasion.util.AssetUtil; import com.dongbat.invasion.util.Constants; import com.dongbat.invasion.util.PhysicsUtil; import com.dongbat.invasion.util.TimeUtil; /** * * @author password */ @Wire public class AdsDeliverySystem extends EntityProcessingSystem { private ComponentMapper<Enemy> enemyMapper; private ComponentMapper<Ads> adsMapper; private ComponentMapper<Delay> delayMapper; public AdsDeliverySystem() { super(Aspect.getAspectForAll(Enemy.class)); } @Override protected void process(Entity entity) { Vector2 position = PhysicsUtil.getPosition(entity); Enemy enemy = enemyMapper.get(entity); if (!enemy.canPickAds()) { return; } Ads ads = adsMapper.get(entity); Delay delay = delayMapper.get(entity); if (!enemy.hasPickedUpAds() && position.x >= Constants.ENEMY.PICK_UP_POINT_X) { // TODO pick up ads animation if (delay.getDuration() == 0) { // set delay delay.setDelay(TimeUtil.getGameTime(), enemy.getAdsPickingDelay()); } else { long timePassed = TimeUtil.getGameTimeSince(delay.getStartTime()); if (timePassed >= delay.getDuration()) { enemy.setPickedUpAds(true); if (ads.isOffline()) { String spriteName = MathUtils.random(10) + ".jpg"; Texture texture = AssetUtil.getTexture(spriteName); Sprite sprite = new Sprite(texture); ads.setSprite(sprite); ads.setSize(new Vector2(texture.getWidth(), texture.getHeight())); } } } } int leftLimit = enemy.isAirUnit() ? Constants.ENEMY.AIR_START_X : Constants.ENEMY.GROUND_START_X; if (enemy.hasPickedUpAds() && position.x <= leftLimit) { // TODO tribute animation if (delay.getDuration() == 0) { delay.setDelay(TimeUtil.getGameTime(), enemy.getTributeDelay()); } else { long timePassed = TimeUtil.getGameTimeSince(delay.getStartTime()); if (timePassed >= delay.getDuration()) { enemy.setPickedUpAds(false); if (!enemy.isInfinitePickup()) { entity.deleteFromWorld(); } } } } } }