• April 07, 2020, 02:19:03 AM

Author Topic: Superiority.NET Beta 6!  (Read 10407 times)

Smartass

  • Addict
  • *****
  • Posts: 228
Re: Superiority.NET Beta 6!
« Reply #25 on: February 19, 2012, 01:38:51 AM »
Yeah that's because everything else was made that way, making you used to the look of the UI. This is just a different setup, I'm not a fan of some things staying the same so this is something different.

warrior

  • Sr. Member
  • ******
  • Posts: 409
  • Jesus Christ.
Re: Superiority.NET Beta 6!
« Reply #26 on: February 19, 2012, 06:42:34 AM »
My rationale is as follows:
Most interactable elements are toward the left side of the screen(navigation buttons, send box) so this is an attempt to reduce mouse travel distance by having the interactable and scrollable user list be closer to the prime pixel, or point of origin. Otherwise, the mouse would need to travel the width of the window to get to the scroll ba
In capitalist America, bank robs you.

Choosing to code in an unmanaged language/platform is like choosing a hotel where you have to clean your own room.

When C++ is your hammer, everything starts to look like your thumb

Myst

  • BotMaster
  • Hero Member
  • *******
  • Posts: 772
  • Clan Null - Op 0x00
    • DarkBlizz
Re: Superiority.NET Beta 6!
« Reply #27 on: February 19, 2012, 03:39:49 PM »
Well, userlists on the left side isn't anything new.  Most irc clients and a lot of other chat clients have it on the left, the popular IM program on android, imo, also has it on the left with their new optimized look for tablets. 
Looks good nonetheless and if warrior adds some of the other stuff we talked about before, it'll all fit in quite nicely. 

Smartass

  • Addict
  • *****
  • Posts: 228
Re: Superiority.NET Beta 6!
« Reply #28 on: February 19, 2012, 04:36:34 PM »
Well, userlists on the left side isn't anything new.  Most irc clients and a lot of other chat clients have it on the left, the popular IM program on android, imo, also has it on the left with their new optimized look for tablets. 
Looks good nonetheless and if warrior adds some of the other stuff we talked about before, it'll all fit in quite nicely.
True, I was referring to Bot programs though. They all have the userlist on the right and this will be the first actual program with the userlist on the left.

Myst

  • BotMaster
  • Hero Member
  • *******
  • Posts: 772
  • Clan Null - Op 0x00
    • DarkBlizz
Re: Superiority.NET Beta 6!
« Reply #29 on: February 19, 2012, 05:16:21 PM »
nah def not a first, not that it's a race or anything or anything significant, just design choice by the developer.  There have been bots in the past have had a userlist on the left, but like you said majority are on the right. 



Smartass

  • Addict
  • *****
  • Posts: 228
Re: Superiority.NET Beta 6!
« Reply #30 on: February 19, 2012, 09:33:46 PM »
I sit corrected.

pikachu

  • Administrator
  • Hero Member
  • *******
  • Posts: 3,344
Re: Superiority.NET Beta 6!
« Reply #31 on: February 20, 2012, 03:53:25 AM »
True, I was referring to Bot programs though. They all have the userlist on the right and this will be the first actual program with the userlist on the left.

Maybe he meant the first not-piece-of-shit-looking program with the user list on the left.
This post has been thanked 1 time Smartass

Myst

  • BotMaster
  • Hero Member
  • *******
  • Posts: 772
  • Clan Null - Op 0x00
    • DarkBlizz
Re: Superiority.NET Beta 6!
« Reply #32 on: February 20, 2012, 12:37:00 PM »
shut your fingers

Tagban

  • Aces Charles.. Aces.
  • Administrator
  • Addict
  • *******
  • Posts: 157
  • BNET.cc // Clan BNU@USEast
    • BNET.cc
Re: Superiority.NET Beta 6!
« Reply #33 on: February 22, 2012, 04:40:02 PM »
Lol Myst, my favorite part about your post, is that your screenshot you forgot to black out "Vuther"'s window at the bottom. Maybe its just a "Nickname" though?

Oh well, yea, I'm on board with the left side userlist. My life has been hectic like crazy the last week, and will be until next weekend, then I will be back to normal and working with Warrior on this again. Just, work is getting rough.
BNET.cc .. Mothers.. Lock up your daughters!

Myst

  • BotMaster
  • Hero Member
  • *******
  • Posts: 772
  • Clan Null - Op 0x00
    • DarkBlizz
