Esempio n. 1
0
File: UI.c Progetto: magikmw/stabby
void createStaticUI(void)
{
    staticUI[0] = sfSprite_create();
    sfSprite_setTexture(staticUI[0], textureArray[1], sfTrue);
    sfSprite_setTextureRect(staticUI[0], (sfIntRect){0,0, 960, 14});

    staticUI[1] = sfSprite_create();
    sfSprite_setTexture(staticUI[1], textureArray[1], sfTrue);
    sfSprite_setTextureRect(staticUI[1], (sfIntRect){0,14, 960, 14});
    sfSprite_setPosition(staticUI[1], (sfVector2f){0, WINDOW_Y-BORDER_OFFSET});

    staticUI[2] = sfSprite_create();
    sfSprite_setTexture(staticUI[2], textureArray[1], sfTrue);
    sfSprite_setTextureRect(staticUI[2], (sfIntRect){0,28, 540, 14});
    sfSprite_setPosition(staticUI[2], (sfVector2f){BORDER_OFFSET, 0});
    sfSprite_setRotation(staticUI[2], 90);

    staticUI[3] = sfSprite_create();
    sfSprite_setTexture(staticUI[3], textureArray[1], sfTrue);
    sfSprite_setTextureRect(staticUI[3], (sfIntRect){0,42, 540, 14});
    sfSprite_setPosition(staticUI[3], (sfVector2f){WINDOW_X, 0});
    sfSprite_setRotation(staticUI[3], 90);

    staticUI[4] = sfSprite_create();
    sfSprite_setTexture(staticUI[4], textureArray[1], sfTrue);
    sfSprite_setTextureRect(staticUI[4], (sfIntRect){0,56, 540, 14});
    sfSprite_setPosition(staticUI[4], (sfVector2f){PANEL_ZERO_X+BORDER_OFFSET, 0});
    sfSprite_setRotation(staticUI[4], 90);
}
Esempio n. 2
0
CAMLprim value
caml_sfSprite_setTexture(value sprite, value texture, value resetRect)
{
    sfSprite_setTexture(
            SfSprite_val(sprite), SfTexture_val(texture), Bool_val(resetRect));
    return Val_unit;
}
Esempio n. 3
0
sfSprite *radar_blip_from_object(game_object *obj)
{
  if(!obj->sprite) { return NULL; }
  sfSprite *objsprite = sfSprite_create();
  sfVector2u texture_origin;

  if(strcmp(obj->object_type,"player") == 0)
  {
    sfSprite_setTexture(objsprite,radar_blip_texture_player,1);
    texture_origin = sfTexture_getSize(radar_blip_texture_player);
  }else if(strcmp(obj->object_type,"enemy") == 0)
  {
    sfSprite_setTexture(objsprite,radar_blip_texture,1);
    texture_origin = sfTexture_getSize(radar_blip_texture);
  }
  float _x = (float)texture_origin.x;
  float _y = (float)texture_origin.y;
  sfVector2f new_org;
  new_org.x = _x /2 ;
  new_org.y = _y /2 ;
  sfSprite_setOrigin(objsprite,new_org);
  sfSprite_setPosition(objsprite,radar_position_translation(sfSprite_getPosition(obj->sprite)));
  return objsprite;
}
Esempio n. 4
0
int main(int argc, char **argv) {

	int window_width = 640;
	int window_height = 480;

	//Create the render window
	sfRenderWindow *window = NULL;
	if(!(window = sfRenderWindow_create((sfVideoMode) {window_width, window_height, 32}, "Mettle", sfClose|sfResize, NULL))) {
		printf("Unable to create RenderWindow\n");
		exit(EXIT_FAILURE);
	}

	//Create a queue of inputs
	actionQueue *actions = actionQueue_create();
	playerAction action = actionQueue_next(actions);
	//Load the hero sprite
	sfTexture *hero_texture = NULL;
	static const char *hero_texture_location = "data/img/leatherarmor.png";
	if(!(hero_texture = sfTexture_createFromFile(hero_texture_location, NULL))) {
		printf("Unable to load %s\n", hero_texture_location);
		exit(EXIT_FAILURE);
	}
	entity *hero = entity_createPlayer((sfVector2i) {0, 0}, &action, hero_texture);


	//Create the "map"
	sfTexture *map_texture = NULL;
	static const char *map_texture_location = "data/img/tilesheet.png";
	if(!(map_texture = sfTexture_createFromFile(map_texture_location, NULL))) {
		printf("Unable to load %s\n", map_texture_location);
		exit(EXIT_FAILURE);
	}

	int map_width = (int) ceilf((float) (window_width / TILE_SIZE));
	int map_height = (int) ceilf((float) (window_height / TILE_SIZE));
	//Allocate space
	sfSprite *tile = NULL;
	if(!(tile = sfSprite_create())) {
		printf("Unable to create sprite\n");
		exit(EXIT_FAILURE);
	}
	//Initialize the tile
	sfSprite_setTexture(tile, map_texture, sfFalse);
	sfSprite_setTextureRect(tile, XY_TO_RECT(4, 2, TILE_SIZE, TILE_SIZE));

	//Event holder
	sfEvent event;
	//Window active variable
	sfBool window_active = sfFalse;

	//Main loop
	while(sfRenderWindow_isOpen(window)) {

		//Process events
		while(sfRenderWindow_pollEvent(window, &event)) {
			switch(event.type) {
				//Handle keyboard input
				case(sfEvtKeyPressed):
				case(sfEvtKeyReleased):
					{
						playerAction action = handleKey(&event.key);
						if(action) {
							actionQueue_add(actions, action);
						}
						break;
					}
				case(sfEvtClosed):
					sfRenderWindow_close(window);
					break;
				case(sfEvtGainedFocus):
					window_active = sfTrue;
					break;
				case(sfEvtLostFocus):
					window_active = sfFalse;
				default:
					break;
			}
		}

		//While there are still actions to do
		while(action = actionQueue_next(actions)) {
			hero->ai->think(hero->ai);
		}

		//Clear the screen and render
		sfRenderWindow_clear(window, sfMagenta);

		//Draw the map
		int x,y;
		for(x = 0; x < map_width; x++) {
			for(y = 0; y < map_height; y++) {
				sfSprite_setPosition(tile, (sfVector2f) {x * TILE_SIZE, y * TILE_SIZE});
				sfRenderWindow_drawSprite(window, tile, NULL);
			}
		}

		//Draw the hero
		displayComp_draw(hero->display, window);

		sfRenderWindow_display(window);

		#ifdef DEBUG
		sfVector2f pos = sfSprite_getPosition(hero->display->sprite);
		printf("\rPlayer at %d,%d (%f.0px, %f.0px)", hero->x, hero->y, pos.x, pos.y);
		fflush(stdout);
		#endif
	}

	//Cleanup
	sfRenderWindow_destroy(window);
	return EXIT_SUCCESS;

}
Esempio n. 5
0
void render_main(void) {
    
    // Create the main window and the main view
    window = sfRenderWindow_create(
        (sfVideoMode){DEFAULT_WIN_WIDTH, DEFAULT_WIN_HEIGHT, 32},
        "Territory",
        sfResize | sfClose,
        NULL
        );
        
    if (!window) return;
    
    mainView = sfView_createFromRect(
        (sfFloatRect){0, 0, DEFAULT_WIN_WIDTH, DEFAULT_WIN_HEIGHT});
    sfView_zoom(mainView, 0.75);
    
    /*** ***/
    
    // Create images
    sfImage* oceanImage = sfImage_createFromFile("res/ocean.png");
    if (!oceanImage) return;
    
    sfImage* grassImage = sfImage_createFromFile("res/grass.png");
    if (!grassImage) return;
    
    const int mapWidth = 40;
    const int mapHeight = 20;
    sfImage* mapImage = sfImage_create(mapWidth * 16, mapHeight * 16);
    
    worldmap* map = newMap(mapWidth, mapHeight);
    
    for (int y = 0; y < mapHeight; y++) {
        for (int x = 0; x < mapWidth; x++) {
            sfImage_copyImage(
                mapImage,
                map->tiles[x][y] ? grassImage : oceanImage,
                x * 16,
                y * 16,
                (sfIntRect){0, 0, 16, 16},
                sfTrue);
        }
    }
    
    sfSprite* mapSprite = sfSprite_create();
    sfSprite_setTexture(
        mapSprite,
        sfTexture_createFromImage(mapImage, NULL),
        sfTrue);
        
    /*** ***/
    
    sfVector2u winDimensions;
    render_closeFlag = false;
    eventAvailable = sfFalse;
    while (sfRenderWindow_isOpen(window)) {
        eventAvailable = sfRenderWindow_pollEvent(window, &render_event);
        if (render_closeFlag) {
            render_closeFlag = false;
            sfRenderWindow_close(window);
            sfRenderWindow_destroy(window);
            return;
        }
        if (render_rescaleFlag) {
            render_rescaleFlag = false;
            winDimensions = sfRenderWindow_getSize(window);
            if (winDimensions.x < DEFAULT_WIN_WIDTH) {
                winDimensions.x = DEFAULT_WIN_WIDTH;
                sfRenderWindow_setSize(window, winDimensions);
            }
            if (winDimensions.y < DEFAULT_WIN_HEIGHT) {
                winDimensions.y = DEFAULT_WIN_HEIGHT;
                sfRenderWindow_setSize(window, winDimensions);
            }
            sfView_setSize(
                mainView,
                (sfVector2f){render_event.size.width, render_event.size.height}
                );
            sfView_zoom(mainView, 0.75);
        }
        
        sfRenderWindow_clear(window, sfBlue);
        
        sfRenderWindow_setView(window, mainView);
        sfRenderWindow_drawSprite(window, mapSprite, NULL);
        
        sfRenderWindow_display(window);
        
        Sleep(10);
    }
}