5 changed files with 132 additions and 15 deletions
@ -0,0 +1,85 @@ |
|||||
|
using System.Collections; |
||||
|
using System.Collections.Generic; |
||||
|
using UnityEngine; |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// This class provides a keyboard controller for a ShopModel in a list view, it defines how to handle keyboard input in HandleInput()
|
||||
|
/// </summary>
|
||||
|
public class ListKeyboardController : ShopController |
||||
|
{ |
||||
|
private ViewConfig viewConfig;//To move the focus up and down, we need to know how many columns the grid view has, in the current setup,
|
||||
|
private int columnCount; //this information can be found in a ViewConfig scriptable object, which serves as a configuration file for
|
||||
|
//views.
|
||||
|
|
||||
|
private int currentItemIndex = 0;//The current item index is changed whenever the focus is moved with keyboard keys
|
||||
|
|
||||
|
//------------------------------------------------------------------------------------------------------------------------
|
||||
|
// Initialize()
|
||||
|
//------------------------------------------------------------------------------------------------------------------------
|
||||
|
//Override Initialize to set up additional information needed by this concrete controller: number of columns in the view
|
||||
|
public override ShopController Initialize(ShopModel pShopModel) |
||||
|
{ |
||||
|
base.Initialize(pShopModel);//Call base.Initialize to set up the model
|
||||
|
currentItemIndex = model.GetSelectedItemIndex();//Synchronize the current item index with the model
|
||||
|
viewConfig = Resources.Load<ViewConfig>("ViewConfig");//Load the ViewConfig scriptable object from the Resources folder
|
||||
|
Debug.Assert(viewConfig != null); |
||||
|
columnCount = viewConfig.gridViewColumnCount;//Try to set up the column count, fails silently
|
||||
|
return this; |
||||
|
} |
||||
|
|
||||
|
//------------------------------------------------------------------------------------------------------------------------
|
||||
|
// HandleInput()
|
||||
|
//------------------------------------------------------------------------------------------------------------------------
|
||||
|
//Currently hardcoded to AWSD to move focus and K to confirm the selected item. No criterion for the grade, so since lists are assumed to have one colum, we just hardcode that
|
||||
|
public override void HandleInput() |
||||
|
{ |
||||
|
//Move the focus to the left if possible
|
||||
|
if (Input.GetKeyDown(KeyCode.A)) |
||||
|
{ |
||||
|
currentItemIndex--; |
||||
|
if (currentItemIndex < 0) |
||||
|
{ |
||||
|
currentItemIndex = 0; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
//Move the focus to the right if possible
|
||||
|
if (Input.GetKeyDown(KeyCode.D)) |
||||
|
{ |
||||
|
currentItemIndex++; |
||||
|
if (currentItemIndex >= this.Model.inventory.GetItemCount()) |
||||
|
{ |
||||
|
currentItemIndex = this.Model.inventory.GetItemCount() - 1; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
//Move the focus up if possible
|
||||
|
if (Input.GetKeyDown(KeyCode.W)) |
||||
|
{ |
||||
|
currentItemIndex--; |
||||
|
if (currentItemIndex < 0) |
||||
|
{ |
||||
|
currentItemIndex = 0; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
//Move the focus down if possible
|
||||
|
if (Input.GetKeyDown(KeyCode.S)) |
||||
|
{ |
||||
|
currentItemIndex++; |
||||
|
if (currentItemIndex >= this.Model.inventory.GetItemCount()) |
||||
|
{ |
||||
|
currentItemIndex = this.Model.inventory.GetItemCount() - 1; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
//Select the item
|
||||
|
SelectItemByIndex(currentItemIndex); |
||||
|
|
||||
|
//Confirm the selected item when K is pressed
|
||||
|
if (Input.GetKeyDown(KeyCode.K)) |
||||
|
{ |
||||
|
ConfirmSelectedItem(); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,12 @@ |
|||||
|
fileFormatVersion: 2 |
||||
|
guid: 84679d97889a19f4286eeae8f2f4e66a |
||||
|
MonoImporter: |
||||
|
externalObjects: {} |
||||
|
serializedVersion: 2 |
||||
|
defaultReferences: |
||||
|
- viewConfig: {fileID: 11400000, guid: 5d1182a6d5a724428b8167840f0dfa92, type: 2} |
||||
|
executionOrder: 0 |
||||
|
icon: {instanceID: 0} |
||||
|
userData: |
||||
|
assetBundleName: |
||||
|
assetBundleVariant: |
||||
Loading…
Reference in new issue