Skip to content

Instantly share code, notes, and snippets.

@dodikk
Last active August 29, 2015 13:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dodikk/9191315 to your computer and use it in GitHub Desktop.
Save dodikk/9191315 to your computer and use it in GitHub Desktop.
-(void)onLevelReloaded:( SCLevelResponse* )levelResponse
{
NSParameterAssert( nil != levelResponse );
NSParameterAssert( nil != levelResponse.levelParentItem );
self->_loadedLevel = levelResponse;
// register cells as content has been loaded
for ( SCItem* item in levelResponse.levelContentItems )
{
[ self.gridModeCellBuilder itemsBrowser: self
registerCellForItem: item ];
}
[ self.collectionView reloadData ];
[ self.delegate itemsBrowser: self
didLoadLevelForItem: levelResponse.levelParentItem ];
}
-(UICollectionViewCell*)collectionView:( UICollectionView* )collectionView
cellForItemAtIndexPath:( NSIndexPath* )indexPath
{
NSParameterAssert( nil != self->_loadedLevel );
NSParameterAssert( nil != self->_loadedLevel.levelParentItem );
NSParameterAssert( nil != self->_loadedLevel.levelContentItems );
NSUInteger cellIndex = static_cast<NSUInteger>( indexPath.row );
id itemObject = self->_loadedLevel.levelContentItems[cellIndex];
BOOL isLevelUpItem = [ itemObject isMemberOfClass: [ SCLevelUpItem class ] ];
UICollectionViewCell* result = nil;
if ( isLevelUpItem )
{
NSString* reuseId = [ self.gridModeCellBuilder itemsBrowser: self
reuseIdentifierForLevelUpItemAtIndexPath: indexPath ];
result = [ self.collectionView dequeueReusableCellWithReuseIdentifier: reuseId
forIndexPath: indexPath ];
}
else
{
NSString* reuseId = [ self.gridModeCellBuilder itemsBrowser: self
reuseIdentifierForItem: (SCItem*)itemObject
atIndexPath: indexPath ];
UICollectionViewCell<SCItemCell>* cell =
[ self.collectionView dequeueReusableCellWithReuseIdentifier: reuseId
forIndexPath: indexPath ];
[ cell setModel: itemObject ];
[ cell reloadData ];
result = cell;
}
return result;
}
-(UICollectionViewCell*)collectionView:( UICollectionView* )collectionView
cellForItemAtIndexPath:( NSIndexPath* )indexPath
{
NSParameterAssert( nil != self->_loadedLevel );
NSParameterAssert( nil != self->_loadedLevel.levelParentItem );
NSParameterAssert( nil != self->_loadedLevel.levelContentItems );
NSUInteger cellIndex = static_cast<NSUInteger>( indexPath.row );
id itemObject = self->_loadedLevel.levelContentItems[cellIndex];
BOOL isLevelUpItem = [ itemObject isMemberOfClass: [ SCLevelUpItem class ] ];
UICollectionViewCell* result = nil;
if ( isLevelUpItem )
{
// calls
// registerClass:forCellWithReuseIdentifier:
// dequeueReusableCellWithReuseIdentifier:forIndexPath:
result = [ self.gridModeCellBuilder itemsBrowser: self
createLevelUpCellAtIndexPath: indexPath ];
}
else
{
// calls
// registerClass:forCellWithReuseIdentifier:
// dequeueReusableCellWithReuseIdentifier:forIndexPath:
UICollectionViewCell<SCItemCell>* cell =
[ self.gridModeCellBuilder itemsBrowser: self
createGridModeCellForItem: (SCItem*)itemObject
atIndexPath: indexPath ];
[ cell setModel: itemObject ];
[ cell reloadData ];
result = cell;
}
return result;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment