Let’s talk about the humble in game phones around.
I’ve been around them all and have a somewhat decently modded GCphone to my liking.
But I’m still not overly impressed by the structure and layout of several things.
So what features do you feel the open source phones are lacking in?
What do you think they are doing well?
The purpose of this is so I can gather a bit of community feedback while I make my own and release it.
I’m not great, I’ll be the first to admit that, but I’m giving it a go.
It’s primary objective at the moment is the forsight to add snap in addons/easy to modify atributes to enable any number of phone like features.
By building it up in structured layers providing a frame for others to expand or mimic.
Thoughts? Feels? App Requests?
You name it, let’s all talk about it.
Just to confirm, you say lacks almost no features.
As in;
It has all the features you’re after.
Or
You think it has no features.
I just want to check because for a lot of people on these forums, English isn’t their first language.
I’m personally just tired of every server not having any different variations of it. I, changed up the number generator, made new default backgrounds and a few other bits and pieces
But overall it’s core wasn’t edit friendly and requires too much brainpower inside its javascript. (For me anyway)
What I think it did really well, was provide a starting point to work off. But not the bricks and mortar to build with it.
The way I’m thinking about, going about it, is more a layered or tiered approach to the screens that would resemble what the average user sees.
Having the base or core structure as lua/js/html/css but using more of a iframe approach for each layer/page allowing more customization that just tap into the forementioned.
Kind of like how tabby the in game tablet was setup.
But more emphasis on how a mobile operates.
Lets say you have your app screen.
Press on an app, and from the bottom of the screen, the Iframe ontop of the app screen takes priority and focus, and slides up from the bottom of the phoneos(home, back, screen buttons)
A notification comes in, like a call inbound. The notifications frame takes priority over all but the image layer of the phone.
Everything else is still hiden behind the active layer, so you could in thorey, be on the phone, minimize the chat, open your bank account and tell the other person your account number.
It’s a pain in the ass to work with gcphone for modifications. No reason you should have to compile the damn thing.
To make apps for this, I have to get the source make my changes, compile, then test. On top of this I everyone on my team has to have the not compiled version of the changes to do the changes, then compile it after they make changes.
Feature wise it’s fine as a base, although I’d like the ui to be Iphone based rather than android.
Im considering not using either style of UI and doing a super simple one. The point and click.
(I guess leaning towards the apple side)
In its most basic of layout, because it’s concept is a stack of Iframes playing an everlasting shuffle game to whos on top and visable.
It only really needs the home and minimise options for the active frame or screen.
I just hope I can pull it off.
Or at least get it to a point where the wider community can just jump in and take the reigns.
Im over the way the current phones are just copy pasta with the same sauce. I need that spice man.
Like pretty much any JS framework, the syntax of it allows for things that would be a headache with Vanilla JS to be accomplished rather easily and then it’s compiled into the JS without you having to mess around with it. Welcome to modern front-end development.
The creator did setup so there was a dev server that you can start with node and you can test it in real time in your browser. Far easier for testing than reloading a resource everytime you make a change. And if you take the time to learn Vue setting up so there’s test data if you’re creating a custom app can make it even easier to test.
How is this different from any other resource out there? Just instead of being vanilla JS or some library like jQuery, your source control is tracking your Vue project.
Once you get an understanding of Vue and how the original project was setup, it’s honestly super easy to edit. But yeah, if you’ve not used Vue before it can be rough.
Thanks for explaining that. I don’t read french, and was a bit confused when looking at it. Thanks for the advice. Also, thanks for all the stuff you release publicly. Mainly the housing shells and the 3ds max stuff. That stuff helped me out a ton man.
Here’s a function I created for my custom phone script allowing me to have custom CSS for each phone (both iphone and samsung) and also each page, it’ll probably come in handy for you -
function changePage(page, phone) { // simple function that disables the css from the previous page and enables it for the new one -- will also show/hide all the pages
log('+-------------- changePage --------------+');
log('+ changing page to '+page+' on '+phone)
// hide all the pages
for (i = 0; i < pages.length; i++) {
$('#page-samsung-'+pages[i]).hide();
$('#page-iphone-'+pages[i]).hide();
}
// show the page we need
$('#page-'+phone+'-'+page).show();
currentPage = page;
if (window.getFunctionFromString('process'+page)) {
window.getFunctionFromString('process'+page)();
}
// dynamically load the css for each page
for (i = 0; i < document.styleSheets.length; i++) {
//void(document.styleSheets.item(i).disabled=true);
var path = document.styleSheets.item(i).href.replace('nui://fsn_phones/html/pages_css/', '');
var filephone = path.split('/')[path.split('/').length-2];
var file = path.split('/')[path.split('/').length-1];
if (filephone == 'iphone' || filephone == 'samsung') {
if (filephone != phone) {
// this css is for the other phone, hide it
void(document.styleSheets.item(i).disabled=true);
log('(other phone) disabling css: '+path);
} else {
if (file != 'main.css' && file != page+'.css') {
void(document.styleSheets.item(i).disabled=true);
log('(other page) disabling css: '+path);
} else {
void(document.styleSheets.item(i).disabled=false);
log('(main.css | this page) enabling css: '+path);
}
}
}
}
}