Re: Superiority.NET Beta 6!
« Reply #34 on: February 22, 2012, 07:10:58 PM »
geek squad stressin you out?

warrior

  • Sr. Member
  • ******
  • Posts: 409
  • Jesus Christ.
Re: Superiority.NET Beta 6!
« Reply #35 on: March 09, 2012, 03:41:11 PM »
I've begun porting Superiority away from Silverlight and over to the Windows Runtime and Windows 8. This enables me to have an extremely high performance user interface at almost no CPU usage. Unfortunately, this comes at the cost of OSX support and web-based launching.

The upsides are: First class multi-touch and tablet support, Cloud based Account backup, interoperability with C++ and JavaScript languages for authoring future components, and other geeky things.

I'm still deciding if I should maintain two versions of Superiority, one based off of Silverlight and one based off of WinRT, but it's looking increasingly like the Silverlight one will eventually be phased out.

Obligatory preliminary screenshot (notice Superiority snapped side-by-side with the Calendar app in Windows 8)


So far I ported most of the app logic (except for the Bnet stuff, which I want to further examine and improve) and started work on rewriting the configuration code to support Cloud based synchronization (using Skydrive and your Microsoft Account).

The cool thing is that a lot of existing Superiority UI can be ported over with minimal effort, and almost all of my backend logic is immediately portable to this new platform.
This post has been thanked 1 time Crisis
In capitalist America, bank robs you.

Choosing to code in an unmanaged language/platform is like choosing a hotel where you have to clean your own room.

When C++ is your hammer, everything starts to look like your thumb

warrior

  • Sr. Member
  • ******
  • Posts: 409
  • Jesus Christ.
Re: Superiority.NET Beta 6!
« Reply #36 on: March 10, 2012, 06:15:41 PM »
I'm still in the technical evaluation phase of all of this, the documentation on some of the deeper features in WinRT is still lacking so I'm going off of trial and error for a lot of the things so far.

However, I've done some pretty cool things: I'm taking full advantage of multi-touch like I mentioned before, which means edge gestures work on tablets and call up some interesting things in the Superiority UI.
 
(Note: on Mouse+Keyboard setups a right click is the same as a Top or Bottom edge gesture.)

When you swipe in from the top or bottom you receive contextual UI. For example, switching between Accounts is now extremely easy. Just one swipe down from the top or bottom and bam:



It brings down a list of profiles (which you can long press to do even more contextual operations like disconnect/reconnect) and you can swipe to them with a simple tap.

Swipe in from the right (or Win Key + C) and hit "Settings" and you'll be faced with contextual application settings. Every app in Windows 8 works like this, so it's a paradigm users will quickly accustom themselves to.

Overall my feelings are generally positive, it's a lot easier for me to integrate with general OS level concepts in a fast and fluid way. I'm still kinda prototyping here, but the opportunities are exciting.

Re: some of my network stuff
The Bot will gain the ability to auto-connect to Battle.net when you log onto Windows. When you log out then log in, connections are automatically remade to Battle.net . The Bot will be able to notify you of incoming whispers (and perhaps other pertinent information) through the Lock Screen and will raise OS level toast notifications upon receiving them as well.

The Network code is going to be mobile aware, meaning it will work over 3G/4G LTE connections and will automatically scale itself down for Metered or Data capped connections (and switch unmetered connections like WiFi where capable). This means I'll be more frugal about sending information over the wire (Some features wont work presumably, like requesting Profiles, responding to Clan Invites, etc. I have to think about this.).

And I'll say it again, UI performance is astounding.
In capitalist America, bank robs you.

Choosing to code in an unmanaged language/platform is like choosing a hotel where you have to clean your own room.

When C++ is your hammer, everything starts to look like your thumb

warrior

  • Sr. Member
  • ******
  • Posts: 409
  • Jesus Christ.
Re: Superiority.NET Beta 6!
« Reply #37 on: March 10, 2012, 08:54:28 PM »
I began implementing the UserList UX again (porting over from Silverlight to WinRT again, was a cinch).

New features:
User reordering. You can now reorder users in the User List to your heart's content.
Searching/Filtering. You can filter by Username or by status by typing "idle" or "operator".
Multi selection. You can select multiple users in the User List and perform mass actions on them (Squelch, Whisper, etc.)

Here's a screenshot of the Multi selection feature (Contextual options available by swiping up from the bottom edge of the screen.)


In capitalist America, bank robs you.

Choosing to code in an unmanaged language/platform is like choosing a hotel where you have to clean your own room.

When C++ is your hammer, everything starts to look like your thumb

