#modeled from scratch for the pin and weapon and buttons
Explore tagged Tumblr posts
hyperionwitch · 8 months ago
Text
Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media
Melina is (almost totally) DONE, WHEW, so I wanted to get some preview-y detail photos in celebration.
(Photoshoot will HOPEFULLY be soon...and there will probably be nicer detail photos to go with that, but whatever. :P)
139 notes · View notes
fernwehbookworm · 6 years ago
Text
Woke the F*ck Up- Chapter 14
February 23rd, 2018
The news hit the next day. Lena Luthor was missing. Last seen getting off a flight at National City Airport. No one saw the car she got into or how she left the airport. Pain lanced through Kara's heart. The blurry image Winn managed to 'acquire’ from the NCPD shows Lena still in a beautifully elegant dress from the pictures from the gala in Metropolis. She had no luggage. She must have left the fundraiser and headed straight for National City.
Kara felt like a coward. Cat had tried to convince her to go. To see Lena face to face but Kara couldn't take any more rejection. Lena had never called or even text. That was clear enough for Kara. So Cat went alone, to auction off the original for the CatCo cover that broke the record in sales the first day. Kara promised Cat ten percent commission on every other painting sold. The only reason Kara could think of for Lena to come so suddenly is to see her.
If only she had gone to Metropolis. Then Lena wouldn't be missing. Kara suspected Lillian. How else would the crime boss get to a vigilante whose mother was halfway across the world taking the honeymoon she and Jeremiah never were able to take, whose sister was an FBI agent, and whose friends were vigilantes with her. Plus Lena was her daughter and could probably serve other nefarious purposes as well.
With determination, Kara strode to the hidden panel in the central command table and pressed he palm to the reader. A green light scanned her hand and the panel opened with a small gush of air.
“Whoa, I didn't put that there. Where did that come from?” Winn exclaims, sitting up in his chair, dropping his feet to the floor from where they had been perched by a computer.
“I put it here. I may not be you smart but I have a few tricks up my sleeve. Plus Alex has the same model and helped me to install it a while ago.”
Kara begins unloading the contents of the compartment on the table. Winn shoots to his feet and James turns from where he has been studying the layout of the Cadmus base.
“Kara, I thought you didn't like guns.”
“I don't like them. Doesn't mean I don't know how to use them. Alex made sure of that.”
“Kara…” James says disapprovingly.
“Don't fucking start with me James. Lillian has kidnapped Lena and now  that woman has gone too far this time.”
“You have no proof Cadmus has Lena,” James says.
“Lillian knows who I am. Of course she has Lena. This is personal now. She has been trying to take my city, she sure as hell won't take the woman I love.” Kara pauses as the word leaves her lips and knives through her heart.
“Kara, I thought you were past this. I thought that’s what all the therapy was for.” James says. Kara looks at him hard.
“Therapy was so I could handle everything in a healthy fashion. But I do love Lena. How we ended sucked, and it will take time for me to move past it, but I blaze like that leaves its mark. But I will not leave the woman I love in the clutches of her evil mother and a criminal organization.”
Kara begins strapping her collection to her uniform. Two handguns at her hips, a smaller one strapped to her right thigh, mirrored by an array of throwing knives on her left. Smoke and flash-bang grenades are loaded into the pouches at her waist. A shotgun is slung to her back. An ammo belt slings across her body as more ammo weighs down her utility belt.
“Kara I don't like this.”
“Have I not made it clear enough? James, you are only here to make sure you don't kill yourself doing this on your own. Because you threatened to do it on your own. I couldn't look my cousin in his eye if anything happened to you. But you are not my friend. You have done nothing to act like a friend. All you've done since the day I turned you down is mope and try to tell me what to do like some Alpha male who got his favorite toy taken away. Don't forget it was me that saved your ass. I don't fucking want you here. But you are because you are Clark's and Winn's friend for some ungodly reason. I couldn't give two shits what you think. And you can stay behind for all that matters.”
Silence falls after the angry ringing of Kara's words. James walks slowly away and back upstairs to the gym. Kara lets out an exasperated sigh.
When she’s dressed, she calls Alex to start forming a plan with the DEO. This was too big for just herself. Winn begins searching their known Cadmus bases for any new activity.
February 24th, 2018
Lena sits strapped to an uncomfortable chair for hours. Her mother seems convinced that that Power Girl would show up. Lena was much less sure but her throbbing lip from her mother smacking her across the month was enough for her to save her breath and any more unnecessary pain. By Lena’s best guess, a payment of three million dollars would be made to her kidnappers in less than twenty-four hours. Another two would be paid with her safe return. She had read the paperwork when she was made CEO, apparently, it was standard for Luthor’s to have their lives threatened. She could hear boots striking the floor outside the empty sounding room. Men patrolling, and, as near as she could tell, one would cross from one door to the other in the room to check her binding. It was getting colder and the dress left too much of her skin exposed. Chills ran down her spine and goosebumps rose along her arms and legs.
Silence stretches on, only timed by the repetitive hard soled shoes striking concrete. Lena’s eyes grew heavy from lack of sleep and the darkness of her blindfold. She dozed, only coming awake every time a knuckle-dragging, brute tightened her ropes. She thought of Kara in the silence. Leaving her, sleeping with Veronica, then never calling. She hoped Kara could forgive her. Or would at least talk to her. Everything was so messed up, her whole life was messed up from the moment the Luthor’s adopted her. Time ticked by slower and slower until Lena couldn't even tell if it was passing or standing still.
Then it all rushed to start again as the first gunshot rang out. Shouting began, distant and muffled but marching closer. Then a different sound. One above her, someone trying to be quiet but the distinct sound of glass being scratched, then a soft thud right in front of her.
Kara lowers herself from the glass ceiling to the floor. Lena sits blindfolded and alone, tied to the chair. Her lip is split and swollen. Lena’s head jerks up at the soft sound of Kara touching down in the large, empty room. Kara switches on the voice modulator in order to hide her shaking voice.
“Shhh, stay quiet now. I’m here to save you.” Lena stiffens at the almost digital voice.
“Power Girl. You can’t be here. It’s a trap. Go Now.” Lena whispers harshly, leaning away as best she could. Kara ignores her and works her pocket knife under the ropes.
“I won’t leave you here.”
“You will. My mother wants you dead. This city needs you.”
Kara’s hands still on the thick rope that she is almost through.
“I need you alive.” Lena’s head blindly turns to Kara’s voice as she whispers from behind her.
“You don’t even know me.” Snap. The rope breaks and Lena reaches up to remove her blindfold.
“I am not going with you,” Lena says and stubbornly crosses her arms, settling back against the hard chair.
“Ms. Luthor, please allow me to get you to safety.” Kara shouldn’t have been surprised by this but she was a little dumbfounded that anyone would choose to stay in the clutches of a criminal organization.
“The moment I stand from this chair, alarms will sound and this place will be flooded with my mother’s heavily armed lackeys with one goal, to kill you.”
“I knew this was a trap for me. Your mother was using you to get to me, but do you hear that? That is the sound of a government organization who wants to imprison your mother for terrorist crimes infiltrating this base.”
“No.”
Kara squats in front of Lena’s chair.
“Lee, trust me please.”
Lena’s eyes snap up to finally meet Kara’s. All Kara can hear is her heart pounding in her ears as she sees the recognition flood Lena’s features. Each heartbeat feels like it stretches out for hours. Kara watches as Lena carefully lifts her hands to Kara’s face, long elegant fingers pulling off her mask. Kara closes her eyes as she waits. Silence.
Blue eyes meet green and Lena knows.
“Kara…” She whispers, more of an escaping thought than a word said aloud. Kara touches the button by her throat to turn off the voice modulator.
“Now will you come with me?” Kara says softly, she holds out her hand and Lena places the mask in her palm. Kara replaces it before holding her hand out again. Lena looks away, biting her lip in that cute way she does when she is really thinking. Without meeting Kara’s eyes again, she places her hand in Kara’s and allows Kara to pull her up. As soon as Lena’s weight leaves the chair, alarms blare and lights flash. Kara begins pulling the flash bang grenades from her utility belt.
“Close your eyes.”
Lena eyes Kara carefully, like a person approaching a wild animal. Lena closes her eyes as the pounding feet and shouts get closer. Kara swiftly pulls the pins on the two grenades and rolls them towards the doors. She pulls the night-night gun from her belt and covers Lena’s head. Each grenade explodes just as the doors open and angry shouts turn to pain and confusion. As the men scramble to try and see again, Kara begins dropping each one with some sort of gun with accuracy that amazes Lena. She switches one clip out for another and continues to fire. Now the men rounding the corner were just tripping over the bodies of their fallen comrades. But soon some did start getting through, closer and closer as more men and some women burst through the two entrances. Some even began to fire their weapons, Kara somehow always between Lena and the bullets.
“And your plan is?” Lena says from behind Kara.
“In process.”
Kara slips behind Lena, throws her last two flash grenades and quickly attaching her rappelling rope to Lena and hitting the button for automatic retraction. Lena lets out a small squeal as she zips up and out of site. James was waiting for her at the top, once he detached her, he used his own rope to descend, bringing Kara’s back down to her. James used his shield to block for her as Kara reattaches the grappling device and ascends as well, James close behind. The conflict still brews below as DEO agents begin following the Cadmus guards into the room. Kara hulls herself over the edge and onto the roof. She sees Lena standing stiffly, far away from the edge, her back was turned and her fists were clenched.
“Lena?”
“Just get me down from here. I-I hate heights.”
Kara nods, even though Lena can’t see her. James just uses the zip line they set up earlier to escape the boundaries of the warehouse fence. Kara walks up slowly behind the woman.
“I’m going to pick you up now. Keep your eyes closed if you want. It will be over before you know it.”
Lena doesn't say anything so Kara takes it as a sign that it's fine. Lena stiffens at kara’s touch but doesn't pull away. Kara wraps one arm around her waist and guides her to the edge, in one swift movement, Kara is lifting Lena and hooking the grappling handle to the line to descend to street level again. She touches down in the alley between two buildings and expects Lena to pull away immediately, but she takes a deep breath before she does. James nods to Kara from his own bike before kicking it into gear and riding off. Kara nods to her own red and blue one when Lena turns to her. Lena huffs a bit then rolls her eyes but walks toward it, getting on after Kara. It feels all too familiar and all too foreign at the same time.
Even though it doesn't look it, whatever Kara is wearing feels like armor, under Lena’s fingers she can feel dents that remind her too much of when bullets hit a wall. Lena’s mind is racing and it's becoming all too much for her sleep-deprived brain. She decides to focus on the soft purr of the bike beneath her while leaning with Kara on each turn. She occasional catches glimpses the armored man she can only assume is the man dubbed Guardian by the news. The passing yellow street lights begin to lull her into a daze as the stars try to shine down through the haze of city light. No moon tonight, Lena notices idley.
Without warning, Kara makes a sharp turn down a ramp and into an underground garage. It takes a moment for Lena’s eyes to adjust to the bright fluorescent lighting emanating from the center of the dark room. Computers take up a large space on one wall, tech is scattered about with abandon as half-finished projects litter any surface not taken up by various weapons and armor. Other available space is taken up by exercise equipment. In a darkened corner Lena thinks she can make out a bed. Kara cuts the bike and the engine stills. She gets off and offers Lena a hand, Lena ignores it and slides off by herself. She sees the back of a mousy brown head that turns to reveal Winn. Guardian lumes behind him, still masked but practically radiating distrust and anger.
“Why would you bring her here?” The distorted voice of the metal man asks.
“Because she deserves to know. Now take off the helmet James.”
Lena watches the man stiffen and practically growl before removing the helmet and slamming it on the table.
“What the hell, Kara?”
“You really didn’t think she could figure out who you are after knowing who I am and then seeing Winn? Get over yourself.”
“I came back to help you .”
“You came back because you want to be a hero. Don’t pretend it was selfless.”
Lena watched as James angrily turns on his heel and walks away. He enters another room and lets the door swing shut behind him. Lena feels extremely awkward and unsure.
Kara takes a deep breath, Lena watches her shoulders rise and fall. As her argument progressed, she had stepped between Lena and James almost protectively. Kara’s hands are clenched into shaking fists, she takes another breath and slowly uncurls her fingers.
“Sorry about that. James and I have not been seeing eye to eye lately, or ever.” Kara turns to face Lena with a half-hearted smile. She takes back off the mask and sets it on a nearby table. Instead of responding to her, Lena turns to Winn.
“Winn, it’s good to see you.”
“It’s good to see you safe too, Lena.” He grins at her but glances at Kara and decides to make himself scarce. He heads to the staircase leading to what Lena assumes is the floor above. Kara opens her mouth but Lena holds up a finger.
“I need a phone.”
“Why?” Kara asks.
“So that my mother does not end up with three million dollars thanks to my life insurance. Phone, now.”
Kara rushes to give Lena hers, then waits as Lena goes through at least ten security checks varying in voice commands and typed in passwords. It all seems elaborate but considering the amount of money on the line it makes sense. Lena eventually hangs up and hands the phone back. Lena avoids Kara’s eyes and sits in what she can only assume is Winn’s chair. Her head throbs from lack of sleep, and food, and much too information. This was all getting too much to process. Lena can feel Kara watching her, but Lena rubs her eyes hard and takes a deep steadying breath.
“You are Power Girl,” Lena states, trying to wrap her head around it.  Kara nods as Lena's green eyes meet hers. It catches Kara's breath in her throat. Lena takes in the woman who held her heart, who stole it away from her chest before she even agreed to a second date. She stands with hunched shoulders, arms crossed, in her red and blue suit. Her blonde hair is braided and the tail is draped forward over her shoulder. Various dents and scrapes speckle the suit, bullet holes. That is why Kara danced around Lena like a tornado, every bullet fired hit Kara instead of Lena, yet here she stands, not even in pain.
“So all those missed flights, all the calls that were sent to voicemail, you were off saving the world.”
“Yeah,” Kara says softly.
“And… and that night. That was my mother, wasn't it? She did that to you. She made you miss your flight. And I…” Lena swallows hard and loses her voice as she pieces together the gaps in everything. Tears spring to Lena's eyes.
“We had finally found a Cadmus base. They were making a bomb. I was calling Alex for back up-”
“Alex?”
“Yes. She works for a secret government organization tasked with taking down Cadmus.” Lena rubs her temples. Her headache is pounding.
“So while I was calling Alex, I saw your mother walk into the room from my vantage point. I just knew she was the head of Cadmus once I saw her. She was going to get away before the strike team could come. I decided James and I could stall that long. But we couldn't. I lost conscience and woke up in a black ops site infirmary a couple days later. By then, I was too late.”
Silence falls heavy on the pair. The darkness of the room seems to be trying to suck out the lights that they sit under. It stretches for minutes. Lena hears Kara take a breath but before she can speak her phone rings.
“Alex?” Kara says into the speaker. A muffled reply.
“You want me to bring her to the DEO?... Yes… Okay…. See you in fifteen.” Kara hangs up.
“They need to debrief you on your kidnapping. Also, Alex wants you to be examined and make sure none of your injuries are life-threatening.”
Lena just nods and stands to follow Kara back to her bike. Lena can take in the sleek design now that there is light. This time Kara takes the time to hand her a spare helmet before hopping on. As soon as Kara grips the handles, the bike purrs to life. Lena is impressed. She may have not been interested in technology these past few years but this looks very high tech. Lena climbs on behind the blonde vigilante and resigns herself to more hours without sleep.
Kara takes more turns than Lena can count and after the first dizzying few, Lena closes her eyes and rests her head against Kara's back. She feels Kara stiffen slightly before relaxing. All too soon Kara pulls into a nondescript garage and is helping Lena off and supporting the sleepy brunette as they walk to the elevator. Everything else is very dreamlike as Lena fights to stay conscious. She is aware of figures in black moving about the most open space as Kara practically carries her to a central command desk.
“Kara!” A familiar voice calls. Lena tries to focus on the fuzzy face and recognizes Alex.
“What the hell happened to her? Why didn't you bring her here first?”
“I think she's just tired. And I wasn't sure if the secret government organization tasked with taking down the Luthor's would want me to bring a Luthor into it.”
Lena struggles to stand fully on her own two feet and focus her eyes. How many days has it been now? Two? Three?
“Agent. I have been drugged, tied up, kept without food and minimal water. Also, I don't know the last time I slept. So, if we could move along with whatever you want to do, by all means.” Lena is impressed with how clear her voice is.
“Come on. I want to examine you, we will get you a change of clothes, some food, and a bed. Once you've slept, my director would like to debrief you personally.” The redhead sounds cold but the idea of food and a bed is too much.
They stick Lena inside of some sort of on-duty room after Alex is sure her injuries are minor. It has a bathroom with a shower, a bed, and a small television. She takes the opportunity to rinse off at least some of the grime from the past couple of days and reemerges to a change of black sweats and black long sleeve shirt, both emblazoned with some sort of eagle logo. Gratefully, she puts those on and throws the ruined dress in the small trash bin. A soft knock and a man also dressed in all black is handing her a tray with a sandwich, chips, and a bottle of apple juice. Lena hardly gets halfway through it all before the bed is calling too loudly. The mattress is lumpy, the sheets scratchy, but her body doesn't care. It had been too long.
February 25th, 2018
In the morning, Lena meets the Director. A very serious man named John Jones. He asks a bunch of questions, most of which Lena has no answer for. She directs him to her CFO, reassuring him that Jess will be open with him in sharing the information he needs. Lena is released and an Agent is assigned to take her to the hotel of her request, A protection detail was also following in the car behind, they would stay with her until her mother was found. She had somehow slipped away in the chaos.
Despite being told she had slept twelve hours, Lena was exhausted. All she wanted to do was crawl into her bed back in London where she felt safe and loved with the Arias women. She slides her card into the door and when the light turns green she escapes into the room as men take up position outside the door.
“Lena!”Jess exclaims and throws her arms around Lena before she can even let the door swing shut.
“Jess!” Lena tightens her arms around her CFO and soaks up the warmth of someone who has always told her the truth, even when it hurt.
After a few moments Jess seems to recollect herself and tries to pull away but Lena tightens her hold.
“I am so glad to see you,” Lena says softly.
“I was so worried when we got word that you were missing. I thought… and God I hate that I thought it… that maybe you went off the deep end of a bender.”
“Well, that does sound like me. But no. No drugs, not since I moved in with Sam and Ruby.”
Finally, Lena pulls back and lets Jess go. Her former assistant walks further into the room and hands her a change of pajamas that were already laid out next to a change of clothes for the next day. A new phone is charging on the hotel desk. Jess catches Lena eyeing it as Lena buttons up the sleep shirt.
“Don’t worry. I pulled your last backup from right before you left London.”
Lena nods and stifles a yawn. Jess ushers her to the bed and actually tucks her in. Lena is too tired to be embarrassed to care as Jess strokes her hair back before turning off the lamp.
3 notes · View notes
vagrantblvrd · 7 years ago
Text
Cat Scratch Fever (1/1)
Summary: It’s possible that Trevor’s bitten off more than he can chew.
“Here, kitty, kitty, kitty!”
Trevor rolls his eyes at the goon’s delighted little chuckle. Such a clever joke, as though Trevor hasn’t heard it before.
Notes: Prompt fill for @rhinnie who asked for Alfreyco. (And also went and reblogged this and my brain was like "Oh, hey, Catwoman!Trevor" because those damn gloves.)
This is like. An alternate version of that AU we've been tossing back and forth, so yes.
AO3
It’s possible that Trevor’s bitten off more than he can chew.
“Here, kitty, kitty, kitty!”
Trevor rolls his eyes at the goon’s delighted little chuckle. Such a clever joke, as though Trevor hasn’t heard it before.
There’s a burn in his thighs – he’s really let himself go, hasn't he? Gotten soft the last little while, and there was a reason he didn’t linger on his reflection in the mirror before setting out tonight. (The suit is skintight, after all, and offers no mercies.)
Soft or not, muscle memory is a beautiful thing and he’s not so out of practice that he doesn’t know what to do next. Flash drive of vital information tucked away safely in a compartment on his belt, sharp little claws that pop out when he flexes his hands just so, the right amount of pressure along the mechanism and he swings out of cover and starts his run.
Fast and light on his feet as he uses an overturned crate to launch him towards the goon. Big burly gentleman with questionable facial hair and atrocious fashion choices – those boots with that tactical vest? Appalling. (He knows it’s stereotyping, but he can’t imagine the brute has good dental hygiene when he looks like that.)
The goon starts to turn, and Trevor grins as he sees the flicker of surprise on his face before he strikes. Hand flashing out to the strap of the weapon, claws catching in the weave before he wrenches and they slice through.
Jerks, and the rifle goes clattering somewhere off to their left, and Trevor follows up wth a closed fist because the classics never go out of style. (That, and he doesn't want to maim the man. This isn't personal, after all.)
The goon grunts, staggering back a step and Trevor puts more of his weight behind the next blow, and the poor bastard finally drops.
Trevor pauses to check that the goon’s still breathing, not about to die on him and continues on his way out of the building quick as he can. The noise will draw other guards, and Trevor’s not stupid enough to stick around to see it.
Not when he’s gotten what he came here for.
Outside the city is loud and dirty and a jarring difference from the quiet confines of the office building. Disorienting, almost, but Trevor keeps moving. Passes by the little alcove where he left a folded up trench coat and trendy little fedora and strolls casually to a side street where the battered little car he’s...acquired waits patiently.
Beaten up thing, scratched and faded paint and a stubbornness to it he admires because it refuses to quit on him. Struggles up the slightest incline, gears grinding when he shifts gears, but by God does it keep trucking along.
========
Technically, Trevor’s retired.
Left the business a few years ago and settled down with a nice boy.
Trevor had his job working at an animal clinic (ha, ha, ha) and Alfredo worked for a security firm in the city. (Oh, the irony.)
They’d been happy, or so Trevor thought. Pair of idiots getting by best they could. Someone he played off perfectly, Fredo always willing to roll with whatever insanity Trevor got caught up and vice versa, but then -
Oh, but then.
Alfredo slowly pulling away, citing problems at work and Trevor hadn’t thought anything of it at the time. But then it got worse, to the point they rarely saw each other throughout the day. Phone calls went to voice mail, went ignored and he’d thought – thought -
Well.
He’d thought it was Alfredo losing interest, getting tired of Trevor and letting him piece it all together on his own.
This horrible feeling that that Trevor had been wrong about him all this time. His judgment flawed for not being able to see Alfredo as the kind of boy who’d just let things between them wither and die, and that had hurt far more than he expected it to.
Trevor muddling along like he wasn’t hurting, confused and stupid and naive for the first time in years.
And then he’d gotten a text from an old work buddy and an attached news article with a picture of Alfredo front and center with one of the biggest criminal names in the country.
One of many millionaires out west who lorded it over the city with his extravagant lifestyle and supposed stable of pretty, nubile things, and suddenly Alfredo in the mix.
Not exactly what he’d expected when Alfredo said he was headed to Los Santos.
And maybe there was some anger burning at the bottom of Trevor’s fragile little heart at everything that had happened.
So.
To Los Santos it was, that fire safe hidden under the floorboard in their bedroom closet cracked wide open and his old suit packed up along with a few essentials for the flight to the Golden State in search of answers he probably wouldn’t like.
========
Trevor’s not bad when it comes to computers, manages to get through the encryption on the files he’d stolen and sifts through them.
The motel room he’s staying in is small and dirty and cramped and he hates it. Hates this city full of people like him (worse than) and the fact that Alfredo is here.
He’s here and cuddled up to Ramsey of all people.
This respected figure in Los Santos with his millions sunk into a wide array of businesses and squeaky clean facade that falls apart the deeper you dig.
Goes by an old college nickname the journalists and bloggers of this city use fondly, something to do with his nautical-themed tattoos.
“’Corpirate,’” Trevor scoffs, fingers tapping out a restless rhythm on his thigh. “What a name.”
It’s the city’s worst kept secret that Ramsey is heavily involved in the criminal side of things in Los Santos. Operates out of the penthouse in one of the many buildings he owns in this city and shameless about it. All his wards in on things, helping him widen his hold on the city and so damn pleased with themselves.
Money and influence enough to keep him out of jail no matter how many times they go after him and his, and one of the reasons Trevor had made damn sure to avoid stepping foot in Los Santos before now.
But, Alfredo and Ramsey and answers Trevor needs if he wants any kind of closure at all.
He stares at the photos of Ramsey and his pretty little things.
The Brit he’d collected on his travels years and years ago, the first of many. The angry looking one from a business trip to the east coast that one time. The...well, there’s no readily available story for the one with the man bun, but rumors say he used to be a model in his youth, which could be more than enough explanation. The one with the beard is an old friend, confidant and supposed advisor and then Alfredo.
Newest addition to the fold, a quick blurb regarding his promising career in the military before a training injury landed him behind a desk counting down the days until his enlistment ended that fades into vague hand waving nonsense about his time in Liberty City.
“You always did look good in a tuxedo Fredo,” Trevor murmurs, and puts the laptop into sleep mode because he has work to do.
========
It’s a mystery as to how Trevor got the moniker he has when he’s working. There aren’t any adorable if impractical ears on his suit, no feline-themed gear he uses. (The claws are practical! They’re tiny little knives on the ends of his gloves that make climbing things a snap, and serve as useful weapons and tools in turn for his work.)
But such is man, he supposes, or something along those line because -
“Here, kitty, kitty, kitty!”
Trevor smothers a sigh in his hands, crouched low behind some hideous sculpture placed in an alcove in the hallway.
He’s rustier than he thought because so far he’s managed to trip several alarms and alert this annoying specimen of a guard.
Less brutish than the one at the office building, but only just.
To be expected, probably, because this is one of Ramsey’s little properties. Lovely little mansion up in the hills and a soiree taking place. Fundraiser for one of the charities he funds, the man himself glad-handing sponsors and critics alike and his pretty little things swanning about.
He’d meant to sneak in, get his hands on Ramsey’s personal files, but, again, rusty.
Too much time spent with his head in the clouds thinking he’d gotten his fairy-tale ending after all.
Trevor presses a button on the remote in his hand and a small explosive charge goes off down the hall. (Goodbye priceless vase, hello distraction.)
He waits a beat and creeps out, slow and careful. Quiet, quiet, quiet, and nearly has a heart attack when he hears a gun cock.
“Hands up where I can see them!”
Rusty.
Trevor complies, slipping one of his little gadgets off his belt as he raises his hands and slowly turns. Pasted a smile on his face and tries to remember that emotions get people like him killed, but it’s hard to keep in mind.
The goon with the gun blinks, genuine surprise on his face as he lowers it.
“Trevor?”
He really should think about reinvesting in a good pair of goggles, or a suit that covers his face one of these days if he’s going to come out of retirement.
“Hey, Fredo,” he says, all bright and cheery the way he used to before things turned Lifeinvader complicated.
Alfredo is staring at him in shock, and Trevor might feel a little bad about that if he wasn’t the reason Trevor’s here in the first place.
“I’d really love to stay and chat,” Trevor says, hooking the tip of a claw in the little pin and pulling just enough that the shink noise it makes when it disengages reaches Alfredo. “But I’ve got places to be.”
He sees Alfredo raise his gun and thinks, well, then, that answers that, doesn’t it? with this sharp little ache in his chest as he throws the tiny grenade as it starts hissing smoke.
========
This is a mistake.
The sort that’s guaranteed to get Trevor killed, but what’s a little risk now and then?
And besides, he doesn’t quite have his answers, does he.
Knows Alfredo is clearly working for Ramsey, running security or something else to investigate the disturbance Trevor caused at the party the other night. Seemed reluctant to pull the trigger on him, but perfectly able to aim a gun at him and -
The heat of the moment, most likely, or maybe Trevor’s just lying to himself. Making up excuses and clinging to them because he’s still in love with Alfredo even though it stands to get him killed, and yet here he is anyway.
“I’m an idiot,” Trevor mutters, flashes the poor woman sharing the elevator a reassuring smile when she inches away from the lunatic muttering to himself.
She doesn’t seem to buy it, but Trevor doesn’t push when he’s certain things are uncomfortable enough for her as it is.
Another night, another party for the filthy rich under the guise of raising money for charity. This time it’s being held at a swanky hotel and Trevor’s gotten his hands on an invitation.
Ramsey’s here with his “wards” and Trevor's an idiot.
Doesn’t know what the point of all this is, but it’s too late to back out now.
The elevator slows to a stop and Trevor lets the woman leave first, puts enough distance between them that it doesn’t feel like he’s following her and then he’s through the little security checkpoint outside the ballroom where the party's being helped.
He mingles, bright smiles and pleasant laughter at their terribly bland jokes. Delicious hors d'oeuvres and oh, dear, is that a gun in his back?
“You’re not on the list.”
Trevor turns, oh so slow and finds himself face to face with the former model. Perfectly polite smile on his face and gun digging into Trevor’s ribs, and maybe he’ll take a pass on that little bacon-wrapped bit of deliciousness on the refreshment table he’s been eyeing.
“This is true,” Trevor says, and smiles.
The guy, Haywood, raises an eyebrow and nudges Trevor away from the party and to a conference room down the hall.
Ramsey’s inside, along with his entourage, including Alfredo, who looks -
Not happy.
Ramsey’s watching him, hands in his pockets and this tired little smile on his lips.
“Never expected to see you in Los Santos,” he says, and of course he knows who Trevor is. (Was?)
Trevor shrugs.
“Times change,” he says, and looks at Alfredo in his sharp tuxedo. “People change.”
Behind him Haywood growls, and Trevor doesn’t roll his eyes at that bit of unnecessary drama, but it’s so very tempting.
“Yeah,” Ramsey says, glancing at Alfredo who’s got himself all locked down. “They do, don’t they.”
“Hmm,” Trevor agrees. “I don’t have a problem with your little operation out here,” Trevor says, because showing weakness here would be a major misstep, but he didn’t come this far to make enemies. “Just wanted to have a little chat with Alfredo.”
That sets off a ripple through Ramsey’s crew- that’s what they are, the truth the rumors don’t get close enough to. Not wards or bedmates (or at least not all of them, Trevor’s still not sure about Patillo), but his crew.
Operating in plain sight and the authorities helpless to do anything about it lest they show their own hand. All the dirty little secrets, the bribes and corruption and everything Ramsey and his have been slowly purging the city of so they can set up their own little empire.
Lets the rumor mill run wild as he goes around town with one (or more) of them on his arm and no one the wiser because they’re all old hands at this game by now. Give the public what it wants, expects to see and they don’t bother to look further.
“Oh, you didn’t know?” Trevor says, unable to stop because there’s that little ember burning away in his chest. Anger and hurt and confusion. “Fredo, honeybun, how could you?”
Alfredo’s composure cracks, has him choking on the horrendous pet name Trevor’s only used to terrorize him in the past.
“Uh,” Ramsey says, not sure what to say. “What?”
“I’ve got this, boss,” Alfredo says, and bustles over to grab Trevor by the arm and drags him out of the room.
========
“Honeybun?”
Trevor shrugs, leaning on the balcony railing that overlooks the city streets below.
He doesn’t think Alfredo took him to this quiet spot to murder him, but if he did the view is spectacular.
“Would you prefer pumpkin truffle? Honey badger?”
Trevor has a list thanks to the dark corners of the internet where the tragically romantic reside with their heart-patterned backgrounds and flowery prose.
“Oh my God,” Alfredo mutters, helpless smile and odd little laugh like he’s trying not to laugh, indulge Trevor in this terrible thing. “What?”
Trevor shrugs, heartburn or something else acting up at the way Alfredo’s looking at him and looks back at the city.
“The internet is a strange and terrifying place,” he says, and leaves it at that, because it’s the horrible truth.
Alfredo mutters something Trevor doesn’t quite catch as he moves to stand next to him.
“I thought I was doing the right thing,” he says, sheepish note to his voice given the situation at hand. “Ryan and Jeremy tracked me down, asked if I wanted a job that would make a difference.”
That.
“And,” Alfredo says, because he knows Trevor. “I didn’t want to get you caught up in all this.”
From the corner of his eye Trevor sees Alfredo’s hand as he gestures at Los Santos.
Beautiful from up here, so far from the rot and corruption it’s built on. Easy to forget what the city is like when you’re so high above it that the details fall away.
Trevor snorts because that’s a convenient lie, isn’t it? Worry about little old Trevor, helpless damsel in distress and break his heart because that’s the right thing to do.
“The ‘right thing’”, Trevor says, and hates how bitter it sounds. Not sure if it’s directed at Alfredo or himself, because he hasn’t exactly been forthcoming with his own little secrets, has he.
Figured it was for the best if Alfredo didn’t know about Trevor’s former line of work, and look where it’s gotten them.
“Ryan and Jeremy,” Trevor says, something about the names oddly familiar. Stories Alfredo used to tell him about his days in the military. “The ones - “
“The Battle Buddies,” Alfredo says, and when Trevor looks at him, he’s grinning. “Lost track of them after they, uh. You know.”
Faked their own deaths, seeing as how they’re both alive and committing crime here in Los Santos.
Trevor rubs his eyes, and wonders what kind of hole he’s fallen down looking into the mess his life turned into. Following Alfredo out there and picking up old habits he thought he’d shaken a long time ago.
“Ah,” Trevor says, and wonders where they go from here.
“I’m sorry,” Alfredo says, and he sounds it. Like the idiot he is, trying to be noble about things. Wanting to do the right thing by doing the wrong thing and Lifeinvader really does have it right, it’s a complicated thing, this. “I could have done it better.”
Trevor snorts.
“You could have not done it at all,” he points out, but there’s no heat to the words, just an observation. “And I could have told you about me.”
International thief, back in the day, and a damned good one. A little rusty nowadays, because he’d settled down, gotten soft. (That little ember in his chest fizzling out because he’s just as much to blame for this as Alfredo is, always suspected he’d muck things up like this.)
Alfredo’s acting shifty all of a sudden. Darting these little looks at Trevor, biting his lip to keep from blurting out whatever he’s thinking. This look like he has something he wants to say but might die of embarrassment if he does.
“What?”
Alfredo clears his throat, thumping his chest like that’s going to help.
“So,” he says, all casual and non-nonchalant, like he’s not a lech. “That suit.”
========
It’s not all roses and sunshine or however that particular little saying go because the ground between Trevor and Alfredo’s all broken up, footing uncertain.
Big lies that gave birth to little ones and sorting through all of it’s going to take some time, but they’re making steady progress.
No plans to settle down just yet because it takes a lot of work to build an empire and they’re busy, busy people these days.
Ramsey made the mistake of offering Trevor a job. Thought it would be a good investment on his part to have an in-house thief at hand, and Alfredo was good enough not to tell him the kind of trouble he was getting himself in for, which was a good thing, really.
Because this new life Trevor’s building for himself here?
A nice boy like Alfredo with the training he has, and a troublemaker like Trevor with all these tricks up his sleeve and this nice little crew of Ramsey’s backing them up?
Los Santos was made for people like them.
Belling the Cat
27 notes · View notes
guidescopes-blog · 7 years ago
Text
America’s Rifle: To Build Guide
The spike in popularity of the AR-pattern rifle can likely be attributed to a variety of factors, but one undeniable reason these lightweight semi-autos are so celebrated is their incredible modularity. One visit to a gun shop or online outdoor retailer will show the endless array of aftermarket parts, with upgrades available down to the smallest detent spring or magazine release button.
rifle bore guide america
This modularity allows owners to trick out their rifles however they please, turning conventional carbines into refined rifles. Moreso, those seeking a completely custom rifle from the ground up can build the AR of their dreams piece by piece, as opposed to buying a stock, out-of-the-box rifle.
Tumblr media
We’ll take a look at some of the pros and cons of the (sometimes heated) built vs. bought discussion.
Build it
With so many parts options readily available, would-be AR owners can configure their AR from scratch, purchasing each component individually and assembling their rifle at home.
Advantages:
No compromise: You get the rifle you want, with nothing you don’t need. Rather than buy a manufacturer-stock rifle and spending more on the parts you truly want to add on later, building your rifle gives you the features you’re looking for, and you’ll likely be stuck with fewer unnecessary extra parts when you’re done.
Armoring experience: One of the best ways to familiarize yourself with your AR is to disassemble and reassemble, learning the intricacies and minutiae of the system. Building an AR gives owners an education in how the rifles are constructed and how they operate, which can come in handy when it comes time to replace parts or help a fellow AR owner in need with quick fixes. It’s no replacement for skilled gunsmithing, but it’s definitely a valuable set of skills to have. Even if you’re not quite ready to buy a stripped lower receiver and break out the roll pin punches, options exist to get a more customized setup than an off-the-rack rifle may offer. Many manufacturers and retailers offer separate complete lower and upper receivers, so buyers can mix and match brands, barrel configurations, and even calibers (depending on compatibility) to produce a unique AR without needing to dig into advanced armoring techniques.
Special delivery: If you purchase a new rifle online, you’ll need to have the firearm shipped to a local Federal Firearms License, or FFL, holder for them to run the appropriate background check before releasing the firearm to you. If you decide to build a rifle from the ground up, the parts, from the barrel to the buffer tube, fire control group to the upper receiver itself, can be shipped directly to you. However, to obtain the lower receiver, it must be cleared through an FFL dealer before you take ownership. The same is true at a gun shop; many shops offer a variety of rifle components you can purchase in-store and take home to work on your rifle, but the lower receiver – stripped or complete – requires transfer through an FFL.
Disadvantages:
Watch your wallet: While building your AR can sometimes produce a capable rifle for less money than a factory stock gun, it can also wind up becoming a money pit if you’re not clear on what you want, keep opting for add-ons, premium or competition-grade components, or changing your mind mid-build. It’s great to be able to selectively upgrade components as your requirements demand, but what could’ve been a $600 project can turn into a $1,500 behemoth if unplanned.
It’s not a toy: Building an AR provides a fun, educational and rewarding experience for those who commit to the craft. However, always remember that these are powerful firearms and require serious attention to detail and patience during assembly. Barrels need to be properly headspaced, barrel nuts need to be torqued accurately, gas blocks require precise fitment, gas tubes must be aligned with gas ports and fit cleanly into bolt carrier gas keys, etc. If you’re not completely sure how to safely and correctly assemble your components into a functioning AR, definitely visit a gunsmith. Haphazardly slopping an AR together could result in injury or worse – you need to know what you’re doing. Worth keeping in mind, those seeking to learn gunsmithing from certified instructors can do so through NRA Gunsmithing Schools, for which more information is available at
Tool time: As assembling ARs requires precise measurements and tolerances, you’ll need specialized tools to properly get your rifle together, something you’ll need to factor in when pricing your setup. To properly build your rifle from stripped receivers, you’ll need an armorer’s wrench, a set of roll pin punches, a level, a vise and receiver vise blocks, a torque wrench, screwdrivers and more. While you’ll benefit from having these tools around regardless whether you build or buy and get tremendous value from them in the future, the initial investment of collecting these essentials can add a significant amount to the bill for a first-time builder.
Buy it
While building gives license to construct a custom creation to turn heads at the range, modern manufacturers offer more options than ever, and through their diverse product lines can often deliver a rifle that meets or far exceeds the demands of the customer, right off the bench.
Advantages:
No hassle: Buying a stock AR-pattern rifle that meets your needs is the easiest, quickest way to get into modern sporting rifles. Manufacturers offer hundreds of configurations, and with solid research and advice, most shooters will be able to find a rifle they want and get it on the range without having to take the time to piece their firearm together.
Trust the experts: Buying an AR rather than building gives owners peace of mind that as long as the operator follow instructions (read your manuals!) when using their new firearm, it’s going to work as advertised. Manufacturers are in the business of gunsmithing, and know what they’re doing when designing and assembling rifles. They have the tools, equipment, processes and expertise to construct a safe, functional firearm, so you can focus on shooting. For those with no armoring experience, this is certainly a consideration when it comes to safety.
Fitment and compatibility: When building, you have the option of picking components from different manufacturers. However, that assumed flexibility may not always come through, as some components have varying tolerances and dimensions, and may not fit or work properly with all parts. While AR systems generally share interchangeable pieces, you may wind up with parts that just don’t work together. Buying a complete rifle ensures the components fit together properly and work as advertised, taking out the guesswork and potential of making costly mistakes for prospective buyers.
Disadvantages:
Plain Jane: Buying off the shelf will give you a functioning, ready-to-shoot rifle, but depending on what you choose, you may feel underwhelmed at the features it offers. You can always upgrade parts as you go to give you the custom gun you want, but that costs more money and time, and could potentially wind up being more expensive than if you had built from scratch in the first place.
Not all ARs are created equal: While buying manufacturer-complete rifles ensure you’ll get a firearm that’s designed to fit and fire correctly, you may find some stock guns won’t accept aftermarket upgrades or replacement parts. Some manufacturers use proprietary components, like barrel nuts, handguards and gas system elements. If you want to be able to add on extras or swap out gear as you go along, do your research before settling on a complete rifle.
Cashed out: As discussed, manufacturers offer endless options in the AR market, offering models complete with modern rail systems, drop-in trigger assemblies, bundled optics and advanced stock systems to create high-end, performance-driven firearms. While this is an easy way to get a top-shelf rifle without picking components piecemeal, it also is just as easy to dig your way into a hefty bill. Building allows users to construct similarly capable weapons where they have complete control over which components and brands they opt for, allowing them to also choose where and what to spend extra on to get the desired result. Also, if time isn’t a factor but cash flow is, building allows users to spread out their purchases over time and patiently construct their gun, which may be a better option for aspiring AR owners on a budget.
Every AR buyer and owner is different, and has a variety of factors that will drive their decision to build or buy and AR, be it budget, time, experience, demands or other reasons. Regardless of whether you go for a reliable stock gun, or roll up your sleeves and start building a masterpiece, always keep safety first, and consult a professional gunsmith if you run into any issues or problems. As always, NRA Certified Instructors are available to provide world-class training and education to shooters of all disciplines.
Need more information about training with your AR? Interested in shooting in a match? The NRA America’s Rifle Challenge, presented by Daniel Defense, lets owners of America’s most popular new rifle platform develop and showcase their AR skills. Visit for more information about training courses and matches.
1 note · View note
echoeternally · 8 years ago
Text
Birthday Gift! (Slippy/Fox)
Hello matsutzu & readers! By following this story, from the index here, you’re agreeing that you ship Fox with Slippy, which is a more adorable than it’s given credit for. Plus, it’s got a best friends to lovers angle, so, yeah, the good stuff. 
Anyway, continue on ahead if you want some Slippox romance! And enjoy! 
[LAB/SLIPPY]
 Making his way through the dimly lit corridors, Fox knocked on a door with a keypad labeled “LAB” next to it. He listened and heard a scuffle from within.
 “Whoa, yikes!” A clatter rang out from behind the door. “Uhh…wh-who is it?”
 “Slippy, are you ok?” Fox rubbed behind his head. “It’s Fox.”
 “Oh, Fox! Just a second!”
 More clanging sounded from behind the door, and Fox’s ears fell as he scratched behind his head. They perked up again as the door opened, and he glanced down at his toad friend, who nervously smiled up and tapped a wrench against his hand.
 “Um. Hi.”
 “Hey.”
 “Is…did I forget laundry duty again?”
 “Huh?”
 “Peppy usually reminds me of when I forget…” Slippy blinked and blushed at Fox. “Uh, anyway, what’s up?”
 “Well, I just wanted to check in on you,” informed Fox. “You’re busy in the lab, and I had some time, so…I wanted to see if you needed help.”
 “Really? That’s so nice, Fox!” Slippy beamed, but then quickly frowned. “We still don’t have any missions or anything?”
 “Nope.”
 “That’s not good…we could use the funds,” murmured Slippy. He perked up again. “Though, at least we’re not in terrible shape!”
 “Yeah, right.” Fox peeked over Slippy, gazing at the lab’s disarray. “Although—”
 “Don’t even think it.”
 “Ha. Sorry.”
 “Well, come on in,” insisted Slippy. “I don’t want to keep you out in the hall all night.”
 “Thanks.”
 Shuffling in after Slippy, Fox glanced around the room. One desk was cluttered with different kinds of metal objects and tools, though Fox couldn’t place everything past a screwdriver at a glance. Another desk had a blaster lying on it, with different and unfamiliar vials for its ammunition. Crates were scattered around the room, some neatly opened, others cracked open, and the remainder still sealed.
 “So, ah…what are you working on, Slip?”
 “Better question is what am I not working on, right?”
 “That too.”
 “Well, I’m testing the different laser types that our blasters can hold over there,” pointed Slippy, back at the vials. “The normal ammo works, but I’m working on developing different kinds based on situations. The red one can burn things, the blue one freezes, types that that.”
 “Huh. Interesting.”
 “Yeah. And then there are the reflectors and barriers over there.” Slippy pointed to the back corner, where a hexagonal device rested next to a smaller, round pin. “I feel like they should be more versatile as well, given that different kinds of attacks can expose weaknesses that we’re not prepared for.”
 “Such as…?”
 “Well, the barrier is meant more to take hits rather than send them back,” disclosed Slippy. “Meanwhile, the reflector is good at sending attacks back, but it’s not as well covered. One lasts longer than the other, one takes more types of blows, and I feel like there should be a way to combine the two.” Slippy adjusted his cap. “If I could just figure out what functionality could intermingle with the other, it would work out. But for now, they’re stuck as separate devices.”
 “Um…that’s good,” decided Fox. “And these two projects are on top of how many more in here?”
 “Just the works in here?” Slippy shrugged. “In this room, I’ve got at least seven. Some of it is just small, tinkering stuff. Like the communicators, I’m trying to upgrade them as wristbands, so that we can access databases and networks of nearby locations.”
 “Wait, I’m still back on you having just seven projects in here,” murmured Fox. “How many do you have total?”
 “…Uh…is that including just what’s on the Great Fox, or also Space Dynamics with my dad, or—?”
 “Slippy!” Fox folded his arms as Slippy jolted up. “It’s a wonder you can ever keep up with our missions! You run yourself ragged over the amount of work you take on.”
 “Nah, it’s not…” Slippy counted out his works briefly again. “Ok, maybe it is that much, but I can handle it!”
