| 2237 | */ |
| 2238 | |
| 2239 | int CSequencer::Affect( int id, int type, CIcarus* icarus ) |
| 2240 | { |
| 2241 | IGameInterface* game = icarus->GetGame(); |
| 2242 | CSequence *sequence = GetSequence( id ); |
| 2243 | |
| 2244 | if ( sequence == NULL ) |
| 2245 | { |
| 2246 | return SEQ_FAILED; |
| 2247 | } |
| 2248 | |
| 2249 | switch ( type ) |
| 2250 | { |
| 2251 | |
| 2252 | case CIcarus::TYPE_FLUSH: |
| 2253 | |
| 2254 | //Get rid of all old code |
| 2255 | Flush( sequence, icarus ); |
| 2256 | |
| 2257 | sequence->RemoveFlag( CSequence::SQ_PENDING, true ); |
| 2258 | |
| 2259 | m_curSequence = sequence; |
| 2260 | |
| 2261 | Prime( m_taskManager, PopCommand( CSequence::POP_BACK ), icarus ); |
| 2262 | |
| 2263 | break; |
| 2264 | |
| 2265 | case CIcarus::TYPE_INSERT: |
| 2266 | |
| 2267 | Recall(icarus); |
| 2268 | |
| 2269 | sequence->SetReturn( m_curSequence ); |
| 2270 | |
| 2271 | sequence->RemoveFlag( CSequence::SQ_PENDING, true ); |
| 2272 | |
| 2273 | m_curSequence = sequence; |
| 2274 | |
| 2275 | Prime( m_taskManager, PopCommand( CSequence::POP_BACK ), icarus ); |
| 2276 | |
| 2277 | break; |
| 2278 | |
| 2279 | |
| 2280 | default: |
| 2281 | game->DebugPrint(IGameInterface::WL_ERROR, "unknown affect type found" ); |
| 2282 | break; |
| 2283 | } |
| 2284 | |
| 2285 | return SEQ_OK; |
| 2286 | } |
| 2287 | |
| 2288 | /* |
| 2289 | ======================== |
no test coverage detected