Myst

  • BotMaster
  • Hero Member
  • *******
  • Posts: 772
  • Clan Null - Op 0x00
    • DarkBlizz
Re: Superiority.NET Beta 6!
« Reply #38 on: March 10, 2012, 09:14:00 PM »
great tech, i suggest you use all this youre doing with a seperate IRC implementation.  Should be easy enough to do since it's the same dynamics as a bnet bot, i.e userlist / chat / settings.   
With all this stuff you're doing, you'd have a very popular IRC client on your hands for Win8, that would be dled many of many times if marketed right. 
do it

warrior

  • Sr. Member
  • ******
  • Posts: 409
  • Jesus Christ.
Re: Superiority.NET Beta 6!
« Reply #39 on: March 10, 2012, 09:23:14 PM »
That's exactly my plan, I'm going to get most of the hard things done, like proper background data so that I'm able to maintain persistent connections to Battle.net, but it's logically extended to IRC.

I don't know if I'll extend Superiority, or just write a standalone IRC app with the lessons that I learn from this. Either way, it should be worth it because the interactions and scenarios I address with Battle.net are largely the same. I especially think the multi selection of users is particularly attractive to power users.

In capitalist America, bank robs you.

Choosing to code in an unmanaged language/platform is like choosing a hotel where you have to clean your own room.

When C++ is your hammer, everything starts to look like your thumb

warrior

  • Sr. Member
  • ******
  • Posts: 409
  • Jesus Christ.
Re: Superiority.NET Beta 6!
« Reply #40 on: March 10, 2012, 11:27:10 PM »
Here's another screenshot showing some fleshed out Chat Box UI I'm working on (incorporating some ideas from that Screen shot you sent me a few days ago).

Also you can see me rearranging a User in the UserList just by tapping and dragging. (or click+hold, whatever.)

In capitalist America, bank robs you.

Choosing to code in an unmanaged language/platform is like choosing a hotel where you have to clean your own room.

When C++ is your hammer, everything starts to look like your thumb

Myst

  • BotMaster
  • Hero Member
  • *******
  • Posts: 772
  • Clan Null - Op 0x00
    • DarkBlizz
Re: Superiority.NET Beta 6!
« Reply #41 on: March 10, 2012, 11:57:06 PM »
yeah see that looks good with those join/leaves centered.  See if you can get the timestamps flush on the right. And later on, options to enable/disable timestamps. 

warrior

  • Sr. Member
  • ******
  • Posts: 409
  • Jesus Christ.
Re: Superiority.NET Beta 6!
« Reply #42 on: March 11, 2012, 11:02:10 AM »
Continuing to evolve the Chat UI, I added a persistent pane to the right side which provides a quick way to access information about the current Account. Still toying the idea of keeping this on screen at all times, but once clicked, the UI swipes over to the right and reveals even more hints of the interface. That's probably what I'll work on next.

In capitalist America, bank robs you.

Choosing to code in an unmanaged language/platform is like choosing a hotel where you have to clean your own room.

When C++ is your hammer, everything starts to look like your thumb

Crisis

  • Hero Member
  • *******
  • Posts: 3,018
Re: Superiority.NET Beta 6!
« Reply #43 on: March 11, 2012, 12:27:29 PM »
what's the "out to lunch"?

warrior

  • Sr. Member
  • ******
  • Posts: 409
  • Jesus Christ.
Re: Superiority.NET Beta 6!
« Reply #44 on: March 11, 2012, 01:05:21 PM »
Away/DND status. Still thinking about that one, in earlier builds of Superiority the Bot cache'd your message, but from the outset I'd have no way to get the initial value, which makes it tricky.
In capitalist America, bank robs you.

Choosing to code in an unmanaged language/platform is like choosing a hotel where you have to clean your own room.

When C++ is your hammer, everything starts to look like your thumb

warrior

  • Sr. Member
  • ******
  • Posts: 409
  • Jesus Christ.
Re: Superiority.NET Beta 6!
« Reply #45 on: March 11, 2012, 01:33:45 PM »
Another interesting advantage of WinRT over Silverlight is easy theming Support. Superiority will support Light/Dark themes, as well as a High Contrast theme if the user has it enabled in the Control Panel.



Dark Theme needs some bug fixes though :) . The readability is very good there, though.
In capitalist America, bank robs you.

Choosing to code in an unmanaged language/platform is like choosing a hotel where you have to clean your own room.

When C++ is your hammer, everything starts to look like your thumb

pikachu

  • Administrator
  • Hero Member
  • *******
  • Posts: 3,344