“You could at least ask for some help,” scolded Fox. “Why didn’t you come to anyone else to work with?”
 “Because I can do it myself, honest!”
 “Working alone is less effective than working with others,” debated Fox. “Even if we can’t keep up with this stuff as well as you can, we can at least contribute a little.”
 “Hey, you can keep up just fine, and so can Peppy,” defended Slippy. “…Maybe less so for Falco’s case, but that’s besides the point.” Slippy sighed. “It’s just something that I want to do alone. I want to…it’s just easier for me to work like that.”
 “Well, tough luck, then.” Fox leaned against a desk. “I’m here to help, whether you like it or not.”
 “Fox, it’s late.”
 “So? What, were you going to stay up through the night while everyone else rested?”
 “N-no!” Slippy massaged his temples. “I was planning on resting…just a little…later.”
 “Then we’ll both be waiting until then.”
 “Ah, Fox, no.” Slippy frowned. “Now you’re making me feel guilty for—”
 “For what?” Fox smiled. “I’m offering to help you, Slippy. Just accept it.”
 “…Sorry.” Slippy tugged his cap down. “I just…I just want to…”
 “Want to what?”
 “…Nothing. We should get busy.”
 Slippy turned and tripped over a small metal crate. He stumbled, but Fox was quick to catch him. He helped Slippy up, as the toad blushed and pulled away from Fox.
 “Thanks, sorry, I didn’t mean to—”
 “It’s ok, Slip.” Fox patted his back. “I’m just happy I can catch you.”
 “You always have to save me.”
 “Of course. You’re my friend.” Fox shrugged. “Friends help each other.”
 “Yeah, but…sorry, we’re wasting time.” Slippy took Fox’s hand and tugged him along. “Over to this desk, come on.”
 In the far left corner of the laboratory, Slippy brought Fox to the last desk, crammed between shelves. A model of a tiny Gyrowing rested before them, with schematics on screens around them.
 “See, I’m trying to improve the functionality of these too,” revealed Slippy. “I’m testing on making the Gyrowing a little faster and defensively capable. Research could be furthered if it was more capable to be used in hazardous environments.” He smirked, looking up and down at Fox. “Of course, it’s a little more compact in development, but I’m sure there’ll be room for at least two.”
 “…So, more like the Arwing, but smaller?”
 “Well, no, that’s…that’s exactly what it would turn into, wouldn’t it?”
 “Kind of sounds that way, Slip.” Fox shrugged. “I’m sure that it comes with more methods of exploration and less of…uh, fighting, right? Arwings are designed for more combative situations. That’s different.”
 “Sure.” Slippy dropped his head on the table on groaned. “I’ll come back to it later.”
 “Um…”
 “Don’t worry about it, Fox,” insisted Slippy, picking his head back up. “Come on, we can still work on pump-action blaster.” He started to walk across the room to another desk. “It basically holds a stronger blast that can be released—”
 “Like a charged blaster shot?”
 “…Yeah.” Slippy stopped and blinked. “That…makes it useless, doesn’t it?”
 “Well, no,” debated Fox. “It can be useful to have a weapon with its power as strong as another. And if its initial shot is a powerful burst that you don’t have to wait for, that’s a good idea.”
 “Maybe, though a full charge on a blaster would still be more effective.” Slippy scratched behind his head. “Um, maybe we can start with the upgrades on the Booster Packs instead.”
 “Those packs that let us jump higher and hover briefly?”
 “Yes!” Slippy clasped his hands together, gazing over the backpack-like tech on the nearby table. “Now that’s a tool we can use more often! I mean sure, we’re usually in the Arwings, but when we have any infantry missions, this can help with scouting, and…and we’d completely give away our positions.”
 “Well, that’s possible,” agreed Fox, “but we can also reach higher grounds.”
 “So a sniper or fighter pilot could pick us off.”
 “Slippy, the Booster Packs are a good idea,” maintained Fox. “We can use them.”
 “Yeah, yeah, maybe we can…”
 Hesitating a moment, Slippy pressed a button on the pack, to which it short-circuited. Fox grabbed Slippy’s hand and pulled him away as the pack sparked. Moaning, Slippy buried his faces in his hands, before dragging them over his head and shaking it. Fox patted his back.
 “Just a minor setback, that’s all.”
 “Thanks Fox, but…” Slippy sighed. “I don’t know. You were complaining before about me overworking myself, but…these projects need a lot of effort in them. If they’re of no use to us, then…I am just wasting my time, and energy.”
 “Not everything needs to be perfect, Slippy,” soothed Fox. “I just don’t want you working yourself into the ground.”
 “But…I have to,” complained Slippy. “If these things have no use or if I can’t get them to work, then…what good am I?”
 “Whoa, Slippy, calm down.” Fox turned Slippy to him, but the toad kept his attention from Fox. “This isn’t a be-all, end-all. You’re not useless if a few projects don’t work.”
 “No, I really am.” Slippy sulked. “If these experiments can’t work, I’m not pulling my weight and contributing to the team. I’m not as capable piloting as the rest of you, and I’m not that strong in combative situations altogether.” He lowered his head, staring at the ground. “This is my best way to help, to be an integral part of the team.”
 “You already are, Slippy.”
 “That’s a lie, and we both know it.” Slippy dropped his shoulders. “I haven’t done enough lately, I’m not doing as well with practice, and I need to prove that I’m worth something.”
 “Who on Corneria would you have to prove that to, Slip?”
 “Everyone!” Slippy jerked his head back up at Fox, tears in his eyes. “I have to prove to the whole galaxy that I’m just as smart and capable as my father! Falco constantly looks down on me, even if he apologizes. Peppy’s definitely got expectations for me, whether he’s blunt or coy about it. General Pepper wants all of us to be of use, and is just as expectant of me as he would be of my father. And you…” Slippy dropped his head. “I want to make you proud of me, Fox.”
 “Slippy, you’re my best friend,” reminded Fox. “We’ve been together since we were kids, and you’ve stuck by my side even at my lowest moments.”
 “You were there for mine.”
 “Right, but that’s my point.” Fox rested his hands on Slippy’s shoulders. “We’ll always be there for one another. That’s what friends do. You don’t need to impress me, I already have every confidence in your abilities.”
 “But…even that…it’s not enough,” determined Slippy. “Because, even still, you’re not…”
 “Not what, Slippy?”
 “…Fox, I…” Slippy gazed up at Fox. “…I want to…do more for you.”
 “Didn’t I just—?”
 “Yeah, you explained that I didn’t have to, but you don’t understand!” Slippy grasped his head. “I don’t want to just be someone that you believe in because we’re friends, or that we have been for years. I don’t want to just be someone that you can rely on, but don’t need to entirely hold out for. I don’t want to just be your friend. I want—”
 “Wait, what?”
 Fox blinked and stared at Slippy, as the toad muttered over his words. His eyes widened and he buried his face in his hands again.
 “I can’t believe myself…”
 “Slippy, wait, what do you mean?” Fox tilted his head. “You don’t want to ‘just be friends’ with me?”
 “…No.” Slippy sighed, and picked up his face, with a heavy blush settled over it. “Fox, I…I want…I w-want to be someone that can really support you. I want to be someone…someone that you care about, beyond just friendship. It’s not enough for me, because…I…I’ve…” Slippy shook his head. “I care a lot for you and about you, Fox. I want to be everything important to you.”
 “…Oh.” Fox dropped his hands. “I…I had no idea.”
 “And now you do.” Slippy weakly chuckled and laced his hands together. “And I can’t believe I admitted to that out loud. In front of you, no less. Um…uh…sorry, but can we, ah, just pretend that I…I never…you know, any of that?”
 “I’m afraid that we can’t, Slip.”
 “…Oh.” Slippy dropped his head. “That…makes sense. Sorry, I didn’t—”
 “Slippy, I wouldn’t want to forget that for my life.”
 “…Huh?”
 “My best friend just told his feelings for me.” Fox grinned. “That’s not something that I want to forget, I want to cherish that.”
 “…Um…is this going in a good direction, or is this something that Falco will tease me about later?”
 “The first…hmm.” Fox scratched his cheek. “I guess both, but it’s unavoidable.”
 “Great.” Slippy puffed out his cheek.
 “Don’t worry about him, though,” persisted Fox. “Because he’s not someone that you need to impress.”
 “Why not?”
 “Because your leader, best friend, and boyfriend told you not to, so if that’s not reason enough, I don’t know what is.”
 “Fox, you can’t just use everything against me at once…” Slippy froze for a moment. “…Did you just—did I hear—?!”
 “You did.”
 “Wait, really? Fox, do you mean it?!” Slippy wildly shook his head. “Wait, no. I didn’t earn that, no. I don’t want you to date me out of sheer pity, Fox.”
 “It’s not. I want to be with you because you and I care about one another so much.” He smiled. “There’s no one else that makes me as happy as you can, Slippy. You put so much love and effort into everything. I’d hope you could do the same for me.”
 “Yes! Fox, yes, absolutely!”
 “Good. You just have to stop being so hard and down on yourself.” Fox nodded. “You don’t need to exert yourself so much for me, or anyone else besides yourself. Do what makes you feel happy and accomplished.”
 “I…I don’t know if that will happen right away,” admitted Slippy. “But, if you can help me, I’ll make it there for sure.”
 “Of course. I’ll be with you every step of the way.”
 “That’s all I need!”
 “Then I think we’d make a great pair.” Fox smiled and lifted his hands back on Slippy. “Plus, I’ve always thought you were pretty cute, so that certainly helps.”
 “Aw, geez, Fox!” Slippy sank down. “Did it have to be ‘cute’? Why not ‘handsome,’ or ‘dashing,’ something with more…I don’t know, interest?”
 “Cute and adorable things interest me,” confessed Fox. “I just don’t show that as much. But with you, that might be easier.” Fox grinned. “So, how about a big hug, huh?”
 “Um…can we, uh, d-do…something a l-little more, ah, romantic?”
 “…Ah, you mean this.”
 Bending down, Fox brought his lips against Slippy’s, as the toad inhaled sharply. They kissed a bit, until Slippy had to pull himself back for a cough. He clutched his head, as Fox patted him.
 “I-I can’t believe that I—”
 “Slippy, nothing has to be perfect.” Fox sighed. “I’m going to remind you of that every day until you relax.”
 “Sorry. I…I’ll try.”
 “And I’ll help.”
 “So…can, um—”
 “Sure.”
 Again, Fox bent down to kiss Slippy, scooping his face into his lips. Pressing back, Slippy rested his hands against Fox’s chest, and the two held together for a few minutes before slowly parting. Blushing a bit, Fox chuckled at Slippy’s beaming face.
 “That was real?”
 “Yes, Slippy.”
 “There’s no way. My dreams don’t even end this well!”
 “Really?” Fox shrugged. “Well, consider this a new and better beginning, then.”
 “Yeah!” Slippy pumped his fists up together. “Ah, this great! I feel like I can do anything now! Fox, whatever you want to do, it’ll get done, let’s get to it!”
 “Uh, that’s great, Slip.” Fox brushed behind his head. “But how about we just…take it easy, consider how late it is?”
 “Is it really?” Slippy checked the time. “Oh gosh, I’m sorry Fox! I’ve kept you up so late, I didn’t mean—”
 “Slippy, calm down, please.” Fox rested his hands against Slippy’s sides. “We both chose this.”
 “Right…right, yeah.” Slippy exhaled. “We did.”
 They smiled to one another, and Slippy buzzed around his lab, excitedly chattering to Fox as he fumbled cleaning up projects. Fox laughed and helped put different tools away, making sure there was a clear path to the door. Once they finished enough cleaning, the two held hands as they left the lab together, retiring for the night.
