//-------------------------------------------------------------------------------------- // Methods (Static): //-------------------------------------------------------------------------------------- #region bool Create(EntityXml, GameObject) /// <summary> /// Creates a new player entity. /// </summary> /// <param name="descriptor">The descriptor of the entity.</param> /// <param name="parent">The parent game object.</param> /// <returns>Returns if the entity have been created or not.</returns> public static bool Create(EntityXml descriptor, GameObject parent) { // Check the type of the descriptor: if (descriptor.Type.ToLower() != EntityType.PLAYER) { return(false); } // Check if the entity will be inside the world: var core = CoreManager.Instance; var level = core.Level; var cell = level.GetCell(descriptor.X, descriptor.Y); if (cell == null || cell.EntityObject != null) { return(false); } // Load all the sprites from the selected charset: var charset = core.CurrentProfile != null ? core.CurrentProfile.Charset : ProfileData.GetRandomCharset(); var sprites = core.LoadGameSprites(ProfileData.CHARSET_FILE_BASE); // Create the player node inside the scene: var victim = new GameObject(CoreManager.PLAYER_GOBJ_NAME); SceneUtil.SetParent(victim, parent); SceneUtil.SetPosition(victim, cell.TerrainObject); // Create the sprite renderer component: var spriteRenderer = victim.AddComponent <SpriteRenderer>(); var sprite = sprites.Where(x => x.name == charset + IDLE_EXT).FirstOrDefault(); spriteRenderer.sprite = sprite; // Create the audio source component: victim.AddComponent <AudioSource>(); // Create the player behaviour component: var playerController = victim.AddComponent <PlayerController>(); playerController.configure(charset, sprites); playerController.EnterCell(cell); // Everything is alright: return(true); }