Re: Superiority.NET Beta 6!
« Reply #46 on: March 11, 2012, 03:35:30 PM »
Nice test data ;)

warrior

  • Sr. Member
  • ******
  • Posts: 409
  • Jesus Christ.
Re: Superiority.NET Beta 6!
« Reply #47 on: March 11, 2012, 06:53:00 PM »
Test data? That's live ! :).

I haven't gotten much done on the UI front today, spent the majority of the day working on the cloud sync feature. It's going to be awesome when it's finished.

However, I did tidy some things up, tweak some animations, and fix some colors. The end result is pretty nice. I want to start fleshing out UI templates for various view states (Snapped 80% and Snapped 20%). As well as implement semantic zooming for some Lists. THAT should be cool.
In capitalist America, bank robs you.

Choosing to code in an unmanaged language/platform is like choosing a hotel where you have to clean your own room.

When C++ is your hammer, everything starts to look like your thumb

warrior

  • Sr. Member
  • ******
  • Posts: 409
  • Jesus Christ.
Re: Superiority.NET Beta 6!
« Reply #48 on: March 18, 2012, 07:17:32 AM »
I'm still working on this, though it's primarily networking related scalability code so there's not much to report visually.

One thing I have learned, and which seems to be a common theme across WinRT/Win8, is that everything is simplified compared to other platforms. The "async" keyword in C# 5.0 is a fuckin' game changer. This thing removed a ton of deadweight code I had.

Consider the following:
Code: [Select]
        public static async Task<int> BnlsVersionByteRequestAsync(int product)
        {
            if (!isConnected)
            {
                await internalSocket.ConnectAsync(new HostName("bnls.net"), "9367", SocketProtectionLevel.PlainSocket);
            }

            var versionByteWriter = new DataWriter(internalSocket.OutputStream);
            versionByteWriter.ByteOrder = ByteOrder.LittleEndian;
            versionByteWriter.WriteInt16(7); // Header of 3 bytes + 4 for the DWORD
            versionByteWriter.WriteByte(0x10); // BnlsVersionByteRequest

            versionByteWriter.WriteInt32(product);
           
            await versionByteWriter.StoreAsync();

            var versionByteReader = new DataReader(internalSocket.InputStream);
            versionByteReader.ByteOrder = ByteOrder.LittleEndian;

            await versionByteReader.LoadAsync(11); // 3 bytes for BNLS header, 8 bytes for the two DWORDS

            versionByteReader.ReadInt16();
            versionByteReader.ReadByte();

            versionByteReader.ReadInt32(); // Success code, TODO: Test this.
            return versionByteReader.ReadInt32();
        }

Notice the "async" keyword in the method signature and the fact that I return a Task of T where T is an int.
Since my method is now async, other code can "await" on the method.

Code: [Select]

        public async void Connect()
        {
            internalSocket = new StreamSocket();

            try
            {
                await internalSocket.ConnectAsync(new HostName("useast.battle.net"), "6112", SocketProtectionLevel.PlainSocket);

                var versionByte = await BnlsService.BnlsVersionByteRequestAsync(0x01); // StarCraft

The interesting thing about await, is that it makes code that would otherwise need callbacks, procedural.
When you await something, the method instantly returns, then when the asynchronous operation completes, the rest of the method after the await keyword is turned into a continuation and raised as a callback. All transparently, so it looks like one big method.

At first, I was iffy about this, since I felt it held the implementation details of asynchrony too well..but lately I've fallen in love with it.

All async operations in WinRT use the async/await keywords, which are underpinned by Task of T and the Task Parallel Library, which I already directly used in Superiority Desktop. Of course, this is a lot simpler.
In capitalist America, bank robs you.

Choosing to code in an unmanaged language/platform is like choosing a hotel where you have to clean your own room.

When C++ is your hammer, everything starts to look like your thumb

warrior

  • Sr. Member
  • ******
  • Posts: 409
  • Jesus Christ.
Re: Superiority.NET Beta 6!
« Reply #49 on: March 18, 2012, 07:21:03 AM »
Also, Tuple's are fucking cool, I missed them so much in Silverlight

Code: [Select]
        public static async Task<Tuple<int, int, byte[]>> BnlsVersionCheck2RequestAsync(.......)
        {
In capitalist America, bank robs you.

Choosing to code in an unmanaged language/platform is like choosing a hotel where you have to clean your own room.

When C++ is your hammer, everything starts to look like your thumb

 

newBalance by DzinerStudio