• Advertisement
Sign in to follow this  

Unity Designing an interface with guichan

This topic is 2830 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

I looking for some ideas about how to design the interface for the rpg project in this part of the forum. It was easy enough to do just using the win32 console but trying to do a graphical user interface seems a bit harder.. I'm using guichan along with SDL to do this so have the following widgets available: Button, CheckBox, Container, DropDown, Icon, LabelListBox, RadioButton, ScrollArea, Slider, TextBox, TextField, Window With the win32 console you could just create a menu and then clear the screen and bring a new menu for each option, but with a gui how do you achieve something similar, I'm thinking you need to create 4 or 5 different forms with all the buttons, labels etc but any other suggestions?

Share this post


Link to post
Share on other sites
Advertisement
My suggestion would be to implement a state machine and have each state have it's own 'gcn::Container' that gets set to the top whenever the state switches. Each container should store a different menu, and it should be as easy as just pushing/popping them into place. Doing it this way also allows you to limit input and drawing access to only whatever menu you choose to be on screen at any given time.

There's some good example code of how to implement a state machine HERE.

Hope this helps,
-Wynter Woods

Share this post


Link to post
Share on other sites
Sorry I never saw your post but I'm going to give this a try, doesn't seem easy to implement a state machine. I'm not sure I understand the singleton pattern either.

Heres what I have so far:

StateManager.h

#pragma once
#include <vector>
#include <guichan.hpp>
#include <guichan/SDL.hpp>
#include "SDL.h"
#include "GameState.h"

class StateManager
{
public:
StateManager(void);
virtual ~StateManager(void);
static void pushState(GameState* state);
static GameState* popState();
void logic(SDL_Event event);
void render();
private:
static std::vector<GameState *> states;
gcn::SDLInput *input;
gcn::SDLGraphics *graphics;
gcn::SDLImageLoader *imageLoader;

gcn::Gui *gui;
static gcn::Container *top;
gcn::ImageFont *font;
};




StateManager.cpp

#include "StateManager.h"

std::vector<GameState*> StateManager::states;
gcn::Container *StateManager::top;

StateManager::StateManager(void)
{
imageLoader = new gcn::SDLImageLoader();
gcn::Image::setImageLoader(imageLoader);
graphics = new gcn::SDLGraphics();
graphics->setTarget(SDL_GetVideoSurface());
input = new gcn::SDLInput();

font = new gcn::ImageFont("fixedfont_big.bmp", " abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789");
gcn::Widget::setGlobalFont(font);

gui = new gcn::Gui();
gui->setGraphics(graphics);
gui->setInput(input);

top = new gcn::Container();
top->setDimension(gcn::Rectangle(0, 0, 640, 480));
gui->setTop(top);
}

StateManager::~StateManager(void)
{
}

void StateManager::pushState(GameState *state)
{
states.push_back(state);
top->add(state);
}

GameState* StateManager::popState()
{
top->remove(states[states.size() - 1]);
return states[states.size() - 1];
}

void StateManager::logic(SDL_Event event)
{
input->pushInput(event);
}

void StateManager::render()
{
gui->logic();
gui->draw();
}




Main point to note is that I needed to use to static functions for push and pop and that top is also static which means it is exposed and not private. Not sure if that is a good idea however I have managed to create a little test project which works so far. Would appreciate feedback from others.

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
  • Advertisement
  • Popular Now

  • Advertisement
  • Similar Content

    • By eldwin11929
      We're looking for programmers for our project.
      Our project is being made in Unity
      Requirements:
      -Skills in Unity
      -C#
      -Javascript
      -Node.js
      We're looking for programmers who can perform a variety of functions on our project.
      Project is a top-down hack-and-slash pvp dungeon-crawler like game. Game is entirely multiplayer based, using randomized dungeons, and a unique combat system with emphasis on gameplay.
      We have a GDD to work off of, and a Lead Programmer you would work under.
      Assignments may include:
      -Creating new scripts of varying degrees specific to the project (mostly server-side, but sometimes client-side)
      -Assembling already created monsters/characters with existing or non-existing code.
      -Creating VFX
      -Assembling already created environment models
      If interested, please contact: eldwin11929@yahoo.com
      This project is unpaid, but with royalties.
       
      ---
      Additional Project Info:
      Summary:
      Bassetune Reapers is a Player-verus-Player, competitive dungeon crawler. This basically takes on aspects of dungeon crawling, but with a more aggressive setting. Players will have the option to play as the "dungeon-crawlers" (called the 'Knights', or "Knight Class", in-game) or as the "dungeon" itself (literally called the 'Bosses', or "Boss Class", in-game). What this means is that players can choose to play as the people invading the dungeon, or as the dungeon-holders themselves.
      Key Features:
      -Intense, fast-paced combat
      -Multiple skills, weapons, and ways to play the game
      -Tons of different Bosses, Minibosses, creatures and traps to utilize throughout the dungeon
      -Multiple unique environments
      -Interesting, detailed lore behind both the game and world
      -Intricate RPG system
      -Ladder and ranking system
      -Lots of customization for both classes s of customization for both classes
    • By RoKabium Games
      Custom coffee mugs have arrived... More caffeine!
      Have a great weekend everyone! 
      #gamedev #indiedev #sama #caffeine
    • By Atwo Studios
       
      Hey guys,

      Anthony here from Atwo Studios bringing you some new updates for the new year!
      In this video I go over our game ROY, the new games and some general updates to the company!

      If you have not checked out ROY feel free to give it a try! Many people have said they enjoyed the game thus far!
      ROY: https://goo.gl/o6JJ5P
       
    • By Affgoo
      https://play.google.com/store/apps/details?id=com.NE.Alien
      still a lot of work to do, but its pretty stable  please let me know what you think <3
      Atlas Sentry is a game of destroy everything. Using your turret, simply swivel and shoot your way to victory, upgrading your weapons to unleash destruction on the variety of spaceships. The bigger your combo’s the more score you get! Earn silver as you play and then purchase new weapons and abilities to better deal with your enemy. Different enemies use different tactics and weapons, work out your own priorities in their destruction order. 

      Features: 
      **2 different game modes 
      **A level select mode with 20 difficult levels including a final boss, can you defeat it? **Arcade mode of endless destruction, how long will you last? 
      **High scores to compete against others, see who can take the top spot. 
       
    • By Chamferbox
      Chamferbox, a mini game asset store has just opened with some nice game assets, 
      Here you can find a free greek statue asset 

      Also check their dragon, zombie dragon and scorpion monster out:



      They're running the Grand Opening Sale, it's 30% off for all items, but for gamedev member, you can use this coupon code:
      GRANDOPEN
      to get 50% off prices What are you waiting for, go to
      http://chamferbox.com
      and get those models now!

      View full story
  • Advertisement