15 notes · View notes
iyarpage · 8 years ago
Text
UISplitViewController Tutorial: Getting Started
Update note: This tutorial has been updated to iOS 11 and Swift 4 by Michael Katz. The original tutorial was written by Brad Johnson.
On an app running on the iPad, it rarely makes sense to have a full-screen table view like you do so often on iPhone – there’s just too much space. To better use that space, UISplitViewController comes to the rescue.
The split view lets you carve up the screen into two sections and display a view controller on each side. It’s typically used to display navigation on the left hand side, and a detail view on the right hand side. Since iOS 8, the split view controller works on both iPad and iPhone.
In this UISplitViewController tutorial, you’ll make a universal app from scratch that makes use of a split view controller to display a list of monsters from Math Ninja, one of the games developed by the team here at Razeware. You’ll use a split view controller to handle the navigation and display, which will adapt to work on both iPhone and iPad.
This UISplitViewController tutorial focuses on split view controllers; you should already be familiar with the basics of Auto Layout and storyboards before continuing.
Getting Started
Create a new Project in Xcode, and choose the iOS\Application\Single View App template.
Name the project MathMonsters. Leave language as Swift. Uncheck all the checkboxes. Then click on Next to finish creating the project.
Although you could use the Master-Detail App template as a starting point, you are going to start from scratch with the Single View App template. This is so you can get a better understanding of exactly how the UISplitViewController works. This knowledge will be helpful as you continue to use UISplitViewController in future projects.
Open Main.storyboard.
Delete the initial View Controller that is placed there by default in the storyboard. Delete ViewController.swift.
Drag a Split View Controller into the empty storyboard:
This will add several elements to your storyboard:
A Split View Controller. This is the root view of your application – the split view that will contain the entire rest of the app.
A Navigation Controller. This represents the UINavigationController that will be the root view of your master view controller (ie, the left pane of the split view when on iPad or Landscape iPhone 8 Plus). If you look in the split view controller, you’ll see the navigation controller has a relationship segue of master view controller. This allows you to create an entire navigation hierarchy in the master view controller without needing to affect the detail view controller at all.
A View Controller. This will eventually display all the details of the monsters. If you look in the split view controller, you will see the view controller has a relationship segue of detail view controller:
A Table View Controller. This is the root view controller of the master UINavigationController. This will eventually display the list of monsters.
Note: You will notice that Xcode raises a warning about the table view’s prototype cell missing a reuse identifier. Don’t worry about it for now; you will fix it shortly.
Since you deleted the default initial view controller from the storyboard, you need to tell the storyboard that you want your split view controller to be the initial view controller.
Select the Split View Controller and open the Attributes inspector. Check the Is Initial View Controller option.
You will see an arrow to the left of the split view controller, which tells you it is the initial view controller of this storyboard.
Build and run the app on an iPad simulator, and rotate your simulator to landscape.
You should see an empty split view controller:
Now run it on an iPhone simulator (any of them except a plus-sized phone, which is large enough that it will act just like the iPad version) and you will see that it starts off showing the detail view in full screen. It will also allows you to tap the back button on the navigation bar to pop back to the master view controller:
On iPhones other than an iPhone Plus in landscape, a split view controller will act just like a traditional master-detail app with a navigation controller pushing and popping back and forth. This functionality is built-in and requires very little extra configuration from you, the developer. Hooray!
You’re going to want to have your own view controllers shown instead of these default ones, so let’s get started creating those.
Creating Custom View Controllers
The storyboard has the view controller hierarchy set up – split view controller with its master and detail view controllers. Now you’ll need to implement the code side of things to get some data to show up.
Go to File\New\File… and choose the iOS\Source\Cocoa Touch Class template. Name the class MasterViewController, make it a subclass of UITableViewController, make sure the Also create XIB file checkbox is unchecked, and Language is set to Swift. Click Next and then Create.
Open MasterViewController.swift.
Scroll down to numberOfSections(in:). Delete this method. This method is not needed when only ever one section is returned.
Next, find tableView(_:numberOfRowsInSection:) and replace the implementation with the following:
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return 10 }
Finally, uncomment tableView(_:cellForRowAt:) and replace its implementation with the following:
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) return cell }
This way, you’ll just have 10 empty rows to look at when you test this thing out later.
Open Main.storyboard. Select the Root View Controller. Click on the Identity inspector. Change the class to MasterViewController.
In addition, you need to make sure the prototype cell in the table view is given a reuse identifier, or it will cause a crash when the storyboard tries to load.
Within the Master View Controller, select the Prototype Cell. Change the Identifier to Cell. Change the cell Style to Basic.
Now, you’ll create the view controller for the detail side.
Go to File\New\File… and choose the iOS\Source\Cocoa Touch Class template. Name the class DetailViewController, make it a subclass of UIViewController, and make sure the Also create XIB file checkbox is unchecked and the Language is set to Swift. Click Next and then Create.
Open Main.storyboard, and select the view controller in the View Controller Scene. Click on the Identity inspector. Change the Class to DetailViewController.
Then drag a label into the middle of the detail view controller. Pin the label to the horizontal and vertical centers of the container with Auto Layout.
Double-click the label to change its text to say Hello, World! so you will know it’s working when you test it out later.
Build and run. At this point you should see your custom view controllers.
On iPad:
On iPhone:
Making Your Model
The next thing you need to do is define a model for the data you want to display. You don’t want to complicate things while learning the basics of split view controllers, so you’re going with a simple model with no data persistence.
First, make a class representing the monsters you want to display. Go to File\New\File…, select the iOS\Source\Swift File template, and click Next. Name the file Monster and click Create.
You’re just going to create a simple class with some attribute properties about each monster you want to display, and a couple of methods for creating new monsters and accessing the image for the weapon each monster has.
Replace the contents of Monster.swift with the following:
import UIKit enum Weapon { case blowgun, ninjaStar, fire, sword, smoke } class Monster { let name: String let description: String let iconName: String let weapon: Weapon init(name: String, description: String, iconName: String, weapon: Weapon) { self.name = name self.description = description self.iconName = iconName self.weapon = weapon } var weaponImage: UIImage { switch weapon { case .blowgun: return UIImage(named: "blowgun.png")! case .fire: return UIImage(named: "fire.png")! case .ninjaStar: return UIImage(named: "ninjastar.png")! case .smoke: return UIImage(named: "smoke.png")! case .sword: return UIImage(named: "sword.png")! } } var icon: UIImage? { return UIImage(named: iconName) } }
This file defines an enumeration to track the different kinds of weapons, and then a class to hold the monster information. There’s a simple initializer to create Monster instances, and a convenience method to get an image corresponding to the monster’s weapon.
That’s it for defining the model – so next let’s hook it up to your master view!
Displaying the Monster List
Open up MasterViewController.swift and add a new property to the class:
let monsters = [ Monster(name: "Cat-Bot", description: "MEE-OW", iconName: "meetcatbot", weapon: .sword), Monster(name: "Dog-Bot", description: "BOW-WOW", iconName: "meetdogbot", weapon: .blowgun), Monster(name: "Explode-Bot", description: "BOOM!", iconName: "meetexplodebot", weapon: .smoke), Monster(name: "Fire-Bot", description: "Will Make You Steamed", iconName: "meetfirebot", weapon: .ninjaStar), Monster(name: "Ice-Bot", description: "Has A Chilling Effect", iconName: "meeticebot", weapon: .fire), Monster(name: "Mini-Tomato-Bot", description: "Extremely Handsome", iconName: "meetminitomatobot", weapon: .ninjaStar) ]
This holds the array of monsters to populate the table view.
Find tableView(_:numberOfRowsInSection:) and replace the return statement with the following:
return monsters.count
This will return the number of monsters based on the size of the array.
Next, find tableView(_:cellForRowAtIndexPath:) and add the following code before the final return statement:
let monster = monsters[indexPath.row] cell.textLabel?.text = monster.name
This will configure the cell based on the correct monster. That’s it for the table view, which will simply show each monster’s name.
Download and unzip this art pack. Drag the folder containing those images into Assets.xcassets in Xcode.
Build and run the app.
You should see the list of monster bots on the left hand side on landscape iPad:
On iPhone:
Remember that on a compact-width iPhone, you start one level deep already in the navigation stack on the detail screen. You can tap the back button to see the table view.
Displaying Bot Details
Now that the table view is showing the list of monsters, it’s time to get the detail view in order.
Open Main.storyboard, select Detail View Controller and delete the label you put down earlier.
Using the screenshot below as a guide, drag the following controls into the DetailViewController’s view:
A 95×95 image view for displaying the monster’s image in the upper left hand corner.
A label aligned with the top of the image view with font System Bold, size 30, and with the text “Monster Name”
Two labels underneath, with font System, size 24. One label should be bottom aligned with the image view; the other label should be below the first label. They should have their left edges aligned, and titles “Description” and “Preferred Way To Kill”
A 70×70 image view for displaying the weapon image, horizontally center aligned with the “Preferred way to Kill” label.
Need some more hints? Open the spoilers below for the set of constraints I used to make the layout.
Solution Inside SelectShow>
Constraints:
Top Left Corner Image View: Leading Space to Safe Area with 16 points, Top Space to Safe Area with 8 points, Width Equals 95, Height Equals 95
Monster Name Label: Top Aligned to Top Left Corner Image View’s top, Leading Space to Image View by 8 points
Description Label: Bottom Aligned to Top Left Corner Image View’s bottom, Leading Space to Image View by 8 points, Bottom Space to Preferred Way to Kill label by 8 points
Preferred Way To Kill Label: Align Leading Edge to Description Label, Top Space to Description Label by 8 points 
Smaller Image View: Align Center X to Preferred Way to Kill Label, Top Space to Preferred Way to Kill Label by 8 points, Width Equals 70, Height Equals 70
Getting Auto Layout to use the proper constraints is especially important since this app is universal, and Auto Layout is what ensures the layout adapts well to both iPad and iPhone.
Note: Auto Layout can be a slippery devil! I highly recommend you check out our Beginning Auto Layout tutorial series if you run into any trouble.
That’s it for Auto Layout for now. Next, you will need to hook these views up to some outlets.
Open DetailViewController.swift and add the following properties to the top of the class:
@IBOutlet weak var nameLabel: UILabel! @IBOutlet weak var descriptionLabel: UILabel! @IBOutlet weak var iconImageView: UIImageView! @IBOutlet weak var weaponImageView: UIImageView! var monster: Monster? { didSet { refreshUI() } }
Here you added properties for the various UI elements you just added which need to dynamically change. You also added a property for the Monster object this view controller should display.
Next, add the following helper method to the class:
func refreshUI() { loadViewIfNeeded() nameLabel.text = monster?.name descriptionLabel.text = monster?.description iconImageView.image = monster?.icon weaponImageView.image = monster?.weaponImage }
Whenever you switch the monster, you’ll want the UI to refresh itself and update the details displayed in the outlets. It’s possible that you’ll change monster and trigger the method even before the view has loaded, so you call loadViewIfNeeded() to guarantee that the view is loaded and its outlets are connected.
Now, go open up Main.storyboard. Right-click the Detail View Controller object from the Document Outline to display the list of outlets. Drag from the circle at the right of each item to the view to hook up the outlets.
Remember, the icon image view is the big image view in the top left, while the weapon image view is the smaller one underneath the “Preferred Way To Kill” label.
Go to to AppDelegate.swift and replace the implementation of application(_:didFinishLaunchingWithOptions:) with the following:
guard let splitViewController = window?.rootViewController as? UISplitViewController, let leftNavController = splitViewController.viewControllers.first as? UINavigationController, let masterViewController = leftNavController.topViewController as? MasterViewController, let detailViewController = splitViewController.viewControllers.last as? DetailViewController else { fatalError() } let firstMonster = masterViewController.monsters.first detailViewController.monster = firstMonster return true
A split view controller has an array property viewControllers that has the master and detail view controllers inside. The master view controller in your case is actually a navigation controller, so you get the top view controller from that to get your MasterViewController instance. From there, you can set the current monster to the first one in the list.
Build and run the app, and if all goes well you should see some monster details on the right.
On iPad Landscape:
and iPhone:
Note that selecting a monster on the MasterViewController does nothing yet and you’re stuck with Cat-Bot forever. That’s what you’ll work on next!
Hooking Up The Master With the Detail
There are many different strategies for how to best communicate between these two view controllers. In the Master-Detail App template, the master view controller has a reference to the detail view controller. That means the master view controller can set a property on the detail view controller when a row gets selected.
That works fine for simple applications where you only ever have one view controller in the detail pane, but you’re going to follow the approach suggested in the UISplitViewController class reference for more complex apps and use a delegate.
Open MasterViewController.swift and add the following protocol definition above the MasterViewController class definition:
protocol MonsterSelectionDelegate: class { func monsterSelected(_ newMonster: Monster) }
This defines a protocol with a single method, monsterSelected(_:). The detail view controller will implement this method, and the master view controller will message it when a monster is selected.
Next, update MasterViewController to add a property for an object conforming to the delegate protocol:
weak var delegate: MonsterSelectionDelegate?
Basically, this means that the delegate property is required to be an object that has monsterSelected(_:) implemented. That object will be responsible for handling what needs to happen within its view after the monster was selected.
Note: You need to mark the delegate as weak to avoid a retain cycle. To learn more about retain cycles in Swift, check out the Memory Management video in our Intermediate Swift video tutorial series.
Since you want DetailViewController to update when the monster is selected, you need to implement the delegate.
Open up DetailViewController.swift and add a class extension to the very end of the file:
extension DetailViewController: MonsterSelectionDelegate { func monsterSelected(_ newMonster: Monster) { monster = newMonster } }
Class extensions are great for separating out delegate protocols and grouping the methods together. In this extension, you are saying DetailViewController conforms to MonsterSelectionDelegate and then you implement the one required method.
Now that the delegate method is ready, you need to call it from the master side.
Open MasterViewController.swift and add the following method:
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { let selectedMonster = monsters[indexPath.row] delegate?.monsterSelected(selectedMonster) }
Implementing tableView(_:didSelectRowAt:) means you’ll be notified whenever the user selects a row in the table view. All you need to do is notify the monster selection delegate of the new monster.
Finally, open AppDelegate.swift. In application(_:didFinishLaunchingWithOptions:), add the following code just before the final return statement:
masterViewController.delegate = detailViewController
That’s the final connection between the two view controllers.
Build and run the app on iPad, and you should now be able to select between the monsters like the following:
So far so good with split views! Except there’s one problem left – if you run it on iPhone, selecting monsters from the master table view does not show the detail view controller. You now need to add make a small modification to make sure that the split view works on iPhone, in addition to iPad.
Open up MasterViewController.swift. Find tableView(_:didSelectRowAt:) and add the following to the end of the method:
if let detailViewController = delegate as? DetailViewController { splitViewController?.showDetailViewController(detailViewController, sender: nil) }
First, you need to make sure the delegate is set and that it is a DetailViewController instance as you expect. You then call showDetailViewController(_:sender:) on the split view controller and pass in the detail view controller. Every subclass of UIViewController has an inherited property splitViewController, which will refer to it’s containing view controller, if one exists.
This new code only changes the behavior of the app on iPhone, causing the navigation controller to push the detail controller onto the stack when you select a new monster. It does not alter the behavior of the iPad implementation, since on iPad the detail view controller is always visible.
After making this change, run it on iPhone and it should now behave properly. Adding just a few lines of code got you a fully functioning split view controller on both iPad and iPhone. Not bad!
Split View Controller in iPad Portrait
Run the app in iPad in portrait mode. At first it appears there is no way to get to the left menu, but try swiping from the left side of the screen. Pretty cool huh? Tap anywhere outside of the menu to hide it.
That built in swipe functionality is pretty cool, but what if you want to have a navigation bar up top with a button that will display the menu, similar to how it behaves on the iPhone? To do that, you will need to make a few more small modifications to the app.
First, open Main.storyboard and embed the Detail View Controller into a Navigation Controller. You can do this by selecting the Detail View Controller and then selecting Editor/Embed In/Navigation Controller.
Your storyboard will now look like this:
Now open MasterViewController.swift and find tableView(_:didSelectRowAt:). Change the if block with the call to showDetailViewController(_:sender:) to the following:
if let detailViewController = delegate as? DetailViewController, let detailNavigationController = detailViewController.navigationController { splitViewController?.showDetailViewController(detailNavigationController, sender: nil) }
Instead of showing the detail view controller, you’re now showing the detail view controller’s navigation controller. The navigation controller’s root is the detail view controller anyway, so you’ll still see the same content as before, just wrapped in a navigation controller.
There are two final changes to make before you run the app.
First, in AppDelegate.swift update application(_:didFinishLaunchingWithOptions:) by replacing the single line initializing detailViewController with the following two lines:
let rightNavController = splitViewController.viewControllers.last as? UINavigationController, let detailViewController = rightNavController.topViewController as? DetailViewController
Since the detail view controller is wrapped in a navigation controller, there are now two steps to access it.
Finally, add the following lines just before the final return statement:
detailViewController.navigationItem.leftItemsSupplementBackButton = true detailViewController.navigationItem.leftBarButtonItem = splitViewController.displayModeButtonItem
This tells the detail view controller to replace its left navigation item with a button that will toggle the display mode of the split view controller. It won’t change anything when running on iPhone, but on iPad you will get a button in the top left to toggle the table view display. Run the app on iPad portrait and check it out:
Where To Go From Here?
Here’s an archive of the final project with all of the code you’ve developed so far.
For new apps, you’re likely just to use the Master-Detail template to save time, which gives you a split view controller to start. But now you’ve seen how to use UISplitViewController from the ground up and have a much better idea of how it works. Since you’ve seen how easy it is to get the master-detail pattern into your universal apps, go forth and apply what you’ve learned!
Check out our short video tutorial series on split view controllers if you’re interested in some more details on split view controllers across devices.
If you have any questions or comments, please join the forum discussion below!
The post UISplitViewController Tutorial: Getting Started appeared first on Ray Wenderlich.
UISplitViewController Tutorial: Getting Started published first on http://ift.tt/2fA8nUr
0 notes
totallymotorbikes · 8 years ago
Link
2017 Honda CBR1000RR and CBR1000RR SP Review 2017 Honda CBR1000RR Editor Score: 87.0% Engine 18.5/20 Suspension/Handling 14.0/15 Transmission/Clutch 10.0/10 Brakes 7.0/10 Instruments/Controls 5.0/5 Ergonomics/Comfort 8.0/10 Appearance/Quality 9.0/10 Desirability 9.0/10 Value 6.5/10 Overall Score 87/100 Cresting the top of the steep incline leading onto Portimao’s main straight, I’m committed to keeping the throttle on the new 2017 Honda CBR1000RR to the stop. With fifth gear clicked, the front wheel starts to reach for the sky. Unfazed, the throttle stays pinned, ready for the wheel to eventually come back to earth. The wait feels like forever, and my view is increasingly filled with sky instead of tarmac. I can’t wait for the Honda’s wheelie control any longer, so a click to sixth gently brings the front Bridgestone back to the ground. The Fireblade flexes its muscles, tickling 180 mph down the straight. Then it’s time to scrub speed down the hill before hitting the dip signaling the apex of turn 1. The short chute to reach turn 2 is quickly gobbled up before a moderate amount of brakes are applied to navigate through the hairpin. From there, it’s another flick to the left, and we’re driving uphill towards the crest of turn 3, knee on the ground, rear tire spinning ever so slightly. And so describes one of the many exciting sequences at the Algarve International Circuit, better known as Portimão. Due to its extreme elevation changes and blind-crest corners, it’s the closest track to a rollercoaster I’ve ever experienced. And it’s an ideal testing ground to put the new Fireblade through its paces. Here, in this extreme environment, the new Fireblade definitely displays some of the traits we’ve loved about the CBR lineage – particularly the engine and chassis – but as first-timers (and late bloomers) to the sportbike electronics game, the 1000RR is a bit unpolished. Twenty-five years on and the 2017 CBR1000RR is a quantum leap from the original 1993 CBR900RR. Nonetheless, the concept of Total Control surrounding the design of the 900RR has carried over a quarter-century on. Wait, what? Trust me: for a company like Honda, that’s as unbelievable for me to write as I’m sure it is for you to read. But more on that in a bit. First, let’s shift our mindset slightly. To better understand the CBR, we need to understand where the engineers designing it were coming from. Unlike the other players in this highly competitive liter-class sportbike category, Honda’s objective wasn’t to chase that elusive 200-hp mark. Yes, the new ’Blade is claimed to make more than 10 hp over the outgoing model, but the overall design focus has gone back to its roots, the CBR900RR, and centers on the concept of Total Control. Putting control back to the hands of the rider means pairing modest power gains with significant weight loss, revised suspension, and chassis tuning to create a motorcycle that’s easy to ride while providing excellent feedback. The finishing touch, of course, is a sophisticated electronics package – centered around a Bosch IMU – to help you stay upright and as safe as possible, whether you’re track riding or blasting in the canyons. What was strange, however, was that throughout our time with Honda’s staff and engineering personnel, Honda’s Total Control ethos was never mentioned in relation to achieving outright lap times. But does that mean the new CBR isn’t a track weapon? No way. We, the motorcycling public, have been clamoring for a new ’Blade with more power and an electronics suite just like its competitors. And for the most part Honda’s latest version of the CBR1000RR delivers. Making More With Less With motorcycles as it generally is with humans, when the goal is to lose some weight, having a target to meet helps bring focus to the task at hand. In Honda’s case the magic number laid forth for the new ’Blade was 195kg, or 429 lbs. To achieve the weight drop, every single piece of the motorcycle had to be looked over with a fine-tooth comb, including small items like nuts and bolts. Meanwhile, solutions to bring down weight for big items like fuel tank, exhaust, and chassis involved employing some creative thinking. In the end, items like shorter and lighter bolts were used where possible, along with a titanium exhaust, titanium fuel tank (for SP models), magnesium engine covers, aluminum subframe, smaller radiator, and thinner frame walls are just a few of the techniques Honda engineers used to meet that ambitious weight target. But here’s just one more example of Honda rethinking every component: the fairings on the new CBR are now just 1.8mm thick, versus the 2.0mm plastics seen on the predecessor. All in an effort to shave precious grams. About the only exotic materials you can see in this picture of the SP are the titanium exhaust canister and magnesium crankcase cover. But the quest for weight savings go far greater. Don’t forget the titanium fuel tank (steel on the standard model), aluminum subframe (which, granted, is partially visible), hollow transmission shafts, and even thinner fairings compared to the old bike. Engine-wise, the CBR’s Four is 4.4 lbs lighter than before, thanks in part to magnesium covers and hollowed-out transmission gears and shafts. There’s a jump in power over the old bike via new pistons, higher compression ratio (13.0:1 vs. 12.3:1), a new crankshaft, new valves, a re-worked cylinder head and revised camshafts with increased lift. Valve timing is also revised to suit the engine’s new 13,000-rpm redline, 750 rpm higher than before. The ’Blade becomes the first inline-Four from Honda to receive ride-by-wire technology. Conveniently for us, we don’t have to wait until we get a unit home to put it on the scales because Honda had a set of scales available for us to measure the pair of new CBRs. Ready-to-ride and with a full tank of gas the base model, fitted with the standard Bridgestone S21 tires, came in at 425 lbs; while the SP model, fitted with Bridgestone V02 racing slick tires specially for this test, weighed 427 lbs. The cockpit of the standard 1000RR greets you with an informative and clear TFT display. In front of that is the familiar sight of Showa’s Big Piston Fork. To the right sits the starter, encased in the housing for the throttle position sensor. Lastly, to the left lie the buttons to toggle through the menu settings to make changes. According to Bridgestone staff on hand, the V02 tires weigh a combined 24.6 lbs, while the RS10 that would normally be fitted on SP models weigh a combined 23.0 lbs. Take the weight of the tires into consideration and the standard and SP models weigh the same and are both under the original target weight of 429 lbs. Remember, too, that the measured weight for the SP model includes the Ohlins electronic suspension and the associated hardware it carries, making its identical weight measurement to the Showa-suspended standard model rather impressive. MO historians might be scratching their heads because, as we noted in our street portion of the 2015 Six-Way Superbike Shootout, the CBR1000RR tipped our scales at 444 lbs, making the 19-pound weight loss for the new model slightly less spectacular than the claimed 33. Before you get too disappointed, remember the standard and SP models I personally put on the scales were both Euro-spec models, and the 33-pound weight difference cited by Honda is compared to the Euro-spec 2012 C-ABS model the manufacturer itself claimed to be 465 lbs. Nonetheless, Honda says the new Blade improves its power-to-weight ratio over its predecessor by 14%, while jumping a huge 65% in the power-to-weight department compared to the original 1993 CBR900RR. Whiz-Bang Electronics There’s a lot to cover with the 2017 Fireblade, so to help get you up to speed, click these links to get a run down of the changes applied to the standard and SP versions of the CBR1000RR. After reading both those stories, it’s worth delving more into Honda’s electronics package for the CBR, as the concept of Total Control, while simple in theory, is quite complex in application. Honda has long made inspiring chassis, and the new CBR1000RR carries on that tradition. It made refamiliarizing myself with a track I hadn’t seen in several years that much easier. At the heart of it all is a Bosch IMU sending signals from five axes to the bike’s Honda Selectable Torque Control (Honda parlance for traction control), ABS, and on SP models, the Ohlins Smart-EC semi-active suspension system. Calculations are happening 100 times per second, using algorithms and software settings developed in-house by Honda. Based on the system used on the RC213V-S MotoGP bike for the street, the HSTC processes inputs from the IMU, wheel-speed sensors, and throttle-position sensor to determine and manage rear-wheel slippage depending on the level chosen from the rider. The levels range from 1-9, with 1 providing least intervention and 9 the most. The system can also be turned off altogether. Wheelie control is tied to the traction-control system, with its three levels directly linked to the HSTC setting – least intervention in the lower three TC levels, moderate intervention from levels 4-6, and maximum intervention from levels 7-9. To make matters slightly frustrating, traction and wheelie controls cannot be adjusted independently other than turning the HSTC system off entirely. Don’t mistake the Honda Selectable Torque Control (a.k.a. Traction Control) as a highside-proof rider aid in the lower settings; you can still get the rear to slide if you get greedy on the throttle. Toggle up to the higher settings and the ’Blade is nearly idiot proof. Nearly. Oddly, despite the CBR coming equipped with an IMU, none of the information it receives is used to detect a wheelie. Instead, the CBR relies solely on wheel-speed sensors to detect lift, determining that the front is off the ground once it spins slower than the rear wheel by a certain predetermined rate – a rather draconian way of going about things considering many of Honda’s competitors employ more sophisticated methods using very similar hardware, mainly by incorporating data received from the IMU to manage the wheelie while maintaining optimum drive. Honda’s electronic control engineer, Satoru Okoshi, genuinely looked confused when asked why the new 1000RR only uses wheel-speed sensors to manage wheelies, noting the CBR is still a road-going motorcycle and not a racing machine. The confused look wasn’t an act, as I asked several different ways why IMU data isn’t used before Okoshi-san finally responded by mentioning the HRC race kit ECU. Still, the language barrier proved too much to overcome in this case, as he noted the obvious in that it would employ different algorithms dedicated to racing, though he did suggest that IMU data would have a greater role in those strategies, including with wheelies. Of course, the HRC ECU is not an item one can simply buy, as it’ll be distributed by Honda directly to race teams it deems worthy to have the unit. But that’s another story… The Portimão track is a wheelie-lover’s dream, as its extreme undulations are perfect for hoisting the front in the air. That is, unless you’ve got the Honda’s wheelie control. Sometimes the front will crawl upwards controllably, other times it would shoot up faster than you’d expect before abruptly cutting power. Other times it won’t come up at all. What the IMU does supply input for is Honda’s ABS, which sends IMU information to the Nissin control unit to identify whether the motorcycle is upright or leaned over, and then, depending on how much braking pressure is applied, it can adjust accordingly. This means that, yes, the CBR1000RR does feature lean-angle-sensitive ABS, allowing the rider to apply the brake mid-corner and, instead of the bike tucking the front, will instead help the rider maintain control. Honda has also employed rear-lift control on the ’Blade, which uses the IMU to send information on the rate the rear is rising, as well as the rate of acceleration in the direction perpendicular to lift. With those two variables, the system operates ABS intervention accordingly. ABS and rear-lift control are integrated with each other and can’t be adjusted independently other than turning the ABS off entirely, which also disables rear-lift control. Because the new ’Blade gets ride-by-wire throttle for the first time, the CBR now is able to employ distinct power modes – five in this case. All five levels give the same initial response on throttle opening, but level 1 gives full power, level 2 slightly reduces power in the first three gears, with levels 3-5 reducing power in the first four gears, while also limiting peak power. Selectable engine braking is also a new feature, with three different settings available: 3 providing the least engine braking effect, 1 the most. No surprise the Brembo calipers on SP models (seen here) are quite good, but equally impressive are the new Tokico squeezers. Both provide good stomp and feel at the lever, making it easy to trailbrake into corners. Just when you thought that wasn’t enough to talk about in regards to electrons, we haven’t even begun to discuss suspension. Standard models receive a completely analog 43mm Showa Big Piston Fork, while the rear sees the Balance Free Rear Cushion shock, also from Showa. Both ends get full adjustability, but you have to adjust the clickers the old-fashioned way – with tools. SP models get the latest in semi-active electronic suspension, called the Ohlins Smart-EC (Electronically Controlled) System, using a 43mm NIX30 fork and TTX36 shock. At the heart of the matter is the Suspension Control Unit (SCU) which processes readings from several sources including the IMU, but also works in conjunction with both wheel-speed sensors, throttle-position sensor, ABS modulator, and the suspension pieces themselves to adjust the attitude of the bike in real time. Squeeze the brake lever too hard and the ABS/rear lift control will kick in to keep the rear from getting too high off the ground. It’s an annoying trait, but at least the slipper clutch and excellent quickshifter help you focus on getting the bike slowed. Now here’s where things get a little complicated. Encapsulating the Total Control ethos, the electronic suspension has two user-selectable modes: Manual and Automatic. Within each mode are three more user-selectable sub-modes: M1, M2, M3 and A1, A2, and A3. Manual mode and its three sub-modes feature pre-defined suspension settings depending on whether you’re track riding (M1), canyon riding (M2), or simply street riding (M3), with a bias towards handling or comfort depending on which direction you choose. Further fine tuning of the rebound or compression damping in either of the three modes apart from the factory presets is possible by the rider with a few button presses on the dash. However, since suspension tuning is considered a black art by many, Honda and Ohlins together set out to create a new way of thinking about motorcycle suspension without needing to know the vocabulary associated with it. Under this new paradigm, suspension tuning is thought of under three objectives: acceleration, braking, and cornering. Different things are required in each condition and sometimes analog suspension tuning compromises one area for the other. With the S-EC, Ohlins is claiming to offer a suspension setup with no compromises: the support you need under braking, the optimal turn-in geometry, stability at max lean, controlled weight transfer at the start of corner exit, and maximum grip as power is applied while finishing a corner. SP models get the upgraded Ohlins S-EC suspension and Brembo caliper over the standard bike’s Showa BPF and Tokico caliper. Wheels are the same cast units between the two, except standard gets black, SP gold. Forged wheels are saved for the limited-edition, SP2 race homologation version. Note also the Bridgestone V02 slick tire seen here. Pay no attention to it as the SP will be sold with B-Stone’s RS10 tire instead. Like the Manual suspension modes, the Automatic mode also has three sub-modes, each with their own default settings for track riding (A1), canyons (A2), and street (A3). The difference is that you can change the settings for each mode based on the bike’s overall attitude instead of just adding or subtracting rebound or compression damping. There are four areas of tuning the user can toggle through for adjustment: General (overall firmness character), Brake (nose dive character), Cornering (turning character), and Acceleration (pitching character). A1 mode allows the user to adjust all four parameters in individual increments numerically. For example, +5 (firmer) and -5 (softer) are the furthest deviations you can make from the standard default settings. A2 and A3 settings only allow General and Brake parameters to be changed. Unlike Manual mode, adding or subtracting from any of the four categories doesn’t change one thing, like compression or rebound. Changes are electronically made at both ends depending on the selection(s) you’ve requested. All changes are navigated through from the full-color TFT display. With so many options and sub-options to choose from, ironically the idea of Total Control seems anything but. Quickshifter comes as standard equipment on the SP (optional on the base model) and works flawlessly, especially during downshifts. With it, the only need for the clutch is at a stop. Honda says wall thickness of the frame has been reduced not only to save weight, but also to provide optimal chassis flex characteristics. From where I was sitting, all I could tell was the new chassis felt as agile as ever. What’s It Like In Anger? During the track portion of our 2015 Six-Way Superbike Shootout, the Honda was admired for its sublime chassis, but it was ultimately roasted for having the least power by a significant margin. A couple years on and we have a new year, a new administration, and now a new and heavily updated CBR. Horsepower is up by more than 10, according to Honda, while weight has also gone down. Both are ingredients that make for a good sportbike, and in that regard, the Fireblade is worlds better than before. Granted, it’s been some time since I rode the previous CBR, but the new bike hasn’t lost a bit of the old bike’s midrange, while it definitely pulls harder up top with very nice over-rev. For the first two sessions of our day at Portimao, we were sent off on the base CBR fitted with the standard Bridgestone S21 tires. A street-oriented tire more so than a track tire, its profile helped highlight the light and flickable nature of the 1000RR chassis; it almost felt as easy to toss around as the 600RR. It’s a comparison made often when comparing sportbikes, but in this case, the distinction between the two is getting as close as it’s ever been. Even with the standard Bridgestone S21 tires, as fitted to the standard CBR seen here, the ’Blade is able to lap a racetrack very quickly. In fact, I’d estimate it’s a perfectly suitable track tire for all but the fastest track riders out there. The V02 slick tires fitted to the SP models have a different rear profile than the RS10 tires normally fitted to the SP, so its turning characteristics don’t exactly apply here. However, its slightly heavier steering feel was more than made up for by the grip the slicks provided. The factory quickshifter is, without doubt, the best unit I’ve sampled so far. An option for the base model (which the bikes at the launch were fitted with) and standard on the SP, it’s adjustable on three levels depending on the amount of load you prefer to place on the lever, and it operates both up and down changes, rev matching quickly and perfectly every time you ask it – which is not something I can say for some of the Honda’s competitors. A redesigned slip-assist clutch is 10% lighter than before and also works well, keeping the rear wheel under control and allowing little mini supermoto slides the few times I accidentally backshifted to first while setting up for Portimao’s downhill turn 3. Ergonomically, the new CBR is noticeably slimmer than before – especially between the knees. There’s plenty of room front-to-back as well. For my 5-foot, 8-inch stature, the bars felt a little too far forward for my taste, but the taller riders on the launch seemed to like it. Another minor quibble: the windscreen forms a V shape at its apex, and in a tuck I noticed an unusual amount of wind buffeting atop my helmet. Were it mine, a broader, or double-bubble screen would be one of my first modifications. So far, anyway, the CBR has been what I expected from the updated machine – lighter, faster, more powerful, without any lost handling abilities. The road block comes once the electronics are called into action. Earlier, I mentioned how the CBR1000RR and CBR1000RR SP felt a bit unpolished. Now that you have a better understanding for the machine’s electronic components, I can better explain what I mean. The scenario explained at the opening of this review, about the wheelie floating before shifting to sixth and bringing it back down, was a one-time occurrence. The wheelie itself happened lap after lap, but the motorcycle reacted inconsistently in its attempts to tame it. Once the wheel sensors detect a wheelie is occurring, it’ll drastically close throttle butterflies to bring the tire back to the ground, and it’s far from a smooth retardation of power. Instead it’s almost as if you’ve run out of fuel for a moment. It seemed odd that Honda would opt not to incorporate IMU data when factoring wheelie control, and the result on track proved it. Sometimes big wheelies were allowed, other times the front hardly lifted. As far as controlling rear tire slides go, the HSTC seemed to operate as advertised. With the traction control in its lowest setting, I was able to get the standard bike’s S21 rear to slide a little with too much throttle coming out of a tight hairpin. It was to the point where a highside would have occurred had I not backed off the gas. Conversely, experimenting in setting 8 of 9, whacking the throttle open in any turn while leaned over meant you weren’t getting any power until the bike was upright. On the SP fitted with soft-compound slicks, slides weren’t an issue, so TC didn’t get much of a workout except when wheelies were involved. I got caught up behind some old guy with “Spencer” written across his Honda-branded leathers. They tell me he was pretty good back in the day. Electronic frustrations continue when it comes to braking, as the Tokico calipers on the base model and Brembo units on the SP provide excellent stopping power. However, in the confines of a racetrack, where hard braking is a regular event, the rear lift control feature intervenes far too often. The result is a pulsing brake lever similar to ABS activation at points where it wasn’t warranted. This isn’t just my own opinion, as nearly all the other journos within earshot were commenting about the same thing. More than one tester, myself included, blew a corner while braking because the pulsing ABS activation to control rear lift meant there were moments where the pads weren’t squeezing the disc even though fingers were firm on the lever. The answer would be to simply turn off ABS, but that wasn’t something we had time to test. We were short on time because Honda really wanted everyone to sample the Ohlins S-EC on the SP models to get a feel for the differences each A1 change can make. In reality, there were far too many setting changes available for the time we had allotted, so the plan instead was to experience extremes. After riding a few laps in the default settings, the General A1 settings were changed to +5, the firmest setting. The result was a bike that felt stiff as a board, diving what felt like a minimal amount under braking and squatting a minimal amount on corner exit drive, too. Ohlins S-EC gives the SP rider a multitude of options to adjust their bike to their liking, but we might have reached a point where we’ve got too many choices. Conversely, switching to the opposite extreme, General -5, gave predictable results. The CBR suddenly felt like a Cadillac in comparison. Both ends were too soggy; the front providing zero confidence while leaned over and the rear squatting quite a bit under acceleration. So much so I had to give less throttle than I normally would have exiting certain turns. From there, none other than 500cc Grand Prix legend Freddie Spencer dialed in the A1 settings he liked on his bike over to mine. It involved some slight deviations from the default settings in the various categories, but the resulting feel from the bike was noticeably better than even just the default settings. All with just a few toggles and button presses. No more bloody knuckles. In the end, the suspension tuning experiment was an eye-opener to the systems capabilities, but we hardly scratched the surface of the system’s functions. We simply ran out of time. 2017 Honda CBR1000RR + Highs Much improved engine power Light and nimble chassis All the ingredients for a real contender – Sighs Draconian wheelie control Annoying ABS/rear lift control The ingredients are there, but the recipe isn’t perfect Two Steps Forward, One Step Back Coming into this First Ride review of the 2017 Honda CBR1000RR I had really high hopes. The premise of the CBR we know and love, now rid of the power deficit it had before, was drool-worthy. Add some IMU-based electronics and the might of Honda developing it, and it was sure to please. The reality was that, while certain areas of the CBR are much better than before, its electronics aren’t at the same level as the rest of the motorcycle. That said, I’m a fan of the new bike’s engine and chassis – both are really good – and aesthetically I think the new ’Blade is one of the best looking sportbikes out there. Who knows, if an aftermarket tuning company can reprogram the ECU to incorporate software that uses the full might of the IMU, I think the CBR could be completely transformed. As it stands, however, I’m perplexed by the ’Blades few shortcomings, as it detracts from an otherwise solid track missile. A short summary of the CBR1000RR and CBR1000RR SP: they are great motorcycles with a few glaring flaws. Thankfully, those flaws come down to software and not hardware. Meaning some rearranging of the ones and zeros has the potential to transform Honda’s flagship production sportbike. Pricing for the 2017 CBR will start at $16,499 for the base model sans ABS. Adding ABS, the total comes to $16,799, while the SP model can be yours for $19,999. Now that the new CBR1000RR is here, and the new Suzuki GSXR-1000 (and GSXR-1000R) will be ridden by the world’s press next week, it seems to me like another literbike shootout is in order – and we’ll be sure to bring it to you as soon as we can. Stay tuned. 2017 Honda CBR1000RR and CBR1000RR SP Review appeared first on Motorcycle.com.
0 notes