private Vector3 getSpritePosition(PositionComponent position, DesignationComponent designation)
        {
            Vector3 spritePosition = ViewUtil.fromModelToScene(position.position);

            spritePosition.z -= 0.1f;
            if (GameModel.localMap.blockType.getEnumValue(position.position) == BlockTypeEnum.WALL)   // TODO elevate sprite on tall tiles
            {
                spritePosition.y += 0.5f;
            }
            return(spritePosition);
        }
        private bool validateEntity(EcsEntity entity)
        {
            if (!entity.Has <PositionComponent>())
            {
                Debug.LogWarning("designation " + entity.Get <DesignationComponent>().type.NAME + " has no PositionComponent");
                return(false);
            }
            DesignationComponent designation = entity.Get <DesignationComponent>();

            if (designation.type.SPRITE_NAME == null)
            {
                Debug.LogWarning("designation " + entity.Get <DesignationComponent>().type.NAME + " has null spriteName");
                return(false);
            }
            return(true);
        }
Пример #3
0
 private EcsEntity?createTaskForDesignation(DesignationComponent designation, PositionComponent position)
 {
     // TODO create job component
     if (designation.type.JOB.Equals(JobsEnum.MINER.name))
     {
         Debug.Log("mining task created.");
         EcsEntity taskEntity = GameModel.get().taskContainer.createTask(new DigAction(position.position, designation.type));
         taskEntity.Replace(new TaskJobComponent {
             job = JobsEnum.MINER.name
         });
         return(taskEntity);
     }
     // switch (designation.type.NAME) {
     //     case "cutting stairs": {
     //         return null;
     //     }
     //     case "cutting downstairs": {
     //         return null;
     //     }
     //     case "cutting ramp": {
     //         return null;
     //     }
     //     case "digging channel": {
     //         return null;
     //     }
     //     case "chopping trees": {
     //         return null;
     //     }
     //     case "cutting plants": {
     //         return null;
     //     }
     //     case "harvesting plants": {
     //         return null;
     //     }
     //     case "building": {
     //         return null;
     //     }
     //     case "hoeing": {
     //         return null;
     //     }
     //     case "planting": {
     //         return null;
     //     }
     // }
     return(null);
 }
        private void createSprite(EcsEntity entity)
        {
            DesignationComponent designation = entity.Get <DesignationComponent>();
            PositionComponent    position    = entity.Get <PositionComponent>();
            // create sprite on scene
            GameObject     go             = PrefabLoader.create("designation", GameView.get().mapHolder);
            SpriteRenderer spriteRenderer = go.GetComponent <SpriteRenderer>();
            Sprite         sprite         = IconLoader.get("designation/" + designation.type.SPRITE_NAME);

            spriteRenderer.sprite = sprite;

            float width = go.GetComponent <RectTransform>().rect.width;
            float scale = width / sprite.rect.width * sprite.pixelsPerUnit;

            spriteRenderer.transform.localScale = new Vector3(scale, scale, 1);

            go.transform.localPosition = getSpritePosition(position, designation);
            // add visual component
            entity.Replace(new DesignationVisualComponent {
                spriteRenderer = spriteRenderer
            });
        }