Recycle system code - UQdeco2800/2021-ext-studio-2 GitHub Wiki

Recycle System

Relevant Files:

UI Components

/* Listen to recycle system events*/
entity.getEvents().addListener("updateRecover", this::updateRecyleIconUI);

Creates recycle system ui styles and adds actors to the stage.

    @Override
    public void create() {
        super.create();
        TestBuffForItem.countNumber = 0;
        addActors();
        entity.getEvents().addListener("updateRecover", this::updateRecyleIconUI);
    }

Updates the recycle ui time by time conditions, useing switch

    public void updateRecyleIconUI(int dis) {
        if(dis > 0){
            for(int i = recycleIcon.size() - 1; i >= 0; --i){
                table.removeActor(recycleIcon.get(i));
                recycleIcon.remove(recycleIcon.get(i));
            }
            table.reset();
            table.bottom().right();
            table.setFillParent(true);
            table.padBottom(50).padRight(400);

            float iconLength = 60f;
            if(TestBuffForItem.countNumber >= 0){
                {
                    switch (TestBuffForItem.countNumber){
                        case 0:{
                            recycleIcon.add(new Image(ServiceLocator.getResourceService()
                                    .getAsset("images/itembar/recycle/recycle-256px-default.png", Texture.class)));
                            table.add(recycleIcon.get(0)).size(iconLength).pad(20);
                        }break;
                        case 1:{
                            if(recycleState == RecycleDisplay.recycleState.hp){
                                recycleIcon.add(new Image(ServiceLocator.getResourceService()
                                        .getAsset("images/itembar/recycle/recycle-256px-bb1.png", Texture.class)));
                            }else if(recycleState == RecycleDisplay.recycleState.food){
                                recycleIcon.add(new Image(ServiceLocator.getResourceService()
                                        .getAsset("images/itembar/recycle/recycle-256px-leg1.png", Texture.class)));
                            }else {
                                recycleIcon.add(new Image(ServiceLocator.getResourceService()
                                        .getAsset("images/itembar/recycle/recycle-256px-water1.png", Texture.class)));
                            }

                            table.add(recycleIcon.get(0)).size(iconLength).pad(20);
                        }break;
                        case 2:{
                            if(recycleState == RecycleDisplay.recycleState.hp){
                                recycleIcon.add(new Image(ServiceLocator.getResourceService()
                                        .getAsset("images/itembar/recycle/recycle-256px-bb2.png", Texture.class)));
                            }else if(recycleState == RecycleDisplay.recycleState.food){
                                recycleIcon.add(new Image(ServiceLocator.getResourceService()
                                        .getAsset("images/itembar/recycle/recycle-256px-leg2.png", Texture.class)));
                            }else {
                                recycleIcon.add(new Image(ServiceLocator.getResourceService()
                                        .getAsset("images/itembar/recycle/recycle-256px-water2.png", Texture.class)));
                            }

                            table.add(recycleIcon.get(0)).size(iconLength).pad(20);
                        }break;
                        case 3:{
                            if(recycleState == RecycleDisplay.recycleState.hp){
                                recycleIcon.add(new Image(ServiceLocator.getResourceService()
                                        .getAsset("images/itembar/recycle/recycle-256px-bb3.png", Texture.class)));
                            }else if(recycleState == RecycleDisplay.recycleState.food){
                                recycleIcon.add(new Image(ServiceLocator.getResourceService()
                                        .getAsset("images/itembar/recycle/recycle-256px-leg3.png", Texture.class)));
                            }else {
                                recycleIcon.add(new Image(ServiceLocator.getResourceService()
                                        .getAsset("images/itembar/recycle/recycle-256px-water3.png", Texture.class)));
                            }
                            table.add(recycleIcon.get(0)).size(iconLength).pad(20);
                            RecycleDisplay.recycleNumber =1;
                        }
                    }
                }
            }
            //add images into the screen
            stage.addActor(table);
        }
    }

remove recycleIcon by useing a for loop

    @Override
    public void dispose() {
        super.dispose();
        for (int i = 0; i < recycleIcon.size(); ++i){
            recycleIcon.remove(i);
        }

###Keyboard Input

when player pressed number,if recycleState = hp then add helth, if recycleState = food then add food image, if recycleState = water then add water image

      case Keys.NUM_4://consume recycle :add chicken/water/health
        RecycleDisplay.isKey =false;
        if(RecycleDisplay.recycleNumber ==1){
          if(!RecycleDisplay.isKey){
            TestBuffForItem.countNumber=0;
            RecycleDisplay.recycleNumber =0;
            RecycleDisplay.isKey =true;
            if(RecycleDisplay.recycleState == RecycleDisplay.recycleState.hp){//add health
              MainGameScreen.players.getComponent(CombatStatsComponent.class).setHealth(
                      MainGameScreen.players.getComponent(CombatStatsComponent.class).getHealth()+10
              );
            }else if(RecycleDisplay.recycleState == RecycleDisplay.recycleState.food){//add food
              FoodDisplay.addOrRemoveImage(1);
            }else {//add water
              WaterDisplay.addOrRemoveImage(1);
            }
          }
        }
        return true;

change recycle state by pressing 5,6,7

      case Keys.NUM_5://change recycle state to food
        RecycleDisplay.recycleState = RecycleDisplay.recycleState.food;
        return true;

      case Keys.NUM_6://change recycle state to water
        RecycleDisplay.recycleState = RecycleDisplay.recycleState.water;
        return true;

      case Keys.NUM_7://change recycle state to kits
        RecycleDisplay.recycleState = RecycleDisplay.recycleState.hp;
        return true;

UML Diagrams

UML class diagram

For displaying itembar.
(recycle)

⚠️ **GitHub.com Fallback** ⚠️