public T CreateObject <T>(MAPOBJECT_NAME name, float x, float y) where T : MapObjectBase, new() { var pool = ObjectPool.I.PullFromPool <T>(name); pool.SetPosition(x, y); pool.Start(); _mapObjectList[pool.Type()].Add(pool); return(pool as T); }
/// <summary> /// 게임에 나오는 모든 맵오브젝트들은 여기에 추가해줘야 쓸 수 있음 /// </summary> private void CreateObject() { for (MAPOBJECT_NAME i = 0; i < MAPOBJECT_NAME.MAX; i++) { switch (i) { case MAPOBJECT_NAME.PLAYER: { CreateObjectPool <Player>(1); } break; case MAPOBJECT_NAME.VAYNE: { CreateObjectPool <Vayne>(5); } break; case MAPOBJECT_NAME.BOSS: { CreateObjectPool <Boss>(1); } break; case MAPOBJECT_NAME.BLOCK: { CreateObjectPool <Block>(50); } break; case MAPOBJECT_NAME.BREAK_BLOCK: { CreateObjectPool <BreakBlock>(50); } break; case MAPOBJECT_NAME.BOMB: { CreateObjectPool <Bomb>(8); } break; case MAPOBJECT_NAME.EXPLODEBOMB: { CreateObjectPool <ExplodeBomb>(50); } break; case MAPOBJECT_NAME.BOMB_KICK: { CreateObjectPool <ItemBombKick>(10); } break; case MAPOBJECT_NAME.BOMB_RANGE: { CreateObjectPool <ItemBombRange>(10); } break; case MAPOBJECT_NAME.BOMB_COUNT: { CreateObjectPool <ItemBombCount>(10); } break; case MAPOBJECT_NAME.MOVE_SPEED: { CreateObjectPool <ItemMoveSpeed>(10); } break; case MAPOBJECT_NAME.TRANSFORM_FIRE: { CreateObjectPool <ItemTransformFire>(10); } break; case MAPOBJECT_NAME.TRANSFORM_STAR: { CreateObjectPool <ItemTransformStar>(10); } break; case MAPOBJECT_NAME.STAGE_PORTAL: { CreateObjectPool <StagePortal>(1); } break; case MAPOBJECT_NAME.ARCADE_PORTAL: { CreateObjectPool <ArcadePortal>(1); } break; case MAPOBJECT_NAME.SHOP: { CreateObjectPool <Shop>(1); } break; case MAPOBJECT_NAME.BAG: { CreateObjectPool <Bag>(1); } break; default: break; } } }
public T PullFromPool <T>(MAPOBJECT_NAME obj) where T : MapObjectBase, new() { T returnValue = null; List <MapObjectBase> pool = null; if (_dicObjectPool.TryGetValue(obj, out pool)) { if (pool.Count <= 0) { T newObject = new T(); return(newObject); } returnValue = pool[0] as T; pool.RemoveAt(0); _dicSpawnObject.Add(returnValue, returnValue); } return(returnValue); }
public void GetItem(MAPOBJECT_NAME itemName) { switch (itemName) { case MAPOBJECT_NAME.BOMB_COUNT: { if (GameStat.BombCount < GameStat.MaxBombCount) { InGameBombCount++; PlayerStat.ApplyItemStat(0, 1, 0, ref _itemStat); } } break; case MAPOBJECT_NAME.BOMB_RANGE: { if (GameStat.AtkRange < GameStat.MaxAtkRange) { PlayerStat.ApplyItemStat(1, 0, 0, ref _itemStat); } } break; case MAPOBJECT_NAME.MOVE_SPEED: { if (GameStat.MoveSpeed < GameStat.MaxMoveSpeed) { PlayerStat.ApplyItemStat(0, 0, 1, ref _itemStat); } } break; case MAPOBJECT_NAME.BOMB_KICK: { _haveKick = true; } break; case MAPOBJECT_NAME.TRANSFORM_FIRE: { ItemTable table; if (TableManager.I.GetItemTable(1, out table) == false) { System.Diagnostics.Debug.Assert(false, "Item Table Null"); } SetRide('♨', RIDE_TYPE.FIRE, table.Stat); } break; case MAPOBJECT_NAME.TRANSFORM_STAR: { ItemTable table; if (TableManager.I.GetItemTable(2, out table) == false) { System.Diagnostics.Debug.Assert(false, "Item Table Null"); } SetRide('★', RIDE_TYPE.STAR, table.Stat); } break; default: break; } }
public T GetObject <T>(MAPOBJECT_TYPE type, MAPOBJECT_NAME name) where T : MapObjectBase { return(_mapObjectList[type].Find((c) => c.Name() == name) as T); }